xref: /aosp_15_r20/external/vulkan-headers/include/vulkan/vulkan_structs.hpp (revision 902771965e4c6d39c75c62130a6a330c08b024db)
1 // Copyright 2015-2024 The Khronos Group Inc.
2 //
3 // SPDX-License-Identifier: Apache-2.0 OR MIT
4 //
5 
6 // This header is generated from the Khronos Vulkan XML API Registry.
7 
8 #ifndef VULKAN_STRUCTS_HPP
9 #define VULKAN_STRUCTS_HPP
10 
11 // include-what-you-use: make sure, vulkan.hpp is used by code-completers
12 // IWYU pragma: private; include "vulkan.hpp"
13 
14 #include <cstring>  // strcmp
15 
16 namespace VULKAN_HPP_NAMESPACE
17 {
18 
19   //===============
20   //=== STRUCTS ===
21   //===============
22 
23   struct AabbPositionsKHR
24   {
25     using NativeType = VkAabbPositionsKHR;
26 
27 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
28     VULKAN_HPP_CONSTEXPR
AabbPositionsKHRVULKAN_HPP_NAMESPACE::AabbPositionsKHR29       AabbPositionsKHR( float minX_ = {}, float minY_ = {}, float minZ_ = {}, float maxX_ = {}, float maxY_ = {}, float maxZ_ = {} ) VULKAN_HPP_NOEXCEPT
30       : minX{ minX_ }
31       , minY{ minY_ }
32       , minZ{ minZ_ }
33       , maxX{ maxX_ }
34       , maxY{ maxY_ }
35       , maxZ{ maxZ_ }
36     {
37     }
38 
39     VULKAN_HPP_CONSTEXPR AabbPositionsKHR( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40 
AabbPositionsKHRVULKAN_HPP_NAMESPACE::AabbPositionsKHR41     AabbPositionsKHR( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT : AabbPositionsKHR( *reinterpret_cast<AabbPositionsKHR const *>( &rhs ) ) {}
42 
43     AabbPositionsKHR & operator=( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45 
operator =VULKAN_HPP_NAMESPACE::AabbPositionsKHR46     AabbPositionsKHR & operator=( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47     {
48       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AabbPositionsKHR const *>( &rhs );
49       return *this;
50     }
51 
52 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMinXVULKAN_HPP_NAMESPACE::AabbPositionsKHR53     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinX( float minX_ ) VULKAN_HPP_NOEXCEPT
54     {
55       minX = minX_;
56       return *this;
57     }
58 
setMinYVULKAN_HPP_NAMESPACE::AabbPositionsKHR59     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinY( float minY_ ) VULKAN_HPP_NOEXCEPT
60     {
61       minY = minY_;
62       return *this;
63     }
64 
setMinZVULKAN_HPP_NAMESPACE::AabbPositionsKHR65     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinZ( float minZ_ ) VULKAN_HPP_NOEXCEPT
66     {
67       minZ = minZ_;
68       return *this;
69     }
70 
setMaxXVULKAN_HPP_NAMESPACE::AabbPositionsKHR71     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxX( float maxX_ ) VULKAN_HPP_NOEXCEPT
72     {
73       maxX = maxX_;
74       return *this;
75     }
76 
setMaxYVULKAN_HPP_NAMESPACE::AabbPositionsKHR77     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxY( float maxY_ ) VULKAN_HPP_NOEXCEPT
78     {
79       maxY = maxY_;
80       return *this;
81     }
82 
setMaxZVULKAN_HPP_NAMESPACE::AabbPositionsKHR83     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxZ( float maxZ_ ) VULKAN_HPP_NOEXCEPT
84     {
85       maxZ = maxZ_;
86       return *this;
87     }
88 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89 
operator VkAabbPositionsKHR const&VULKAN_HPP_NAMESPACE::AabbPositionsKHR90     operator VkAabbPositionsKHR const &() const VULKAN_HPP_NOEXCEPT
91     {
92       return *reinterpret_cast<const VkAabbPositionsKHR *>( this );
93     }
94 
operator VkAabbPositionsKHR&VULKAN_HPP_NAMESPACE::AabbPositionsKHR95     operator VkAabbPositionsKHR &() VULKAN_HPP_NOEXCEPT
96     {
97       return *reinterpret_cast<VkAabbPositionsKHR *>( this );
98     }
99 
100 #if defined( VULKAN_HPP_USE_REFLECT )
101 #  if 14 <= VULKAN_HPP_CPP_VERSION
102     auto
103 #  else
104     std::tuple<float const &, float const &, float const &, float const &, float const &, float const &>
105 #  endif
reflectVULKAN_HPP_NAMESPACE::AabbPositionsKHR106       reflect() const VULKAN_HPP_NOEXCEPT
107     {
108       return std::tie( minX, minY, minZ, maxX, maxY, maxZ );
109     }
110 #endif
111 
112 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113     auto operator<=>( AabbPositionsKHR const & ) const = default;
114 #else
operator ==VULKAN_HPP_NAMESPACE::AabbPositionsKHR115     bool operator==( AabbPositionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116     {
117 #  if defined( VULKAN_HPP_USE_REFLECT )
118       return this->reflect() == rhs.reflect();
119 #  else
120       return ( minX == rhs.minX ) && ( minY == rhs.minY ) && ( minZ == rhs.minZ ) && ( maxX == rhs.maxX ) && ( maxY == rhs.maxY ) && ( maxZ == rhs.maxZ );
121 #  endif
122     }
123 
operator !=VULKAN_HPP_NAMESPACE::AabbPositionsKHR124     bool operator!=( AabbPositionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125     {
126       return !operator==( rhs );
127     }
128 #endif
129 
130   public:
131     float minX = {};
132     float minY = {};
133     float minZ = {};
134     float maxX = {};
135     float maxY = {};
136     float maxZ = {};
137   };
138 
139   using AabbPositionsNV = AabbPositionsKHR;
140 
141   union DeviceOrHostAddressConstKHR
142   {
143     using NativeType = VkDeviceOrHostAddressConstKHR;
144 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
145 
DeviceOrHostAddressConstKHR(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_={} )146     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) : deviceAddress( deviceAddress_ ) {}
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 )
setDeviceAddress(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_)152     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
153     {
154       deviceAddress = deviceAddress_;
155       return *this;
156     }
157 
setHostAddress(const void * hostAddress_)158     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR & setHostAddress( const void * hostAddress_ ) VULKAN_HPP_NOEXCEPT
159     {
160       hostAddress = hostAddress_;
161       return *this;
162     }
163 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
164 
operator VkDeviceOrHostAddressConstKHR const&() const165     operator VkDeviceOrHostAddressConstKHR const &() const
166     {
167       return *reinterpret_cast<const VkDeviceOrHostAddressConstKHR *>( this );
168     }
169 
operator VkDeviceOrHostAddressConstKHR&()170     operator VkDeviceOrHostAddressConstKHR &()
171     {
172       return *reinterpret_cast<VkDeviceOrHostAddressConstKHR *>( this );
173     }
174 
175 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
176     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress;
177     const void *                        hostAddress;
178 #else
179     VkDeviceAddress                                 deviceAddress;
180     const void *                                    hostAddress;
181 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
182   };
183 
184   struct AccelerationStructureGeometryTrianglesDataKHR
185   {
186     using NativeType = VkAccelerationStructureGeometryTrianglesDataKHR;
187 
188     static const bool                                  allowDuplicate = false;
189     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureGeometryTrianglesDataKHR;
190 
191 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
192     VULKAN_HPP_CONSTEXPR_14
AccelerationStructureGeometryTrianglesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR193       AccelerationStructureGeometryTrianglesDataKHR( VULKAN_HPP_NAMESPACE::Format                      vertexFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
194                                                      VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData_   = {},
195                                                      VULKAN_HPP_NAMESPACE::DeviceSize                  vertexStride_ = {},
196                                                      uint32_t                                          maxVertex_    = {},
197                                                      VULKAN_HPP_NAMESPACE::IndexType                   indexType_    = VULKAN_HPP_NAMESPACE::IndexType::eUint16,
198                                                      VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexData_    = {},
199                                                      VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR transformData_ = {},
200                                                      const void *                                      pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
201       : pNext{ pNext_ }
202       , vertexFormat{ vertexFormat_ }
203       , vertexData{ vertexData_ }
204       , vertexStride{ vertexStride_ }
205       , maxVertex{ maxVertex_ }
206       , indexType{ indexType_ }
207       , indexData{ indexData_ }
208       , transformData{ transformData_ }
209     {
210     }
211 
212     VULKAN_HPP_CONSTEXPR_14
213       AccelerationStructureGeometryTrianglesDataKHR( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
214 
AccelerationStructureGeometryTrianglesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR215     AccelerationStructureGeometryTrianglesDataKHR( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
216       : AccelerationStructureGeometryTrianglesDataKHR( *reinterpret_cast<AccelerationStructureGeometryTrianglesDataKHR const *>( &rhs ) )
217     {
218     }
219 
220     AccelerationStructureGeometryTrianglesDataKHR & operator=( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
221 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
222 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR223     AccelerationStructureGeometryTrianglesDataKHR & operator=( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
224     {
225       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const *>( &rhs );
226       return *this;
227     }
228 
229 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR230     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
231     {
232       pNext = pNext_;
233       return *this;
234     }
235 
setVertexFormatVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR236     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setVertexFormat( VULKAN_HPP_NAMESPACE::Format vertexFormat_ ) VULKAN_HPP_NOEXCEPT
237     {
238       vertexFormat = vertexFormat_;
239       return *this;
240     }
241 
242     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setVertexDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR243       setVertexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & vertexData_ ) VULKAN_HPP_NOEXCEPT
244     {
245       vertexData = vertexData_;
246       return *this;
247     }
248 
249     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setVertexStrideVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR250       setVertexStride( VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ ) VULKAN_HPP_NOEXCEPT
251     {
252       vertexStride = vertexStride_;
253       return *this;
254     }
255 
setMaxVertexVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR256     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setMaxVertex( uint32_t maxVertex_ ) VULKAN_HPP_NOEXCEPT
257     {
258       maxVertex = maxVertex_;
259       return *this;
260     }
261 
setIndexTypeVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR262     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
263     {
264       indexType = indexType_;
265       return *this;
266     }
267 
268     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setIndexDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR269       setIndexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & indexData_ ) VULKAN_HPP_NOEXCEPT
270     {
271       indexData = indexData_;
272       return *this;
273     }
274 
275     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setTransformDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR276       setTransformData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & transformData_ ) VULKAN_HPP_NOEXCEPT
277     {
278       transformData = transformData_;
279       return *this;
280     }
281 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
282 
operator VkAccelerationStructureGeometryTrianglesDataKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR283     operator VkAccelerationStructureGeometryTrianglesDataKHR const &() const VULKAN_HPP_NOEXCEPT
284     {
285       return *reinterpret_cast<const VkAccelerationStructureGeometryTrianglesDataKHR *>( this );
286     }
287 
operator VkAccelerationStructureGeometryTrianglesDataKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR288     operator VkAccelerationStructureGeometryTrianglesDataKHR &() VULKAN_HPP_NOEXCEPT
289     {
290       return *reinterpret_cast<VkAccelerationStructureGeometryTrianglesDataKHR *>( this );
291     }
292 
293 #if defined( VULKAN_HPP_USE_REFLECT )
294 #  if 14 <= VULKAN_HPP_CPP_VERSION
295     auto
296 #  else
297     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
298                const void * const &,
299                VULKAN_HPP_NAMESPACE::Format const &,
300                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
301                VULKAN_HPP_NAMESPACE::DeviceSize const &,
302                uint32_t const &,
303                VULKAN_HPP_NAMESPACE::IndexType const &,
304                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
305                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &>
306 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR307       reflect() const VULKAN_HPP_NOEXCEPT
308     {
309       return std::tie( sType, pNext, vertexFormat, vertexData, vertexStride, maxVertex, indexType, indexData, transformData );
310     }
311 #endif
312 
313   public:
314     VULKAN_HPP_NAMESPACE::StructureType               sType         = StructureType::eAccelerationStructureGeometryTrianglesDataKHR;
315     const void *                                      pNext         = {};
316     VULKAN_HPP_NAMESPACE::Format                      vertexFormat  = VULKAN_HPP_NAMESPACE::Format::eUndefined;
317     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData    = {};
318     VULKAN_HPP_NAMESPACE::DeviceSize                  vertexStride  = {};
319     uint32_t                                          maxVertex     = {};
320     VULKAN_HPP_NAMESPACE::IndexType                   indexType     = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
321     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexData     = {};
322     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR transformData = {};
323   };
324 
325   template <>
326   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryTrianglesDataKHR>
327   {
328     using Type = AccelerationStructureGeometryTrianglesDataKHR;
329   };
330 
331   struct AccelerationStructureGeometryAabbsDataKHR
332   {
333     using NativeType = VkAccelerationStructureGeometryAabbsDataKHR;
334 
335     static const bool                                  allowDuplicate = false;
336     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureGeometryAabbsDataKHR;
337 
338 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureGeometryAabbsDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR339     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data_   = {},
340                                                                        VULKAN_HPP_NAMESPACE::DeviceSize                  stride_ = {},
341                                                                        const void *                                      pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
342       : pNext{ pNext_ }
343       , data{ data_ }
344       , stride{ stride_ }
345     {
346     }
347 
348     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
349 
AccelerationStructureGeometryAabbsDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR350     AccelerationStructureGeometryAabbsDataKHR( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
351       : AccelerationStructureGeometryAabbsDataKHR( *reinterpret_cast<AccelerationStructureGeometryAabbsDataKHR const *>( &rhs ) )
352     {
353     }
354 
355     AccelerationStructureGeometryAabbsDataKHR & operator=( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
356 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
357 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR358     AccelerationStructureGeometryAabbsDataKHR & operator=( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
359     {
360       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const *>( &rhs );
361       return *this;
362     }
363 
364 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR365     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
366     {
367       pNext = pNext_;
368       return *this;
369     }
370 
371     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR &
setDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR372       setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT
373     {
374       data = data_;
375       return *this;
376     }
377 
setStrideVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR378     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR & setStride( VULKAN_HPP_NAMESPACE::DeviceSize stride_ ) VULKAN_HPP_NOEXCEPT
379     {
380       stride = stride_;
381       return *this;
382     }
383 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
384 
operator VkAccelerationStructureGeometryAabbsDataKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR385     operator VkAccelerationStructureGeometryAabbsDataKHR const &() const VULKAN_HPP_NOEXCEPT
386     {
387       return *reinterpret_cast<const VkAccelerationStructureGeometryAabbsDataKHR *>( this );
388     }
389 
operator VkAccelerationStructureGeometryAabbsDataKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR390     operator VkAccelerationStructureGeometryAabbsDataKHR &() VULKAN_HPP_NOEXCEPT
391     {
392       return *reinterpret_cast<VkAccelerationStructureGeometryAabbsDataKHR *>( this );
393     }
394 
395 #if defined( VULKAN_HPP_USE_REFLECT )
396 #  if 14 <= VULKAN_HPP_CPP_VERSION
397     auto
398 #  else
399     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
400                const void * const &,
401                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
402                VULKAN_HPP_NAMESPACE::DeviceSize const &>
403 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR404       reflect() const VULKAN_HPP_NOEXCEPT
405     {
406       return std::tie( sType, pNext, data, stride );
407     }
408 #endif
409 
410   public:
411     VULKAN_HPP_NAMESPACE::StructureType               sType  = StructureType::eAccelerationStructureGeometryAabbsDataKHR;
412     const void *                                      pNext  = {};
413     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data   = {};
414     VULKAN_HPP_NAMESPACE::DeviceSize                  stride = {};
415   };
416 
417   template <>
418   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryAabbsDataKHR>
419   {
420     using Type = AccelerationStructureGeometryAabbsDataKHR;
421   };
422 
423   struct AccelerationStructureGeometryInstancesDataKHR
424   {
425     using NativeType = VkAccelerationStructureGeometryInstancesDataKHR;
426 
427     static const bool                                  allowDuplicate = false;
428     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureGeometryInstancesDataKHR;
429 
430 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureGeometryInstancesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR431     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR( VULKAN_HPP_NAMESPACE::Bool32                      arrayOfPointers_ = {},
432                                                                            VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data_            = {},
433                                                                            const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
434       : pNext{ pNext_ }
435       , arrayOfPointers{ arrayOfPointers_ }
436       , data{ data_ }
437     {
438     }
439 
440     VULKAN_HPP_CONSTEXPR_14
441       AccelerationStructureGeometryInstancesDataKHR( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
442 
AccelerationStructureGeometryInstancesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR443     AccelerationStructureGeometryInstancesDataKHR( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
444       : AccelerationStructureGeometryInstancesDataKHR( *reinterpret_cast<AccelerationStructureGeometryInstancesDataKHR const *>( &rhs ) )
445     {
446     }
447 
448     AccelerationStructureGeometryInstancesDataKHR & operator=( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
449 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
450 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR451     AccelerationStructureGeometryInstancesDataKHR & operator=( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
452     {
453       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const *>( &rhs );
454       return *this;
455     }
456 
457 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR458     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
459     {
460       pNext = pNext_;
461       return *this;
462     }
463 
464     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR &
setArrayOfPointersVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR465       setArrayOfPointers( VULKAN_HPP_NAMESPACE::Bool32 arrayOfPointers_ ) VULKAN_HPP_NOEXCEPT
466     {
467       arrayOfPointers = arrayOfPointers_;
468       return *this;
469     }
470 
471     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR &
setDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR472       setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT
473     {
474       data = data_;
475       return *this;
476     }
477 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
478 
operator VkAccelerationStructureGeometryInstancesDataKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR479     operator VkAccelerationStructureGeometryInstancesDataKHR const &() const VULKAN_HPP_NOEXCEPT
480     {
481       return *reinterpret_cast<const VkAccelerationStructureGeometryInstancesDataKHR *>( this );
482     }
483 
operator VkAccelerationStructureGeometryInstancesDataKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR484     operator VkAccelerationStructureGeometryInstancesDataKHR &() VULKAN_HPP_NOEXCEPT
485     {
486       return *reinterpret_cast<VkAccelerationStructureGeometryInstancesDataKHR *>( this );
487     }
488 
489 #if defined( VULKAN_HPP_USE_REFLECT )
490 #  if 14 <= VULKAN_HPP_CPP_VERSION
491     auto
492 #  else
493     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
494                const void * const &,
495                VULKAN_HPP_NAMESPACE::Bool32 const &,
496                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &>
497 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR498       reflect() const VULKAN_HPP_NOEXCEPT
499     {
500       return std::tie( sType, pNext, arrayOfPointers, data );
501     }
502 #endif
503 
504   public:
505     VULKAN_HPP_NAMESPACE::StructureType               sType           = StructureType::eAccelerationStructureGeometryInstancesDataKHR;
506     const void *                                      pNext           = {};
507     VULKAN_HPP_NAMESPACE::Bool32                      arrayOfPointers = {};
508     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data            = {};
509   };
510 
511   template <>
512   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryInstancesDataKHR>
513   {
514     using Type = AccelerationStructureGeometryInstancesDataKHR;
515   };
516 
517   union AccelerationStructureGeometryDataKHR
518   {
519     using NativeType = VkAccelerationStructureGeometryDataKHR;
520 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
521 
AccelerationStructureGeometryDataKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles_={} )522     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles_ = {} )
523       : triangles( triangles_ )
524     {
525     }
526 
AccelerationStructureGeometryDataKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR aabbs_)527     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR aabbs_ ) : aabbs( aabbs_ ) {}
528 
AccelerationStructureGeometryDataKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances_)529     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances_ )
530       : instances( instances_ )
531     {
532     }
533 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
534 
535 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
536     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR &
setTriangles(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const & triangles_)537       setTriangles( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const & triangles_ ) VULKAN_HPP_NOEXCEPT
538     {
539       triangles = triangles_;
540       return *this;
541     }
542 
543     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR &
setAabbs(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const & aabbs_)544       setAabbs( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const & aabbs_ ) VULKAN_HPP_NOEXCEPT
545     {
546       aabbs = aabbs_;
547       return *this;
548     }
549 
550     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR &
setInstances(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const & instances_)551       setInstances( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const & instances_ ) VULKAN_HPP_NOEXCEPT
552     {
553       instances = instances_;
554       return *this;
555     }
556 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
557 
operator VkAccelerationStructureGeometryDataKHR const&() const558     operator VkAccelerationStructureGeometryDataKHR const &() const
559     {
560       return *reinterpret_cast<const VkAccelerationStructureGeometryDataKHR *>( this );
561     }
562 
operator VkAccelerationStructureGeometryDataKHR&()563     operator VkAccelerationStructureGeometryDataKHR &()
564     {
565       return *reinterpret_cast<VkAccelerationStructureGeometryDataKHR *>( this );
566     }
567 
568 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
569     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles;
570     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR     aabbs;
571     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances;
572 #else
573     VkAccelerationStructureGeometryTrianglesDataKHR triangles;
574     VkAccelerationStructureGeometryAabbsDataKHR     aabbs;
575     VkAccelerationStructureGeometryInstancesDataKHR instances;
576 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
577   };
578 
579   struct AccelerationStructureGeometryKHR
580   {
581     using NativeType = VkAccelerationStructureGeometryKHR;
582 
583     static const bool                                  allowDuplicate = false;
584     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureGeometryKHR;
585 
586 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
587     VULKAN_HPP_CONSTEXPR_14
AccelerationStructureGeometryKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR588       AccelerationStructureGeometryKHR( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles,
589                                         VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry_ = {},
590                                         VULKAN_HPP_NAMESPACE::GeometryFlagsKHR                     flags_    = {},
591                                         const void *                                               pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
592       : pNext{ pNext_ }
593       , geometryType{ geometryType_ }
594       , geometry{ geometry_ }
595       , flags{ flags_ }
596     {
597     }
598 
599     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
600 
AccelerationStructureGeometryKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR601     AccelerationStructureGeometryKHR( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
602       : AccelerationStructureGeometryKHR( *reinterpret_cast<AccelerationStructureGeometryKHR const *>( &rhs ) )
603     {
604     }
605 
606     AccelerationStructureGeometryKHR & operator=( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
607 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
608 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR609     AccelerationStructureGeometryKHR & operator=( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
610     {
611       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR const *>( &rhs );
612       return *this;
613     }
614 
615 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR616     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
617     {
618       pNext = pNext_;
619       return *this;
620     }
621 
setGeometryTypeVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR622     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setGeometryType( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ ) VULKAN_HPP_NOEXCEPT
623     {
624       geometryType = geometryType_;
625       return *this;
626     }
627 
628     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR &
setGeometryVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR629       setGeometry( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR const & geometry_ ) VULKAN_HPP_NOEXCEPT
630     {
631       geometry = geometry_;
632       return *this;
633     }
634 
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR635     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setFlags( VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
636     {
637       flags = flags_;
638       return *this;
639     }
640 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
641 
operator VkAccelerationStructureGeometryKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR642     operator VkAccelerationStructureGeometryKHR const &() const VULKAN_HPP_NOEXCEPT
643     {
644       return *reinterpret_cast<const VkAccelerationStructureGeometryKHR *>( this );
645     }
646 
operator VkAccelerationStructureGeometryKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR647     operator VkAccelerationStructureGeometryKHR &() VULKAN_HPP_NOEXCEPT
648     {
649       return *reinterpret_cast<VkAccelerationStructureGeometryKHR *>( this );
650     }
651 
652 #if defined( VULKAN_HPP_USE_REFLECT )
653 #  if 14 <= VULKAN_HPP_CPP_VERSION
654     auto
655 #  else
656     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
657                const void * const &,
658                VULKAN_HPP_NAMESPACE::GeometryTypeKHR const &,
659                VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR const &,
660                VULKAN_HPP_NAMESPACE::GeometryFlagsKHR const &>
661 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR662       reflect() const VULKAN_HPP_NOEXCEPT
663     {
664       return std::tie( sType, pNext, geometryType, geometry, flags );
665     }
666 #endif
667 
668   public:
669     VULKAN_HPP_NAMESPACE::StructureType                        sType        = StructureType::eAccelerationStructureGeometryKHR;
670     const void *                                               pNext        = {};
671     VULKAN_HPP_NAMESPACE::GeometryTypeKHR                      geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles;
672     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry     = {};
673     VULKAN_HPP_NAMESPACE::GeometryFlagsKHR                     flags        = {};
674   };
675 
676   template <>
677   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryKHR>
678   {
679     using Type = AccelerationStructureGeometryKHR;
680   };
681 
682   union DeviceOrHostAddressKHR
683   {
684     using NativeType = VkDeviceOrHostAddressKHR;
685 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
686 
DeviceOrHostAddressKHR(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_={} )687     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) : deviceAddress( deviceAddress_ ) {}
688 
DeviceOrHostAddressKHR(void * hostAddress_)689     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR( void * hostAddress_ ) : hostAddress( hostAddress_ ) {}
690 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
691 
692 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setDeviceAddress(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_)693     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
694     {
695       deviceAddress = deviceAddress_;
696       return *this;
697     }
698 
setHostAddress(void * hostAddress_)699     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR & setHostAddress( void * hostAddress_ ) VULKAN_HPP_NOEXCEPT
700     {
701       hostAddress = hostAddress_;
702       return *this;
703     }
704 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
705 
operator VkDeviceOrHostAddressKHR const&() const706     operator VkDeviceOrHostAddressKHR const &() const
707     {
708       return *reinterpret_cast<const VkDeviceOrHostAddressKHR *>( this );
709     }
710 
operator VkDeviceOrHostAddressKHR&()711     operator VkDeviceOrHostAddressKHR &()
712     {
713       return *reinterpret_cast<VkDeviceOrHostAddressKHR *>( this );
714     }
715 
716 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
717     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress;
718     void *                              hostAddress;
719 #else
720     VkDeviceAddress                                 deviceAddress;
721     void *                                          hostAddress;
722 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
723   };
724 
725   struct AccelerationStructureBuildGeometryInfoKHR
726   {
727     using NativeType = VkAccelerationStructureBuildGeometryInfoKHR;
728 
729     static const bool                                  allowDuplicate = false;
730     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureBuildGeometryInfoKHR;
731 
732 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureBuildGeometryInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR733     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR(
734       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR                     type_  = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel,
735       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR               flags_ = {},
736       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR                mode_  = VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR::eBuild,
737       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         srcAccelerationStructure_ = {},
738       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         dstAccelerationStructure_ = {},
739       uint32_t                                                               geometryCount_            = {},
740       const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR *         pGeometries_              = {},
741       const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries_             = {},
742       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                           scratchData_              = {},
743       const void *                                                           pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
744       : pNext{ pNext_ }
745       , type{ type_ }
746       , flags{ flags_ }
747       , mode{ mode_ }
748       , srcAccelerationStructure{ srcAccelerationStructure_ }
749       , dstAccelerationStructure{ dstAccelerationStructure_ }
750       , geometryCount{ geometryCount_ }
751       , pGeometries{ pGeometries_ }
752       , ppGeometries{ ppGeometries_ }
753       , scratchData{ scratchData_ }
754     {
755     }
756 
757     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
758 
AccelerationStructureBuildGeometryInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR759     AccelerationStructureBuildGeometryInfoKHR( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
760       : AccelerationStructureBuildGeometryInfoKHR( *reinterpret_cast<AccelerationStructureBuildGeometryInfoKHR const *>( &rhs ) )
761     {
762     }
763 
764 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AccelerationStructureBuildGeometryInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR765     AccelerationStructureBuildGeometryInfoKHR(
766       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR                                                                          type_,
767       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR                                                                    flags_,
768       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR                                                                     mode_,
769       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                                                                              srcAccelerationStructure_,
770       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                                                                              dstAccelerationStructure_,
771       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR> const &         geometries_,
772       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const> const & pGeometries_ = {},
773       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                                                                                scratchData_ = {},
774       const void *                                                                                                                pNext_       = nullptr )
775       : pNext( pNext_ )
776       , type( type_ )
777       , flags( flags_ )
778       , mode( mode_ )
779       , srcAccelerationStructure( srcAccelerationStructure_ )
780       , dstAccelerationStructure( dstAccelerationStructure_ )
781       , geometryCount( static_cast<uint32_t>( !geometries_.empty() ? geometries_.size() : pGeometries_.size() ) )
782       , pGeometries( geometries_.data() )
783       , ppGeometries( pGeometries_.data() )
784       , scratchData( scratchData_ )
785     {
786 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
787       VULKAN_HPP_ASSERT( ( !geometries_.empty() + !pGeometries_.empty() ) <= 1 );
788 #    else
789       if ( 1 < ( !geometries_.empty() + !pGeometries_.empty() ) )
790       {
791         throw LogicError(
792           VULKAN_HPP_NAMESPACE_STRING
793           "::AccelerationStructureBuildGeometryInfoKHR::AccelerationStructureBuildGeometryInfoKHR: 1 < ( !geometries_.empty() + !pGeometries_.empty() )" );
794       }
795 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
796     }
797 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
798 
799     AccelerationStructureBuildGeometryInfoKHR & operator=( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
800 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
801 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR802     AccelerationStructureBuildGeometryInfoKHR & operator=( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
803     {
804       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR const *>( &rhs );
805       return *this;
806     }
807 
808 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR809     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
810     {
811       pNext = pNext_;
812       return *this;
813     }
814 
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR815     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
816     {
817       type = type_;
818       return *this;
819     }
820 
821     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR822       setFlags( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
823     {
824       flags = flags_;
825       return *this;
826     }
827 
828     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setModeVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR829       setMode( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
830     {
831       mode = mode_;
832       return *this;
833     }
834 
835     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setSrcAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR836       setSrcAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure_ ) VULKAN_HPP_NOEXCEPT
837     {
838       srcAccelerationStructure = srcAccelerationStructure_;
839       return *this;
840     }
841 
842     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setDstAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR843       setDstAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure_ ) VULKAN_HPP_NOEXCEPT
844     {
845       dstAccelerationStructure = dstAccelerationStructure_;
846       return *this;
847     }
848 
setGeometryCountVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR849     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setGeometryCount( uint32_t geometryCount_ ) VULKAN_HPP_NOEXCEPT
850     {
851       geometryCount = geometryCount_;
852       return *this;
853     }
854 
855     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setPGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR856       setPGeometries( const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * pGeometries_ ) VULKAN_HPP_NOEXCEPT
857     {
858       pGeometries = pGeometries_;
859       return *this;
860     }
861 
862 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR863     AccelerationStructureBuildGeometryInfoKHR & setGeometries(
864       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR> const & geometries_ ) VULKAN_HPP_NOEXCEPT
865     {
866       geometryCount = static_cast<uint32_t>( geometries_.size() );
867       pGeometries   = geometries_.data();
868       return *this;
869     }
870 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
871 
872     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setPpGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR873       setPpGeometries( const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries_ ) VULKAN_HPP_NOEXCEPT
874     {
875       ppGeometries = ppGeometries_;
876       return *this;
877     }
878 
879 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
880     AccelerationStructureBuildGeometryInfoKHR &
setPGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR881       setPGeometries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const> const & pGeometries_ )
882         VULKAN_HPP_NOEXCEPT
883     {
884       geometryCount = static_cast<uint32_t>( pGeometries_.size() );
885       ppGeometries  = pGeometries_.data();
886       return *this;
887     }
888 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
889 
890     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setScratchDataVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR891       setScratchData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & scratchData_ ) VULKAN_HPP_NOEXCEPT
892     {
893       scratchData = scratchData_;
894       return *this;
895     }
896 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
897 
operator VkAccelerationStructureBuildGeometryInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR898     operator VkAccelerationStructureBuildGeometryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
899     {
900       return *reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( this );
901     }
902 
operator VkAccelerationStructureBuildGeometryInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR903     operator VkAccelerationStructureBuildGeometryInfoKHR &() VULKAN_HPP_NOEXCEPT
904     {
905       return *reinterpret_cast<VkAccelerationStructureBuildGeometryInfoKHR *>( this );
906     }
907 
908 #if defined( VULKAN_HPP_USE_REFLECT )
909 #  if 14 <= VULKAN_HPP_CPP_VERSION
910     auto
911 #  else
912     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
913                const void * const &,
914                VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR const &,
915                VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR const &,
916                VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR const &,
917                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
918                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
919                uint32_t const &,
920                const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const &,
921                const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * const &,
922                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const &>
923 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR924       reflect() const VULKAN_HPP_NOEXCEPT
925     {
926       return std::tie(
927         sType, pNext, type, flags, mode, srcAccelerationStructure, dstAccelerationStructure, geometryCount, pGeometries, ppGeometries, scratchData );
928     }
929 #endif
930 
931   public:
932     VULKAN_HPP_NAMESPACE::StructureType                                    sType = StructureType::eAccelerationStructureBuildGeometryInfoKHR;
933     const void *                                                           pNext = {};
934     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR                     type  = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel;
935     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR               flags = {};
936     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR                mode  = VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR::eBuild;
937     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         srcAccelerationStructure = {};
938     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         dstAccelerationStructure = {};
939     uint32_t                                                               geometryCount            = {};
940     const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR *         pGeometries              = {};
941     const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries             = {};
942     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                           scratchData              = {};
943   };
944 
945   template <>
946   struct CppType<StructureType, StructureType::eAccelerationStructureBuildGeometryInfoKHR>
947   {
948     using Type = AccelerationStructureBuildGeometryInfoKHR;
949   };
950 
951   struct AccelerationStructureBuildRangeInfoKHR
952   {
953     using NativeType = VkAccelerationStructureBuildRangeInfoKHR;
954 
955 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureBuildRangeInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR956     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( uint32_t primitiveCount_  = {},
957                                                                  uint32_t primitiveOffset_ = {},
958                                                                  uint32_t firstVertex_     = {},
959                                                                  uint32_t transformOffset_ = {} ) VULKAN_HPP_NOEXCEPT
960       : primitiveCount{ primitiveCount_ }
961       , primitiveOffset{ primitiveOffset_ }
962       , firstVertex{ firstVertex_ }
963       , transformOffset{ transformOffset_ }
964     {
965     }
966 
967     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
968 
AccelerationStructureBuildRangeInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR969     AccelerationStructureBuildRangeInfoKHR( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
970       : AccelerationStructureBuildRangeInfoKHR( *reinterpret_cast<AccelerationStructureBuildRangeInfoKHR const *>( &rhs ) )
971     {
972     }
973 
974     AccelerationStructureBuildRangeInfoKHR & operator=( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
975 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
976 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR977     AccelerationStructureBuildRangeInfoKHR & operator=( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
978     {
979       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR const *>( &rhs );
980       return *this;
981     }
982 
983 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPrimitiveCountVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR984     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setPrimitiveCount( uint32_t primitiveCount_ ) VULKAN_HPP_NOEXCEPT
985     {
986       primitiveCount = primitiveCount_;
987       return *this;
988     }
989 
setPrimitiveOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR990     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setPrimitiveOffset( uint32_t primitiveOffset_ ) VULKAN_HPP_NOEXCEPT
991     {
992       primitiveOffset = primitiveOffset_;
993       return *this;
994     }
995 
setFirstVertexVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR996     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT
997     {
998       firstVertex = firstVertex_;
999       return *this;
1000     }
1001 
setTransformOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1002     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setTransformOffset( uint32_t transformOffset_ ) VULKAN_HPP_NOEXCEPT
1003     {
1004       transformOffset = transformOffset_;
1005       return *this;
1006     }
1007 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1008 
operator VkAccelerationStructureBuildRangeInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1009     operator VkAccelerationStructureBuildRangeInfoKHR const &() const VULKAN_HPP_NOEXCEPT
1010     {
1011       return *reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR *>( this );
1012     }
1013 
operator VkAccelerationStructureBuildRangeInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1014     operator VkAccelerationStructureBuildRangeInfoKHR &() VULKAN_HPP_NOEXCEPT
1015     {
1016       return *reinterpret_cast<VkAccelerationStructureBuildRangeInfoKHR *>( this );
1017     }
1018 
1019 #if defined( VULKAN_HPP_USE_REFLECT )
1020 #  if 14 <= VULKAN_HPP_CPP_VERSION
1021     auto
1022 #  else
1023     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
1024 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1025       reflect() const VULKAN_HPP_NOEXCEPT
1026     {
1027       return std::tie( primitiveCount, primitiveOffset, firstVertex, transformOffset );
1028     }
1029 #endif
1030 
1031 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1032     auto operator<=>( AccelerationStructureBuildRangeInfoKHR const & ) const = default;
1033 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1034     bool                                            operator==( AccelerationStructureBuildRangeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1035     {
1036 #  if defined( VULKAN_HPP_USE_REFLECT )
1037       return this->reflect() == rhs.reflect();
1038 #  else
1039       return ( primitiveCount == rhs.primitiveCount ) && ( primitiveOffset == rhs.primitiveOffset ) && ( firstVertex == rhs.firstVertex ) &&
1040              ( transformOffset == rhs.transformOffset );
1041 #  endif
1042     }
1043 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1044     bool operator!=( AccelerationStructureBuildRangeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1045     {
1046       return !operator==( rhs );
1047     }
1048 #endif
1049 
1050   public:
1051     uint32_t primitiveCount  = {};
1052     uint32_t primitiveOffset = {};
1053     uint32_t firstVertex     = {};
1054     uint32_t transformOffset = {};
1055   };
1056 
1057   struct AccelerationStructureBuildSizesInfoKHR
1058   {
1059     using NativeType = VkAccelerationStructureBuildSizesInfoKHR;
1060 
1061     static const bool                                  allowDuplicate = false;
1062     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureBuildSizesInfoKHR;
1063 
1064 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureBuildSizesInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1065     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR( VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize_ = {},
1066                                                                  VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize_         = {},
1067                                                                  VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_          = {},
1068                                                                  const void *                     pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
1069       : pNext{ pNext_ }
1070       , accelerationStructureSize{ accelerationStructureSize_ }
1071       , updateScratchSize{ updateScratchSize_ }
1072       , buildScratchSize{ buildScratchSize_ }
1073     {
1074     }
1075 
1076     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1077 
AccelerationStructureBuildSizesInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1078     AccelerationStructureBuildSizesInfoKHR( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1079       : AccelerationStructureBuildSizesInfoKHR( *reinterpret_cast<AccelerationStructureBuildSizesInfoKHR const *>( &rhs ) )
1080     {
1081     }
1082 
1083     AccelerationStructureBuildSizesInfoKHR & operator=( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1084 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1085 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1086     AccelerationStructureBuildSizesInfoKHR & operator=( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1087     {
1088       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR const *>( &rhs );
1089       return *this;
1090     }
1091 
operator VkAccelerationStructureBuildSizesInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1092     operator VkAccelerationStructureBuildSizesInfoKHR const &() const VULKAN_HPP_NOEXCEPT
1093     {
1094       return *reinterpret_cast<const VkAccelerationStructureBuildSizesInfoKHR *>( this );
1095     }
1096 
operator VkAccelerationStructureBuildSizesInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1097     operator VkAccelerationStructureBuildSizesInfoKHR &() VULKAN_HPP_NOEXCEPT
1098     {
1099       return *reinterpret_cast<VkAccelerationStructureBuildSizesInfoKHR *>( this );
1100     }
1101 
1102 #if defined( VULKAN_HPP_USE_REFLECT )
1103 #  if 14 <= VULKAN_HPP_CPP_VERSION
1104     auto
1105 #  else
1106     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1107                const void * const &,
1108                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1109                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1110                VULKAN_HPP_NAMESPACE::DeviceSize const &>
1111 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1112       reflect() const VULKAN_HPP_NOEXCEPT
1113     {
1114       return std::tie( sType, pNext, accelerationStructureSize, updateScratchSize, buildScratchSize );
1115     }
1116 #endif
1117 
1118 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1119     auto operator<=>( AccelerationStructureBuildSizesInfoKHR const & ) const = default;
1120 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1121     bool operator==( AccelerationStructureBuildSizesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1122     {
1123 #  if defined( VULKAN_HPP_USE_REFLECT )
1124       return this->reflect() == rhs.reflect();
1125 #  else
1126       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructureSize == rhs.accelerationStructureSize ) &&
1127              ( updateScratchSize == rhs.updateScratchSize ) && ( buildScratchSize == rhs.buildScratchSize );
1128 #  endif
1129     }
1130 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1131     bool operator!=( AccelerationStructureBuildSizesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1132     {
1133       return !operator==( rhs );
1134     }
1135 #endif
1136 
1137   public:
1138     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eAccelerationStructureBuildSizesInfoKHR;
1139     const void *                        pNext                     = {};
1140     VULKAN_HPP_NAMESPACE::DeviceSize    accelerationStructureSize = {};
1141     VULKAN_HPP_NAMESPACE::DeviceSize    updateScratchSize         = {};
1142     VULKAN_HPP_NAMESPACE::DeviceSize    buildScratchSize          = {};
1143   };
1144 
1145   template <>
1146   struct CppType<StructureType, StructureType::eAccelerationStructureBuildSizesInfoKHR>
1147   {
1148     using Type = AccelerationStructureBuildSizesInfoKHR;
1149   };
1150 
1151   struct AccelerationStructureCaptureDescriptorDataInfoEXT
1152   {
1153     using NativeType = VkAccelerationStructureCaptureDescriptorDataInfoEXT;
1154 
1155     static const bool                                  allowDuplicate = false;
1156     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureCaptureDescriptorDataInfoEXT;
1157 
1158 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1159     VULKAN_HPP_CONSTEXPR AccelerationStructureCaptureDescriptorDataInfoEXT( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_   = {},
1160                                                                             VULKAN_HPP_NAMESPACE::AccelerationStructureNV  accelerationStructureNV_ = {},
1161                                                                             const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
1162       : pNext{ pNext_ }
1163       , accelerationStructure{ accelerationStructure_ }
1164       , accelerationStructureNV{ accelerationStructureNV_ }
1165     {
1166     }
1167 
1168     VULKAN_HPP_CONSTEXPR
1169       AccelerationStructureCaptureDescriptorDataInfoEXT( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1170 
AccelerationStructureCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1171     AccelerationStructureCaptureDescriptorDataInfoEXT( VkAccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
1172       : AccelerationStructureCaptureDescriptorDataInfoEXT( *reinterpret_cast<AccelerationStructureCaptureDescriptorDataInfoEXT const *>( &rhs ) )
1173     {
1174     }
1175 
1176     AccelerationStructureCaptureDescriptorDataInfoEXT &
1177       operator=( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1178 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1179 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1180     AccelerationStructureCaptureDescriptorDataInfoEXT & operator=( VkAccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
1181     {
1182       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT const *>( &rhs );
1183       return *this;
1184     }
1185 
1186 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1187     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1188     {
1189       pNext = pNext_;
1190       return *this;
1191     }
1192 
1193     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT &
setAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1194       setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
1195     {
1196       accelerationStructure = accelerationStructure_;
1197       return *this;
1198     }
1199 
1200     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT &
setAccelerationStructureNVVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1201       setAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructureNV_ ) VULKAN_HPP_NOEXCEPT
1202     {
1203       accelerationStructureNV = accelerationStructureNV_;
1204       return *this;
1205     }
1206 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1207 
operator VkAccelerationStructureCaptureDescriptorDataInfoEXT const&VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1208     operator VkAccelerationStructureCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT
1209     {
1210       return *reinterpret_cast<const VkAccelerationStructureCaptureDescriptorDataInfoEXT *>( this );
1211     }
1212 
operator VkAccelerationStructureCaptureDescriptorDataInfoEXT&VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1213     operator VkAccelerationStructureCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT
1214     {
1215       return *reinterpret_cast<VkAccelerationStructureCaptureDescriptorDataInfoEXT *>( this );
1216     }
1217 
1218 #if defined( VULKAN_HPP_USE_REFLECT )
1219 #  if 14 <= VULKAN_HPP_CPP_VERSION
1220     auto
1221 #  else
1222     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1223                const void * const &,
1224                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
1225                VULKAN_HPP_NAMESPACE::AccelerationStructureNV const &>
1226 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1227       reflect() const VULKAN_HPP_NOEXCEPT
1228     {
1229       return std::tie( sType, pNext, accelerationStructure, accelerationStructureNV );
1230     }
1231 #endif
1232 
1233 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1234     auto operator<=>( AccelerationStructureCaptureDescriptorDataInfoEXT const & ) const = default;
1235 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1236     bool operator==( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
1237     {
1238 #  if defined( VULKAN_HPP_USE_REFLECT )
1239       return this->reflect() == rhs.reflect();
1240 #  else
1241       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ) &&
1242              ( accelerationStructureNV == rhs.accelerationStructureNV );
1243 #  endif
1244     }
1245 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1246     bool operator!=( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
1247     {
1248       return !operator==( rhs );
1249     }
1250 #endif
1251 
1252   public:
1253     VULKAN_HPP_NAMESPACE::StructureType            sType                   = StructureType::eAccelerationStructureCaptureDescriptorDataInfoEXT;
1254     const void *                                   pNext                   = {};
1255     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure   = {};
1256     VULKAN_HPP_NAMESPACE::AccelerationStructureNV  accelerationStructureNV = {};
1257   };
1258 
1259   template <>
1260   struct CppType<StructureType, StructureType::eAccelerationStructureCaptureDescriptorDataInfoEXT>
1261   {
1262     using Type = AccelerationStructureCaptureDescriptorDataInfoEXT;
1263   };
1264 
1265   struct AccelerationStructureCreateInfoKHR
1266   {
1267     using NativeType = VkAccelerationStructureCreateInfoKHR;
1268 
1269     static const bool                                  allowDuplicate = false;
1270     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureCreateInfoKHR;
1271 
1272 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureCreateInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1273     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoKHR(
1274       VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags_   = {},
1275       VULKAN_HPP_NAMESPACE::Buffer                              buffer_        = {},
1276       VULKAN_HPP_NAMESPACE::DeviceSize                          offset_        = {},
1277       VULKAN_HPP_NAMESPACE::DeviceSize                          size_          = {},
1278       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR        type_          = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel,
1279       VULKAN_HPP_NAMESPACE::DeviceAddress                       deviceAddress_ = {},
1280       const void *                                              pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
1281       : pNext{ pNext_ }
1282       , createFlags{ createFlags_ }
1283       , buffer{ buffer_ }
1284       , offset{ offset_ }
1285       , size{ size_ }
1286       , type{ type_ }
1287       , deviceAddress{ deviceAddress_ }
1288     {
1289     }
1290 
1291     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoKHR( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1292 
AccelerationStructureCreateInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1293     AccelerationStructureCreateInfoKHR( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1294       : AccelerationStructureCreateInfoKHR( *reinterpret_cast<AccelerationStructureCreateInfoKHR const *>( &rhs ) )
1295     {
1296     }
1297 
1298     AccelerationStructureCreateInfoKHR & operator=( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1299 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1300 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1301     AccelerationStructureCreateInfoKHR & operator=( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1302     {
1303       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const *>( &rhs );
1304       return *this;
1305     }
1306 
1307 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1308     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1309     {
1310       pNext = pNext_;
1311       return *this;
1312     }
1313 
1314     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR &
setCreateFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1315       setCreateFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags_ ) VULKAN_HPP_NOEXCEPT
1316     {
1317       createFlags = createFlags_;
1318       return *this;
1319     }
1320 
setBufferVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1321     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
1322     {
1323       buffer = buffer_;
1324       return *this;
1325     }
1326 
setOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1327     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
1328     {
1329       offset = offset_;
1330       return *this;
1331     }
1332 
setSizeVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1333     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
1334     {
1335       size = size_;
1336       return *this;
1337     }
1338 
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1339     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
1340     {
1341       type = type_;
1342       return *this;
1343     }
1344 
setDeviceAddressVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1345     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
1346     {
1347       deviceAddress = deviceAddress_;
1348       return *this;
1349     }
1350 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1351 
operator VkAccelerationStructureCreateInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1352     operator VkAccelerationStructureCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
1353     {
1354       return *reinterpret_cast<const VkAccelerationStructureCreateInfoKHR *>( this );
1355     }
1356 
operator VkAccelerationStructureCreateInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1357     operator VkAccelerationStructureCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
1358     {
1359       return *reinterpret_cast<VkAccelerationStructureCreateInfoKHR *>( this );
1360     }
1361 
1362 #if defined( VULKAN_HPP_USE_REFLECT )
1363 #  if 14 <= VULKAN_HPP_CPP_VERSION
1364     auto
1365 #  else
1366     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1367                const void * const &,
1368                VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR const &,
1369                VULKAN_HPP_NAMESPACE::Buffer const &,
1370                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1371                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1372                VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR const &,
1373                VULKAN_HPP_NAMESPACE::DeviceAddress const &>
1374 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1375       reflect() const VULKAN_HPP_NOEXCEPT
1376     {
1377       return std::tie( sType, pNext, createFlags, buffer, offset, size, type, deviceAddress );
1378     }
1379 #endif
1380 
1381 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1382     auto operator<=>( AccelerationStructureCreateInfoKHR const & ) const = default;
1383 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1384     bool operator==( AccelerationStructureCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1385     {
1386 #  if defined( VULKAN_HPP_USE_REFLECT )
1387       return this->reflect() == rhs.reflect();
1388 #  else
1389       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createFlags == rhs.createFlags ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) &&
1390              ( size == rhs.size ) && ( type == rhs.type ) && ( deviceAddress == rhs.deviceAddress );
1391 #  endif
1392     }
1393 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1394     bool operator!=( AccelerationStructureCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1395     {
1396       return !operator==( rhs );
1397     }
1398 #endif
1399 
1400   public:
1401     VULKAN_HPP_NAMESPACE::StructureType                       sType         = StructureType::eAccelerationStructureCreateInfoKHR;
1402     const void *                                              pNext         = {};
1403     VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags   = {};
1404     VULKAN_HPP_NAMESPACE::Buffer                              buffer        = {};
1405     VULKAN_HPP_NAMESPACE::DeviceSize                          offset        = {};
1406     VULKAN_HPP_NAMESPACE::DeviceSize                          size          = {};
1407     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR        type          = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel;
1408     VULKAN_HPP_NAMESPACE::DeviceAddress                       deviceAddress = {};
1409   };
1410 
1411   template <>
1412   struct CppType<StructureType, StructureType::eAccelerationStructureCreateInfoKHR>
1413   {
1414     using Type = AccelerationStructureCreateInfoKHR;
1415   };
1416 
1417   struct GeometryTrianglesNV
1418   {
1419     using NativeType = VkGeometryTrianglesNV;
1420 
1421     static const bool                                  allowDuplicate = false;
1422     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeometryTrianglesNV;
1423 
1424 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryTrianglesNVVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1425     VULKAN_HPP_CONSTEXPR GeometryTrianglesNV( VULKAN_HPP_NAMESPACE::Buffer     vertexData_      = {},
1426                                               VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset_    = {},
1427                                               uint32_t                         vertexCount_     = {},
1428                                               VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_    = {},
1429                                               VULKAN_HPP_NAMESPACE::Format     vertexFormat_    = VULKAN_HPP_NAMESPACE::Format::eUndefined,
1430                                               VULKAN_HPP_NAMESPACE::Buffer     indexData_       = {},
1431                                               VULKAN_HPP_NAMESPACE::DeviceSize indexOffset_     = {},
1432                                               uint32_t                         indexCount_      = {},
1433                                               VULKAN_HPP_NAMESPACE::IndexType  indexType_       = VULKAN_HPP_NAMESPACE::IndexType::eUint16,
1434                                               VULKAN_HPP_NAMESPACE::Buffer     transformData_   = {},
1435                                               VULKAN_HPP_NAMESPACE::DeviceSize transformOffset_ = {},
1436                                               const void *                     pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
1437       : pNext{ pNext_ }
1438       , vertexData{ vertexData_ }
1439       , vertexOffset{ vertexOffset_ }
1440       , vertexCount{ vertexCount_ }
1441       , vertexStride{ vertexStride_ }
1442       , vertexFormat{ vertexFormat_ }
1443       , indexData{ indexData_ }
1444       , indexOffset{ indexOffset_ }
1445       , indexCount{ indexCount_ }
1446       , indexType{ indexType_ }
1447       , transformData{ transformData_ }
1448       , transformOffset{ transformOffset_ }
1449     {
1450     }
1451 
1452     VULKAN_HPP_CONSTEXPR GeometryTrianglesNV( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1453 
GeometryTrianglesNVVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1454     GeometryTrianglesNV( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryTrianglesNV( *reinterpret_cast<GeometryTrianglesNV const *>( &rhs ) )
1455     {
1456     }
1457 
1458     GeometryTrianglesNV & operator=( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1459 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1460 
operator =VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1461     GeometryTrianglesNV & operator=( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT
1462     {
1463       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const *>( &rhs );
1464       return *this;
1465     }
1466 
1467 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1468     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1469     {
1470       pNext = pNext_;
1471       return *this;
1472     }
1473 
setVertexDataVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1474     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexData( VULKAN_HPP_NAMESPACE::Buffer vertexData_ ) VULKAN_HPP_NOEXCEPT
1475     {
1476       vertexData = vertexData_;
1477       return *this;
1478     }
1479 
setVertexOffsetVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1480     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexOffset( VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset_ ) VULKAN_HPP_NOEXCEPT
1481     {
1482       vertexOffset = vertexOffset_;
1483       return *this;
1484     }
1485 
setVertexCountVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1486     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
1487     {
1488       vertexCount = vertexCount_;
1489       return *this;
1490     }
1491 
setVertexStrideVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1492     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexStride( VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ ) VULKAN_HPP_NOEXCEPT
1493     {
1494       vertexStride = vertexStride_;
1495       return *this;
1496     }
1497 
setVertexFormatVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1498     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexFormat( VULKAN_HPP_NAMESPACE::Format vertexFormat_ ) VULKAN_HPP_NOEXCEPT
1499     {
1500       vertexFormat = vertexFormat_;
1501       return *this;
1502     }
1503 
setIndexDataVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1504     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexData( VULKAN_HPP_NAMESPACE::Buffer indexData_ ) VULKAN_HPP_NOEXCEPT
1505     {
1506       indexData = indexData_;
1507       return *this;
1508     }
1509 
setIndexOffsetVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1510     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexOffset( VULKAN_HPP_NAMESPACE::DeviceSize indexOffset_ ) VULKAN_HPP_NOEXCEPT
1511     {
1512       indexOffset = indexOffset_;
1513       return *this;
1514     }
1515 
setIndexCountVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1516     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
1517     {
1518       indexCount = indexCount_;
1519       return *this;
1520     }
1521 
setIndexTypeVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1522     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
1523     {
1524       indexType = indexType_;
1525       return *this;
1526     }
1527 
setTransformDataVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1528     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setTransformData( VULKAN_HPP_NAMESPACE::Buffer transformData_ ) VULKAN_HPP_NOEXCEPT
1529     {
1530       transformData = transformData_;
1531       return *this;
1532     }
1533 
setTransformOffsetVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1534     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setTransformOffset( VULKAN_HPP_NAMESPACE::DeviceSize transformOffset_ ) VULKAN_HPP_NOEXCEPT
1535     {
1536       transformOffset = transformOffset_;
1537       return *this;
1538     }
1539 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1540 
operator VkGeometryTrianglesNV const&VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1541     operator VkGeometryTrianglesNV const &() const VULKAN_HPP_NOEXCEPT
1542     {
1543       return *reinterpret_cast<const VkGeometryTrianglesNV *>( this );
1544     }
1545 
operator VkGeometryTrianglesNV&VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1546     operator VkGeometryTrianglesNV &() VULKAN_HPP_NOEXCEPT
1547     {
1548       return *reinterpret_cast<VkGeometryTrianglesNV *>( this );
1549     }
1550 
1551 #if defined( VULKAN_HPP_USE_REFLECT )
1552 #  if 14 <= VULKAN_HPP_CPP_VERSION
1553     auto
1554 #  else
1555     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1556                const void * const &,
1557                VULKAN_HPP_NAMESPACE::Buffer const &,
1558                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1559                uint32_t const &,
1560                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1561                VULKAN_HPP_NAMESPACE::Format const &,
1562                VULKAN_HPP_NAMESPACE::Buffer const &,
1563                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1564                uint32_t const &,
1565                VULKAN_HPP_NAMESPACE::IndexType const &,
1566                VULKAN_HPP_NAMESPACE::Buffer const &,
1567                VULKAN_HPP_NAMESPACE::DeviceSize const &>
1568 #  endif
reflectVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1569       reflect() const VULKAN_HPP_NOEXCEPT
1570     {
1571       return std::tie( sType,
1572                        pNext,
1573                        vertexData,
1574                        vertexOffset,
1575                        vertexCount,
1576                        vertexStride,
1577                        vertexFormat,
1578                        indexData,
1579                        indexOffset,
1580                        indexCount,
1581                        indexType,
1582                        transformData,
1583                        transformOffset );
1584     }
1585 #endif
1586 
1587 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1588     auto operator<=>( GeometryTrianglesNV const & ) const = default;
1589 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1590     bool operator==( GeometryTrianglesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1591     {
1592 #  if defined( VULKAN_HPP_USE_REFLECT )
1593       return this->reflect() == rhs.reflect();
1594 #  else
1595       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexData == rhs.vertexData ) && ( vertexOffset == rhs.vertexOffset ) &&
1596              ( vertexCount == rhs.vertexCount ) && ( vertexStride == rhs.vertexStride ) && ( vertexFormat == rhs.vertexFormat ) &&
1597              ( indexData == rhs.indexData ) && ( indexOffset == rhs.indexOffset ) && ( indexCount == rhs.indexCount ) && ( indexType == rhs.indexType ) &&
1598              ( transformData == rhs.transformData ) && ( transformOffset == rhs.transformOffset );
1599 #  endif
1600     }
1601 
operator !=VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1602     bool operator!=( GeometryTrianglesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1603     {
1604       return !operator==( rhs );
1605     }
1606 #endif
1607 
1608   public:
1609     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eGeometryTrianglesNV;
1610     const void *                        pNext           = {};
1611     VULKAN_HPP_NAMESPACE::Buffer        vertexData      = {};
1612     VULKAN_HPP_NAMESPACE::DeviceSize    vertexOffset    = {};
1613     uint32_t                            vertexCount     = {};
1614     VULKAN_HPP_NAMESPACE::DeviceSize    vertexStride    = {};
1615     VULKAN_HPP_NAMESPACE::Format        vertexFormat    = VULKAN_HPP_NAMESPACE::Format::eUndefined;
1616     VULKAN_HPP_NAMESPACE::Buffer        indexData       = {};
1617     VULKAN_HPP_NAMESPACE::DeviceSize    indexOffset     = {};
1618     uint32_t                            indexCount      = {};
1619     VULKAN_HPP_NAMESPACE::IndexType     indexType       = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
1620     VULKAN_HPP_NAMESPACE::Buffer        transformData   = {};
1621     VULKAN_HPP_NAMESPACE::DeviceSize    transformOffset = {};
1622   };
1623 
1624   template <>
1625   struct CppType<StructureType, StructureType::eGeometryTrianglesNV>
1626   {
1627     using Type = GeometryTrianglesNV;
1628   };
1629 
1630   struct GeometryAABBNV
1631   {
1632     using NativeType = VkGeometryAABBNV;
1633 
1634     static const bool                                  allowDuplicate = false;
1635     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeometryAabbNV;
1636 
1637 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryAABBNVVULKAN_HPP_NAMESPACE::GeometryAABBNV1638     VULKAN_HPP_CONSTEXPR GeometryAABBNV( VULKAN_HPP_NAMESPACE::Buffer     aabbData_ = {},
1639                                          uint32_t                         numAABBs_ = {},
1640                                          uint32_t                         stride_   = {},
1641                                          VULKAN_HPP_NAMESPACE::DeviceSize offset_   = {},
1642                                          const void *                     pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
1643       : pNext{ pNext_ }
1644       , aabbData{ aabbData_ }
1645       , numAABBs{ numAABBs_ }
1646       , stride{ stride_ }
1647       , offset{ offset_ }
1648     {
1649     }
1650 
1651     VULKAN_HPP_CONSTEXPR GeometryAABBNV( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1652 
GeometryAABBNVVULKAN_HPP_NAMESPACE::GeometryAABBNV1653     GeometryAABBNV( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryAABBNV( *reinterpret_cast<GeometryAABBNV const *>( &rhs ) ) {}
1654 
1655     GeometryAABBNV & operator=( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1656 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1657 
operator =VULKAN_HPP_NAMESPACE::GeometryAABBNV1658     GeometryAABBNV & operator=( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT
1659     {
1660       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryAABBNV const *>( &rhs );
1661       return *this;
1662     }
1663 
1664 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeometryAABBNV1665     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1666     {
1667       pNext = pNext_;
1668       return *this;
1669     }
1670 
setAabbDataVULKAN_HPP_NAMESPACE::GeometryAABBNV1671     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setAabbData( VULKAN_HPP_NAMESPACE::Buffer aabbData_ ) VULKAN_HPP_NOEXCEPT
1672     {
1673       aabbData = aabbData_;
1674       return *this;
1675     }
1676 
setNumAABBsVULKAN_HPP_NAMESPACE::GeometryAABBNV1677     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setNumAABBs( uint32_t numAABBs_ ) VULKAN_HPP_NOEXCEPT
1678     {
1679       numAABBs = numAABBs_;
1680       return *this;
1681     }
1682 
setStrideVULKAN_HPP_NAMESPACE::GeometryAABBNV1683     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
1684     {
1685       stride = stride_;
1686       return *this;
1687     }
1688 
setOffsetVULKAN_HPP_NAMESPACE::GeometryAABBNV1689     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
1690     {
1691       offset = offset_;
1692       return *this;
1693     }
1694 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1695 
operator VkGeometryAABBNV const&VULKAN_HPP_NAMESPACE::GeometryAABBNV1696     operator VkGeometryAABBNV const &() const VULKAN_HPP_NOEXCEPT
1697     {
1698       return *reinterpret_cast<const VkGeometryAABBNV *>( this );
1699     }
1700 
operator VkGeometryAABBNV&VULKAN_HPP_NAMESPACE::GeometryAABBNV1701     operator VkGeometryAABBNV &() VULKAN_HPP_NOEXCEPT
1702     {
1703       return *reinterpret_cast<VkGeometryAABBNV *>( this );
1704     }
1705 
1706 #if defined( VULKAN_HPP_USE_REFLECT )
1707 #  if 14 <= VULKAN_HPP_CPP_VERSION
1708     auto
1709 #  else
1710     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1711                const void * const &,
1712                VULKAN_HPP_NAMESPACE::Buffer const &,
1713                uint32_t const &,
1714                uint32_t const &,
1715                VULKAN_HPP_NAMESPACE::DeviceSize const &>
1716 #  endif
reflectVULKAN_HPP_NAMESPACE::GeometryAABBNV1717       reflect() const VULKAN_HPP_NOEXCEPT
1718     {
1719       return std::tie( sType, pNext, aabbData, numAABBs, stride, offset );
1720     }
1721 #endif
1722 
1723 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1724     auto operator<=>( GeometryAABBNV const & ) const = default;
1725 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryAABBNV1726     bool operator==( GeometryAABBNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1727     {
1728 #  if defined( VULKAN_HPP_USE_REFLECT )
1729       return this->reflect() == rhs.reflect();
1730 #  else
1731       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( aabbData == rhs.aabbData ) && ( numAABBs == rhs.numAABBs ) && ( stride == rhs.stride ) &&
1732              ( offset == rhs.offset );
1733 #  endif
1734     }
1735 
operator !=VULKAN_HPP_NAMESPACE::GeometryAABBNV1736     bool operator!=( GeometryAABBNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1737     {
1738       return !operator==( rhs );
1739     }
1740 #endif
1741 
1742   public:
1743     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eGeometryAabbNV;
1744     const void *                        pNext    = {};
1745     VULKAN_HPP_NAMESPACE::Buffer        aabbData = {};
1746     uint32_t                            numAABBs = {};
1747     uint32_t                            stride   = {};
1748     VULKAN_HPP_NAMESPACE::DeviceSize    offset   = {};
1749   };
1750 
1751   template <>
1752   struct CppType<StructureType, StructureType::eGeometryAabbNV>
1753   {
1754     using Type = GeometryAABBNV;
1755   };
1756 
1757   struct GeometryDataNV
1758   {
1759     using NativeType = VkGeometryDataNV;
1760 
1761 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryDataNVVULKAN_HPP_NAMESPACE::GeometryDataNV1762     VULKAN_HPP_CONSTEXPR GeometryDataNV( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV triangles_ = {},
1763                                          VULKAN_HPP_NAMESPACE::GeometryAABBNV      aabbs_     = {} ) VULKAN_HPP_NOEXCEPT
1764       : triangles{ triangles_ }
1765       , aabbs{ aabbs_ }
1766     {
1767     }
1768 
1769     VULKAN_HPP_CONSTEXPR GeometryDataNV( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1770 
GeometryDataNVVULKAN_HPP_NAMESPACE::GeometryDataNV1771     GeometryDataNV( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryDataNV( *reinterpret_cast<GeometryDataNV const *>( &rhs ) ) {}
1772 
1773     GeometryDataNV & operator=( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1774 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1775 
operator =VULKAN_HPP_NAMESPACE::GeometryDataNV1776     GeometryDataNV & operator=( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
1777     {
1778       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryDataNV const *>( &rhs );
1779       return *this;
1780     }
1781 
1782 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setTrianglesVULKAN_HPP_NAMESPACE::GeometryDataNV1783     VULKAN_HPP_CONSTEXPR_14 GeometryDataNV & setTriangles( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const & triangles_ ) VULKAN_HPP_NOEXCEPT
1784     {
1785       triangles = triangles_;
1786       return *this;
1787     }
1788 
setAabbsVULKAN_HPP_NAMESPACE::GeometryDataNV1789     VULKAN_HPP_CONSTEXPR_14 GeometryDataNV & setAabbs( VULKAN_HPP_NAMESPACE::GeometryAABBNV const & aabbs_ ) VULKAN_HPP_NOEXCEPT
1790     {
1791       aabbs = aabbs_;
1792       return *this;
1793     }
1794 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1795 
operator VkGeometryDataNV const&VULKAN_HPP_NAMESPACE::GeometryDataNV1796     operator VkGeometryDataNV const &() const VULKAN_HPP_NOEXCEPT
1797     {
1798       return *reinterpret_cast<const VkGeometryDataNV *>( this );
1799     }
1800 
operator VkGeometryDataNV&VULKAN_HPP_NAMESPACE::GeometryDataNV1801     operator VkGeometryDataNV &() VULKAN_HPP_NOEXCEPT
1802     {
1803       return *reinterpret_cast<VkGeometryDataNV *>( this );
1804     }
1805 
1806 #if defined( VULKAN_HPP_USE_REFLECT )
1807 #  if 14 <= VULKAN_HPP_CPP_VERSION
1808     auto
1809 #  else
1810     std::tuple<VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const &, VULKAN_HPP_NAMESPACE::GeometryAABBNV const &>
1811 #  endif
reflectVULKAN_HPP_NAMESPACE::GeometryDataNV1812       reflect() const VULKAN_HPP_NOEXCEPT
1813     {
1814       return std::tie( triangles, aabbs );
1815     }
1816 #endif
1817 
1818 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1819     auto operator<=>( GeometryDataNV const & ) const = default;
1820 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryDataNV1821     bool operator==( GeometryDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1822     {
1823 #  if defined( VULKAN_HPP_USE_REFLECT )
1824       return this->reflect() == rhs.reflect();
1825 #  else
1826       return ( triangles == rhs.triangles ) && ( aabbs == rhs.aabbs );
1827 #  endif
1828     }
1829 
operator !=VULKAN_HPP_NAMESPACE::GeometryDataNV1830     bool operator!=( GeometryDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1831     {
1832       return !operator==( rhs );
1833     }
1834 #endif
1835 
1836   public:
1837     VULKAN_HPP_NAMESPACE::GeometryTrianglesNV triangles = {};
1838     VULKAN_HPP_NAMESPACE::GeometryAABBNV      aabbs     = {};
1839   };
1840 
1841   struct GeometryNV
1842   {
1843     using NativeType = VkGeometryNV;
1844 
1845     static const bool                                  allowDuplicate = false;
1846     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeometryNV;
1847 
1848 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryNVVULKAN_HPP_NAMESPACE::GeometryNV1849     VULKAN_HPP_CONSTEXPR GeometryNV( VULKAN_HPP_NAMESPACE::GeometryTypeKHR  geometryType_ = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles,
1850                                      VULKAN_HPP_NAMESPACE::GeometryDataNV   geometry_     = {},
1851                                      VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_        = {},
1852                                      const void *                           pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
1853       : pNext{ pNext_ }
1854       , geometryType{ geometryType_ }
1855       , geometry{ geometry_ }
1856       , flags{ flags_ }
1857     {
1858     }
1859 
1860     VULKAN_HPP_CONSTEXPR GeometryNV( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1861 
GeometryNVVULKAN_HPP_NAMESPACE::GeometryNV1862     GeometryNV( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryNV( *reinterpret_cast<GeometryNV const *>( &rhs ) ) {}
1863 
1864     GeometryNV & operator=( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1865 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1866 
operator =VULKAN_HPP_NAMESPACE::GeometryNV1867     GeometryNV & operator=( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT
1868     {
1869       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryNV const *>( &rhs );
1870       return *this;
1871     }
1872 
1873 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeometryNV1874     VULKAN_HPP_CONSTEXPR_14 GeometryNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1875     {
1876       pNext = pNext_;
1877       return *this;
1878     }
1879 
setGeometryTypeVULKAN_HPP_NAMESPACE::GeometryNV1880     VULKAN_HPP_CONSTEXPR_14 GeometryNV & setGeometryType( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ ) VULKAN_HPP_NOEXCEPT
1881     {
1882       geometryType = geometryType_;
1883       return *this;
1884     }
1885 
setGeometryVULKAN_HPP_NAMESPACE::GeometryNV1886     VULKAN_HPP_CONSTEXPR_14 GeometryNV & setGeometry( VULKAN_HPP_NAMESPACE::GeometryDataNV const & geometry_ ) VULKAN_HPP_NOEXCEPT
1887     {
1888       geometry = geometry_;
1889       return *this;
1890     }
1891 
setFlagsVULKAN_HPP_NAMESPACE::GeometryNV1892     VULKAN_HPP_CONSTEXPR_14 GeometryNV & setFlags( VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
1893     {
1894       flags = flags_;
1895       return *this;
1896     }
1897 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1898 
operator VkGeometryNV const&VULKAN_HPP_NAMESPACE::GeometryNV1899     operator VkGeometryNV const &() const VULKAN_HPP_NOEXCEPT
1900     {
1901       return *reinterpret_cast<const VkGeometryNV *>( this );
1902     }
1903 
operator VkGeometryNV&VULKAN_HPP_NAMESPACE::GeometryNV1904     operator VkGeometryNV &() VULKAN_HPP_NOEXCEPT
1905     {
1906       return *reinterpret_cast<VkGeometryNV *>( this );
1907     }
1908 
1909 #if defined( VULKAN_HPP_USE_REFLECT )
1910 #  if 14 <= VULKAN_HPP_CPP_VERSION
1911     auto
1912 #  else
1913     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1914                const void * const &,
1915                VULKAN_HPP_NAMESPACE::GeometryTypeKHR const &,
1916                VULKAN_HPP_NAMESPACE::GeometryDataNV const &,
1917                VULKAN_HPP_NAMESPACE::GeometryFlagsKHR const &>
1918 #  endif
reflectVULKAN_HPP_NAMESPACE::GeometryNV1919       reflect() const VULKAN_HPP_NOEXCEPT
1920     {
1921       return std::tie( sType, pNext, geometryType, geometry, flags );
1922     }
1923 #endif
1924 
1925 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1926     auto operator<=>( GeometryNV const & ) const = default;
1927 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryNV1928     bool operator==( GeometryNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1929     {
1930 #  if defined( VULKAN_HPP_USE_REFLECT )
1931       return this->reflect() == rhs.reflect();
1932 #  else
1933       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( geometryType == rhs.geometryType ) && ( geometry == rhs.geometry ) && ( flags == rhs.flags );
1934 #  endif
1935     }
1936 
operator !=VULKAN_HPP_NAMESPACE::GeometryNV1937     bool operator!=( GeometryNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1938     {
1939       return !operator==( rhs );
1940     }
1941 #endif
1942 
1943   public:
1944     VULKAN_HPP_NAMESPACE::StructureType    sType        = StructureType::eGeometryNV;
1945     const void *                           pNext        = {};
1946     VULKAN_HPP_NAMESPACE::GeometryTypeKHR  geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles;
1947     VULKAN_HPP_NAMESPACE::GeometryDataNV   geometry     = {};
1948     VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags        = {};
1949   };
1950 
1951   template <>
1952   struct CppType<StructureType, StructureType::eGeometryNV>
1953   {
1954     using Type = GeometryNV;
1955   };
1956 
1957   struct AccelerationStructureInfoNV
1958   {
1959     using NativeType = VkAccelerationStructureInfoNV;
1960 
1961     static const bool                                  allowDuplicate = false;
1962     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureInfoNV;
1963 
1964 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV1965     VULKAN_HPP_CONSTEXPR AccelerationStructureInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV       type_          = {},
1966                                                       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_         = {},
1967                                                       uint32_t                                                instanceCount_ = {},
1968                                                       uint32_t                                                geometryCount_ = {},
1969                                                       const VULKAN_HPP_NAMESPACE::GeometryNV *                pGeometries_   = {},
1970                                                       const void *                                            pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
1971       : pNext{ pNext_ }
1972       , type{ type_ }
1973       , flags{ flags_ }
1974       , instanceCount{ instanceCount_ }
1975       , geometryCount{ geometryCount_ }
1976       , pGeometries{ pGeometries_ }
1977     {
1978     }
1979 
1980     VULKAN_HPP_CONSTEXPR AccelerationStructureInfoNV( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1981 
AccelerationStructureInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV1982     AccelerationStructureInfoNV( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
1983       : AccelerationStructureInfoNV( *reinterpret_cast<AccelerationStructureInfoNV const *>( &rhs ) )
1984     {
1985     }
1986 
1987 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AccelerationStructureInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV1988     AccelerationStructureInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV                                             type_,
1989                                  VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV                                       flags_,
1990                                  uint32_t                                                                                      instanceCount_,
1991                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GeometryNV> const & geometries_,
1992                                  const void *                                                                                  pNext_ = nullptr )
1993       : pNext( pNext_ )
1994       , type( type_ )
1995       , flags( flags_ )
1996       , instanceCount( instanceCount_ )
1997       , geometryCount( static_cast<uint32_t>( geometries_.size() ) )
1998       , pGeometries( geometries_.data() )
1999     {
2000     }
2001 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
2002 
2003     AccelerationStructureInfoNV & operator=( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2004 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2005 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2006     AccelerationStructureInfoNV & operator=( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2007     {
2008       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const *>( &rhs );
2009       return *this;
2010     }
2011 
2012 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2013     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2014     {
2015       pNext = pNext_;
2016       return *this;
2017     }
2018 
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2019     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type_ ) VULKAN_HPP_NOEXCEPT
2020     {
2021       type = type_;
2022       return *this;
2023     }
2024 
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2025     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setFlags( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
2026     {
2027       flags = flags_;
2028       return *this;
2029     }
2030 
setInstanceCountVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2031     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
2032     {
2033       instanceCount = instanceCount_;
2034       return *this;
2035     }
2036 
setGeometryCountVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2037     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setGeometryCount( uint32_t geometryCount_ ) VULKAN_HPP_NOEXCEPT
2038     {
2039       geometryCount = geometryCount_;
2040       return *this;
2041     }
2042 
setPGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2043     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setPGeometries( const VULKAN_HPP_NAMESPACE::GeometryNV * pGeometries_ ) VULKAN_HPP_NOEXCEPT
2044     {
2045       pGeometries = pGeometries_;
2046       return *this;
2047     }
2048 
2049 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
2050     AccelerationStructureInfoNV &
setGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2051       setGeometries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GeometryNV> const & geometries_ ) VULKAN_HPP_NOEXCEPT
2052     {
2053       geometryCount = static_cast<uint32_t>( geometries_.size() );
2054       pGeometries   = geometries_.data();
2055       return *this;
2056     }
2057 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
2058 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2059 
operator VkAccelerationStructureInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2060     operator VkAccelerationStructureInfoNV const &() const VULKAN_HPP_NOEXCEPT
2061     {
2062       return *reinterpret_cast<const VkAccelerationStructureInfoNV *>( this );
2063     }
2064 
operator VkAccelerationStructureInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2065     operator VkAccelerationStructureInfoNV &() VULKAN_HPP_NOEXCEPT
2066     {
2067       return *reinterpret_cast<VkAccelerationStructureInfoNV *>( this );
2068     }
2069 
2070 #if defined( VULKAN_HPP_USE_REFLECT )
2071 #  if 14 <= VULKAN_HPP_CPP_VERSION
2072     auto
2073 #  else
2074     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2075                const void * const &,
2076                VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV const &,
2077                VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV const &,
2078                uint32_t const &,
2079                uint32_t const &,
2080                const VULKAN_HPP_NAMESPACE::GeometryNV * const &>
2081 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2082       reflect() const VULKAN_HPP_NOEXCEPT
2083     {
2084       return std::tie( sType, pNext, type, flags, instanceCount, geometryCount, pGeometries );
2085     }
2086 #endif
2087 
2088 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2089     auto operator<=>( AccelerationStructureInfoNV const & ) const = default;
2090 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2091     bool operator==( AccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2092     {
2093 #  if defined( VULKAN_HPP_USE_REFLECT )
2094       return this->reflect() == rhs.reflect();
2095 #  else
2096       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( flags == rhs.flags ) && ( instanceCount == rhs.instanceCount ) &&
2097              ( geometryCount == rhs.geometryCount ) && ( pGeometries == rhs.pGeometries );
2098 #  endif
2099     }
2100 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2101     bool operator!=( AccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2102     {
2103       return !operator==( rhs );
2104     }
2105 #endif
2106 
2107   public:
2108     VULKAN_HPP_NAMESPACE::StructureType                     sType         = StructureType::eAccelerationStructureInfoNV;
2109     const void *                                            pNext         = {};
2110     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV       type          = {};
2111     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags         = {};
2112     uint32_t                                                instanceCount = {};
2113     uint32_t                                                geometryCount = {};
2114     const VULKAN_HPP_NAMESPACE::GeometryNV *                pGeometries   = {};
2115   };
2116 
2117   template <>
2118   struct CppType<StructureType, StructureType::eAccelerationStructureInfoNV>
2119   {
2120     using Type = AccelerationStructureInfoNV;
2121   };
2122 
2123   struct AccelerationStructureCreateInfoNV
2124   {
2125     using NativeType = VkAccelerationStructureCreateInfoNV;
2126 
2127     static const bool                                  allowDuplicate = false;
2128     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureCreateInfoNV;
2129 
2130 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureCreateInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2131     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoNV( VULKAN_HPP_NAMESPACE::DeviceSize                  compactedSize_ = {},
2132                                                             VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info_          = {},
2133                                                             const void *                                      pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
2134       : pNext{ pNext_ }
2135       , compactedSize{ compactedSize_ }
2136       , info{ info_ }
2137     {
2138     }
2139 
2140     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoNV( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2141 
AccelerationStructureCreateInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2142     AccelerationStructureCreateInfoNV( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2143       : AccelerationStructureCreateInfoNV( *reinterpret_cast<AccelerationStructureCreateInfoNV const *>( &rhs ) )
2144     {
2145     }
2146 
2147     AccelerationStructureCreateInfoNV & operator=( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2148 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2149 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2150     AccelerationStructureCreateInfoNV & operator=( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2151     {
2152       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const *>( &rhs );
2153       return *this;
2154     }
2155 
2156 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2157     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2158     {
2159       pNext = pNext_;
2160       return *this;
2161     }
2162 
setCompactedSizeVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2163     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setCompactedSize( VULKAN_HPP_NAMESPACE::DeviceSize compactedSize_ ) VULKAN_HPP_NOEXCEPT
2164     {
2165       compactedSize = compactedSize_;
2166       return *this;
2167     }
2168 
setInfoVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2169     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setInfo( VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const & info_ ) VULKAN_HPP_NOEXCEPT
2170     {
2171       info = info_;
2172       return *this;
2173     }
2174 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2175 
operator VkAccelerationStructureCreateInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2176     operator VkAccelerationStructureCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
2177     {
2178       return *reinterpret_cast<const VkAccelerationStructureCreateInfoNV *>( this );
2179     }
2180 
operator VkAccelerationStructureCreateInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2181     operator VkAccelerationStructureCreateInfoNV &() VULKAN_HPP_NOEXCEPT
2182     {
2183       return *reinterpret_cast<VkAccelerationStructureCreateInfoNV *>( this );
2184     }
2185 
2186 #if defined( VULKAN_HPP_USE_REFLECT )
2187 #  if 14 <= VULKAN_HPP_CPP_VERSION
2188     auto
2189 #  else
2190     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2191                const void * const &,
2192                VULKAN_HPP_NAMESPACE::DeviceSize const &,
2193                VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const &>
2194 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2195       reflect() const VULKAN_HPP_NOEXCEPT
2196     {
2197       return std::tie( sType, pNext, compactedSize, info );
2198     }
2199 #endif
2200 
2201 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2202     auto operator<=>( AccelerationStructureCreateInfoNV const & ) const = default;
2203 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2204     bool operator==( AccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2205     {
2206 #  if defined( VULKAN_HPP_USE_REFLECT )
2207       return this->reflect() == rhs.reflect();
2208 #  else
2209       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( compactedSize == rhs.compactedSize ) && ( info == rhs.info );
2210 #  endif
2211     }
2212 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2213     bool operator!=( AccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2214     {
2215       return !operator==( rhs );
2216     }
2217 #endif
2218 
2219   public:
2220     VULKAN_HPP_NAMESPACE::StructureType               sType         = StructureType::eAccelerationStructureCreateInfoNV;
2221     const void *                                      pNext         = {};
2222     VULKAN_HPP_NAMESPACE::DeviceSize                  compactedSize = {};
2223     VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info          = {};
2224   };
2225 
2226   template <>
2227   struct CppType<StructureType, StructureType::eAccelerationStructureCreateInfoNV>
2228   {
2229     using Type = AccelerationStructureCreateInfoNV;
2230   };
2231 
2232   struct AccelerationStructureDeviceAddressInfoKHR
2233   {
2234     using NativeType = VkAccelerationStructureDeviceAddressInfoKHR;
2235 
2236     static const bool                                  allowDuplicate = false;
2237     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureDeviceAddressInfoKHR;
2238 
2239 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureDeviceAddressInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2240     VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ = {},
2241                                                                     const void *                                   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
2242       : pNext{ pNext_ }
2243       , accelerationStructure{ accelerationStructure_ }
2244     {
2245     }
2246 
2247     VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2248 
AccelerationStructureDeviceAddressInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2249     AccelerationStructureDeviceAddressInfoKHR( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2250       : AccelerationStructureDeviceAddressInfoKHR( *reinterpret_cast<AccelerationStructureDeviceAddressInfoKHR const *>( &rhs ) )
2251     {
2252     }
2253 
2254     AccelerationStructureDeviceAddressInfoKHR & operator=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2255 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2256 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2257     AccelerationStructureDeviceAddressInfoKHR & operator=( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2258     {
2259       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR const *>( &rhs );
2260       return *this;
2261     }
2262 
2263 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2264     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2265     {
2266       pNext = pNext_;
2267       return *this;
2268     }
2269 
2270     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR &
setAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2271       setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
2272     {
2273       accelerationStructure = accelerationStructure_;
2274       return *this;
2275     }
2276 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2277 
operator VkAccelerationStructureDeviceAddressInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2278     operator VkAccelerationStructureDeviceAddressInfoKHR const &() const VULKAN_HPP_NOEXCEPT
2279     {
2280       return *reinterpret_cast<const VkAccelerationStructureDeviceAddressInfoKHR *>( this );
2281     }
2282 
operator VkAccelerationStructureDeviceAddressInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2283     operator VkAccelerationStructureDeviceAddressInfoKHR &() VULKAN_HPP_NOEXCEPT
2284     {
2285       return *reinterpret_cast<VkAccelerationStructureDeviceAddressInfoKHR *>( this );
2286     }
2287 
2288 #if defined( VULKAN_HPP_USE_REFLECT )
2289 #  if 14 <= VULKAN_HPP_CPP_VERSION
2290     auto
2291 #  else
2292     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &>
2293 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2294       reflect() const VULKAN_HPP_NOEXCEPT
2295     {
2296       return std::tie( sType, pNext, accelerationStructure );
2297     }
2298 #endif
2299 
2300 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2301     auto operator<=>( AccelerationStructureDeviceAddressInfoKHR const & ) const = default;
2302 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2303     bool operator==( AccelerationStructureDeviceAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2304     {
2305 #  if defined( VULKAN_HPP_USE_REFLECT )
2306       return this->reflect() == rhs.reflect();
2307 #  else
2308       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure );
2309 #  endif
2310     }
2311 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2312     bool operator!=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2313     {
2314       return !operator==( rhs );
2315     }
2316 #endif
2317 
2318   public:
2319     VULKAN_HPP_NAMESPACE::StructureType            sType                 = StructureType::eAccelerationStructureDeviceAddressInfoKHR;
2320     const void *                                   pNext                 = {};
2321     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure = {};
2322   };
2323 
2324   template <>
2325   struct CppType<StructureType, StructureType::eAccelerationStructureDeviceAddressInfoKHR>
2326   {
2327     using Type = AccelerationStructureDeviceAddressInfoKHR;
2328   };
2329 
2330   struct AccelerationStructureGeometryMotionTrianglesDataNV
2331   {
2332     using NativeType = VkAccelerationStructureGeometryMotionTrianglesDataNV;
2333 
2334     static const bool                                  allowDuplicate = false;
2335     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV;
2336 
2337 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureGeometryMotionTrianglesDataNVVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2338     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData_ = {},
2339                                                                                 const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
2340       : pNext{ pNext_ }
2341       , vertexData{ vertexData_ }
2342     {
2343     }
2344 
2345     VULKAN_HPP_CONSTEXPR_14
2346       AccelerationStructureGeometryMotionTrianglesDataNV( AccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2347 
AccelerationStructureGeometryMotionTrianglesDataNVVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2348     AccelerationStructureGeometryMotionTrianglesDataNV( VkAccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
2349       : AccelerationStructureGeometryMotionTrianglesDataNV( *reinterpret_cast<AccelerationStructureGeometryMotionTrianglesDataNV const *>( &rhs ) )
2350     {
2351     }
2352 
2353     AccelerationStructureGeometryMotionTrianglesDataNV &
2354       operator=( AccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2355 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2356 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2357     AccelerationStructureGeometryMotionTrianglesDataNV & operator=( VkAccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
2358     {
2359       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV const *>( &rhs );
2360       return *this;
2361     }
2362 
2363 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2364     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2365     {
2366       pNext = pNext_;
2367       return *this;
2368     }
2369 
2370     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV &
setVertexDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2371       setVertexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & vertexData_ ) VULKAN_HPP_NOEXCEPT
2372     {
2373       vertexData = vertexData_;
2374       return *this;
2375     }
2376 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2377 
operator VkAccelerationStructureGeometryMotionTrianglesDataNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2378     operator VkAccelerationStructureGeometryMotionTrianglesDataNV const &() const VULKAN_HPP_NOEXCEPT
2379     {
2380       return *reinterpret_cast<const VkAccelerationStructureGeometryMotionTrianglesDataNV *>( this );
2381     }
2382 
operator VkAccelerationStructureGeometryMotionTrianglesDataNV&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2383     operator VkAccelerationStructureGeometryMotionTrianglesDataNV &() VULKAN_HPP_NOEXCEPT
2384     {
2385       return *reinterpret_cast<VkAccelerationStructureGeometryMotionTrianglesDataNV *>( this );
2386     }
2387 
2388 #if defined( VULKAN_HPP_USE_REFLECT )
2389 #  if 14 <= VULKAN_HPP_CPP_VERSION
2390     auto
2391 #  else
2392     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &>
2393 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2394       reflect() const VULKAN_HPP_NOEXCEPT
2395     {
2396       return std::tie( sType, pNext, vertexData );
2397     }
2398 #endif
2399 
2400   public:
2401     VULKAN_HPP_NAMESPACE::StructureType               sType      = StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV;
2402     const void *                                      pNext      = {};
2403     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData = {};
2404   };
2405 
2406   template <>
2407   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV>
2408   {
2409     using Type = AccelerationStructureGeometryMotionTrianglesDataNV;
2410   };
2411 
2412   struct TransformMatrixKHR
2413   {
2414     using NativeType = VkTransformMatrixKHR;
2415 
2416 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TransformMatrixKHRVULKAN_HPP_NAMESPACE::TransformMatrixKHR2417     VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR( std::array<std::array<float, 4>, 3> const & matrix_ = {} ) VULKAN_HPP_NOEXCEPT : matrix{ matrix_ } {}
2418 
2419     VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2420 
TransformMatrixKHRVULKAN_HPP_NAMESPACE::TransformMatrixKHR2421     TransformMatrixKHR( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT : TransformMatrixKHR( *reinterpret_cast<TransformMatrixKHR const *>( &rhs ) ) {}
2422 
2423     TransformMatrixKHR & operator=( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2424 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2425 
operator =VULKAN_HPP_NAMESPACE::TransformMatrixKHR2426     TransformMatrixKHR & operator=( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2427     {
2428       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TransformMatrixKHR const *>( &rhs );
2429       return *this;
2430     }
2431 
2432 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMatrixVULKAN_HPP_NAMESPACE::TransformMatrixKHR2433     VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR & setMatrix( std::array<std::array<float, 4>, 3> matrix_ ) VULKAN_HPP_NOEXCEPT
2434     {
2435       matrix = matrix_;
2436       return *this;
2437     }
2438 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2439 
operator VkTransformMatrixKHR const&VULKAN_HPP_NAMESPACE::TransformMatrixKHR2440     operator VkTransformMatrixKHR const &() const VULKAN_HPP_NOEXCEPT
2441     {
2442       return *reinterpret_cast<const VkTransformMatrixKHR *>( this );
2443     }
2444 
operator VkTransformMatrixKHR&VULKAN_HPP_NAMESPACE::TransformMatrixKHR2445     operator VkTransformMatrixKHR &() VULKAN_HPP_NOEXCEPT
2446     {
2447       return *reinterpret_cast<VkTransformMatrixKHR *>( this );
2448     }
2449 
2450 #if defined( VULKAN_HPP_USE_REFLECT )
2451 #  if 14 <= VULKAN_HPP_CPP_VERSION
2452     auto
2453 #  else
2454     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper2D<float, 3, 4> const &>
2455 #  endif
reflectVULKAN_HPP_NAMESPACE::TransformMatrixKHR2456       reflect() const VULKAN_HPP_NOEXCEPT
2457     {
2458       return std::tie( matrix );
2459     }
2460 #endif
2461 
2462 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2463     auto operator<=>( TransformMatrixKHR const & ) const = default;
2464 #else
operator ==VULKAN_HPP_NAMESPACE::TransformMatrixKHR2465     bool operator==( TransformMatrixKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2466     {
2467 #  if defined( VULKAN_HPP_USE_REFLECT )
2468       return this->reflect() == rhs.reflect();
2469 #  else
2470       return ( matrix == rhs.matrix );
2471 #  endif
2472     }
2473 
operator !=VULKAN_HPP_NAMESPACE::TransformMatrixKHR2474     bool operator!=( TransformMatrixKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2475     {
2476       return !operator==( rhs );
2477     }
2478 #endif
2479 
2480   public:
2481     VULKAN_HPP_NAMESPACE::ArrayWrapper2D<float, 3, 4> matrix = {};
2482   };
2483 
2484   using TransformMatrixNV = TransformMatrixKHR;
2485 
2486   struct AccelerationStructureInstanceKHR
2487   {
2488     using NativeType = VkAccelerationStructureInstanceKHR;
2489 
2490 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureInstanceKHRVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2491     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR( VULKAN_HPP_NAMESPACE::TransformMatrixKHR       transform_                              = {},
2492                                                               uint32_t                                       instanceCustomIndex_                    = {},
2493                                                               uint32_t                                       mask_                                   = {},
2494                                                               uint32_t                                       instanceShaderBindingTableRecordOffset_ = {},
2495                                                               VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_                                  = {},
2496                                                               uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT
2497       : transform{ transform_ }
2498       , instanceCustomIndex{ instanceCustomIndex_ }
2499       , mask{ mask_ }
2500       , instanceShaderBindingTableRecordOffset{ instanceShaderBindingTableRecordOffset_ }
2501       , flags{ flags_ }
2502       , accelerationStructureReference{ accelerationStructureReference_ }
2503     {
2504     }
2505 
2506     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2507 
AccelerationStructureInstanceKHRVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2508     AccelerationStructureInstanceKHR( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2509       : AccelerationStructureInstanceKHR( *reinterpret_cast<AccelerationStructureInstanceKHR const *>( &rhs ) )
2510     {
2511     }
2512 
2513     AccelerationStructureInstanceKHR & operator=( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2514 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2515 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2516     AccelerationStructureInstanceKHR & operator=( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2517     {
2518       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const *>( &rhs );
2519       return *this;
2520     }
2521 
2522 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setTransformVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2523     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setTransform( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transform_ ) VULKAN_HPP_NOEXCEPT
2524     {
2525       transform = transform_;
2526       return *this;
2527     }
2528 
setInstanceCustomIndexVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2529     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT
2530     {
2531       instanceCustomIndex = instanceCustomIndex_;
2532       return *this;
2533     }
2534 
setMaskVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2535     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT
2536     {
2537       mask = mask_;
2538       return *this;
2539     }
2540 
2541     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR &
setInstanceShaderBindingTableRecordOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2542       setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT
2543     {
2544       instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_;
2545       return *this;
2546     }
2547 
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2548     AccelerationStructureInstanceKHR & setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
2549     {
2550       flags = *reinterpret_cast<VkGeometryInstanceFlagsKHR *>( &flags_ );
2551       return *this;
2552     }
2553 
setAccelerationStructureReferenceVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2554     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT
2555     {
2556       accelerationStructureReference = accelerationStructureReference_;
2557       return *this;
2558     }
2559 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2560 
operator VkAccelerationStructureInstanceKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2561     operator VkAccelerationStructureInstanceKHR const &() const VULKAN_HPP_NOEXCEPT
2562     {
2563       return *reinterpret_cast<const VkAccelerationStructureInstanceKHR *>( this );
2564     }
2565 
operator VkAccelerationStructureInstanceKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2566     operator VkAccelerationStructureInstanceKHR &() VULKAN_HPP_NOEXCEPT
2567     {
2568       return *reinterpret_cast<VkAccelerationStructureInstanceKHR *>( this );
2569     }
2570 
2571 #if defined( VULKAN_HPP_USE_REFLECT )
2572 #  if 14 <= VULKAN_HPP_CPP_VERSION
2573     auto
2574 #  else
2575     std::tuple<VULKAN_HPP_NAMESPACE::TransformMatrixKHR const &,
2576                uint32_t const &,
2577                uint32_t const &,
2578                uint32_t const &,
2579                VkGeometryInstanceFlagsKHR const &,
2580                uint64_t const &>
2581 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2582       reflect() const VULKAN_HPP_NOEXCEPT
2583     {
2584       return std::tie( transform, instanceCustomIndex, mask, instanceShaderBindingTableRecordOffset, flags, accelerationStructureReference );
2585     }
2586 #endif
2587 
2588 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2589     auto operator<=>( AccelerationStructureInstanceKHR const & ) const = default;
2590 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2591     bool operator==( AccelerationStructureInstanceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2592     {
2593 #  if defined( VULKAN_HPP_USE_REFLECT )
2594       return this->reflect() == rhs.reflect();
2595 #  else
2596       return ( transform == rhs.transform ) && ( instanceCustomIndex == rhs.instanceCustomIndex ) && ( mask == rhs.mask ) &&
2597              ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && ( flags == rhs.flags ) &&
2598              ( accelerationStructureReference == rhs.accelerationStructureReference );
2599 #  endif
2600     }
2601 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2602     bool operator!=( AccelerationStructureInstanceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2603     {
2604       return !operator==( rhs );
2605     }
2606 #endif
2607 
2608   public:
2609     VULKAN_HPP_NAMESPACE::TransformMatrixKHR transform = {};
2610     uint32_t                                 instanceCustomIndex                    : 24;
2611     uint32_t                                 mask                                   : 8;
2612     uint32_t                                 instanceShaderBindingTableRecordOffset : 24;
2613     VkGeometryInstanceFlagsKHR               flags                                  : 8;
2614     uint64_t                                 accelerationStructureReference = {};
2615   };
2616 
2617   using AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR;
2618 
2619   struct AccelerationStructureMatrixMotionInstanceNV
2620   {
2621     using NativeType = VkAccelerationStructureMatrixMotionInstanceNV;
2622 
2623 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMatrixMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2624     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV( VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT0_                            = {},
2625                                                                          VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT1_                            = {},
2626                                                                          uint32_t                                 instanceCustomIndex_                    = {},
2627                                                                          uint32_t                                 mask_                                   = {},
2628                                                                          uint32_t                                 instanceShaderBindingTableRecordOffset_ = {},
2629                                                                          VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_                            = {},
2630                                                                          uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT
2631       : transformT0{ transformT0_ }
2632       , transformT1{ transformT1_ }
2633       , instanceCustomIndex{ instanceCustomIndex_ }
2634       , mask{ mask_ }
2635       , instanceShaderBindingTableRecordOffset{ instanceShaderBindingTableRecordOffset_ }
2636       , flags{ flags_ }
2637       , accelerationStructureReference{ accelerationStructureReference_ }
2638     {
2639     }
2640 
2641     VULKAN_HPP_CONSTEXPR_14
2642       AccelerationStructureMatrixMotionInstanceNV( AccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2643 
AccelerationStructureMatrixMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2644     AccelerationStructureMatrixMotionInstanceNV( VkAccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
2645       : AccelerationStructureMatrixMotionInstanceNV( *reinterpret_cast<AccelerationStructureMatrixMotionInstanceNV const *>( &rhs ) )
2646     {
2647     }
2648 
2649     AccelerationStructureMatrixMotionInstanceNV & operator=( AccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2650 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2651 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2652     AccelerationStructureMatrixMotionInstanceNV & operator=( VkAccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
2653     {
2654       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const *>( &rhs );
2655       return *this;
2656     }
2657 
2658 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
2659     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setTransformT0VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2660       setTransformT0( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformT0_ ) VULKAN_HPP_NOEXCEPT
2661     {
2662       transformT0 = transformT0_;
2663       return *this;
2664     }
2665 
2666     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setTransformT1VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2667       setTransformT1( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformT1_ ) VULKAN_HPP_NOEXCEPT
2668     {
2669       transformT1 = transformT1_;
2670       return *this;
2671     }
2672 
setInstanceCustomIndexVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2673     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT
2674     {
2675       instanceCustomIndex = instanceCustomIndex_;
2676       return *this;
2677     }
2678 
setMaskVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2679     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT
2680     {
2681       mask = mask_;
2682       return *this;
2683     }
2684 
2685     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setInstanceShaderBindingTableRecordOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2686       setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT
2687     {
2688       instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_;
2689       return *this;
2690     }
2691 
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2692     AccelerationStructureMatrixMotionInstanceNV & setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
2693     {
2694       flags = *reinterpret_cast<VkGeometryInstanceFlagsKHR *>( &flags_ );
2695       return *this;
2696     }
2697 
2698     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setAccelerationStructureReferenceVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2699       setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT
2700     {
2701       accelerationStructureReference = accelerationStructureReference_;
2702       return *this;
2703     }
2704 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2705 
operator VkAccelerationStructureMatrixMotionInstanceNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2706     operator VkAccelerationStructureMatrixMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT
2707     {
2708       return *reinterpret_cast<const VkAccelerationStructureMatrixMotionInstanceNV *>( this );
2709     }
2710 
operator VkAccelerationStructureMatrixMotionInstanceNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2711     operator VkAccelerationStructureMatrixMotionInstanceNV &() VULKAN_HPP_NOEXCEPT
2712     {
2713       return *reinterpret_cast<VkAccelerationStructureMatrixMotionInstanceNV *>( this );
2714     }
2715 
2716 #if defined( VULKAN_HPP_USE_REFLECT )
2717 #  if 14 <= VULKAN_HPP_CPP_VERSION
2718     auto
2719 #  else
2720     std::tuple<VULKAN_HPP_NAMESPACE::TransformMatrixKHR const &,
2721                VULKAN_HPP_NAMESPACE::TransformMatrixKHR const &,
2722                uint32_t const &,
2723                uint32_t const &,
2724                uint32_t const &,
2725                VkGeometryInstanceFlagsKHR const &,
2726                uint64_t const &>
2727 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2728       reflect() const VULKAN_HPP_NOEXCEPT
2729     {
2730       return std::tie( transformT0, transformT1, instanceCustomIndex, mask, instanceShaderBindingTableRecordOffset, flags, accelerationStructureReference );
2731     }
2732 #endif
2733 
2734 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2735     auto operator<=>( AccelerationStructureMatrixMotionInstanceNV const & ) const = default;
2736 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2737     bool operator==( AccelerationStructureMatrixMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2738     {
2739 #  if defined( VULKAN_HPP_USE_REFLECT )
2740       return this->reflect() == rhs.reflect();
2741 #  else
2742       return ( transformT0 == rhs.transformT0 ) && ( transformT1 == rhs.transformT1 ) && ( instanceCustomIndex == rhs.instanceCustomIndex ) &&
2743              ( mask == rhs.mask ) && ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && ( flags == rhs.flags ) &&
2744              ( accelerationStructureReference == rhs.accelerationStructureReference );
2745 #  endif
2746     }
2747 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2748     bool operator!=( AccelerationStructureMatrixMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2749     {
2750       return !operator==( rhs );
2751     }
2752 #endif
2753 
2754   public:
2755     VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT0 = {};
2756     VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT1 = {};
2757     uint32_t                                 instanceCustomIndex                    : 24;
2758     uint32_t                                 mask                                   : 8;
2759     uint32_t                                 instanceShaderBindingTableRecordOffset : 24;
2760     VkGeometryInstanceFlagsKHR               flags                                  : 8;
2761     uint64_t                                 accelerationStructureReference = {};
2762   };
2763 
2764   struct AccelerationStructureMemoryRequirementsInfoNV
2765   {
2766     using NativeType = VkAccelerationStructureMemoryRequirementsInfoNV;
2767 
2768     static const bool                                  allowDuplicate = false;
2769     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureMemoryRequirementsInfoNV;
2770 
2771 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2772     VULKAN_HPP_CONSTEXPR AccelerationStructureMemoryRequirementsInfoNV(
2773       VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type_ = VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject,
2774       VULKAN_HPP_NAMESPACE::AccelerationStructureNV                       accelerationStructure_ = {},
2775       const void *                                                        pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
2776       : pNext{ pNext_ }
2777       , type{ type_ }
2778       , accelerationStructure{ accelerationStructure_ }
2779     {
2780     }
2781 
2782     VULKAN_HPP_CONSTEXPR
2783       AccelerationStructureMemoryRequirementsInfoNV( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2784 
AccelerationStructureMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2785     AccelerationStructureMemoryRequirementsInfoNV( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2786       : AccelerationStructureMemoryRequirementsInfoNV( *reinterpret_cast<AccelerationStructureMemoryRequirementsInfoNV const *>( &rhs ) )
2787     {
2788     }
2789 
2790     AccelerationStructureMemoryRequirementsInfoNV & operator=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2791 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2792 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2793     AccelerationStructureMemoryRequirementsInfoNV & operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2794     {
2795       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV const *>( &rhs );
2796       return *this;
2797     }
2798 
2799 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2800     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2801     {
2802       pNext = pNext_;
2803       return *this;
2804     }
2805 
2806     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV &
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2807       setType( VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type_ ) VULKAN_HPP_NOEXCEPT
2808     {
2809       type = type_;
2810       return *this;
2811     }
2812 
2813     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV &
setAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2814       setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
2815     {
2816       accelerationStructure = accelerationStructure_;
2817       return *this;
2818     }
2819 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2820 
operator VkAccelerationStructureMemoryRequirementsInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2821     operator VkAccelerationStructureMemoryRequirementsInfoNV const &() const VULKAN_HPP_NOEXCEPT
2822     {
2823       return *reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( this );
2824     }
2825 
operator VkAccelerationStructureMemoryRequirementsInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2826     operator VkAccelerationStructureMemoryRequirementsInfoNV &() VULKAN_HPP_NOEXCEPT
2827     {
2828       return *reinterpret_cast<VkAccelerationStructureMemoryRequirementsInfoNV *>( this );
2829     }
2830 
2831 #if defined( VULKAN_HPP_USE_REFLECT )
2832 #  if 14 <= VULKAN_HPP_CPP_VERSION
2833     auto
2834 #  else
2835     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2836                const void * const &,
2837                VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV const &,
2838                VULKAN_HPP_NAMESPACE::AccelerationStructureNV const &>
2839 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2840       reflect() const VULKAN_HPP_NOEXCEPT
2841     {
2842       return std::tie( sType, pNext, type, accelerationStructure );
2843     }
2844 #endif
2845 
2846 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2847     auto operator<=>( AccelerationStructureMemoryRequirementsInfoNV const & ) const = default;
2848 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2849     bool operator==( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2850     {
2851 #  if defined( VULKAN_HPP_USE_REFLECT )
2852       return this->reflect() == rhs.reflect();
2853 #  else
2854       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( accelerationStructure == rhs.accelerationStructure );
2855 #  endif
2856     }
2857 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2858     bool operator!=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2859     {
2860       return !operator==( rhs );
2861     }
2862 #endif
2863 
2864   public:
2865     VULKAN_HPP_NAMESPACE::StructureType                                 sType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV;
2866     const void *                                                        pNext = {};
2867     VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type  = VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject;
2868     VULKAN_HPP_NAMESPACE::AccelerationStructureNV                       accelerationStructure = {};
2869   };
2870 
2871   template <>
2872   struct CppType<StructureType, StructureType::eAccelerationStructureMemoryRequirementsInfoNV>
2873   {
2874     using Type = AccelerationStructureMemoryRequirementsInfoNV;
2875   };
2876 
2877   struct AccelerationStructureMotionInfoNV
2878   {
2879     using NativeType = VkAccelerationStructureMotionInfoNV;
2880 
2881     static const bool                                  allowDuplicate = false;
2882     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureMotionInfoNV;
2883 
2884 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMotionInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2885     VULKAN_HPP_CONSTEXPR AccelerationStructureMotionInfoNV( uint32_t                                                     maxInstances_ = {},
2886                                                             VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags_        = {},
2887                                                             const void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
2888       : pNext{ pNext_ }
2889       , maxInstances{ maxInstances_ }
2890       , flags{ flags_ }
2891     {
2892     }
2893 
2894     VULKAN_HPP_CONSTEXPR AccelerationStructureMotionInfoNV( AccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2895 
AccelerationStructureMotionInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2896     AccelerationStructureMotionInfoNV( VkAccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2897       : AccelerationStructureMotionInfoNV( *reinterpret_cast<AccelerationStructureMotionInfoNV const *>( &rhs ) )
2898     {
2899     }
2900 
2901     AccelerationStructureMotionInfoNV & operator=( AccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2902 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2903 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2904     AccelerationStructureMotionInfoNV & operator=( VkAccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2905     {
2906       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV const *>( &rhs );
2907       return *this;
2908     }
2909 
2910 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2911     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2912     {
2913       pNext = pNext_;
2914       return *this;
2915     }
2916 
setMaxInstancesVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2917     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & setMaxInstances( uint32_t maxInstances_ ) VULKAN_HPP_NOEXCEPT
2918     {
2919       maxInstances = maxInstances_;
2920       return *this;
2921     }
2922 
2923     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2924       setFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
2925     {
2926       flags = flags_;
2927       return *this;
2928     }
2929 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2930 
operator VkAccelerationStructureMotionInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2931     operator VkAccelerationStructureMotionInfoNV const &() const VULKAN_HPP_NOEXCEPT
2932     {
2933       return *reinterpret_cast<const VkAccelerationStructureMotionInfoNV *>( this );
2934     }
2935 
operator VkAccelerationStructureMotionInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2936     operator VkAccelerationStructureMotionInfoNV &() VULKAN_HPP_NOEXCEPT
2937     {
2938       return *reinterpret_cast<VkAccelerationStructureMotionInfoNV *>( this );
2939     }
2940 
2941 #if defined( VULKAN_HPP_USE_REFLECT )
2942 #  if 14 <= VULKAN_HPP_CPP_VERSION
2943     auto
2944 #  else
2945     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2946                const void * const &,
2947                uint32_t const &,
2948                VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV const &>
2949 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2950       reflect() const VULKAN_HPP_NOEXCEPT
2951     {
2952       return std::tie( sType, pNext, maxInstances, flags );
2953     }
2954 #endif
2955 
2956 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2957     auto operator<=>( AccelerationStructureMotionInfoNV const & ) const = default;
2958 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2959     bool operator==( AccelerationStructureMotionInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2960     {
2961 #  if defined( VULKAN_HPP_USE_REFLECT )
2962       return this->reflect() == rhs.reflect();
2963 #  else
2964       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxInstances == rhs.maxInstances ) && ( flags == rhs.flags );
2965 #  endif
2966     }
2967 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2968     bool operator!=( AccelerationStructureMotionInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2969     {
2970       return !operator==( rhs );
2971     }
2972 #endif
2973 
2974   public:
2975     VULKAN_HPP_NAMESPACE::StructureType                          sType        = StructureType::eAccelerationStructureMotionInfoNV;
2976     const void *                                                 pNext        = {};
2977     uint32_t                                                     maxInstances = {};
2978     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags        = {};
2979   };
2980 
2981   template <>
2982   struct CppType<StructureType, StructureType::eAccelerationStructureMotionInfoNV>
2983   {
2984     using Type = AccelerationStructureMotionInfoNV;
2985   };
2986 
2987   struct SRTDataNV
2988   {
2989     using NativeType = VkSRTDataNV;
2990 
2991 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SRTDataNVVULKAN_HPP_NAMESPACE::SRTDataNV2992     VULKAN_HPP_CONSTEXPR SRTDataNV( float sx_  = {},
2993                                     float a_   = {},
2994                                     float b_   = {},
2995                                     float pvx_ = {},
2996                                     float sy_  = {},
2997                                     float c_   = {},
2998                                     float pvy_ = {},
2999                                     float sz_  = {},
3000                                     float pvz_ = {},
3001                                     float qx_  = {},
3002                                     float qy_  = {},
3003                                     float qz_  = {},
3004                                     float qw_  = {},
3005                                     float tx_  = {},
3006                                     float ty_  = {},
3007                                     float tz_  = {} ) VULKAN_HPP_NOEXCEPT
3008       : sx{ sx_ }
3009       , a{ a_ }
3010       , b{ b_ }
3011       , pvx{ pvx_ }
3012       , sy{ sy_ }
3013       , c{ c_ }
3014       , pvy{ pvy_ }
3015       , sz{ sz_ }
3016       , pvz{ pvz_ }
3017       , qx{ qx_ }
3018       , qy{ qy_ }
3019       , qz{ qz_ }
3020       , qw{ qw_ }
3021       , tx{ tx_ }
3022       , ty{ ty_ }
3023       , tz{ tz_ }
3024     {
3025     }
3026 
3027     VULKAN_HPP_CONSTEXPR SRTDataNV( SRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3028 
SRTDataNVVULKAN_HPP_NAMESPACE::SRTDataNV3029     SRTDataNV( VkSRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : SRTDataNV( *reinterpret_cast<SRTDataNV const *>( &rhs ) ) {}
3030 
3031     SRTDataNV & operator=( SRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3032 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3033 
operator =VULKAN_HPP_NAMESPACE::SRTDataNV3034     SRTDataNV & operator=( VkSRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
3035     {
3036       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SRTDataNV const *>( &rhs );
3037       return *this;
3038     }
3039 
3040 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSxVULKAN_HPP_NAMESPACE::SRTDataNV3041     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSx( float sx_ ) VULKAN_HPP_NOEXCEPT
3042     {
3043       sx = sx_;
3044       return *this;
3045     }
3046 
setAVULKAN_HPP_NAMESPACE::SRTDataNV3047     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setA( float a_ ) VULKAN_HPP_NOEXCEPT
3048     {
3049       a = a_;
3050       return *this;
3051     }
3052 
setBVULKAN_HPP_NAMESPACE::SRTDataNV3053     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setB( float b_ ) VULKAN_HPP_NOEXCEPT
3054     {
3055       b = b_;
3056       return *this;
3057     }
3058 
setPvxVULKAN_HPP_NAMESPACE::SRTDataNV3059     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvx( float pvx_ ) VULKAN_HPP_NOEXCEPT
3060     {
3061       pvx = pvx_;
3062       return *this;
3063     }
3064 
setSyVULKAN_HPP_NAMESPACE::SRTDataNV3065     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSy( float sy_ ) VULKAN_HPP_NOEXCEPT
3066     {
3067       sy = sy_;
3068       return *this;
3069     }
3070 
setCVULKAN_HPP_NAMESPACE::SRTDataNV3071     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setC( float c_ ) VULKAN_HPP_NOEXCEPT
3072     {
3073       c = c_;
3074       return *this;
3075     }
3076 
setPvyVULKAN_HPP_NAMESPACE::SRTDataNV3077     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvy( float pvy_ ) VULKAN_HPP_NOEXCEPT
3078     {
3079       pvy = pvy_;
3080       return *this;
3081     }
3082 
setSzVULKAN_HPP_NAMESPACE::SRTDataNV3083     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSz( float sz_ ) VULKAN_HPP_NOEXCEPT
3084     {
3085       sz = sz_;
3086       return *this;
3087     }
3088 
setPvzVULKAN_HPP_NAMESPACE::SRTDataNV3089     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvz( float pvz_ ) VULKAN_HPP_NOEXCEPT
3090     {
3091       pvz = pvz_;
3092       return *this;
3093     }
3094 
setQxVULKAN_HPP_NAMESPACE::SRTDataNV3095     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQx( float qx_ ) VULKAN_HPP_NOEXCEPT
3096     {
3097       qx = qx_;
3098       return *this;
3099     }
3100 
setQyVULKAN_HPP_NAMESPACE::SRTDataNV3101     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQy( float qy_ ) VULKAN_HPP_NOEXCEPT
3102     {
3103       qy = qy_;
3104       return *this;
3105     }
3106 
setQzVULKAN_HPP_NAMESPACE::SRTDataNV3107     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQz( float qz_ ) VULKAN_HPP_NOEXCEPT
3108     {
3109       qz = qz_;
3110       return *this;
3111     }
3112 
setQwVULKAN_HPP_NAMESPACE::SRTDataNV3113     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQw( float qw_ ) VULKAN_HPP_NOEXCEPT
3114     {
3115       qw = qw_;
3116       return *this;
3117     }
3118 
setTxVULKAN_HPP_NAMESPACE::SRTDataNV3119     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTx( float tx_ ) VULKAN_HPP_NOEXCEPT
3120     {
3121       tx = tx_;
3122       return *this;
3123     }
3124 
setTyVULKAN_HPP_NAMESPACE::SRTDataNV3125     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTy( float ty_ ) VULKAN_HPP_NOEXCEPT
3126     {
3127       ty = ty_;
3128       return *this;
3129     }
3130 
setTzVULKAN_HPP_NAMESPACE::SRTDataNV3131     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTz( float tz_ ) VULKAN_HPP_NOEXCEPT
3132     {
3133       tz = tz_;
3134       return *this;
3135     }
3136 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3137 
operator VkSRTDataNV const&VULKAN_HPP_NAMESPACE::SRTDataNV3138     operator VkSRTDataNV const &() const VULKAN_HPP_NOEXCEPT
3139     {
3140       return *reinterpret_cast<const VkSRTDataNV *>( this );
3141     }
3142 
operator VkSRTDataNV&VULKAN_HPP_NAMESPACE::SRTDataNV3143     operator VkSRTDataNV &() VULKAN_HPP_NOEXCEPT
3144     {
3145       return *reinterpret_cast<VkSRTDataNV *>( this );
3146     }
3147 
3148 #if defined( VULKAN_HPP_USE_REFLECT )
3149 #  if 14 <= VULKAN_HPP_CPP_VERSION
3150     auto
3151 #  else
3152     std::tuple<float const &,
3153                float const &,
3154                float const &,
3155                float const &,
3156                float const &,
3157                float const &,
3158                float const &,
3159                float const &,
3160                float const &,
3161                float const &,
3162                float const &,
3163                float const &,
3164                float const &,
3165                float const &,
3166                float const &,
3167                float const &>
3168 #  endif
reflectVULKAN_HPP_NAMESPACE::SRTDataNV3169       reflect() const VULKAN_HPP_NOEXCEPT
3170     {
3171       return std::tie( sx, a, b, pvx, sy, c, pvy, sz, pvz, qx, qy, qz, qw, tx, ty, tz );
3172     }
3173 #endif
3174 
3175 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3176     auto operator<=>( SRTDataNV const & ) const = default;
3177 #else
operator ==VULKAN_HPP_NAMESPACE::SRTDataNV3178     bool operator==( SRTDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3179     {
3180 #  if defined( VULKAN_HPP_USE_REFLECT )
3181       return this->reflect() == rhs.reflect();
3182 #  else
3183       return ( sx == rhs.sx ) && ( a == rhs.a ) && ( b == rhs.b ) && ( pvx == rhs.pvx ) && ( sy == rhs.sy ) && ( c == rhs.c ) && ( pvy == rhs.pvy ) &&
3184              ( sz == rhs.sz ) && ( pvz == rhs.pvz ) && ( qx == rhs.qx ) && ( qy == rhs.qy ) && ( qz == rhs.qz ) && ( qw == rhs.qw ) && ( tx == rhs.tx ) &&
3185              ( ty == rhs.ty ) && ( tz == rhs.tz );
3186 #  endif
3187     }
3188 
operator !=VULKAN_HPP_NAMESPACE::SRTDataNV3189     bool operator!=( SRTDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3190     {
3191       return !operator==( rhs );
3192     }
3193 #endif
3194 
3195   public:
3196     float sx  = {};
3197     float a   = {};
3198     float b   = {};
3199     float pvx = {};
3200     float sy  = {};
3201     float c   = {};
3202     float pvy = {};
3203     float sz  = {};
3204     float pvz = {};
3205     float qx  = {};
3206     float qy  = {};
3207     float qz  = {};
3208     float qw  = {};
3209     float tx  = {};
3210     float ty  = {};
3211     float tz  = {};
3212   };
3213 
3214   struct AccelerationStructureSRTMotionInstanceNV
3215   {
3216     using NativeType = VkAccelerationStructureSRTMotionInstanceNV;
3217 
3218 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureSRTMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3219     VULKAN_HPP_CONSTEXPR AccelerationStructureSRTMotionInstanceNV( VULKAN_HPP_NAMESPACE::SRTDataNV                transformT0_                            = {},
3220                                                                    VULKAN_HPP_NAMESPACE::SRTDataNV                transformT1_                            = {},
3221                                                                    uint32_t                                       instanceCustomIndex_                    = {},
3222                                                                    uint32_t                                       mask_                                   = {},
3223                                                                    uint32_t                                       instanceShaderBindingTableRecordOffset_ = {},
3224                                                                    VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_                                  = {},
3225                                                                    uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT
3226       : transformT0{ transformT0_ }
3227       , transformT1{ transformT1_ }
3228       , instanceCustomIndex{ instanceCustomIndex_ }
3229       , mask{ mask_ }
3230       , instanceShaderBindingTableRecordOffset{ instanceShaderBindingTableRecordOffset_ }
3231       , flags{ flags_ }
3232       , accelerationStructureReference{ accelerationStructureReference_ }
3233     {
3234     }
3235 
3236     VULKAN_HPP_CONSTEXPR AccelerationStructureSRTMotionInstanceNV( AccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3237 
AccelerationStructureSRTMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3238     AccelerationStructureSRTMotionInstanceNV( VkAccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3239       : AccelerationStructureSRTMotionInstanceNV( *reinterpret_cast<AccelerationStructureSRTMotionInstanceNV const *>( &rhs ) )
3240     {
3241     }
3242 
3243     AccelerationStructureSRTMotionInstanceNV & operator=( AccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3244 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3245 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3246     AccelerationStructureSRTMotionInstanceNV & operator=( VkAccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3247     {
3248       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const *>( &rhs );
3249       return *this;
3250     }
3251 
3252 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
3253     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setTransformT0VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3254       setTransformT0( VULKAN_HPP_NAMESPACE::SRTDataNV const & transformT0_ ) VULKAN_HPP_NOEXCEPT
3255     {
3256       transformT0 = transformT0_;
3257       return *this;
3258     }
3259 
3260     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setTransformT1VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3261       setTransformT1( VULKAN_HPP_NAMESPACE::SRTDataNV const & transformT1_ ) VULKAN_HPP_NOEXCEPT
3262     {
3263       transformT1 = transformT1_;
3264       return *this;
3265     }
3266 
setInstanceCustomIndexVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3267     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT
3268     {
3269       instanceCustomIndex = instanceCustomIndex_;
3270       return *this;
3271     }
3272 
setMaskVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3273     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT
3274     {
3275       mask = mask_;
3276       return *this;
3277     }
3278 
3279     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setInstanceShaderBindingTableRecordOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3280       setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT
3281     {
3282       instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_;
3283       return *this;
3284     }
3285 
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3286     AccelerationStructureSRTMotionInstanceNV & setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
3287     {
3288       flags = *reinterpret_cast<VkGeometryInstanceFlagsKHR *>( &flags_ );
3289       return *this;
3290     }
3291 
3292     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setAccelerationStructureReferenceVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3293       setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT
3294     {
3295       accelerationStructureReference = accelerationStructureReference_;
3296       return *this;
3297     }
3298 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3299 
operator VkAccelerationStructureSRTMotionInstanceNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3300     operator VkAccelerationStructureSRTMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT
3301     {
3302       return *reinterpret_cast<const VkAccelerationStructureSRTMotionInstanceNV *>( this );
3303     }
3304 
operator VkAccelerationStructureSRTMotionInstanceNV&VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3305     operator VkAccelerationStructureSRTMotionInstanceNV &() VULKAN_HPP_NOEXCEPT
3306     {
3307       return *reinterpret_cast<VkAccelerationStructureSRTMotionInstanceNV *>( this );
3308     }
3309 
3310 #if defined( VULKAN_HPP_USE_REFLECT )
3311 #  if 14 <= VULKAN_HPP_CPP_VERSION
3312     auto
3313 #  else
3314     std::tuple<VULKAN_HPP_NAMESPACE::SRTDataNV const &,
3315                VULKAN_HPP_NAMESPACE::SRTDataNV const &,
3316                uint32_t const &,
3317                uint32_t const &,
3318                uint32_t const &,
3319                VkGeometryInstanceFlagsKHR const &,
3320                uint64_t const &>
3321 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3322       reflect() const VULKAN_HPP_NOEXCEPT
3323     {
3324       return std::tie( transformT0, transformT1, instanceCustomIndex, mask, instanceShaderBindingTableRecordOffset, flags, accelerationStructureReference );
3325     }
3326 #endif
3327 
3328 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3329     auto operator<=>( AccelerationStructureSRTMotionInstanceNV const & ) const = default;
3330 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3331     bool operator==( AccelerationStructureSRTMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3332     {
3333 #  if defined( VULKAN_HPP_USE_REFLECT )
3334       return this->reflect() == rhs.reflect();
3335 #  else
3336       return ( transformT0 == rhs.transformT0 ) && ( transformT1 == rhs.transformT1 ) && ( instanceCustomIndex == rhs.instanceCustomIndex ) &&
3337              ( mask == rhs.mask ) && ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && ( flags == rhs.flags ) &&
3338              ( accelerationStructureReference == rhs.accelerationStructureReference );
3339 #  endif
3340     }
3341 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3342     bool operator!=( AccelerationStructureSRTMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3343     {
3344       return !operator==( rhs );
3345     }
3346 #endif
3347 
3348   public:
3349     VULKAN_HPP_NAMESPACE::SRTDataNV transformT0 = {};
3350     VULKAN_HPP_NAMESPACE::SRTDataNV transformT1 = {};
3351     uint32_t                        instanceCustomIndex                    : 24;
3352     uint32_t                        mask                                   : 8;
3353     uint32_t                        instanceShaderBindingTableRecordOffset : 24;
3354     VkGeometryInstanceFlagsKHR      flags                                  : 8;
3355     uint64_t                        accelerationStructureReference = {};
3356   };
3357 
3358   union AccelerationStructureMotionInstanceDataNV
3359   {
3360     using NativeType = VkAccelerationStructureMotionInstanceDataNV;
3361 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
3362 
AccelerationStructureMotionInstanceDataNV(VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR staticInstance_={} )3363     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR staticInstance_ = {} )
3364       : staticInstance( staticInstance_ )
3365     {
3366     }
3367 
AccelerationStructureMotionInstanceDataNV(VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance_)3368     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance_ )
3369       : matrixMotionInstance( matrixMotionInstance_ )
3370     {
3371     }
3372 
AccelerationStructureMotionInstanceDataNV(VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV srtMotionInstance_)3373     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV srtMotionInstance_ )
3374       : srtMotionInstance( srtMotionInstance_ )
3375     {
3376     }
3377 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
3378 
3379 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
3380     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV &
setStaticInstance(VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const & staticInstance_)3381       setStaticInstance( VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const & staticInstance_ ) VULKAN_HPP_NOEXCEPT
3382     {
3383       staticInstance = staticInstance_;
3384       return *this;
3385     }
3386 
3387     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV &
setMatrixMotionInstance(VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const & matrixMotionInstance_)3388       setMatrixMotionInstance( VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const & matrixMotionInstance_ ) VULKAN_HPP_NOEXCEPT
3389     {
3390       matrixMotionInstance = matrixMotionInstance_;
3391       return *this;
3392     }
3393 
3394     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV &
setSrtMotionInstance(VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const & srtMotionInstance_)3395       setSrtMotionInstance( VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const & srtMotionInstance_ ) VULKAN_HPP_NOEXCEPT
3396     {
3397       srtMotionInstance = srtMotionInstance_;
3398       return *this;
3399     }
3400 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
3401 
operator VkAccelerationStructureMotionInstanceDataNV const&() const3402     operator VkAccelerationStructureMotionInstanceDataNV const &() const
3403     {
3404       return *reinterpret_cast<const VkAccelerationStructureMotionInstanceDataNV *>( this );
3405     }
3406 
operator VkAccelerationStructureMotionInstanceDataNV&()3407     operator VkAccelerationStructureMotionInstanceDataNV &()
3408     {
3409       return *reinterpret_cast<VkAccelerationStructureMotionInstanceDataNV *>( this );
3410     }
3411 
3412 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
3413     VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR            staticInstance;
3414     VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance;
3415     VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV    srtMotionInstance;
3416 #else
3417     VkAccelerationStructureInstanceKHR            staticInstance;
3418     VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance;
3419     VkAccelerationStructureSRTMotionInstanceNV    srtMotionInstance;
3420 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
3421   };
3422 
3423   struct AccelerationStructureMotionInstanceNV
3424   {
3425     using NativeType = VkAccelerationStructureMotionInstanceNV;
3426 
3427 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3428     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV(
3429       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV  type_  = VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV::eStatic,
3430       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags_ = {},
3431       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV  data_  = {} ) VULKAN_HPP_NOEXCEPT
3432       : type{ type_ }
3433       , flags{ flags_ }
3434       , data{ data_ }
3435     {
3436     }
3437 
3438     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV( AccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3439 
AccelerationStructureMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3440     AccelerationStructureMotionInstanceNV( VkAccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3441       : AccelerationStructureMotionInstanceNV( *reinterpret_cast<AccelerationStructureMotionInstanceNV const *>( &rhs ) )
3442     {
3443     }
3444 
3445     AccelerationStructureMotionInstanceNV & operator=( AccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3446 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3447 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3448     AccelerationStructureMotionInstanceNV & operator=( VkAccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3449     {
3450       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV const *>( &rhs );
3451       return *this;
3452     }
3453 
3454 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
3455     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV &
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3456       setType( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV type_ ) VULKAN_HPP_NOEXCEPT
3457     {
3458       type = type_;
3459       return *this;
3460     }
3461 
3462     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3463       setFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
3464     {
3465       flags = flags_;
3466       return *this;
3467     }
3468 
3469     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV &
setDataVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3470       setData( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV const & data_ ) VULKAN_HPP_NOEXCEPT
3471     {
3472       data = data_;
3473       return *this;
3474     }
3475 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3476 
operator VkAccelerationStructureMotionInstanceNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3477     operator VkAccelerationStructureMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT
3478     {
3479       return *reinterpret_cast<const VkAccelerationStructureMotionInstanceNV *>( this );
3480     }
3481 
operator VkAccelerationStructureMotionInstanceNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3482     operator VkAccelerationStructureMotionInstanceNV &() VULKAN_HPP_NOEXCEPT
3483     {
3484       return *reinterpret_cast<VkAccelerationStructureMotionInstanceNV *>( this );
3485     }
3486 
3487 #if defined( VULKAN_HPP_USE_REFLECT )
3488 #  if 14 <= VULKAN_HPP_CPP_VERSION
3489     auto
3490 #  else
3491     std::tuple<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV const &,
3492                VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV const &,
3493                VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV const &>
3494 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3495       reflect() const VULKAN_HPP_NOEXCEPT
3496     {
3497       return std::tie( type, flags, data );
3498     }
3499 #endif
3500 
3501   public:
3502     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV  type  = VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV::eStatic;
3503     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags = {};
3504     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV  data  = {};
3505   };
3506 
3507   struct MicromapUsageEXT
3508   {
3509     using NativeType = VkMicromapUsageEXT;
3510 
3511 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapUsageEXTVULKAN_HPP_NAMESPACE::MicromapUsageEXT3512     VULKAN_HPP_CONSTEXPR MicromapUsageEXT( uint32_t count_ = {}, uint32_t subdivisionLevel_ = {}, uint32_t format_ = {} ) VULKAN_HPP_NOEXCEPT
3513       : count{ count_ }
3514       , subdivisionLevel{ subdivisionLevel_ }
3515       , format{ format_ }
3516     {
3517     }
3518 
3519     VULKAN_HPP_CONSTEXPR MicromapUsageEXT( MicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3520 
MicromapUsageEXTVULKAN_HPP_NAMESPACE::MicromapUsageEXT3521     MicromapUsageEXT( VkMicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT : MicromapUsageEXT( *reinterpret_cast<MicromapUsageEXT const *>( &rhs ) ) {}
3522 
3523     MicromapUsageEXT & operator=( MicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3524 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3525 
operator =VULKAN_HPP_NAMESPACE::MicromapUsageEXT3526     MicromapUsageEXT & operator=( VkMicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT
3527     {
3528       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapUsageEXT const *>( &rhs );
3529       return *this;
3530     }
3531 
3532 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setCountVULKAN_HPP_NAMESPACE::MicromapUsageEXT3533     VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT & setCount( uint32_t count_ ) VULKAN_HPP_NOEXCEPT
3534     {
3535       count = count_;
3536       return *this;
3537     }
3538 
setSubdivisionLevelVULKAN_HPP_NAMESPACE::MicromapUsageEXT3539     VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT & setSubdivisionLevel( uint32_t subdivisionLevel_ ) VULKAN_HPP_NOEXCEPT
3540     {
3541       subdivisionLevel = subdivisionLevel_;
3542       return *this;
3543     }
3544 
setFormatVULKAN_HPP_NAMESPACE::MicromapUsageEXT3545     VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT & setFormat( uint32_t format_ ) VULKAN_HPP_NOEXCEPT
3546     {
3547       format = format_;
3548       return *this;
3549     }
3550 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3551 
operator VkMicromapUsageEXT const&VULKAN_HPP_NAMESPACE::MicromapUsageEXT3552     operator VkMicromapUsageEXT const &() const VULKAN_HPP_NOEXCEPT
3553     {
3554       return *reinterpret_cast<const VkMicromapUsageEXT *>( this );
3555     }
3556 
operator VkMicromapUsageEXT&VULKAN_HPP_NAMESPACE::MicromapUsageEXT3557     operator VkMicromapUsageEXT &() VULKAN_HPP_NOEXCEPT
3558     {
3559       return *reinterpret_cast<VkMicromapUsageEXT *>( this );
3560     }
3561 
3562 #if defined( VULKAN_HPP_USE_REFLECT )
3563 #  if 14 <= VULKAN_HPP_CPP_VERSION
3564     auto
3565 #  else
3566     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
3567 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapUsageEXT3568       reflect() const VULKAN_HPP_NOEXCEPT
3569     {
3570       return std::tie( count, subdivisionLevel, format );
3571     }
3572 #endif
3573 
3574 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3575     auto operator<=>( MicromapUsageEXT const & ) const = default;
3576 #else
operator ==VULKAN_HPP_NAMESPACE::MicromapUsageEXT3577     bool                                          operator==( MicromapUsageEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
3578     {
3579 #  if defined( VULKAN_HPP_USE_REFLECT )
3580       return this->reflect() == rhs.reflect();
3581 #  else
3582       return ( count == rhs.count ) && ( subdivisionLevel == rhs.subdivisionLevel ) && ( format == rhs.format );
3583 #  endif
3584     }
3585 
operator !=VULKAN_HPP_NAMESPACE::MicromapUsageEXT3586     bool operator!=( MicromapUsageEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
3587     {
3588       return !operator==( rhs );
3589     }
3590 #endif
3591 
3592   public:
3593     uint32_t count            = {};
3594     uint32_t subdivisionLevel = {};
3595     uint32_t format           = {};
3596   };
3597 
3598 #if defined( VK_ENABLE_BETA_EXTENSIONS )
3599   struct AccelerationStructureTrianglesDisplacementMicromapNV
3600   {
3601     using NativeType = VkAccelerationStructureTrianglesDisplacementMicromapNV;
3602 
3603     static const bool                                  allowDuplicate = false;
3604     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureTrianglesDisplacementMicromapNV;
3605 
3606 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureTrianglesDisplacementMicromapNVVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3607     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV(
3608       VULKAN_HPP_NAMESPACE::Format                           displacementBiasAndScaleFormat_        = VULKAN_HPP_NAMESPACE::Format::eUndefined,
3609       VULKAN_HPP_NAMESPACE::Format                           displacementVectorFormat_              = VULKAN_HPP_NAMESPACE::Format::eUndefined,
3610       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacementBiasAndScaleBuffer_        = {},
3611       VULKAN_HPP_NAMESPACE::DeviceSize                       displacementBiasAndScaleStride_        = {},
3612       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacementVectorBuffer_              = {},
3613       VULKAN_HPP_NAMESPACE::DeviceSize                       displacementVectorStride_              = {},
3614       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacedMicromapPrimitiveFlags_       = {},
3615       VULKAN_HPP_NAMESPACE::DeviceSize                       displacedMicromapPrimitiveFlagsStride_ = {},
3616       VULKAN_HPP_NAMESPACE::IndexType                        indexType_                             = VULKAN_HPP_NAMESPACE::IndexType::eUint16,
3617       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      indexBuffer_                           = {},
3618       VULKAN_HPP_NAMESPACE::DeviceSize                       indexStride_                           = {},
3619       uint32_t                                               baseTriangle_                          = {},
3620       uint32_t                                               usageCountsCount_                      = {},
3621       const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *         pUsageCounts_                          = {},
3622       const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_                         = {},
3623       VULKAN_HPP_NAMESPACE::MicromapEXT                      micromap_                              = {},
3624       void *                                                 pNext_                                 = nullptr ) VULKAN_HPP_NOEXCEPT
3625       : pNext{ pNext_ }
3626       , displacementBiasAndScaleFormat{ displacementBiasAndScaleFormat_ }
3627       , displacementVectorFormat{ displacementVectorFormat_ }
3628       , displacementBiasAndScaleBuffer{ displacementBiasAndScaleBuffer_ }
3629       , displacementBiasAndScaleStride{ displacementBiasAndScaleStride_ }
3630       , displacementVectorBuffer{ displacementVectorBuffer_ }
3631       , displacementVectorStride{ displacementVectorStride_ }
3632       , displacedMicromapPrimitiveFlags{ displacedMicromapPrimitiveFlags_ }
3633       , displacedMicromapPrimitiveFlagsStride{ displacedMicromapPrimitiveFlagsStride_ }
3634       , indexType{ indexType_ }
3635       , indexBuffer{ indexBuffer_ }
3636       , indexStride{ indexStride_ }
3637       , baseTriangle{ baseTriangle_ }
3638       , usageCountsCount{ usageCountsCount_ }
3639       , pUsageCounts{ pUsageCounts_ }
3640       , ppUsageCounts{ ppUsageCounts_ }
3641       , micromap{ micromap_ }
3642     {
3643     }
3644 
3645     VULKAN_HPP_CONSTEXPR_14
3646       AccelerationStructureTrianglesDisplacementMicromapNV( AccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3647 
AccelerationStructureTrianglesDisplacementMicromapNVVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3648     AccelerationStructureTrianglesDisplacementMicromapNV( VkAccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT
3649       : AccelerationStructureTrianglesDisplacementMicromapNV( *reinterpret_cast<AccelerationStructureTrianglesDisplacementMicromapNV const *>( &rhs ) )
3650     {
3651     }
3652 
3653 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AccelerationStructureTrianglesDisplacementMicromapNVVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3654     AccelerationStructureTrianglesDisplacementMicromapNV(
3655       VULKAN_HPP_NAMESPACE::Format                                                                                displacementBiasAndScaleFormat_,
3656       VULKAN_HPP_NAMESPACE::Format                                                                                displacementVectorFormat_,
3657       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           displacementBiasAndScaleBuffer_,
3658       VULKAN_HPP_NAMESPACE::DeviceSize                                                                            displacementBiasAndScaleStride_,
3659       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           displacementVectorBuffer_,
3660       VULKAN_HPP_NAMESPACE::DeviceSize                                                                            displacementVectorStride_,
3661       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           displacedMicromapPrimitiveFlags_,
3662       VULKAN_HPP_NAMESPACE::DeviceSize                                                                            displacedMicromapPrimitiveFlagsStride_,
3663       VULKAN_HPP_NAMESPACE::IndexType                                                                             indexType_,
3664       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           indexBuffer_,
3665       VULKAN_HPP_NAMESPACE::DeviceSize                                                                            indexStride_,
3666       uint32_t                                                                                                    baseTriangle_,
3667       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const &         usageCounts_,
3668       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_ = {},
3669       VULKAN_HPP_NAMESPACE::MicromapEXT                                                                           micromap_     = {},
3670       void *                                                                                                      pNext_        = nullptr )
3671       : pNext( pNext_ )
3672       , displacementBiasAndScaleFormat( displacementBiasAndScaleFormat_ )
3673       , displacementVectorFormat( displacementVectorFormat_ )
3674       , displacementBiasAndScaleBuffer( displacementBiasAndScaleBuffer_ )
3675       , displacementBiasAndScaleStride( displacementBiasAndScaleStride_ )
3676       , displacementVectorBuffer( displacementVectorBuffer_ )
3677       , displacementVectorStride( displacementVectorStride_ )
3678       , displacedMicromapPrimitiveFlags( displacedMicromapPrimitiveFlags_ )
3679       , displacedMicromapPrimitiveFlagsStride( displacedMicromapPrimitiveFlagsStride_ )
3680       , indexType( indexType_ )
3681       , indexBuffer( indexBuffer_ )
3682       , indexStride( indexStride_ )
3683       , baseTriangle( baseTriangle_ )
3684       , usageCountsCount( static_cast<uint32_t>( usageCounts_.size() ) )
3685       , pUsageCounts( usageCounts_.data() )
3686       , ppUsageCounts( pUsageCounts_.data() )
3687       , micromap( micromap_ )
3688     {
3689 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
3690       VULKAN_HPP_ASSERT( usageCounts_.empty() || pUsageCounts_.empty() || ( usageCounts_.size() == pUsageCounts_.size() ) );
3691 #      else
3692       if ( !usageCounts_.empty() && !pUsageCounts_.empty() && ( usageCounts_.size() != pUsageCounts_.size() ) )
3693       {
3694         throw LogicError(
3695           VULKAN_HPP_NAMESPACE_STRING
3696           "::AccelerationStructureTrianglesDisplacementMicromapNV::AccelerationStructureTrianglesDisplacementMicromapNV: !usageCounts_.empty() && !pUsageCounts_.empty() && ( usageCounts_.size() != pUsageCounts_.size() )" );
3697       }
3698 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
3699     }
3700 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
3701 
3702     AccelerationStructureTrianglesDisplacementMicromapNV &
3703       operator=( AccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3704 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3705 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3706     AccelerationStructureTrianglesDisplacementMicromapNV & operator=( VkAccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT
3707     {
3708       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV const *>( &rhs );
3709       return *this;
3710     }
3711 
3712 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3713     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
3714     {
3715       pNext = pNext_;
3716       return *this;
3717     }
3718 
3719     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementBiasAndScaleFormatVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3720       setDisplacementBiasAndScaleFormat( VULKAN_HPP_NAMESPACE::Format displacementBiasAndScaleFormat_ ) VULKAN_HPP_NOEXCEPT
3721     {
3722       displacementBiasAndScaleFormat = displacementBiasAndScaleFormat_;
3723       return *this;
3724     }
3725 
3726     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementVectorFormatVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3727       setDisplacementVectorFormat( VULKAN_HPP_NAMESPACE::Format displacementVectorFormat_ ) VULKAN_HPP_NOEXCEPT
3728     {
3729       displacementVectorFormat = displacementVectorFormat_;
3730       return *this;
3731     }
3732 
3733     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementBiasAndScaleBufferVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3734       setDisplacementBiasAndScaleBuffer( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & displacementBiasAndScaleBuffer_ ) VULKAN_HPP_NOEXCEPT
3735     {
3736       displacementBiasAndScaleBuffer = displacementBiasAndScaleBuffer_;
3737       return *this;
3738     }
3739 
3740     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementBiasAndScaleStrideVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3741       setDisplacementBiasAndScaleStride( VULKAN_HPP_NAMESPACE::DeviceSize displacementBiasAndScaleStride_ ) VULKAN_HPP_NOEXCEPT
3742     {
3743       displacementBiasAndScaleStride = displacementBiasAndScaleStride_;
3744       return *this;
3745     }
3746 
3747     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementVectorBufferVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3748       setDisplacementVectorBuffer( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & displacementVectorBuffer_ ) VULKAN_HPP_NOEXCEPT
3749     {
3750       displacementVectorBuffer = displacementVectorBuffer_;
3751       return *this;
3752     }
3753 
3754     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementVectorStrideVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3755       setDisplacementVectorStride( VULKAN_HPP_NAMESPACE::DeviceSize displacementVectorStride_ ) VULKAN_HPP_NOEXCEPT
3756     {
3757       displacementVectorStride = displacementVectorStride_;
3758       return *this;
3759     }
3760 
3761     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacedMicromapPrimitiveFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3762       setDisplacedMicromapPrimitiveFlags( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & displacedMicromapPrimitiveFlags_ ) VULKAN_HPP_NOEXCEPT
3763     {
3764       displacedMicromapPrimitiveFlags = displacedMicromapPrimitiveFlags_;
3765       return *this;
3766     }
3767 
3768     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacedMicromapPrimitiveFlagsStrideVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3769       setDisplacedMicromapPrimitiveFlagsStride( VULKAN_HPP_NAMESPACE::DeviceSize displacedMicromapPrimitiveFlagsStride_ ) VULKAN_HPP_NOEXCEPT
3770     {
3771       displacedMicromapPrimitiveFlagsStride = displacedMicromapPrimitiveFlagsStride_;
3772       return *this;
3773     }
3774 
3775     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setIndexTypeVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3776       setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
3777     {
3778       indexType = indexType_;
3779       return *this;
3780     }
3781 
3782     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setIndexBufferVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3783       setIndexBuffer( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & indexBuffer_ ) VULKAN_HPP_NOEXCEPT
3784     {
3785       indexBuffer = indexBuffer_;
3786       return *this;
3787     }
3788 
3789     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setIndexStrideVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3790       setIndexStride( VULKAN_HPP_NAMESPACE::DeviceSize indexStride_ ) VULKAN_HPP_NOEXCEPT
3791     {
3792       indexStride = indexStride_;
3793       return *this;
3794     }
3795 
setBaseTriangleVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3796     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setBaseTriangle( uint32_t baseTriangle_ ) VULKAN_HPP_NOEXCEPT
3797     {
3798       baseTriangle = baseTriangle_;
3799       return *this;
3800     }
3801 
setUsageCountsCountVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3802     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setUsageCountsCount( uint32_t usageCountsCount_ ) VULKAN_HPP_NOEXCEPT
3803     {
3804       usageCountsCount = usageCountsCount_;
3805       return *this;
3806     }
3807 
3808     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setPUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3809       setPUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
3810     {
3811       pUsageCounts = pUsageCounts_;
3812       return *this;
3813     }
3814 
3815 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
3816     AccelerationStructureTrianglesDisplacementMicromapNV &
setUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3817       setUsageCounts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const & usageCounts_ ) VULKAN_HPP_NOEXCEPT
3818     {
3819       usageCountsCount = static_cast<uint32_t>( usageCounts_.size() );
3820       pUsageCounts     = usageCounts_.data();
3821       return *this;
3822     }
3823 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
3824 
3825     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setPpUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3826       setPpUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_ ) VULKAN_HPP_NOEXCEPT
3827     {
3828       ppUsageCounts = ppUsageCounts_;
3829       return *this;
3830     }
3831 
3832 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3833     AccelerationStructureTrianglesDisplacementMicromapNV & setPUsageCounts(
3834       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
3835     {
3836       usageCountsCount = static_cast<uint32_t>( pUsageCounts_.size() );
3837       ppUsageCounts    = pUsageCounts_.data();
3838       return *this;
3839     }
3840 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
3841 
3842     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setMicromapVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3843       setMicromap( VULKAN_HPP_NAMESPACE::MicromapEXT micromap_ ) VULKAN_HPP_NOEXCEPT
3844     {
3845       micromap = micromap_;
3846       return *this;
3847     }
3848 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3849 
operator VkAccelerationStructureTrianglesDisplacementMicromapNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3850     operator VkAccelerationStructureTrianglesDisplacementMicromapNV const &() const VULKAN_HPP_NOEXCEPT
3851     {
3852       return *reinterpret_cast<const VkAccelerationStructureTrianglesDisplacementMicromapNV *>( this );
3853     }
3854 
operator VkAccelerationStructureTrianglesDisplacementMicromapNV&VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3855     operator VkAccelerationStructureTrianglesDisplacementMicromapNV &() VULKAN_HPP_NOEXCEPT
3856     {
3857       return *reinterpret_cast<VkAccelerationStructureTrianglesDisplacementMicromapNV *>( this );
3858     }
3859 
3860 #  if defined( VULKAN_HPP_USE_REFLECT )
3861 #    if 14 <= VULKAN_HPP_CPP_VERSION
3862     auto
3863 #    else
3864     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
3865                void * const &,
3866                VULKAN_HPP_NAMESPACE::Format const &,
3867                VULKAN_HPP_NAMESPACE::Format const &,
3868                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
3869                VULKAN_HPP_NAMESPACE::DeviceSize const &,
3870                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
3871                VULKAN_HPP_NAMESPACE::DeviceSize const &,
3872                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
3873                VULKAN_HPP_NAMESPACE::DeviceSize const &,
3874                VULKAN_HPP_NAMESPACE::IndexType const &,
3875                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
3876                VULKAN_HPP_NAMESPACE::DeviceSize const &,
3877                uint32_t const &,
3878                uint32_t const &,
3879                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const &,
3880                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * const &,
3881                VULKAN_HPP_NAMESPACE::MicromapEXT const &>
3882 #    endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3883       reflect() const VULKAN_HPP_NOEXCEPT
3884     {
3885       return std::tie( sType,
3886                        pNext,
3887                        displacementBiasAndScaleFormat,
3888                        displacementVectorFormat,
3889                        displacementBiasAndScaleBuffer,
3890                        displacementBiasAndScaleStride,
3891                        displacementVectorBuffer,
3892                        displacementVectorStride,
3893                        displacedMicromapPrimitiveFlags,
3894                        displacedMicromapPrimitiveFlagsStride,
3895                        indexType,
3896                        indexBuffer,
3897                        indexStride,
3898                        baseTriangle,
3899                        usageCountsCount,
3900                        pUsageCounts,
3901                        ppUsageCounts,
3902                        micromap );
3903     }
3904 #  endif
3905 
3906   public:
3907     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eAccelerationStructureTrianglesDisplacementMicromapNV;
3908     void *                                                 pNext = {};
3909     VULKAN_HPP_NAMESPACE::Format                           displacementBiasAndScaleFormat        = VULKAN_HPP_NAMESPACE::Format::eUndefined;
3910     VULKAN_HPP_NAMESPACE::Format                           displacementVectorFormat              = VULKAN_HPP_NAMESPACE::Format::eUndefined;
3911     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacementBiasAndScaleBuffer        = {};
3912     VULKAN_HPP_NAMESPACE::DeviceSize                       displacementBiasAndScaleStride        = {};
3913     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacementVectorBuffer              = {};
3914     VULKAN_HPP_NAMESPACE::DeviceSize                       displacementVectorStride              = {};
3915     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacedMicromapPrimitiveFlags       = {};
3916     VULKAN_HPP_NAMESPACE::DeviceSize                       displacedMicromapPrimitiveFlagsStride = {};
3917     VULKAN_HPP_NAMESPACE::IndexType                        indexType                             = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
3918     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      indexBuffer                           = {};
3919     VULKAN_HPP_NAMESPACE::DeviceSize                       indexStride                           = {};
3920     uint32_t                                               baseTriangle                          = {};
3921     uint32_t                                               usageCountsCount                      = {};
3922     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *         pUsageCounts                          = {};
3923     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts                         = {};
3924     VULKAN_HPP_NAMESPACE::MicromapEXT                      micromap                              = {};
3925   };
3926 
3927   template <>
3928   struct CppType<StructureType, StructureType::eAccelerationStructureTrianglesDisplacementMicromapNV>
3929   {
3930     using Type = AccelerationStructureTrianglesDisplacementMicromapNV;
3931   };
3932 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
3933 
3934   struct AccelerationStructureTrianglesOpacityMicromapEXT
3935   {
3936     using NativeType = VkAccelerationStructureTrianglesOpacityMicromapEXT;
3937 
3938     static const bool                                  allowDuplicate = false;
3939     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureTrianglesOpacityMicromapEXT;
3940 
3941 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
3942     VULKAN_HPP_CONSTEXPR_14
AccelerationStructureTrianglesOpacityMicromapEXTVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT3943       AccelerationStructureTrianglesOpacityMicromapEXT( VULKAN_HPP_NAMESPACE::IndexType                   indexType_ = VULKAN_HPP_NAMESPACE::IndexType::eUint16,
3944                                                         VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexBuffer_        = {},
3945                                                         VULKAN_HPP_NAMESPACE::DeviceSize                  indexStride_        = {},
3946                                                         uint32_t                                          baseTriangle_       = {},
3947                                                         uint32_t                                          usageCountsCount_   = {},
3948                                                         const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *    pUsageCounts_       = {},
3949                                                         const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_ = {},
3950                                                         VULKAN_HPP_NAMESPACE::MicromapEXT                      micromap_      = {},
3951                                                         void *                                                 pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
3952       : pNext{ pNext_ }
3953       , indexType{ indexType_ }
3954       , indexBuffer{ indexBuffer_ }
3955       , indexStride{ indexStride_ }
3956       , baseTriangle{ baseTriangle_ }
3957       , usageCountsCount{ usageCountsCount_ }
3958       , pUsageCounts{ pUsageCounts_ }
3959       , ppUsageCounts{ ppUsageCounts_ }
3960       , micromap{ micromap_ }
3961     {
3962     }
3963 
3964     VULKAN_HPP_CONSTEXPR_14
3965       AccelerationStructureTrianglesOpacityMicromapEXT( AccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3966 
AccelerationStructureTrianglesOpacityMicromapEXTVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT3967     AccelerationStructureTrianglesOpacityMicromapEXT( VkAccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT
3968       : AccelerationStructureTrianglesOpacityMicromapEXT( *reinterpret_cast<AccelerationStructureTrianglesOpacityMicromapEXT const *>( &rhs ) )
3969     {
3970     }
3971 
3972 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AccelerationStructureTrianglesOpacityMicromapEXTVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT3973     AccelerationStructureTrianglesOpacityMicromapEXT(
3974       VULKAN_HPP_NAMESPACE::IndexType                                                                             indexType_,
3975       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           indexBuffer_,
3976       VULKAN_HPP_NAMESPACE::DeviceSize                                                                            indexStride_,
3977       uint32_t                                                                                                    baseTriangle_,
3978       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const &         usageCounts_,
3979       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_ = {},
3980       VULKAN_HPP_NAMESPACE::MicromapEXT                                                                           micromap_     = {},
3981       void *                                                                                                      pNext_        = nullptr )
3982       : pNext( pNext_ )
3983       , indexType( indexType_ )
3984       , indexBuffer( indexBuffer_ )
3985       , indexStride( indexStride_ )
3986       , baseTriangle( baseTriangle_ )
3987       , usageCountsCount( static_cast<uint32_t>( !usageCounts_.empty() ? usageCounts_.size() : pUsageCounts_.size() ) )
3988       , pUsageCounts( usageCounts_.data() )
3989       , ppUsageCounts( pUsageCounts_.data() )
3990       , micromap( micromap_ )
3991     {
3992 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
3993       VULKAN_HPP_ASSERT( ( !usageCounts_.empty() + !pUsageCounts_.empty() ) <= 1 );
3994 #    else
3995       if ( 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() ) )
3996       {
3997         throw LogicError(
3998           VULKAN_HPP_NAMESPACE_STRING
3999           "::AccelerationStructureTrianglesOpacityMicromapEXT::AccelerationStructureTrianglesOpacityMicromapEXT: 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() )" );
4000       }
4001 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
4002     }
4003 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
4004 
4005     AccelerationStructureTrianglesOpacityMicromapEXT & operator=( AccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4006 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4007 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4008     AccelerationStructureTrianglesOpacityMicromapEXT & operator=( VkAccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT
4009     {
4010       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT const *>( &rhs );
4011       return *this;
4012     }
4013 
4014 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4015     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
4016     {
4017       pNext = pNext_;
4018       return *this;
4019     }
4020 
setIndexTypeVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4021     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
4022     {
4023       indexType = indexType_;
4024       return *this;
4025     }
4026 
4027     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT &
setIndexBufferVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4028       setIndexBuffer( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & indexBuffer_ ) VULKAN_HPP_NOEXCEPT
4029     {
4030       indexBuffer = indexBuffer_;
4031       return *this;
4032     }
4033 
4034     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT &
setIndexStrideVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4035       setIndexStride( VULKAN_HPP_NAMESPACE::DeviceSize indexStride_ ) VULKAN_HPP_NOEXCEPT
4036     {
4037       indexStride = indexStride_;
4038       return *this;
4039     }
4040 
setBaseTriangleVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4041     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setBaseTriangle( uint32_t baseTriangle_ ) VULKAN_HPP_NOEXCEPT
4042     {
4043       baseTriangle = baseTriangle_;
4044       return *this;
4045     }
4046 
setUsageCountsCountVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4047     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setUsageCountsCount( uint32_t usageCountsCount_ ) VULKAN_HPP_NOEXCEPT
4048     {
4049       usageCountsCount = usageCountsCount_;
4050       return *this;
4051     }
4052 
4053     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT &
setPUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4054       setPUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
4055     {
4056       pUsageCounts = pUsageCounts_;
4057       return *this;
4058     }
4059 
4060 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
4061     AccelerationStructureTrianglesOpacityMicromapEXT &
setUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4062       setUsageCounts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const & usageCounts_ ) VULKAN_HPP_NOEXCEPT
4063     {
4064       usageCountsCount = static_cast<uint32_t>( usageCounts_.size() );
4065       pUsageCounts     = usageCounts_.data();
4066       return *this;
4067     }
4068 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
4069 
4070     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT &
setPpUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4071       setPpUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_ ) VULKAN_HPP_NOEXCEPT
4072     {
4073       ppUsageCounts = ppUsageCounts_;
4074       return *this;
4075     }
4076 
4077 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4078     AccelerationStructureTrianglesOpacityMicromapEXT & setPUsageCounts(
4079       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
4080     {
4081       usageCountsCount = static_cast<uint32_t>( pUsageCounts_.size() );
4082       ppUsageCounts    = pUsageCounts_.data();
4083       return *this;
4084     }
4085 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
4086 
setMicromapVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4087     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setMicromap( VULKAN_HPP_NAMESPACE::MicromapEXT micromap_ ) VULKAN_HPP_NOEXCEPT
4088     {
4089       micromap = micromap_;
4090       return *this;
4091     }
4092 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4093 
operator VkAccelerationStructureTrianglesOpacityMicromapEXT const&VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4094     operator VkAccelerationStructureTrianglesOpacityMicromapEXT const &() const VULKAN_HPP_NOEXCEPT
4095     {
4096       return *reinterpret_cast<const VkAccelerationStructureTrianglesOpacityMicromapEXT *>( this );
4097     }
4098 
operator VkAccelerationStructureTrianglesOpacityMicromapEXT&VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4099     operator VkAccelerationStructureTrianglesOpacityMicromapEXT &() VULKAN_HPP_NOEXCEPT
4100     {
4101       return *reinterpret_cast<VkAccelerationStructureTrianglesOpacityMicromapEXT *>( this );
4102     }
4103 
4104 #if defined( VULKAN_HPP_USE_REFLECT )
4105 #  if 14 <= VULKAN_HPP_CPP_VERSION
4106     auto
4107 #  else
4108     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4109                void * const &,
4110                VULKAN_HPP_NAMESPACE::IndexType const &,
4111                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
4112                VULKAN_HPP_NAMESPACE::DeviceSize const &,
4113                uint32_t const &,
4114                uint32_t const &,
4115                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const &,
4116                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * const &,
4117                VULKAN_HPP_NAMESPACE::MicromapEXT const &>
4118 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4119       reflect() const VULKAN_HPP_NOEXCEPT
4120     {
4121       return std::tie( sType, pNext, indexType, indexBuffer, indexStride, baseTriangle, usageCountsCount, pUsageCounts, ppUsageCounts, micromap );
4122     }
4123 #endif
4124 
4125   public:
4126     VULKAN_HPP_NAMESPACE::StructureType                    sType            = StructureType::eAccelerationStructureTrianglesOpacityMicromapEXT;
4127     void *                                                 pNext            = {};
4128     VULKAN_HPP_NAMESPACE::IndexType                        indexType        = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
4129     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      indexBuffer      = {};
4130     VULKAN_HPP_NAMESPACE::DeviceSize                       indexStride      = {};
4131     uint32_t                                               baseTriangle     = {};
4132     uint32_t                                               usageCountsCount = {};
4133     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *         pUsageCounts     = {};
4134     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts    = {};
4135     VULKAN_HPP_NAMESPACE::MicromapEXT                      micromap         = {};
4136   };
4137 
4138   template <>
4139   struct CppType<StructureType, StructureType::eAccelerationStructureTrianglesOpacityMicromapEXT>
4140   {
4141     using Type = AccelerationStructureTrianglesOpacityMicromapEXT;
4142   };
4143 
4144   struct AccelerationStructureVersionInfoKHR
4145   {
4146     using NativeType = VkAccelerationStructureVersionInfoKHR;
4147 
4148     static const bool                                  allowDuplicate = false;
4149     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureVersionInfoKHR;
4150 
4151 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureVersionInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4152     VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( const uint8_t * pVersionData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
4153       : pNext{ pNext_ }
4154       , pVersionData{ pVersionData_ }
4155     {
4156     }
4157 
4158     VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4159 
AccelerationStructureVersionInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4160     AccelerationStructureVersionInfoKHR( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4161       : AccelerationStructureVersionInfoKHR( *reinterpret_cast<AccelerationStructureVersionInfoKHR const *>( &rhs ) )
4162     {
4163     }
4164 
4165     AccelerationStructureVersionInfoKHR & operator=( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4166 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4167 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4168     AccelerationStructureVersionInfoKHR & operator=( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4169     {
4170       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR const *>( &rhs );
4171       return *this;
4172     }
4173 
4174 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4175     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4176     {
4177       pNext = pNext_;
4178       return *this;
4179     }
4180 
setPVersionDataVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4181     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & setPVersionData( const uint8_t * pVersionData_ ) VULKAN_HPP_NOEXCEPT
4182     {
4183       pVersionData = pVersionData_;
4184       return *this;
4185     }
4186 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4187 
operator VkAccelerationStructureVersionInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4188     operator VkAccelerationStructureVersionInfoKHR const &() const VULKAN_HPP_NOEXCEPT
4189     {
4190       return *reinterpret_cast<const VkAccelerationStructureVersionInfoKHR *>( this );
4191     }
4192 
operator VkAccelerationStructureVersionInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4193     operator VkAccelerationStructureVersionInfoKHR &() VULKAN_HPP_NOEXCEPT
4194     {
4195       return *reinterpret_cast<VkAccelerationStructureVersionInfoKHR *>( this );
4196     }
4197 
4198 #if defined( VULKAN_HPP_USE_REFLECT )
4199 #  if 14 <= VULKAN_HPP_CPP_VERSION
4200     auto
4201 #  else
4202     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const uint8_t * const &>
4203 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4204       reflect() const VULKAN_HPP_NOEXCEPT
4205     {
4206       return std::tie( sType, pNext, pVersionData );
4207     }
4208 #endif
4209 
4210 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4211     auto operator<=>( AccelerationStructureVersionInfoKHR const & ) const = default;
4212 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4213     bool operator==( AccelerationStructureVersionInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4214     {
4215 #  if defined( VULKAN_HPP_USE_REFLECT )
4216       return this->reflect() == rhs.reflect();
4217 #  else
4218       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pVersionData == rhs.pVersionData );
4219 #  endif
4220     }
4221 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4222     bool operator!=( AccelerationStructureVersionInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4223     {
4224       return !operator==( rhs );
4225     }
4226 #endif
4227 
4228   public:
4229     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eAccelerationStructureVersionInfoKHR;
4230     const void *                        pNext        = {};
4231     const uint8_t *                     pVersionData = {};
4232   };
4233 
4234   template <>
4235   struct CppType<StructureType, StructureType::eAccelerationStructureVersionInfoKHR>
4236   {
4237     using Type = AccelerationStructureVersionInfoKHR;
4238   };
4239 
4240   struct AcquireNextImageInfoKHR
4241   {
4242     using NativeType = VkAcquireNextImageInfoKHR;
4243 
4244     static const bool                                  allowDuplicate = false;
4245     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAcquireNextImageInfoKHR;
4246 
4247 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AcquireNextImageInfoKHRVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4248     VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_  = {},
4249                                                   uint64_t                           timeout_    = {},
4250                                                   VULKAN_HPP_NAMESPACE::Semaphore    semaphore_  = {},
4251                                                   VULKAN_HPP_NAMESPACE::Fence        fence_      = {},
4252                                                   uint32_t                           deviceMask_ = {},
4253                                                   const void *                       pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
4254       : pNext{ pNext_ }
4255       , swapchain{ swapchain_ }
4256       , timeout{ timeout_ }
4257       , semaphore{ semaphore_ }
4258       , fence{ fence_ }
4259       , deviceMask{ deviceMask_ }
4260     {
4261     }
4262 
4263     VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4264 
AcquireNextImageInfoKHRVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4265     AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4266       : AcquireNextImageInfoKHR( *reinterpret_cast<AcquireNextImageInfoKHR const *>( &rhs ) )
4267     {
4268     }
4269 
4270     AcquireNextImageInfoKHR & operator=( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4271 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4272 
operator =VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4273     AcquireNextImageInfoKHR & operator=( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4274     {
4275       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR const *>( &rhs );
4276       return *this;
4277     }
4278 
4279 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4280     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4281     {
4282       pNext = pNext_;
4283       return *this;
4284     }
4285 
setSwapchainVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4286     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
4287     {
4288       swapchain = swapchain_;
4289       return *this;
4290     }
4291 
setTimeoutVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4292     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT
4293     {
4294       timeout = timeout_;
4295       return *this;
4296     }
4297 
setSemaphoreVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4298     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
4299     {
4300       semaphore = semaphore_;
4301       return *this;
4302     }
4303 
setFenceVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4304     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
4305     {
4306       fence = fence_;
4307       return *this;
4308     }
4309 
setDeviceMaskVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4310     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
4311     {
4312       deviceMask = deviceMask_;
4313       return *this;
4314     }
4315 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4316 
operator VkAcquireNextImageInfoKHR const&VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4317     operator VkAcquireNextImageInfoKHR const &() const VULKAN_HPP_NOEXCEPT
4318     {
4319       return *reinterpret_cast<const VkAcquireNextImageInfoKHR *>( this );
4320     }
4321 
operator VkAcquireNextImageInfoKHR&VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4322     operator VkAcquireNextImageInfoKHR &() VULKAN_HPP_NOEXCEPT
4323     {
4324       return *reinterpret_cast<VkAcquireNextImageInfoKHR *>( this );
4325     }
4326 
4327 #if defined( VULKAN_HPP_USE_REFLECT )
4328 #  if 14 <= VULKAN_HPP_CPP_VERSION
4329     auto
4330 #  else
4331     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4332                const void * const &,
4333                VULKAN_HPP_NAMESPACE::SwapchainKHR const &,
4334                uint64_t const &,
4335                VULKAN_HPP_NAMESPACE::Semaphore const &,
4336                VULKAN_HPP_NAMESPACE::Fence const &,
4337                uint32_t const &>
4338 #  endif
reflectVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4339       reflect() const VULKAN_HPP_NOEXCEPT
4340     {
4341       return std::tie( sType, pNext, swapchain, timeout, semaphore, fence, deviceMask );
4342     }
4343 #endif
4344 
4345 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4346     auto operator<=>( AcquireNextImageInfoKHR const & ) const = default;
4347 #else
operator ==VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4348     bool operator==( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4349     {
4350 #  if defined( VULKAN_HPP_USE_REFLECT )
4351       return this->reflect() == rhs.reflect();
4352 #  else
4353       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && ( timeout == rhs.timeout ) &&
4354              ( semaphore == rhs.semaphore ) && ( fence == rhs.fence ) && ( deviceMask == rhs.deviceMask );
4355 #  endif
4356     }
4357 
operator !=VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4358     bool operator!=( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4359     {
4360       return !operator==( rhs );
4361     }
4362 #endif
4363 
4364   public:
4365     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eAcquireNextImageInfoKHR;
4366     const void *                        pNext      = {};
4367     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain  = {};
4368     uint64_t                            timeout    = {};
4369     VULKAN_HPP_NAMESPACE::Semaphore     semaphore  = {};
4370     VULKAN_HPP_NAMESPACE::Fence         fence      = {};
4371     uint32_t                            deviceMask = {};
4372   };
4373 
4374   template <>
4375   struct CppType<StructureType, StructureType::eAcquireNextImageInfoKHR>
4376   {
4377     using Type = AcquireNextImageInfoKHR;
4378   };
4379 
4380   struct AcquireProfilingLockInfoKHR
4381   {
4382     using NativeType = VkAcquireProfilingLockInfoKHR;
4383 
4384     static const bool                                  allowDuplicate = false;
4385     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAcquireProfilingLockInfoKHR;
4386 
4387 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AcquireProfilingLockInfoKHRVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4388     VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR( VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_   = {},
4389                                                       uint64_t                                           timeout_ = {},
4390                                                       const void *                                       pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
4391       : pNext{ pNext_ }
4392       , flags{ flags_ }
4393       , timeout{ timeout_ }
4394     {
4395     }
4396 
4397     VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4398 
AcquireProfilingLockInfoKHRVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4399     AcquireProfilingLockInfoKHR( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4400       : AcquireProfilingLockInfoKHR( *reinterpret_cast<AcquireProfilingLockInfoKHR const *>( &rhs ) )
4401     {
4402     }
4403 
4404     AcquireProfilingLockInfoKHR & operator=( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4405 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4406 
operator =VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4407     AcquireProfilingLockInfoKHR & operator=( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4408     {
4409       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR const *>( &rhs );
4410       return *this;
4411     }
4412 
4413 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4414     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4415     {
4416       pNext = pNext_;
4417       return *this;
4418     }
4419 
setFlagsVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4420     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
4421     {
4422       flags = flags_;
4423       return *this;
4424     }
4425 
setTimeoutVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4426     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT
4427     {
4428       timeout = timeout_;
4429       return *this;
4430     }
4431 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4432 
operator VkAcquireProfilingLockInfoKHR const&VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4433     operator VkAcquireProfilingLockInfoKHR const &() const VULKAN_HPP_NOEXCEPT
4434     {
4435       return *reinterpret_cast<const VkAcquireProfilingLockInfoKHR *>( this );
4436     }
4437 
operator VkAcquireProfilingLockInfoKHR&VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4438     operator VkAcquireProfilingLockInfoKHR &() VULKAN_HPP_NOEXCEPT
4439     {
4440       return *reinterpret_cast<VkAcquireProfilingLockInfoKHR *>( this );
4441     }
4442 
4443 #if defined( VULKAN_HPP_USE_REFLECT )
4444 #  if 14 <= VULKAN_HPP_CPP_VERSION
4445     auto
4446 #  else
4447     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR const &, uint64_t const &>
4448 #  endif
reflectVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4449       reflect() const VULKAN_HPP_NOEXCEPT
4450     {
4451       return std::tie( sType, pNext, flags, timeout );
4452     }
4453 #endif
4454 
4455 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4456     auto operator<=>( AcquireProfilingLockInfoKHR const & ) const = default;
4457 #else
operator ==VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4458     bool operator==( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4459     {
4460 #  if defined( VULKAN_HPP_USE_REFLECT )
4461       return this->reflect() == rhs.reflect();
4462 #  else
4463       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( timeout == rhs.timeout );
4464 #  endif
4465     }
4466 
operator !=VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4467     bool operator!=( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4468     {
4469       return !operator==( rhs );
4470     }
4471 #endif
4472 
4473   public:
4474     VULKAN_HPP_NAMESPACE::StructureType                sType   = StructureType::eAcquireProfilingLockInfoKHR;
4475     const void *                                       pNext   = {};
4476     VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags   = {};
4477     uint64_t                                           timeout = {};
4478   };
4479 
4480   template <>
4481   struct CppType<StructureType, StructureType::eAcquireProfilingLockInfoKHR>
4482   {
4483     using Type = AcquireProfilingLockInfoKHR;
4484   };
4485 
4486   struct AllocationCallbacks
4487   {
4488     using NativeType = VkAllocationCallbacks;
4489 
4490 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AllocationCallbacksVULKAN_HPP_NAMESPACE::AllocationCallbacks4491     VULKAN_HPP_CONSTEXPR AllocationCallbacks( void *                               pUserData_             = {},
4492                                               PFN_vkAllocationFunction             pfnAllocation_         = {},
4493                                               PFN_vkReallocationFunction           pfnReallocation_       = {},
4494                                               PFN_vkFreeFunction                   pfnFree_               = {},
4495                                               PFN_vkInternalAllocationNotification pfnInternalAllocation_ = {},
4496                                               PFN_vkInternalFreeNotification       pfnInternalFree_       = {} ) VULKAN_HPP_NOEXCEPT
4497       : pUserData{ pUserData_ }
4498       , pfnAllocation{ pfnAllocation_ }
4499       , pfnReallocation{ pfnReallocation_ }
4500       , pfnFree{ pfnFree_ }
4501       , pfnInternalAllocation{ pfnInternalAllocation_ }
4502       , pfnInternalFree{ pfnInternalFree_ }
4503     {
4504     }
4505 
4506     VULKAN_HPP_CONSTEXPR AllocationCallbacks( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4507 
AllocationCallbacksVULKAN_HPP_NAMESPACE::AllocationCallbacks4508     AllocationCallbacks( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT : AllocationCallbacks( *reinterpret_cast<AllocationCallbacks const *>( &rhs ) )
4509     {
4510     }
4511 
4512     AllocationCallbacks & operator=( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4513 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4514 
operator =VULKAN_HPP_NAMESPACE::AllocationCallbacks4515     AllocationCallbacks & operator=( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT
4516     {
4517       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AllocationCallbacks const *>( &rhs );
4518       return *this;
4519     }
4520 
4521 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPUserDataVULKAN_HPP_NAMESPACE::AllocationCallbacks4522     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
4523     {
4524       pUserData = pUserData_;
4525       return *this;
4526     }
4527 
setPfnAllocationVULKAN_HPP_NAMESPACE::AllocationCallbacks4528     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ ) VULKAN_HPP_NOEXCEPT
4529     {
4530       pfnAllocation = pfnAllocation_;
4531       return *this;
4532     }
4533 
setPfnReallocationVULKAN_HPP_NAMESPACE::AllocationCallbacks4534     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ ) VULKAN_HPP_NOEXCEPT
4535     {
4536       pfnReallocation = pfnReallocation_;
4537       return *this;
4538     }
4539 
setPfnFreeVULKAN_HPP_NAMESPACE::AllocationCallbacks4540     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnFree( PFN_vkFreeFunction pfnFree_ ) VULKAN_HPP_NOEXCEPT
4541     {
4542       pfnFree = pfnFree_;
4543       return *this;
4544     }
4545 
setPfnInternalAllocationVULKAN_HPP_NAMESPACE::AllocationCallbacks4546     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ ) VULKAN_HPP_NOEXCEPT
4547     {
4548       pfnInternalAllocation = pfnInternalAllocation_;
4549       return *this;
4550     }
4551 
setPfnInternalFreeVULKAN_HPP_NAMESPACE::AllocationCallbacks4552     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ ) VULKAN_HPP_NOEXCEPT
4553     {
4554       pfnInternalFree = pfnInternalFree_;
4555       return *this;
4556     }
4557 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4558 
operator VkAllocationCallbacks const&VULKAN_HPP_NAMESPACE::AllocationCallbacks4559     operator VkAllocationCallbacks const &() const VULKAN_HPP_NOEXCEPT
4560     {
4561       return *reinterpret_cast<const VkAllocationCallbacks *>( this );
4562     }
4563 
operator VkAllocationCallbacks&VULKAN_HPP_NAMESPACE::AllocationCallbacks4564     operator VkAllocationCallbacks &() VULKAN_HPP_NOEXCEPT
4565     {
4566       return *reinterpret_cast<VkAllocationCallbacks *>( this );
4567     }
4568 
4569 #if defined( VULKAN_HPP_USE_REFLECT )
4570 #  if 14 <= VULKAN_HPP_CPP_VERSION
4571     auto
4572 #  else
4573     std::tuple<void * const &,
4574                PFN_vkAllocationFunction const &,
4575                PFN_vkReallocationFunction const &,
4576                PFN_vkFreeFunction const &,
4577                PFN_vkInternalAllocationNotification const &,
4578                PFN_vkInternalFreeNotification const &>
4579 #  endif
reflectVULKAN_HPP_NAMESPACE::AllocationCallbacks4580       reflect() const VULKAN_HPP_NOEXCEPT
4581     {
4582       return std::tie( pUserData, pfnAllocation, pfnReallocation, pfnFree, pfnInternalAllocation, pfnInternalFree );
4583     }
4584 #endif
4585 
operator ==VULKAN_HPP_NAMESPACE::AllocationCallbacks4586     bool operator==( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT
4587     {
4588 #if defined( VULKAN_HPP_USE_REFLECT )
4589       return this->reflect() == rhs.reflect();
4590 #else
4591       return ( pUserData == rhs.pUserData ) && ( pfnAllocation == rhs.pfnAllocation ) && ( pfnReallocation == rhs.pfnReallocation ) &&
4592              ( pfnFree == rhs.pfnFree ) && ( pfnInternalAllocation == rhs.pfnInternalAllocation ) && ( pfnInternalFree == rhs.pfnInternalFree );
4593 #endif
4594     }
4595 
operator !=VULKAN_HPP_NAMESPACE::AllocationCallbacks4596     bool operator!=( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT
4597     {
4598       return !operator==( rhs );
4599     }
4600 
4601   public:
4602     void *                               pUserData             = {};
4603     PFN_vkAllocationFunction             pfnAllocation         = {};
4604     PFN_vkReallocationFunction           pfnReallocation       = {};
4605     PFN_vkFreeFunction                   pfnFree               = {};
4606     PFN_vkInternalAllocationNotification pfnInternalAllocation = {};
4607     PFN_vkInternalFreeNotification       pfnInternalFree       = {};
4608   };
4609 
4610   struct AmigoProfilingSubmitInfoSEC
4611   {
4612     using NativeType = VkAmigoProfilingSubmitInfoSEC;
4613 
4614     static const bool                                  allowDuplicate = false;
4615     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAmigoProfilingSubmitInfoSEC;
4616 
4617 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
4618     VULKAN_HPP_CONSTEXPR
AmigoProfilingSubmitInfoSECVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4619       AmigoProfilingSubmitInfoSEC( uint64_t firstDrawTimestamp_ = {}, uint64_t swapBufferTimestamp_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
4620       : pNext{ pNext_ }
4621       , firstDrawTimestamp{ firstDrawTimestamp_ }
4622       , swapBufferTimestamp{ swapBufferTimestamp_ }
4623     {
4624     }
4625 
4626     VULKAN_HPP_CONSTEXPR AmigoProfilingSubmitInfoSEC( AmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4627 
AmigoProfilingSubmitInfoSECVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4628     AmigoProfilingSubmitInfoSEC( VkAmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT
4629       : AmigoProfilingSubmitInfoSEC( *reinterpret_cast<AmigoProfilingSubmitInfoSEC const *>( &rhs ) )
4630     {
4631     }
4632 
4633     AmigoProfilingSubmitInfoSEC & operator=( AmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4634 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4635 
operator =VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4636     AmigoProfilingSubmitInfoSEC & operator=( VkAmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT
4637     {
4638       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC const *>( &rhs );
4639       return *this;
4640     }
4641 
4642 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4643     VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4644     {
4645       pNext = pNext_;
4646       return *this;
4647     }
4648 
setFirstDrawTimestampVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4649     VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC & setFirstDrawTimestamp( uint64_t firstDrawTimestamp_ ) VULKAN_HPP_NOEXCEPT
4650     {
4651       firstDrawTimestamp = firstDrawTimestamp_;
4652       return *this;
4653     }
4654 
setSwapBufferTimestampVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4655     VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC & setSwapBufferTimestamp( uint64_t swapBufferTimestamp_ ) VULKAN_HPP_NOEXCEPT
4656     {
4657       swapBufferTimestamp = swapBufferTimestamp_;
4658       return *this;
4659     }
4660 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4661 
operator VkAmigoProfilingSubmitInfoSEC const&VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4662     operator VkAmigoProfilingSubmitInfoSEC const &() const VULKAN_HPP_NOEXCEPT
4663     {
4664       return *reinterpret_cast<const VkAmigoProfilingSubmitInfoSEC *>( this );
4665     }
4666 
operator VkAmigoProfilingSubmitInfoSEC&VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4667     operator VkAmigoProfilingSubmitInfoSEC &() VULKAN_HPP_NOEXCEPT
4668     {
4669       return *reinterpret_cast<VkAmigoProfilingSubmitInfoSEC *>( this );
4670     }
4671 
4672 #if defined( VULKAN_HPP_USE_REFLECT )
4673 #  if 14 <= VULKAN_HPP_CPP_VERSION
4674     auto
4675 #  else
4676     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &, uint64_t const &>
4677 #  endif
reflectVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4678       reflect() const VULKAN_HPP_NOEXCEPT
4679     {
4680       return std::tie( sType, pNext, firstDrawTimestamp, swapBufferTimestamp );
4681     }
4682 #endif
4683 
4684 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4685     auto operator<=>( AmigoProfilingSubmitInfoSEC const & ) const = default;
4686 #else
operator ==VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4687     bool operator==( AmigoProfilingSubmitInfoSEC const & rhs ) const VULKAN_HPP_NOEXCEPT
4688     {
4689 #  if defined( VULKAN_HPP_USE_REFLECT )
4690       return this->reflect() == rhs.reflect();
4691 #  else
4692       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( firstDrawTimestamp == rhs.firstDrawTimestamp ) &&
4693              ( swapBufferTimestamp == rhs.swapBufferTimestamp );
4694 #  endif
4695     }
4696 
operator !=VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4697     bool operator!=( AmigoProfilingSubmitInfoSEC const & rhs ) const VULKAN_HPP_NOEXCEPT
4698     {
4699       return !operator==( rhs );
4700     }
4701 #endif
4702 
4703   public:
4704     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eAmigoProfilingSubmitInfoSEC;
4705     const void *                        pNext               = {};
4706     uint64_t                            firstDrawTimestamp  = {};
4707     uint64_t                            swapBufferTimestamp = {};
4708   };
4709 
4710   template <>
4711   struct CppType<StructureType, StructureType::eAmigoProfilingSubmitInfoSEC>
4712   {
4713     using Type = AmigoProfilingSubmitInfoSEC;
4714   };
4715 
4716   struct ComponentMapping
4717   {
4718     using NativeType = VkComponentMapping;
4719 
4720 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ComponentMappingVULKAN_HPP_NAMESPACE::ComponentMapping4721     VULKAN_HPP_CONSTEXPR ComponentMapping( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity,
4722                                            VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity,
4723                                            VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity,
4724                                            VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity ) VULKAN_HPP_NOEXCEPT
4725       : r{ r_ }
4726       , g{ g_ }
4727       , b{ b_ }
4728       , a{ a_ }
4729     {
4730     }
4731 
4732     VULKAN_HPP_CONSTEXPR ComponentMapping( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4733 
ComponentMappingVULKAN_HPP_NAMESPACE::ComponentMapping4734     ComponentMapping( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT : ComponentMapping( *reinterpret_cast<ComponentMapping const *>( &rhs ) ) {}
4735 
4736     ComponentMapping & operator=( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4737 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4738 
operator =VULKAN_HPP_NAMESPACE::ComponentMapping4739     ComponentMapping & operator=( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT
4740     {
4741       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComponentMapping const *>( &rhs );
4742       return *this;
4743     }
4744 
4745 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRVULKAN_HPP_NAMESPACE::ComponentMapping4746     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setR( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ ) VULKAN_HPP_NOEXCEPT
4747     {
4748       r = r_;
4749       return *this;
4750     }
4751 
setGVULKAN_HPP_NAMESPACE::ComponentMapping4752     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setG( VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ ) VULKAN_HPP_NOEXCEPT
4753     {
4754       g = g_;
4755       return *this;
4756     }
4757 
setBVULKAN_HPP_NAMESPACE::ComponentMapping4758     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setB( VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ ) VULKAN_HPP_NOEXCEPT
4759     {
4760       b = b_;
4761       return *this;
4762     }
4763 
setAVULKAN_HPP_NAMESPACE::ComponentMapping4764     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setA( VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ ) VULKAN_HPP_NOEXCEPT
4765     {
4766       a = a_;
4767       return *this;
4768     }
4769 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4770 
operator VkComponentMapping const&VULKAN_HPP_NAMESPACE::ComponentMapping4771     operator VkComponentMapping const &() const VULKAN_HPP_NOEXCEPT
4772     {
4773       return *reinterpret_cast<const VkComponentMapping *>( this );
4774     }
4775 
operator VkComponentMapping&VULKAN_HPP_NAMESPACE::ComponentMapping4776     operator VkComponentMapping &() VULKAN_HPP_NOEXCEPT
4777     {
4778       return *reinterpret_cast<VkComponentMapping *>( this );
4779     }
4780 
4781 #if defined( VULKAN_HPP_USE_REFLECT )
4782 #  if 14 <= VULKAN_HPP_CPP_VERSION
4783     auto
4784 #  else
4785     std::tuple<VULKAN_HPP_NAMESPACE::ComponentSwizzle const &,
4786                VULKAN_HPP_NAMESPACE::ComponentSwizzle const &,
4787                VULKAN_HPP_NAMESPACE::ComponentSwizzle const &,
4788                VULKAN_HPP_NAMESPACE::ComponentSwizzle const &>
4789 #  endif
reflectVULKAN_HPP_NAMESPACE::ComponentMapping4790       reflect() const VULKAN_HPP_NOEXCEPT
4791     {
4792       return std::tie( r, g, b, a );
4793     }
4794 #endif
4795 
4796 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4797     auto operator<=>( ComponentMapping const & ) const = default;
4798 #else
operator ==VULKAN_HPP_NAMESPACE::ComponentMapping4799     bool operator==( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT
4800     {
4801 #  if defined( VULKAN_HPP_USE_REFLECT )
4802       return this->reflect() == rhs.reflect();
4803 #  else
4804       return ( r == rhs.r ) && ( g == rhs.g ) && ( b == rhs.b ) && ( a == rhs.a );
4805 #  endif
4806     }
4807 
operator !=VULKAN_HPP_NAMESPACE::ComponentMapping4808     bool operator!=( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT
4809     {
4810       return !operator==( rhs );
4811     }
4812 #endif
4813 
4814   public:
4815     VULKAN_HPP_NAMESPACE::ComponentSwizzle r = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4816     VULKAN_HPP_NAMESPACE::ComponentSwizzle g = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4817     VULKAN_HPP_NAMESPACE::ComponentSwizzle b = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4818     VULKAN_HPP_NAMESPACE::ComponentSwizzle a = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4819   };
4820 
4821 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
4822   struct AndroidHardwareBufferFormatProperties2ANDROID
4823   {
4824     using NativeType = VkAndroidHardwareBufferFormatProperties2ANDROID;
4825 
4826     static const bool                                  allowDuplicate = false;
4827     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidHardwareBufferFormatProperties2ANDROID;
4828 
4829 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferFormatProperties2ANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4830     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatProperties2ANDROID(
4831       VULKAN_HPP_NAMESPACE::Format                      format_                           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
4832       uint64_t                                          externalFormat_                   = {},
4833       VULKAN_HPP_NAMESPACE::FormatFeatureFlags2         formatFeatures_                   = {},
4834       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
4835       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
4836       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
4837       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
4838       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
4839       void *                                            pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
4840       : pNext{ pNext_ }
4841       , format{ format_ }
4842       , externalFormat{ externalFormat_ }
4843       , formatFeatures{ formatFeatures_ }
4844       , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ }
4845       , suggestedYcbcrModel{ suggestedYcbcrModel_ }
4846       , suggestedYcbcrRange{ suggestedYcbcrRange_ }
4847       , suggestedXChromaOffset{ suggestedXChromaOffset_ }
4848       , suggestedYChromaOffset{ suggestedYChromaOffset_ }
4849     {
4850     }
4851 
4852     VULKAN_HPP_CONSTEXPR
4853       AndroidHardwareBufferFormatProperties2ANDROID( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4854 
AndroidHardwareBufferFormatProperties2ANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4855     AndroidHardwareBufferFormatProperties2ANDROID( VkAndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4856       : AndroidHardwareBufferFormatProperties2ANDROID( *reinterpret_cast<AndroidHardwareBufferFormatProperties2ANDROID const *>( &rhs ) )
4857     {
4858     }
4859 
4860     AndroidHardwareBufferFormatProperties2ANDROID & operator=( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4861 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4862 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4863     AndroidHardwareBufferFormatProperties2ANDROID & operator=( VkAndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4864     {
4865       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID const *>( &rhs );
4866       return *this;
4867     }
4868 
operator VkAndroidHardwareBufferFormatProperties2ANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4869     operator VkAndroidHardwareBufferFormatProperties2ANDROID const &() const VULKAN_HPP_NOEXCEPT
4870     {
4871       return *reinterpret_cast<const VkAndroidHardwareBufferFormatProperties2ANDROID *>( this );
4872     }
4873 
operator VkAndroidHardwareBufferFormatProperties2ANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4874     operator VkAndroidHardwareBufferFormatProperties2ANDROID &() VULKAN_HPP_NOEXCEPT
4875     {
4876       return *reinterpret_cast<VkAndroidHardwareBufferFormatProperties2ANDROID *>( this );
4877     }
4878 
4879 #  if defined( VULKAN_HPP_USE_REFLECT )
4880 #    if 14 <= VULKAN_HPP_CPP_VERSION
4881     auto
4882 #    else
4883     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4884                void * const &,
4885                VULKAN_HPP_NAMESPACE::Format const &,
4886                uint64_t const &,
4887                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &,
4888                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
4889                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
4890                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
4891                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
4892                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
4893 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4894       reflect() const VULKAN_HPP_NOEXCEPT
4895     {
4896       return std::tie( sType,
4897                        pNext,
4898                        format,
4899                        externalFormat,
4900                        formatFeatures,
4901                        samplerYcbcrConversionComponents,
4902                        suggestedYcbcrModel,
4903                        suggestedYcbcrRange,
4904                        suggestedXChromaOffset,
4905                        suggestedYChromaOffset );
4906     }
4907 #  endif
4908 
4909 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4910     auto operator<=>( AndroidHardwareBufferFormatProperties2ANDROID const & ) const = default;
4911 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4912     bool operator==( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4913     {
4914 #    if defined( VULKAN_HPP_USE_REFLECT )
4915       return this->reflect() == rhs.reflect();
4916 #    else
4917       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( externalFormat == rhs.externalFormat ) &&
4918              ( formatFeatures == rhs.formatFeatures ) && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) &&
4919              ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) &&
4920              ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
4921 #    endif
4922     }
4923 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4924     bool operator!=( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4925     {
4926       return !operator==( rhs );
4927     }
4928 #  endif
4929 
4930   public:
4931     VULKAN_HPP_NAMESPACE::StructureType               sType                            = StructureType::eAndroidHardwareBufferFormatProperties2ANDROID;
4932     void *                                            pNext                            = {};
4933     VULKAN_HPP_NAMESPACE::Format                      format                           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
4934     uint64_t                                          externalFormat                   = {};
4935     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2         formatFeatures                   = {};
4936     VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents = {};
4937     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
4938     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
4939     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
4940     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
4941   };
4942 
4943   template <>
4944   struct CppType<StructureType, StructureType::eAndroidHardwareBufferFormatProperties2ANDROID>
4945   {
4946     using Type = AndroidHardwareBufferFormatProperties2ANDROID;
4947   };
4948 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
4949 
4950 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
4951   struct AndroidHardwareBufferFormatPropertiesANDROID
4952   {
4953     using NativeType = VkAndroidHardwareBufferFormatPropertiesANDROID;
4954 
4955     static const bool                                  allowDuplicate = false;
4956     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID;
4957 
4958 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferFormatPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4959     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID(
4960       VULKAN_HPP_NAMESPACE::Format                      format_                           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
4961       uint64_t                                          externalFormat_                   = {},
4962       VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures_                   = {},
4963       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
4964       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
4965       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
4966       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
4967       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
4968       void *                                            pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
4969       : pNext{ pNext_ }
4970       , format{ format_ }
4971       , externalFormat{ externalFormat_ }
4972       , formatFeatures{ formatFeatures_ }
4973       , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ }
4974       , suggestedYcbcrModel{ suggestedYcbcrModel_ }
4975       , suggestedYcbcrRange{ suggestedYcbcrRange_ }
4976       , suggestedXChromaOffset{ suggestedXChromaOffset_ }
4977       , suggestedYChromaOffset{ suggestedYChromaOffset_ }
4978     {
4979     }
4980 
4981     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4982 
AndroidHardwareBufferFormatPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4983     AndroidHardwareBufferFormatPropertiesANDROID( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4984       : AndroidHardwareBufferFormatPropertiesANDROID( *reinterpret_cast<AndroidHardwareBufferFormatPropertiesANDROID const *>( &rhs ) )
4985     {
4986     }
4987 
4988     AndroidHardwareBufferFormatPropertiesANDROID & operator=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4989 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4990 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4991     AndroidHardwareBufferFormatPropertiesANDROID & operator=( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4992     {
4993       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID const *>( &rhs );
4994       return *this;
4995     }
4996 
operator VkAndroidHardwareBufferFormatPropertiesANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4997     operator VkAndroidHardwareBufferFormatPropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT
4998     {
4999       return *reinterpret_cast<const VkAndroidHardwareBufferFormatPropertiesANDROID *>( this );
5000     }
5001 
operator VkAndroidHardwareBufferFormatPropertiesANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID5002     operator VkAndroidHardwareBufferFormatPropertiesANDROID &() VULKAN_HPP_NOEXCEPT
5003     {
5004       return *reinterpret_cast<VkAndroidHardwareBufferFormatPropertiesANDROID *>( this );
5005     }
5006 
5007 #  if defined( VULKAN_HPP_USE_REFLECT )
5008 #    if 14 <= VULKAN_HPP_CPP_VERSION
5009     auto
5010 #    else
5011     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5012                void * const &,
5013                VULKAN_HPP_NAMESPACE::Format const &,
5014                uint64_t const &,
5015                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
5016                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
5017                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
5018                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
5019                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
5020                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
5021 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID5022       reflect() const VULKAN_HPP_NOEXCEPT
5023     {
5024       return std::tie( sType,
5025                        pNext,
5026                        format,
5027                        externalFormat,
5028                        formatFeatures,
5029                        samplerYcbcrConversionComponents,
5030                        suggestedYcbcrModel,
5031                        suggestedYcbcrRange,
5032                        suggestedXChromaOffset,
5033                        suggestedYChromaOffset );
5034     }
5035 #  endif
5036 
5037 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5038     auto operator<=>( AndroidHardwareBufferFormatPropertiesANDROID const & ) const = default;
5039 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID5040     bool operator==( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5041     {
5042 #    if defined( VULKAN_HPP_USE_REFLECT )
5043       return this->reflect() == rhs.reflect();
5044 #    else
5045       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( externalFormat == rhs.externalFormat ) &&
5046              ( formatFeatures == rhs.formatFeatures ) && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) &&
5047              ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) &&
5048              ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
5049 #    endif
5050     }
5051 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID5052     bool operator!=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5053     {
5054       return !operator==( rhs );
5055     }
5056 #  endif
5057 
5058   public:
5059     VULKAN_HPP_NAMESPACE::StructureType               sType                            = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID;
5060     void *                                            pNext                            = {};
5061     VULKAN_HPP_NAMESPACE::Format                      format                           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5062     uint64_t                                          externalFormat                   = {};
5063     VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures                   = {};
5064     VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents = {};
5065     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
5066     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
5067     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
5068     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
5069   };
5070 
5071   template <>
5072   struct CppType<StructureType, StructureType::eAndroidHardwareBufferFormatPropertiesANDROID>
5073   {
5074     using Type = AndroidHardwareBufferFormatPropertiesANDROID;
5075   };
5076 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5077 
5078 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
5079   struct AndroidHardwareBufferFormatResolvePropertiesANDROID
5080   {
5081     using NativeType = VkAndroidHardwareBufferFormatResolvePropertiesANDROID;
5082 
5083     static const bool                                  allowDuplicate = false;
5084     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidHardwareBufferFormatResolvePropertiesANDROID;
5085 
5086 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
5087     VULKAN_HPP_CONSTEXPR
AndroidHardwareBufferFormatResolvePropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5088       AndroidHardwareBufferFormatResolvePropertiesANDROID( VULKAN_HPP_NAMESPACE::Format colorAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
5089                                                            void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
5090       : pNext{ pNext_ }
5091       , colorAttachmentFormat{ colorAttachmentFormat_ }
5092     {
5093     }
5094 
5095     VULKAN_HPP_CONSTEXPR
5096       AndroidHardwareBufferFormatResolvePropertiesANDROID( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5097 
AndroidHardwareBufferFormatResolvePropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5098     AndroidHardwareBufferFormatResolvePropertiesANDROID( VkAndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5099       : AndroidHardwareBufferFormatResolvePropertiesANDROID( *reinterpret_cast<AndroidHardwareBufferFormatResolvePropertiesANDROID const *>( &rhs ) )
5100     {
5101     }
5102 
5103     AndroidHardwareBufferFormatResolvePropertiesANDROID &
5104       operator=( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5105 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5106 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5107     AndroidHardwareBufferFormatResolvePropertiesANDROID & operator=( VkAndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5108     {
5109       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID const *>( &rhs );
5110       return *this;
5111     }
5112 
operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5113     operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT
5114     {
5115       return *reinterpret_cast<const VkAndroidHardwareBufferFormatResolvePropertiesANDROID *>( this );
5116     }
5117 
operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5118     operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID &() VULKAN_HPP_NOEXCEPT
5119     {
5120       return *reinterpret_cast<VkAndroidHardwareBufferFormatResolvePropertiesANDROID *>( this );
5121     }
5122 
5123 #  if defined( VULKAN_HPP_USE_REFLECT )
5124 #    if 14 <= VULKAN_HPP_CPP_VERSION
5125     auto
5126 #    else
5127     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Format const &>
5128 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5129       reflect() const VULKAN_HPP_NOEXCEPT
5130     {
5131       return std::tie( sType, pNext, colorAttachmentFormat );
5132     }
5133 #  endif
5134 
5135 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5136     auto operator<=>( AndroidHardwareBufferFormatResolvePropertiesANDROID const & ) const = default;
5137 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5138     bool operator==( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5139     {
5140 #    if defined( VULKAN_HPP_USE_REFLECT )
5141       return this->reflect() == rhs.reflect();
5142 #    else
5143       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentFormat == rhs.colorAttachmentFormat );
5144 #    endif
5145     }
5146 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5147     bool operator!=( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5148     {
5149       return !operator==( rhs );
5150     }
5151 #  endif
5152 
5153   public:
5154     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::eAndroidHardwareBufferFormatResolvePropertiesANDROID;
5155     void *                              pNext                 = {};
5156     VULKAN_HPP_NAMESPACE::Format        colorAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5157   };
5158 
5159   template <>
5160   struct CppType<StructureType, StructureType::eAndroidHardwareBufferFormatResolvePropertiesANDROID>
5161   {
5162     using Type = AndroidHardwareBufferFormatResolvePropertiesANDROID;
5163   };
5164 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5165 
5166 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
5167   struct AndroidHardwareBufferPropertiesANDROID
5168   {
5169     using NativeType = VkAndroidHardwareBufferPropertiesANDROID;
5170 
5171     static const bool                                  allowDuplicate = false;
5172     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidHardwareBufferPropertiesANDROID;
5173 
5174 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5175     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {},
5176                                                                  uint32_t                         memoryTypeBits_ = {},
5177                                                                  void *                           pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
5178       : pNext{ pNext_ }
5179       , allocationSize{ allocationSize_ }
5180       , memoryTypeBits{ memoryTypeBits_ }
5181     {
5182     }
5183 
5184     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5185 
AndroidHardwareBufferPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5186     AndroidHardwareBufferPropertiesANDROID( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5187       : AndroidHardwareBufferPropertiesANDROID( *reinterpret_cast<AndroidHardwareBufferPropertiesANDROID const *>( &rhs ) )
5188     {
5189     }
5190 
5191     AndroidHardwareBufferPropertiesANDROID & operator=( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5192 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5193 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5194     AndroidHardwareBufferPropertiesANDROID & operator=( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5195     {
5196       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID const *>( &rhs );
5197       return *this;
5198     }
5199 
operator VkAndroidHardwareBufferPropertiesANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5200     operator VkAndroidHardwareBufferPropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT
5201     {
5202       return *reinterpret_cast<const VkAndroidHardwareBufferPropertiesANDROID *>( this );
5203     }
5204 
operator VkAndroidHardwareBufferPropertiesANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5205     operator VkAndroidHardwareBufferPropertiesANDROID &() VULKAN_HPP_NOEXCEPT
5206     {
5207       return *reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( this );
5208     }
5209 
5210 #  if defined( VULKAN_HPP_USE_REFLECT )
5211 #    if 14 <= VULKAN_HPP_CPP_VERSION
5212     auto
5213 #    else
5214     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
5215 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5216       reflect() const VULKAN_HPP_NOEXCEPT
5217     {
5218       return std::tie( sType, pNext, allocationSize, memoryTypeBits );
5219     }
5220 #  endif
5221 
5222 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5223     auto operator<=>( AndroidHardwareBufferPropertiesANDROID const & ) const = default;
5224 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5225     bool operator==( AndroidHardwareBufferPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5226     {
5227 #    if defined( VULKAN_HPP_USE_REFLECT )
5228       return this->reflect() == rhs.reflect();
5229 #    else
5230       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && ( memoryTypeBits == rhs.memoryTypeBits );
5231 #    endif
5232     }
5233 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5234     bool operator!=( AndroidHardwareBufferPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5235     {
5236       return !operator==( rhs );
5237     }
5238 #  endif
5239 
5240   public:
5241     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eAndroidHardwareBufferPropertiesANDROID;
5242     void *                              pNext          = {};
5243     VULKAN_HPP_NAMESPACE::DeviceSize    allocationSize = {};
5244     uint32_t                            memoryTypeBits = {};
5245   };
5246 
5247   template <>
5248   struct CppType<StructureType, StructureType::eAndroidHardwareBufferPropertiesANDROID>
5249   {
5250     using Type = AndroidHardwareBufferPropertiesANDROID;
5251   };
5252 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5253 
5254 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
5255   struct AndroidHardwareBufferUsageANDROID
5256   {
5257     using NativeType = VkAndroidHardwareBufferUsageANDROID;
5258 
5259     static const bool                                  allowDuplicate = false;
5260     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidHardwareBufferUsageANDROID;
5261 
5262 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferUsageANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5263     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferUsageANDROID( uint64_t androidHardwareBufferUsage_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
5264       : pNext{ pNext_ }
5265       , androidHardwareBufferUsage{ androidHardwareBufferUsage_ }
5266     {
5267     }
5268 
5269     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferUsageANDROID( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5270 
AndroidHardwareBufferUsageANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5271     AndroidHardwareBufferUsageANDROID( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5272       : AndroidHardwareBufferUsageANDROID( *reinterpret_cast<AndroidHardwareBufferUsageANDROID const *>( &rhs ) )
5273     {
5274     }
5275 
5276     AndroidHardwareBufferUsageANDROID & operator=( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5277 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5278 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5279     AndroidHardwareBufferUsageANDROID & operator=( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5280     {
5281       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID const *>( &rhs );
5282       return *this;
5283     }
5284 
operator VkAndroidHardwareBufferUsageANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5285     operator VkAndroidHardwareBufferUsageANDROID const &() const VULKAN_HPP_NOEXCEPT
5286     {
5287       return *reinterpret_cast<const VkAndroidHardwareBufferUsageANDROID *>( this );
5288     }
5289 
operator VkAndroidHardwareBufferUsageANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5290     operator VkAndroidHardwareBufferUsageANDROID &() VULKAN_HPP_NOEXCEPT
5291     {
5292       return *reinterpret_cast<VkAndroidHardwareBufferUsageANDROID *>( this );
5293     }
5294 
5295 #  if defined( VULKAN_HPP_USE_REFLECT )
5296 #    if 14 <= VULKAN_HPP_CPP_VERSION
5297     auto
5298 #    else
5299     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
5300 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5301       reflect() const VULKAN_HPP_NOEXCEPT
5302     {
5303       return std::tie( sType, pNext, androidHardwareBufferUsage );
5304     }
5305 #  endif
5306 
5307 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5308     auto operator<=>( AndroidHardwareBufferUsageANDROID const & ) const = default;
5309 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5310     bool operator==( AndroidHardwareBufferUsageANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5311     {
5312 #    if defined( VULKAN_HPP_USE_REFLECT )
5313       return this->reflect() == rhs.reflect();
5314 #    else
5315       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( androidHardwareBufferUsage == rhs.androidHardwareBufferUsage );
5316 #    endif
5317     }
5318 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5319     bool operator!=( AndroidHardwareBufferUsageANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5320     {
5321       return !operator==( rhs );
5322     }
5323 #  endif
5324 
5325   public:
5326     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::eAndroidHardwareBufferUsageANDROID;
5327     void *                              pNext                      = {};
5328     uint64_t                            androidHardwareBufferUsage = {};
5329   };
5330 
5331   template <>
5332   struct CppType<StructureType, StructureType::eAndroidHardwareBufferUsageANDROID>
5333   {
5334     using Type = AndroidHardwareBufferUsageANDROID;
5335   };
5336 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5337 
5338 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
5339   struct AndroidSurfaceCreateInfoKHR
5340   {
5341     using NativeType = VkAndroidSurfaceCreateInfoKHR;
5342 
5343     static const bool                                  allowDuplicate = false;
5344     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidSurfaceCreateInfoKHR;
5345 
5346 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5347     VULKAN_HPP_CONSTEXPR AndroidSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags_  = {},
5348                                                       struct ANativeWindow *                             window_ = {},
5349                                                       const void *                                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
5350       : pNext{ pNext_ }
5351       , flags{ flags_ }
5352       , window{ window_ }
5353     {
5354     }
5355 
5356     VULKAN_HPP_CONSTEXPR AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5357 
AndroidSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5358     AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
5359       : AndroidSurfaceCreateInfoKHR( *reinterpret_cast<AndroidSurfaceCreateInfoKHR const *>( &rhs ) )
5360     {
5361     }
5362 
5363     AndroidSurfaceCreateInfoKHR & operator=( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5364 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5365 
operator =VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5366     AndroidSurfaceCreateInfoKHR & operator=( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
5367     {
5368       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const *>( &rhs );
5369       return *this;
5370     }
5371 
5372 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5373     VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5374     {
5375       pNext = pNext_;
5376       return *this;
5377     }
5378 
setFlagsVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5379     VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
5380     {
5381       flags = flags_;
5382       return *this;
5383     }
5384 
setWindowVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5385     VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setWindow( struct ANativeWindow * window_ ) VULKAN_HPP_NOEXCEPT
5386     {
5387       window = window_;
5388       return *this;
5389     }
5390 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5391 
operator VkAndroidSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5392     operator VkAndroidSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
5393     {
5394       return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR *>( this );
5395     }
5396 
operator VkAndroidSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5397     operator VkAndroidSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
5398     {
5399       return *reinterpret_cast<VkAndroidSurfaceCreateInfoKHR *>( this );
5400     }
5401 
5402 #  if defined( VULKAN_HPP_USE_REFLECT )
5403 #    if 14 <= VULKAN_HPP_CPP_VERSION
5404     auto
5405 #    else
5406     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5407                const void * const &,
5408                VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR const &,
5409                struct ANativeWindow * const &>
5410 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5411       reflect() const VULKAN_HPP_NOEXCEPT
5412     {
5413       return std::tie( sType, pNext, flags, window );
5414     }
5415 #  endif
5416 
5417 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5418     auto operator<=>( AndroidSurfaceCreateInfoKHR const & ) const = default;
5419 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5420     bool operator==( AndroidSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
5421     {
5422 #    if defined( VULKAN_HPP_USE_REFLECT )
5423       return this->reflect() == rhs.reflect();
5424 #    else
5425       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( window == rhs.window );
5426 #    endif
5427     }
5428 
operator !=VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5429     bool operator!=( AndroidSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
5430     {
5431       return !operator==( rhs );
5432     }
5433 #  endif
5434 
5435   public:
5436     VULKAN_HPP_NAMESPACE::StructureType                sType  = StructureType::eAndroidSurfaceCreateInfoKHR;
5437     const void *                                       pNext  = {};
5438     VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags  = {};
5439     struct ANativeWindow *                             window = {};
5440   };
5441 
5442   template <>
5443   struct CppType<StructureType, StructureType::eAndroidSurfaceCreateInfoKHR>
5444   {
5445     using Type = AndroidSurfaceCreateInfoKHR;
5446   };
5447 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5448 
5449   struct AntiLagPresentationInfoAMD
5450   {
5451     using NativeType = VkAntiLagPresentationInfoAMD;
5452 
5453     static const bool                                  allowDuplicate = false;
5454     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAntiLagPresentationInfoAMD;
5455 
5456 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AntiLagPresentationInfoAMDVULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5457     VULKAN_HPP_CONSTEXPR AntiLagPresentationInfoAMD( VULKAN_HPP_NAMESPACE::AntiLagStageAMD stage_      = VULKAN_HPP_NAMESPACE::AntiLagStageAMD::eInput,
5458                                                      uint64_t                              frameIndex_ = {},
5459                                                      void *                                pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
5460       : pNext{ pNext_ }
5461       , stage{ stage_ }
5462       , frameIndex{ frameIndex_ }
5463     {
5464     }
5465 
5466     VULKAN_HPP_CONSTEXPR AntiLagPresentationInfoAMD( AntiLagPresentationInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5467 
AntiLagPresentationInfoAMDVULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5468     AntiLagPresentationInfoAMD( VkAntiLagPresentationInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
5469       : AntiLagPresentationInfoAMD( *reinterpret_cast<AntiLagPresentationInfoAMD const *>( &rhs ) )
5470     {
5471     }
5472 
5473     AntiLagPresentationInfoAMD & operator=( AntiLagPresentationInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5474 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5475 
operator =VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5476     AntiLagPresentationInfoAMD & operator=( VkAntiLagPresentationInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
5477     {
5478       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD const *>( &rhs );
5479       return *this;
5480     }
5481 
5482 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5483     VULKAN_HPP_CONSTEXPR_14 AntiLagPresentationInfoAMD & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
5484     {
5485       pNext = pNext_;
5486       return *this;
5487     }
5488 
setStageVULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5489     VULKAN_HPP_CONSTEXPR_14 AntiLagPresentationInfoAMD & setStage( VULKAN_HPP_NAMESPACE::AntiLagStageAMD stage_ ) VULKAN_HPP_NOEXCEPT
5490     {
5491       stage = stage_;
5492       return *this;
5493     }
5494 
setFrameIndexVULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5495     VULKAN_HPP_CONSTEXPR_14 AntiLagPresentationInfoAMD & setFrameIndex( uint64_t frameIndex_ ) VULKAN_HPP_NOEXCEPT
5496     {
5497       frameIndex = frameIndex_;
5498       return *this;
5499     }
5500 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5501 
operator VkAntiLagPresentationInfoAMD const&VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5502     operator VkAntiLagPresentationInfoAMD const &() const VULKAN_HPP_NOEXCEPT
5503     {
5504       return *reinterpret_cast<const VkAntiLagPresentationInfoAMD *>( this );
5505     }
5506 
operator VkAntiLagPresentationInfoAMD&VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5507     operator VkAntiLagPresentationInfoAMD &() VULKAN_HPP_NOEXCEPT
5508     {
5509       return *reinterpret_cast<VkAntiLagPresentationInfoAMD *>( this );
5510     }
5511 
5512 #if defined( VULKAN_HPP_USE_REFLECT )
5513 #  if 14 <= VULKAN_HPP_CPP_VERSION
5514     auto
5515 #  else
5516     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::AntiLagStageAMD const &, uint64_t const &>
5517 #  endif
reflectVULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5518       reflect() const VULKAN_HPP_NOEXCEPT
5519     {
5520       return std::tie( sType, pNext, stage, frameIndex );
5521     }
5522 #endif
5523 
5524 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5525     auto operator<=>( AntiLagPresentationInfoAMD const & ) const = default;
5526 #else
operator ==VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5527     bool operator==( AntiLagPresentationInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
5528     {
5529 #  if defined( VULKAN_HPP_USE_REFLECT )
5530       return this->reflect() == rhs.reflect();
5531 #  else
5532       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && ( frameIndex == rhs.frameIndex );
5533 #  endif
5534     }
5535 
operator !=VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD5536     bool operator!=( AntiLagPresentationInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
5537     {
5538       return !operator==( rhs );
5539     }
5540 #endif
5541 
5542   public:
5543     VULKAN_HPP_NAMESPACE::StructureType   sType      = StructureType::eAntiLagPresentationInfoAMD;
5544     void *                                pNext      = {};
5545     VULKAN_HPP_NAMESPACE::AntiLagStageAMD stage      = VULKAN_HPP_NAMESPACE::AntiLagStageAMD::eInput;
5546     uint64_t                              frameIndex = {};
5547   };
5548 
5549   template <>
5550   struct CppType<StructureType, StructureType::eAntiLagPresentationInfoAMD>
5551   {
5552     using Type = AntiLagPresentationInfoAMD;
5553   };
5554 
5555   struct AntiLagDataAMD
5556   {
5557     using NativeType = VkAntiLagDataAMD;
5558 
5559     static const bool                                  allowDuplicate = false;
5560     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAntiLagDataAMD;
5561 
5562 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AntiLagDataAMDVULKAN_HPP_NAMESPACE::AntiLagDataAMD5563     VULKAN_HPP_CONSTEXPR AntiLagDataAMD( VULKAN_HPP_NAMESPACE::AntiLagModeAMD                     mode_ = VULKAN_HPP_NAMESPACE::AntiLagModeAMD::eDriverControl,
5564                                          uint32_t                                                 maxFPS_            = {},
5565                                          const VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD * pPresentationInfo_ = {},
5566                                          const void *                                             pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
5567       : pNext{ pNext_ }
5568       , mode{ mode_ }
5569       , maxFPS{ maxFPS_ }
5570       , pPresentationInfo{ pPresentationInfo_ }
5571     {
5572     }
5573 
5574     VULKAN_HPP_CONSTEXPR AntiLagDataAMD( AntiLagDataAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5575 
AntiLagDataAMDVULKAN_HPP_NAMESPACE::AntiLagDataAMD5576     AntiLagDataAMD( VkAntiLagDataAMD const & rhs ) VULKAN_HPP_NOEXCEPT : AntiLagDataAMD( *reinterpret_cast<AntiLagDataAMD const *>( &rhs ) ) {}
5577 
5578     AntiLagDataAMD & operator=( AntiLagDataAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5579 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5580 
operator =VULKAN_HPP_NAMESPACE::AntiLagDataAMD5581     AntiLagDataAMD & operator=( VkAntiLagDataAMD const & rhs ) VULKAN_HPP_NOEXCEPT
5582     {
5583       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AntiLagDataAMD const *>( &rhs );
5584       return *this;
5585     }
5586 
5587 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AntiLagDataAMD5588     VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5589     {
5590       pNext = pNext_;
5591       return *this;
5592     }
5593 
setModeVULKAN_HPP_NAMESPACE::AntiLagDataAMD5594     VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD & setMode( VULKAN_HPP_NAMESPACE::AntiLagModeAMD mode_ ) VULKAN_HPP_NOEXCEPT
5595     {
5596       mode = mode_;
5597       return *this;
5598     }
5599 
setMaxFPSVULKAN_HPP_NAMESPACE::AntiLagDataAMD5600     VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD & setMaxFPS( uint32_t maxFPS_ ) VULKAN_HPP_NOEXCEPT
5601     {
5602       maxFPS = maxFPS_;
5603       return *this;
5604     }
5605 
5606     VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD &
setPPresentationInfoVULKAN_HPP_NAMESPACE::AntiLagDataAMD5607       setPPresentationInfo( const VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD * pPresentationInfo_ ) VULKAN_HPP_NOEXCEPT
5608     {
5609       pPresentationInfo = pPresentationInfo_;
5610       return *this;
5611     }
5612 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5613 
operator VkAntiLagDataAMD const&VULKAN_HPP_NAMESPACE::AntiLagDataAMD5614     operator VkAntiLagDataAMD const &() const VULKAN_HPP_NOEXCEPT
5615     {
5616       return *reinterpret_cast<const VkAntiLagDataAMD *>( this );
5617     }
5618 
operator VkAntiLagDataAMD&VULKAN_HPP_NAMESPACE::AntiLagDataAMD5619     operator VkAntiLagDataAMD &() VULKAN_HPP_NOEXCEPT
5620     {
5621       return *reinterpret_cast<VkAntiLagDataAMD *>( this );
5622     }
5623 
5624 #if defined( VULKAN_HPP_USE_REFLECT )
5625 #  if 14 <= VULKAN_HPP_CPP_VERSION
5626     auto
5627 #  else
5628     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5629                const void * const &,
5630                VULKAN_HPP_NAMESPACE::AntiLagModeAMD const &,
5631                uint32_t const &,
5632                const VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD * const &>
5633 #  endif
reflectVULKAN_HPP_NAMESPACE::AntiLagDataAMD5634       reflect() const VULKAN_HPP_NOEXCEPT
5635     {
5636       return std::tie( sType, pNext, mode, maxFPS, pPresentationInfo );
5637     }
5638 #endif
5639 
5640 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5641     auto operator<=>( AntiLagDataAMD const & ) const = default;
5642 #else
operator ==VULKAN_HPP_NAMESPACE::AntiLagDataAMD5643     bool operator==( AntiLagDataAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
5644     {
5645 #  if defined( VULKAN_HPP_USE_REFLECT )
5646       return this->reflect() == rhs.reflect();
5647 #  else
5648       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mode == rhs.mode ) && ( maxFPS == rhs.maxFPS ) &&
5649              ( pPresentationInfo == rhs.pPresentationInfo );
5650 #  endif
5651     }
5652 
operator !=VULKAN_HPP_NAMESPACE::AntiLagDataAMD5653     bool operator!=( AntiLagDataAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
5654     {
5655       return !operator==( rhs );
5656     }
5657 #endif
5658 
5659   public:
5660     VULKAN_HPP_NAMESPACE::StructureType                      sType             = StructureType::eAntiLagDataAMD;
5661     const void *                                             pNext             = {};
5662     VULKAN_HPP_NAMESPACE::AntiLagModeAMD                     mode              = VULKAN_HPP_NAMESPACE::AntiLagModeAMD::eDriverControl;
5663     uint32_t                                                 maxFPS            = {};
5664     const VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD * pPresentationInfo = {};
5665   };
5666 
5667   template <>
5668   struct CppType<StructureType, StructureType::eAntiLagDataAMD>
5669   {
5670     using Type = AntiLagDataAMD;
5671   };
5672 
5673   struct ApplicationInfo
5674   {
5675     using NativeType = VkApplicationInfo;
5676 
5677     static const bool                                  allowDuplicate = false;
5678     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eApplicationInfo;
5679 
5680 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ApplicationInfoVULKAN_HPP_NAMESPACE::ApplicationInfo5681     VULKAN_HPP_CONSTEXPR ApplicationInfo( const char * pApplicationName_   = {},
5682                                           uint32_t     applicationVersion_ = {},
5683                                           const char * pEngineName_        = {},
5684                                           uint32_t     engineVersion_      = {},
5685                                           uint32_t     apiVersion_         = {},
5686                                           const void * pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
5687       : pNext{ pNext_ }
5688       , pApplicationName{ pApplicationName_ }
5689       , applicationVersion{ applicationVersion_ }
5690       , pEngineName{ pEngineName_ }
5691       , engineVersion{ engineVersion_ }
5692       , apiVersion{ apiVersion_ }
5693     {
5694     }
5695 
5696     VULKAN_HPP_CONSTEXPR ApplicationInfo( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5697 
ApplicationInfoVULKAN_HPP_NAMESPACE::ApplicationInfo5698     ApplicationInfo( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ApplicationInfo( *reinterpret_cast<ApplicationInfo const *>( &rhs ) ) {}
5699 
5700     ApplicationInfo & operator=( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5701 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5702 
operator =VULKAN_HPP_NAMESPACE::ApplicationInfo5703     ApplicationInfo & operator=( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5704     {
5705       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ApplicationInfo const *>( &rhs );
5706       return *this;
5707     }
5708 
5709 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ApplicationInfo5710     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5711     {
5712       pNext = pNext_;
5713       return *this;
5714     }
5715 
setPApplicationNameVULKAN_HPP_NAMESPACE::ApplicationInfo5716     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPApplicationName( const char * pApplicationName_ ) VULKAN_HPP_NOEXCEPT
5717     {
5718       pApplicationName = pApplicationName_;
5719       return *this;
5720     }
5721 
setApplicationVersionVULKAN_HPP_NAMESPACE::ApplicationInfo5722     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApplicationVersion( uint32_t applicationVersion_ ) VULKAN_HPP_NOEXCEPT
5723     {
5724       applicationVersion = applicationVersion_;
5725       return *this;
5726     }
5727 
setPEngineNameVULKAN_HPP_NAMESPACE::ApplicationInfo5728     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPEngineName( const char * pEngineName_ ) VULKAN_HPP_NOEXCEPT
5729     {
5730       pEngineName = pEngineName_;
5731       return *this;
5732     }
5733 
setEngineVersionVULKAN_HPP_NAMESPACE::ApplicationInfo5734     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setEngineVersion( uint32_t engineVersion_ ) VULKAN_HPP_NOEXCEPT
5735     {
5736       engineVersion = engineVersion_;
5737       return *this;
5738     }
5739 
setApiVersionVULKAN_HPP_NAMESPACE::ApplicationInfo5740     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApiVersion( uint32_t apiVersion_ ) VULKAN_HPP_NOEXCEPT
5741     {
5742       apiVersion = apiVersion_;
5743       return *this;
5744     }
5745 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5746 
operator VkApplicationInfo const&VULKAN_HPP_NAMESPACE::ApplicationInfo5747     operator VkApplicationInfo const &() const VULKAN_HPP_NOEXCEPT
5748     {
5749       return *reinterpret_cast<const VkApplicationInfo *>( this );
5750     }
5751 
operator VkApplicationInfo&VULKAN_HPP_NAMESPACE::ApplicationInfo5752     operator VkApplicationInfo &() VULKAN_HPP_NOEXCEPT
5753     {
5754       return *reinterpret_cast<VkApplicationInfo *>( this );
5755     }
5756 
5757 #if defined( VULKAN_HPP_USE_REFLECT )
5758 #  if 14 <= VULKAN_HPP_CPP_VERSION
5759     auto
5760 #  else
5761     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5762                const void * const &,
5763                const char * const &,
5764                uint32_t const &,
5765                const char * const &,
5766                uint32_t const &,
5767                uint32_t const &>
5768 #  endif
reflectVULKAN_HPP_NAMESPACE::ApplicationInfo5769       reflect() const VULKAN_HPP_NOEXCEPT
5770     {
5771       return std::tie( sType, pNext, pApplicationName, applicationVersion, pEngineName, engineVersion, apiVersion );
5772     }
5773 #endif
5774 
5775 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ApplicationInfo5776     std::strong_ordering operator<=>( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5777     {
5778       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
5779         return cmp;
5780       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
5781         return cmp;
5782       if ( pApplicationName != rhs.pApplicationName )
5783         if ( auto cmp = strcmp( pApplicationName, rhs.pApplicationName ); cmp != 0 )
5784           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
5785       if ( auto cmp = applicationVersion <=> rhs.applicationVersion; cmp != 0 )
5786         return cmp;
5787       if ( pEngineName != rhs.pEngineName )
5788         if ( auto cmp = strcmp( pEngineName, rhs.pEngineName ); cmp != 0 )
5789           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
5790       if ( auto cmp = engineVersion <=> rhs.engineVersion; cmp != 0 )
5791         return cmp;
5792       if ( auto cmp = apiVersion <=> rhs.apiVersion; cmp != 0 )
5793         return cmp;
5794 
5795       return std::strong_ordering::equivalent;
5796     }
5797 #endif
5798 
operator ==VULKAN_HPP_NAMESPACE::ApplicationInfo5799     bool operator==( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5800     {
5801       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
5802              ( ( pApplicationName == rhs.pApplicationName ) || ( strcmp( pApplicationName, rhs.pApplicationName ) == 0 ) ) &&
5803              ( applicationVersion == rhs.applicationVersion ) && ( ( pEngineName == rhs.pEngineName ) || ( strcmp( pEngineName, rhs.pEngineName ) == 0 ) ) &&
5804              ( engineVersion == rhs.engineVersion ) && ( apiVersion == rhs.apiVersion );
5805     }
5806 
operator !=VULKAN_HPP_NAMESPACE::ApplicationInfo5807     bool operator!=( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5808     {
5809       return !operator==( rhs );
5810     }
5811 
5812   public:
5813     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eApplicationInfo;
5814     const void *                        pNext              = {};
5815     const char *                        pApplicationName   = {};
5816     uint32_t                            applicationVersion = {};
5817     const char *                        pEngineName        = {};
5818     uint32_t                            engineVersion      = {};
5819     uint32_t                            apiVersion         = {};
5820   };
5821 
5822   template <>
5823   struct CppType<StructureType, StructureType::eApplicationInfo>
5824   {
5825     using Type = ApplicationInfo;
5826   };
5827 
5828   struct AttachmentDescription
5829   {
5830     using NativeType = VkAttachmentDescription;
5831 
5832 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
5833     VULKAN_HPP_CONSTEXPR
AttachmentDescriptionVULKAN_HPP_NAMESPACE::AttachmentDescription5834       AttachmentDescription( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_          = {},
5835                              VULKAN_HPP_NAMESPACE::Format                     format_         = VULKAN_HPP_NAMESPACE::Format::eUndefined,
5836                              VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples_        = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
5837                              VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp_         = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
5838                              VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp_        = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
5839                              VULKAN_HPP_NAMESPACE::AttachmentLoadOp           stencilLoadOp_  = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
5840                              VULKAN_HPP_NAMESPACE::AttachmentStoreOp          stencilStoreOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
5841                              VULKAN_HPP_NAMESPACE::ImageLayout                initialLayout_  = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
5842                              VULKAN_HPP_NAMESPACE::ImageLayout                finalLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT
5843       : flags{ flags_ }
5844       , format{ format_ }
5845       , samples{ samples_ }
5846       , loadOp{ loadOp_ }
5847       , storeOp{ storeOp_ }
5848       , stencilLoadOp{ stencilLoadOp_ }
5849       , stencilStoreOp{ stencilStoreOp_ }
5850       , initialLayout{ initialLayout_ }
5851       , finalLayout{ finalLayout_ }
5852     {
5853     }
5854 
5855     VULKAN_HPP_CONSTEXPR AttachmentDescription( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5856 
AttachmentDescriptionVULKAN_HPP_NAMESPACE::AttachmentDescription5857     AttachmentDescription( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
5858       : AttachmentDescription( *reinterpret_cast<AttachmentDescription const *>( &rhs ) )
5859     {
5860     }
5861 
5862     AttachmentDescription & operator=( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5863 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5864 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescription5865     AttachmentDescription & operator=( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
5866     {
5867       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescription const *>( &rhs );
5868       return *this;
5869     }
5870 
5871 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFlagsVULKAN_HPP_NAMESPACE::AttachmentDescription5872     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
5873     {
5874       flags = flags_;
5875       return *this;
5876     }
5877 
setFormatVULKAN_HPP_NAMESPACE::AttachmentDescription5878     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
5879     {
5880       format = format_;
5881       return *this;
5882     }
5883 
setSamplesVULKAN_HPP_NAMESPACE::AttachmentDescription5884     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
5885     {
5886       samples = samples_;
5887       return *this;
5888     }
5889 
setLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription5890     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
5891     {
5892       loadOp = loadOp_;
5893       return *this;
5894     }
5895 
setStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription5896     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
5897     {
5898       storeOp = storeOp_;
5899       return *this;
5900     }
5901 
setStencilLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription5902     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT
5903     {
5904       stencilLoadOp = stencilLoadOp_;
5905       return *this;
5906     }
5907 
setStencilStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription5908     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT
5909     {
5910       stencilStoreOp = stencilStoreOp_;
5911       return *this;
5912     }
5913 
setInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription5914     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
5915     {
5916       initialLayout = initialLayout_;
5917       return *this;
5918     }
5919 
setFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription5920     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT
5921     {
5922       finalLayout = finalLayout_;
5923       return *this;
5924     }
5925 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5926 
operator VkAttachmentDescription const&VULKAN_HPP_NAMESPACE::AttachmentDescription5927     operator VkAttachmentDescription const &() const VULKAN_HPP_NOEXCEPT
5928     {
5929       return *reinterpret_cast<const VkAttachmentDescription *>( this );
5930     }
5931 
operator VkAttachmentDescription&VULKAN_HPP_NAMESPACE::AttachmentDescription5932     operator VkAttachmentDescription &() VULKAN_HPP_NOEXCEPT
5933     {
5934       return *reinterpret_cast<VkAttachmentDescription *>( this );
5935     }
5936 
5937 #if defined( VULKAN_HPP_USE_REFLECT )
5938 #  if 14 <= VULKAN_HPP_CPP_VERSION
5939     auto
5940 #  else
5941     std::tuple<VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags const &,
5942                VULKAN_HPP_NAMESPACE::Format const &,
5943                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
5944                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
5945                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
5946                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
5947                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
5948                VULKAN_HPP_NAMESPACE::ImageLayout const &,
5949                VULKAN_HPP_NAMESPACE::ImageLayout const &>
5950 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescription5951       reflect() const VULKAN_HPP_NOEXCEPT
5952     {
5953       return std::tie( flags, format, samples, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalLayout );
5954     }
5955 #endif
5956 
5957 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5958     auto operator<=>( AttachmentDescription const & ) const = default;
5959 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescription5960     bool operator==( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
5961     {
5962 #  if defined( VULKAN_HPP_USE_REFLECT )
5963       return this->reflect() == rhs.reflect();
5964 #  else
5965       return ( flags == rhs.flags ) && ( format == rhs.format ) && ( samples == rhs.samples ) && ( loadOp == rhs.loadOp ) && ( storeOp == rhs.storeOp ) &&
5966              ( stencilLoadOp == rhs.stencilLoadOp ) && ( stencilStoreOp == rhs.stencilStoreOp ) && ( initialLayout == rhs.initialLayout ) &&
5967              ( finalLayout == rhs.finalLayout );
5968 #  endif
5969     }
5970 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescription5971     bool operator!=( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
5972     {
5973       return !operator==( rhs );
5974     }
5975 #endif
5976 
5977   public:
5978     VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags          = {};
5979     VULKAN_HPP_NAMESPACE::Format                     format         = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5980     VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples        = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
5981     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp         = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
5982     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp        = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
5983     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           stencilLoadOp  = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
5984     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
5985     VULKAN_HPP_NAMESPACE::ImageLayout                initialLayout  = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5986     VULKAN_HPP_NAMESPACE::ImageLayout                finalLayout    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5987   };
5988 
5989   struct AttachmentDescription2
5990   {
5991     using NativeType = VkAttachmentDescription2;
5992 
5993     static const bool                                  allowDuplicate = false;
5994     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentDescription2;
5995 
5996 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentDescription2VULKAN_HPP_NAMESPACE::AttachmentDescription25997     VULKAN_HPP_CONSTEXPR AttachmentDescription2( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_   = {},
5998                                                  VULKAN_HPP_NAMESPACE::Format                     format_  = VULKAN_HPP_NAMESPACE::Format::eUndefined,
5999                                                  VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
6000                                                  VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp_  = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
6001                                                  VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
6002                                                  VULKAN_HPP_NAMESPACE::AttachmentLoadOp  stencilLoadOp_    = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
6003                                                  VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_   = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
6004                                                  VULKAN_HPP_NAMESPACE::ImageLayout       initialLayout_    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
6005                                                  VULKAN_HPP_NAMESPACE::ImageLayout       finalLayout_      = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
6006                                                  const void *                            pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
6007       : pNext{ pNext_ }
6008       , flags{ flags_ }
6009       , format{ format_ }
6010       , samples{ samples_ }
6011       , loadOp{ loadOp_ }
6012       , storeOp{ storeOp_ }
6013       , stencilLoadOp{ stencilLoadOp_ }
6014       , stencilStoreOp{ stencilStoreOp_ }
6015       , initialLayout{ initialLayout_ }
6016       , finalLayout{ finalLayout_ }
6017     {
6018     }
6019 
6020     VULKAN_HPP_CONSTEXPR AttachmentDescription2( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6021 
AttachmentDescription2VULKAN_HPP_NAMESPACE::AttachmentDescription26022     AttachmentDescription2( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
6023       : AttachmentDescription2( *reinterpret_cast<AttachmentDescription2 const *>( &rhs ) )
6024     {
6025     }
6026 
6027     AttachmentDescription2 & operator=( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6028 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6029 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescription26030     AttachmentDescription2 & operator=( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
6031     {
6032       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescription2 const *>( &rhs );
6033       return *this;
6034     }
6035 
6036 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentDescription26037     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6038     {
6039       pNext = pNext_;
6040       return *this;
6041     }
6042 
setFlagsVULKAN_HPP_NAMESPACE::AttachmentDescription26043     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
6044     {
6045       flags = flags_;
6046       return *this;
6047     }
6048 
setFormatVULKAN_HPP_NAMESPACE::AttachmentDescription26049     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
6050     {
6051       format = format_;
6052       return *this;
6053     }
6054 
setSamplesVULKAN_HPP_NAMESPACE::AttachmentDescription26055     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
6056     {
6057       samples = samples_;
6058       return *this;
6059     }
6060 
setLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription26061     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
6062     {
6063       loadOp = loadOp_;
6064       return *this;
6065     }
6066 
setStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription26067     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
6068     {
6069       storeOp = storeOp_;
6070       return *this;
6071     }
6072 
setStencilLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription26073     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT
6074     {
6075       stencilLoadOp = stencilLoadOp_;
6076       return *this;
6077     }
6078 
setStencilStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription26079     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT
6080     {
6081       stencilStoreOp = stencilStoreOp_;
6082       return *this;
6083     }
6084 
setInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription26085     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
6086     {
6087       initialLayout = initialLayout_;
6088       return *this;
6089     }
6090 
setFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription26091     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT
6092     {
6093       finalLayout = finalLayout_;
6094       return *this;
6095     }
6096 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6097 
operator VkAttachmentDescription2 const&VULKAN_HPP_NAMESPACE::AttachmentDescription26098     operator VkAttachmentDescription2 const &() const VULKAN_HPP_NOEXCEPT
6099     {
6100       return *reinterpret_cast<const VkAttachmentDescription2 *>( this );
6101     }
6102 
operator VkAttachmentDescription2&VULKAN_HPP_NAMESPACE::AttachmentDescription26103     operator VkAttachmentDescription2 &() VULKAN_HPP_NOEXCEPT
6104     {
6105       return *reinterpret_cast<VkAttachmentDescription2 *>( this );
6106     }
6107 
6108 #if defined( VULKAN_HPP_USE_REFLECT )
6109 #  if 14 <= VULKAN_HPP_CPP_VERSION
6110     auto
6111 #  else
6112     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6113                const void * const &,
6114                VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags const &,
6115                VULKAN_HPP_NAMESPACE::Format const &,
6116                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
6117                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
6118                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
6119                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
6120                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
6121                VULKAN_HPP_NAMESPACE::ImageLayout const &,
6122                VULKAN_HPP_NAMESPACE::ImageLayout const &>
6123 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescription26124       reflect() const VULKAN_HPP_NOEXCEPT
6125     {
6126       return std::tie( sType, pNext, flags, format, samples, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalLayout );
6127     }
6128 #endif
6129 
6130 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6131     auto operator<=>( AttachmentDescription2 const & ) const = default;
6132 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescription26133     bool operator==( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
6134     {
6135 #  if defined( VULKAN_HPP_USE_REFLECT )
6136       return this->reflect() == rhs.reflect();
6137 #  else
6138       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( format == rhs.format ) && ( samples == rhs.samples ) &&
6139              ( loadOp == rhs.loadOp ) && ( storeOp == rhs.storeOp ) && ( stencilLoadOp == rhs.stencilLoadOp ) && ( stencilStoreOp == rhs.stencilStoreOp ) &&
6140              ( initialLayout == rhs.initialLayout ) && ( finalLayout == rhs.finalLayout );
6141 #  endif
6142     }
6143 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescription26144     bool operator!=( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
6145     {
6146       return !operator==( rhs );
6147     }
6148 #endif
6149 
6150   public:
6151     VULKAN_HPP_NAMESPACE::StructureType              sType          = StructureType::eAttachmentDescription2;
6152     const void *                                     pNext          = {};
6153     VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags          = {};
6154     VULKAN_HPP_NAMESPACE::Format                     format         = VULKAN_HPP_NAMESPACE::Format::eUndefined;
6155     VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples        = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
6156     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp         = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
6157     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp        = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
6158     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           stencilLoadOp  = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
6159     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
6160     VULKAN_HPP_NAMESPACE::ImageLayout                initialLayout  = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6161     VULKAN_HPP_NAMESPACE::ImageLayout                finalLayout    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6162   };
6163 
6164   template <>
6165   struct CppType<StructureType, StructureType::eAttachmentDescription2>
6166   {
6167     using Type = AttachmentDescription2;
6168   };
6169 
6170   using AttachmentDescription2KHR = AttachmentDescription2;
6171 
6172   struct AttachmentDescriptionStencilLayout
6173   {
6174     using NativeType = VkAttachmentDescriptionStencilLayout;
6175 
6176     static const bool                                  allowDuplicate = false;
6177     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentDescriptionStencilLayout;
6178 
6179 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
6180     VULKAN_HPP_CONSTEXPR
AttachmentDescriptionStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6181       AttachmentDescriptionStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
6182                                           VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_   = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
6183                                           void *                            pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
6184       : pNext{ pNext_ }
6185       , stencilInitialLayout{ stencilInitialLayout_ }
6186       , stencilFinalLayout{ stencilFinalLayout_ }
6187     {
6188     }
6189 
6190     VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6191 
AttachmentDescriptionStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6192     AttachmentDescriptionStencilLayout( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
6193       : AttachmentDescriptionStencilLayout( *reinterpret_cast<AttachmentDescriptionStencilLayout const *>( &rhs ) )
6194     {
6195     }
6196 
6197     AttachmentDescriptionStencilLayout & operator=( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6198 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6199 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6200     AttachmentDescriptionStencilLayout & operator=( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
6201     {
6202       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout const *>( &rhs );
6203       return *this;
6204     }
6205 
6206 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6207     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
6208     {
6209       pNext = pNext_;
6210       return *this;
6211     }
6212 
6213     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout &
setStencilInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6214       setStencilInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ ) VULKAN_HPP_NOEXCEPT
6215     {
6216       stencilInitialLayout = stencilInitialLayout_;
6217       return *this;
6218     }
6219 
6220     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout &
setStencilFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6221       setStencilFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_ ) VULKAN_HPP_NOEXCEPT
6222     {
6223       stencilFinalLayout = stencilFinalLayout_;
6224       return *this;
6225     }
6226 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6227 
operator VkAttachmentDescriptionStencilLayout const&VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6228     operator VkAttachmentDescriptionStencilLayout const &() const VULKAN_HPP_NOEXCEPT
6229     {
6230       return *reinterpret_cast<const VkAttachmentDescriptionStencilLayout *>( this );
6231     }
6232 
operator VkAttachmentDescriptionStencilLayout&VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6233     operator VkAttachmentDescriptionStencilLayout &() VULKAN_HPP_NOEXCEPT
6234     {
6235       return *reinterpret_cast<VkAttachmentDescriptionStencilLayout *>( this );
6236     }
6237 
6238 #if defined( VULKAN_HPP_USE_REFLECT )
6239 #  if 14 <= VULKAN_HPP_CPP_VERSION
6240     auto
6241 #  else
6242     std::
6243       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
6244 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6245       reflect() const VULKAN_HPP_NOEXCEPT
6246     {
6247       return std::tie( sType, pNext, stencilInitialLayout, stencilFinalLayout );
6248     }
6249 #endif
6250 
6251 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6252     auto operator<=>( AttachmentDescriptionStencilLayout const & ) const = default;
6253 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6254     bool operator==( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
6255     {
6256 #  if defined( VULKAN_HPP_USE_REFLECT )
6257       return this->reflect() == rhs.reflect();
6258 #  else
6259       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilInitialLayout == rhs.stencilInitialLayout ) &&
6260              ( stencilFinalLayout == rhs.stencilFinalLayout );
6261 #  endif
6262     }
6263 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6264     bool operator!=( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
6265     {
6266       return !operator==( rhs );
6267     }
6268 #endif
6269 
6270   public:
6271     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eAttachmentDescriptionStencilLayout;
6272     void *                              pNext                = {};
6273     VULKAN_HPP_NAMESPACE::ImageLayout   stencilInitialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6274     VULKAN_HPP_NAMESPACE::ImageLayout   stencilFinalLayout   = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6275   };
6276 
6277   template <>
6278   struct CppType<StructureType, StructureType::eAttachmentDescriptionStencilLayout>
6279   {
6280     using Type = AttachmentDescriptionStencilLayout;
6281   };
6282 
6283   using AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
6284 
6285   struct AttachmentReference
6286   {
6287     using NativeType = VkAttachmentReference;
6288 
6289 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentReferenceVULKAN_HPP_NAMESPACE::AttachmentReference6290     VULKAN_HPP_CONSTEXPR AttachmentReference( uint32_t                          attachment_ = {},
6291                                               VULKAN_HPP_NAMESPACE::ImageLayout layout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT
6292       : attachment{ attachment_ }
6293       , layout{ layout_ }
6294     {
6295     }
6296 
6297     VULKAN_HPP_CONSTEXPR AttachmentReference( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6298 
AttachmentReferenceVULKAN_HPP_NAMESPACE::AttachmentReference6299     AttachmentReference( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT : AttachmentReference( *reinterpret_cast<AttachmentReference const *>( &rhs ) )
6300     {
6301     }
6302 
6303     AttachmentReference & operator=( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6304 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6305 
operator =VULKAN_HPP_NAMESPACE::AttachmentReference6306     AttachmentReference & operator=( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT
6307     {
6308       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReference const *>( &rhs );
6309       return *this;
6310     }
6311 
6312 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAttachmentVULKAN_HPP_NAMESPACE::AttachmentReference6313     VULKAN_HPP_CONSTEXPR_14 AttachmentReference & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT
6314     {
6315       attachment = attachment_;
6316       return *this;
6317     }
6318 
setLayoutVULKAN_HPP_NAMESPACE::AttachmentReference6319     VULKAN_HPP_CONSTEXPR_14 AttachmentReference & setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT
6320     {
6321       layout = layout_;
6322       return *this;
6323     }
6324 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6325 
operator VkAttachmentReference const&VULKAN_HPP_NAMESPACE::AttachmentReference6326     operator VkAttachmentReference const &() const VULKAN_HPP_NOEXCEPT
6327     {
6328       return *reinterpret_cast<const VkAttachmentReference *>( this );
6329     }
6330 
operator VkAttachmentReference&VULKAN_HPP_NAMESPACE::AttachmentReference6331     operator VkAttachmentReference &() VULKAN_HPP_NOEXCEPT
6332     {
6333       return *reinterpret_cast<VkAttachmentReference *>( this );
6334     }
6335 
6336 #if defined( VULKAN_HPP_USE_REFLECT )
6337 #  if 14 <= VULKAN_HPP_CPP_VERSION
6338     auto
6339 #  else
6340     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
6341 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReference6342       reflect() const VULKAN_HPP_NOEXCEPT
6343     {
6344       return std::tie( attachment, layout );
6345     }
6346 #endif
6347 
6348 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6349     auto operator<=>( AttachmentReference const & ) const = default;
6350 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReference6351     bool operator==( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT
6352     {
6353 #  if defined( VULKAN_HPP_USE_REFLECT )
6354       return this->reflect() == rhs.reflect();
6355 #  else
6356       return ( attachment == rhs.attachment ) && ( layout == rhs.layout );
6357 #  endif
6358     }
6359 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReference6360     bool operator!=( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT
6361     {
6362       return !operator==( rhs );
6363     }
6364 #endif
6365 
6366   public:
6367     uint32_t                          attachment = {};
6368     VULKAN_HPP_NAMESPACE::ImageLayout layout     = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6369   };
6370 
6371   struct AttachmentReference2
6372   {
6373     using NativeType = VkAttachmentReference2;
6374 
6375     static const bool                                  allowDuplicate = false;
6376     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentReference2;
6377 
6378 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentReference2VULKAN_HPP_NAMESPACE::AttachmentReference26379     VULKAN_HPP_CONSTEXPR AttachmentReference2( uint32_t                               attachment_ = {},
6380                                                VULKAN_HPP_NAMESPACE::ImageLayout      layout_     = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
6381                                                VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {},
6382                                                const void *                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
6383       : pNext{ pNext_ }
6384       , attachment{ attachment_ }
6385       , layout{ layout_ }
6386       , aspectMask{ aspectMask_ }
6387     {
6388     }
6389 
6390     VULKAN_HPP_CONSTEXPR AttachmentReference2( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6391 
AttachmentReference2VULKAN_HPP_NAMESPACE::AttachmentReference26392     AttachmentReference2( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
6393       : AttachmentReference2( *reinterpret_cast<AttachmentReference2 const *>( &rhs ) )
6394     {
6395     }
6396 
6397     AttachmentReference2 & operator=( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6398 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6399 
operator =VULKAN_HPP_NAMESPACE::AttachmentReference26400     AttachmentReference2 & operator=( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
6401     {
6402       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReference2 const *>( &rhs );
6403       return *this;
6404     }
6405 
6406 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentReference26407     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6408     {
6409       pNext = pNext_;
6410       return *this;
6411     }
6412 
setAttachmentVULKAN_HPP_NAMESPACE::AttachmentReference26413     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT
6414     {
6415       attachment = attachment_;
6416       return *this;
6417     }
6418 
setLayoutVULKAN_HPP_NAMESPACE::AttachmentReference26419     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT
6420     {
6421       layout = layout_;
6422       return *this;
6423     }
6424 
setAspectMaskVULKAN_HPP_NAMESPACE::AttachmentReference26425     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
6426     {
6427       aspectMask = aspectMask_;
6428       return *this;
6429     }
6430 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6431 
operator VkAttachmentReference2 const&VULKAN_HPP_NAMESPACE::AttachmentReference26432     operator VkAttachmentReference2 const &() const VULKAN_HPP_NOEXCEPT
6433     {
6434       return *reinterpret_cast<const VkAttachmentReference2 *>( this );
6435     }
6436 
operator VkAttachmentReference2&VULKAN_HPP_NAMESPACE::AttachmentReference26437     operator VkAttachmentReference2 &() VULKAN_HPP_NOEXCEPT
6438     {
6439       return *reinterpret_cast<VkAttachmentReference2 *>( this );
6440     }
6441 
6442 #if defined( VULKAN_HPP_USE_REFLECT )
6443 #  if 14 <= VULKAN_HPP_CPP_VERSION
6444     auto
6445 #  else
6446     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6447                const void * const &,
6448                uint32_t const &,
6449                VULKAN_HPP_NAMESPACE::ImageLayout const &,
6450                VULKAN_HPP_NAMESPACE::ImageAspectFlags const &>
6451 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReference26452       reflect() const VULKAN_HPP_NOEXCEPT
6453     {
6454       return std::tie( sType, pNext, attachment, layout, aspectMask );
6455     }
6456 #endif
6457 
6458 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6459     auto operator<=>( AttachmentReference2 const & ) const = default;
6460 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReference26461     bool operator==( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT
6462     {
6463 #  if defined( VULKAN_HPP_USE_REFLECT )
6464       return this->reflect() == rhs.reflect();
6465 #  else
6466       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachment == rhs.attachment ) && ( layout == rhs.layout ) &&
6467              ( aspectMask == rhs.aspectMask );
6468 #  endif
6469     }
6470 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReference26471     bool operator!=( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT
6472     {
6473       return !operator==( rhs );
6474     }
6475 #endif
6476 
6477   public:
6478     VULKAN_HPP_NAMESPACE::StructureType    sType      = StructureType::eAttachmentReference2;
6479     const void *                           pNext      = {};
6480     uint32_t                               attachment = {};
6481     VULKAN_HPP_NAMESPACE::ImageLayout      layout     = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6482     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
6483   };
6484 
6485   template <>
6486   struct CppType<StructureType, StructureType::eAttachmentReference2>
6487   {
6488     using Type = AttachmentReference2;
6489   };
6490 
6491   using AttachmentReference2KHR = AttachmentReference2;
6492 
6493   struct AttachmentReferenceStencilLayout
6494   {
6495     using NativeType = VkAttachmentReferenceStencilLayout;
6496 
6497     static const bool                                  allowDuplicate = false;
6498     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentReferenceStencilLayout;
6499 
6500 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentReferenceStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6501     VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
6502                                                            void *                            pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
6503       : pNext{ pNext_ }
6504       , stencilLayout{ stencilLayout_ }
6505     {
6506     }
6507 
6508     VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6509 
AttachmentReferenceStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6510     AttachmentReferenceStencilLayout( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
6511       : AttachmentReferenceStencilLayout( *reinterpret_cast<AttachmentReferenceStencilLayout const *>( &rhs ) )
6512     {
6513     }
6514 
6515     AttachmentReferenceStencilLayout & operator=( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6516 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6517 
operator =VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6518     AttachmentReferenceStencilLayout & operator=( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
6519     {
6520       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout const *>( &rhs );
6521       return *this;
6522     }
6523 
6524 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6525     VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
6526     {
6527       pNext = pNext_;
6528       return *this;
6529     }
6530 
setStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6531     VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & setStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ ) VULKAN_HPP_NOEXCEPT
6532     {
6533       stencilLayout = stencilLayout_;
6534       return *this;
6535     }
6536 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6537 
operator VkAttachmentReferenceStencilLayout const&VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6538     operator VkAttachmentReferenceStencilLayout const &() const VULKAN_HPP_NOEXCEPT
6539     {
6540       return *reinterpret_cast<const VkAttachmentReferenceStencilLayout *>( this );
6541     }
6542 
operator VkAttachmentReferenceStencilLayout&VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6543     operator VkAttachmentReferenceStencilLayout &() VULKAN_HPP_NOEXCEPT
6544     {
6545       return *reinterpret_cast<VkAttachmentReferenceStencilLayout *>( this );
6546     }
6547 
6548 #if defined( VULKAN_HPP_USE_REFLECT )
6549 #  if 14 <= VULKAN_HPP_CPP_VERSION
6550     auto
6551 #  else
6552     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
6553 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6554       reflect() const VULKAN_HPP_NOEXCEPT
6555     {
6556       return std::tie( sType, pNext, stencilLayout );
6557     }
6558 #endif
6559 
6560 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6561     auto operator<=>( AttachmentReferenceStencilLayout const & ) const = default;
6562 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6563     bool operator==( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
6564     {
6565 #  if defined( VULKAN_HPP_USE_REFLECT )
6566       return this->reflect() == rhs.reflect();
6567 #  else
6568       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilLayout == rhs.stencilLayout );
6569 #  endif
6570     }
6571 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6572     bool operator!=( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
6573     {
6574       return !operator==( rhs );
6575     }
6576 #endif
6577 
6578   public:
6579     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eAttachmentReferenceStencilLayout;
6580     void *                              pNext         = {};
6581     VULKAN_HPP_NAMESPACE::ImageLayout   stencilLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6582   };
6583 
6584   template <>
6585   struct CppType<StructureType, StructureType::eAttachmentReferenceStencilLayout>
6586   {
6587     using Type = AttachmentReferenceStencilLayout;
6588   };
6589 
6590   using AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
6591 
6592   struct AttachmentSampleCountInfoAMD
6593   {
6594     using NativeType = VkAttachmentSampleCountInfoAMD;
6595 
6596     static const bool                                  allowDuplicate = false;
6597     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentSampleCountInfoAMD;
6598 
6599 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
6600     VULKAN_HPP_CONSTEXPR
AttachmentSampleCountInfoAMDVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6601       AttachmentSampleCountInfoAMD( uint32_t                                          colorAttachmentCount_    = {},
6602                                     const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples_ = {},
6603                                     VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_   = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
6604                                     const void *                              pNext_                           = nullptr ) VULKAN_HPP_NOEXCEPT
6605       : pNext{ pNext_ }
6606       , colorAttachmentCount{ colorAttachmentCount_ }
6607       , pColorAttachmentSamples{ pColorAttachmentSamples_ }
6608       , depthStencilAttachmentSamples{ depthStencilAttachmentSamples_ }
6609     {
6610     }
6611 
6612     VULKAN_HPP_CONSTEXPR AttachmentSampleCountInfoAMD( AttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6613 
AttachmentSampleCountInfoAMDVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6614     AttachmentSampleCountInfoAMD( VkAttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
6615       : AttachmentSampleCountInfoAMD( *reinterpret_cast<AttachmentSampleCountInfoAMD const *>( &rhs ) )
6616     {
6617     }
6618 
6619 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AttachmentSampleCountInfoAMDVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6620     AttachmentSampleCountInfoAMD(
6621       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleCountFlagBits> const & colorAttachmentSamples_,
6622       VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
6623       const void *                              pNext_                         = nullptr )
6624       : pNext( pNext_ )
6625       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentSamples_.size() ) )
6626       , pColorAttachmentSamples( colorAttachmentSamples_.data() )
6627       , depthStencilAttachmentSamples( depthStencilAttachmentSamples_ )
6628     {
6629     }
6630 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6631 
6632     AttachmentSampleCountInfoAMD & operator=( AttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6633 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6634 
operator =VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6635     AttachmentSampleCountInfoAMD & operator=( VkAttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
6636     {
6637       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD const *>( &rhs );
6638       return *this;
6639     }
6640 
6641 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6642     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6643     {
6644       pNext = pNext_;
6645       return *this;
6646     }
6647 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6648     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
6649     {
6650       colorAttachmentCount = colorAttachmentCount_;
6651       return *this;
6652     }
6653 
6654     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD &
setPColorAttachmentSamplesVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6655       setPColorAttachmentSamples( const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT
6656     {
6657       pColorAttachmentSamples = pColorAttachmentSamples_;
6658       return *this;
6659     }
6660 
6661 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentSamplesVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6662     AttachmentSampleCountInfoAMD & setColorAttachmentSamples(
6663       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleCountFlagBits> const & colorAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT
6664     {
6665       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentSamples_.size() );
6666       pColorAttachmentSamples = colorAttachmentSamples_.data();
6667       return *this;
6668     }
6669 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6670 
6671     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD &
setDepthStencilAttachmentSamplesVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6672       setDepthStencilAttachmentSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT
6673     {
6674       depthStencilAttachmentSamples = depthStencilAttachmentSamples_;
6675       return *this;
6676     }
6677 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6678 
operator VkAttachmentSampleCountInfoAMD const&VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6679     operator VkAttachmentSampleCountInfoAMD const &() const VULKAN_HPP_NOEXCEPT
6680     {
6681       return *reinterpret_cast<const VkAttachmentSampleCountInfoAMD *>( this );
6682     }
6683 
operator VkAttachmentSampleCountInfoAMD&VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6684     operator VkAttachmentSampleCountInfoAMD &() VULKAN_HPP_NOEXCEPT
6685     {
6686       return *reinterpret_cast<VkAttachmentSampleCountInfoAMD *>( this );
6687     }
6688 
6689 #if defined( VULKAN_HPP_USE_REFLECT )
6690 #  if 14 <= VULKAN_HPP_CPP_VERSION
6691     auto
6692 #  else
6693     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6694                const void * const &,
6695                uint32_t const &,
6696                const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * const &,
6697                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
6698 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6699       reflect() const VULKAN_HPP_NOEXCEPT
6700     {
6701       return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentSamples, depthStencilAttachmentSamples );
6702     }
6703 #endif
6704 
6705 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6706     auto operator<=>( AttachmentSampleCountInfoAMD const & ) const = default;
6707 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6708     bool operator==( AttachmentSampleCountInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
6709     {
6710 #  if defined( VULKAN_HPP_USE_REFLECT )
6711       return this->reflect() == rhs.reflect();
6712 #  else
6713       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
6714              ( pColorAttachmentSamples == rhs.pColorAttachmentSamples ) && ( depthStencilAttachmentSamples == rhs.depthStencilAttachmentSamples );
6715 #  endif
6716     }
6717 
operator !=VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6718     bool operator!=( AttachmentSampleCountInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
6719     {
6720       return !operator==( rhs );
6721     }
6722 #endif
6723 
6724   public:
6725     VULKAN_HPP_NAMESPACE::StructureType               sType                         = StructureType::eAttachmentSampleCountInfoAMD;
6726     const void *                                      pNext                         = {};
6727     uint32_t                                          colorAttachmentCount          = {};
6728     const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples       = {};
6729     VULKAN_HPP_NAMESPACE::SampleCountFlagBits         depthStencilAttachmentSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
6730   };
6731 
6732   template <>
6733   struct CppType<StructureType, StructureType::eAttachmentSampleCountInfoAMD>
6734   {
6735     using Type = AttachmentSampleCountInfoAMD;
6736   };
6737 
6738   using AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD;
6739 
6740   struct Extent2D
6741   {
6742     using NativeType = VkExtent2D;
6743 
6744 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Extent2DVULKAN_HPP_NAMESPACE::Extent2D6745     VULKAN_HPP_CONSTEXPR Extent2D( uint32_t width_ = {}, uint32_t height_ = {} ) VULKAN_HPP_NOEXCEPT
6746       : width{ width_ }
6747       , height{ height_ }
6748     {
6749     }
6750 
6751     VULKAN_HPP_CONSTEXPR Extent2D( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6752 
Extent2DVULKAN_HPP_NAMESPACE::Extent2D6753     Extent2D( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT : Extent2D( *reinterpret_cast<Extent2D const *>( &rhs ) ) {}
6754 
6755     Extent2D & operator=( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6756 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6757 
operator =VULKAN_HPP_NAMESPACE::Extent2D6758     Extent2D & operator=( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT
6759     {
6760       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Extent2D const *>( &rhs );
6761       return *this;
6762     }
6763 
6764 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::Extent2D6765     VULKAN_HPP_CONSTEXPR_14 Extent2D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
6766     {
6767       width = width_;
6768       return *this;
6769     }
6770 
setHeightVULKAN_HPP_NAMESPACE::Extent2D6771     VULKAN_HPP_CONSTEXPR_14 Extent2D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
6772     {
6773       height = height_;
6774       return *this;
6775     }
6776 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6777 
operator VkExtent2D const&VULKAN_HPP_NAMESPACE::Extent2D6778     operator VkExtent2D const &() const VULKAN_HPP_NOEXCEPT
6779     {
6780       return *reinterpret_cast<const VkExtent2D *>( this );
6781     }
6782 
operator VkExtent2D&VULKAN_HPP_NAMESPACE::Extent2D6783     operator VkExtent2D &() VULKAN_HPP_NOEXCEPT
6784     {
6785       return *reinterpret_cast<VkExtent2D *>( this );
6786     }
6787 
6788 #if defined( VULKAN_HPP_USE_REFLECT )
6789 #  if 14 <= VULKAN_HPP_CPP_VERSION
6790     auto
6791 #  else
6792     std::tuple<uint32_t const &, uint32_t const &>
6793 #  endif
reflectVULKAN_HPP_NAMESPACE::Extent2D6794       reflect() const VULKAN_HPP_NOEXCEPT
6795     {
6796       return std::tie( width, height );
6797     }
6798 #endif
6799 
6800 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6801     auto operator<=>( Extent2D const & ) const = default;
6802 #else
operator ==VULKAN_HPP_NAMESPACE::Extent2D6803     bool operator==( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT
6804     {
6805 #  if defined( VULKAN_HPP_USE_REFLECT )
6806       return this->reflect() == rhs.reflect();
6807 #  else
6808       return ( width == rhs.width ) && ( height == rhs.height );
6809 #  endif
6810     }
6811 
operator !=VULKAN_HPP_NAMESPACE::Extent2D6812     bool operator!=( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT
6813     {
6814       return !operator==( rhs );
6815     }
6816 #endif
6817 
6818   public:
6819     uint32_t width  = {};
6820     uint32_t height = {};
6821   };
6822 
6823   struct SampleLocationEXT
6824   {
6825     using NativeType = VkSampleLocationEXT;
6826 
6827 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SampleLocationEXTVULKAN_HPP_NAMESPACE::SampleLocationEXT6828     VULKAN_HPP_CONSTEXPR SampleLocationEXT( float x_ = {}, float y_ = {} ) VULKAN_HPP_NOEXCEPT
6829       : x{ x_ }
6830       , y{ y_ }
6831     {
6832     }
6833 
6834     VULKAN_HPP_CONSTEXPR SampleLocationEXT( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6835 
SampleLocationEXTVULKAN_HPP_NAMESPACE::SampleLocationEXT6836     SampleLocationEXT( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT : SampleLocationEXT( *reinterpret_cast<SampleLocationEXT const *>( &rhs ) ) {}
6837 
6838     SampleLocationEXT & operator=( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6839 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6840 
operator =VULKAN_HPP_NAMESPACE::SampleLocationEXT6841     SampleLocationEXT & operator=( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6842     {
6843       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SampleLocationEXT const *>( &rhs );
6844       return *this;
6845     }
6846 
6847 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::SampleLocationEXT6848     VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT
6849     {
6850       x = x_;
6851       return *this;
6852     }
6853 
setYVULKAN_HPP_NAMESPACE::SampleLocationEXT6854     VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT
6855     {
6856       y = y_;
6857       return *this;
6858     }
6859 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6860 
operator VkSampleLocationEXT const&VULKAN_HPP_NAMESPACE::SampleLocationEXT6861     operator VkSampleLocationEXT const &() const VULKAN_HPP_NOEXCEPT
6862     {
6863       return *reinterpret_cast<const VkSampleLocationEXT *>( this );
6864     }
6865 
operator VkSampleLocationEXT&VULKAN_HPP_NAMESPACE::SampleLocationEXT6866     operator VkSampleLocationEXT &() VULKAN_HPP_NOEXCEPT
6867     {
6868       return *reinterpret_cast<VkSampleLocationEXT *>( this );
6869     }
6870 
6871 #if defined( VULKAN_HPP_USE_REFLECT )
6872 #  if 14 <= VULKAN_HPP_CPP_VERSION
6873     auto
6874 #  else
6875     std::tuple<float const &, float const &>
6876 #  endif
reflectVULKAN_HPP_NAMESPACE::SampleLocationEXT6877       reflect() const VULKAN_HPP_NOEXCEPT
6878     {
6879       return std::tie( x, y );
6880     }
6881 #endif
6882 
6883 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6884     auto operator<=>( SampleLocationEXT const & ) const = default;
6885 #else
operator ==VULKAN_HPP_NAMESPACE::SampleLocationEXT6886     bool operator==( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6887     {
6888 #  if defined( VULKAN_HPP_USE_REFLECT )
6889       return this->reflect() == rhs.reflect();
6890 #  else
6891       return ( x == rhs.x ) && ( y == rhs.y );
6892 #  endif
6893     }
6894 
operator !=VULKAN_HPP_NAMESPACE::SampleLocationEXT6895     bool operator!=( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6896     {
6897       return !operator==( rhs );
6898     }
6899 #endif
6900 
6901   public:
6902     float x = {};
6903     float y = {};
6904   };
6905 
6906   struct SampleLocationsInfoEXT
6907   {
6908     using NativeType = VkSampleLocationsInfoEXT;
6909 
6910     static const bool                                  allowDuplicate = false;
6911     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSampleLocationsInfoEXT;
6912 
6913 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
6914     VULKAN_HPP_CONSTEXPR
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6915       SampleLocationsInfoEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits       sampleLocationsPerPixel_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
6916                               VULKAN_HPP_NAMESPACE::Extent2D                  sampleLocationGridSize_  = {},
6917                               uint32_t                                        sampleLocationsCount_    = {},
6918                               const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations_        = {},
6919                               const void *                                    pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
6920       : pNext{ pNext_ }
6921       , sampleLocationsPerPixel{ sampleLocationsPerPixel_ }
6922       , sampleLocationGridSize{ sampleLocationGridSize_ }
6923       , sampleLocationsCount{ sampleLocationsCount_ }
6924       , pSampleLocations{ pSampleLocations_ }
6925     {
6926     }
6927 
6928     VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6929 
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6930     SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6931       : SampleLocationsInfoEXT( *reinterpret_cast<SampleLocationsInfoEXT const *>( &rhs ) )
6932     {
6933     }
6934 
6935 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6936     SampleLocationsInfoEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits                                                            sampleLocationsPerPixel_,
6937                             VULKAN_HPP_NAMESPACE::Extent2D                                                                       sampleLocationGridSize_,
6938                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleLocationEXT> const & sampleLocations_,
6939                             const void *                                                                                         pNext_ = nullptr )
6940       : pNext( pNext_ )
6941       , sampleLocationsPerPixel( sampleLocationsPerPixel_ )
6942       , sampleLocationGridSize( sampleLocationGridSize_ )
6943       , sampleLocationsCount( static_cast<uint32_t>( sampleLocations_.size() ) )
6944       , pSampleLocations( sampleLocations_.data() )
6945     {
6946     }
6947 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6948 
6949     SampleLocationsInfoEXT & operator=( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6950 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6951 
operator =VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6952     SampleLocationsInfoEXT & operator=( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6953     {
6954       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const *>( &rhs );
6955       return *this;
6956     }
6957 
6958 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6959     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6960     {
6961       pNext = pNext_;
6962       return *this;
6963     }
6964 
6965     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT &
setSampleLocationsPerPixelVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6966       setSampleLocationsPerPixel( VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_ ) VULKAN_HPP_NOEXCEPT
6967     {
6968       sampleLocationsPerPixel = sampleLocationsPerPixel_;
6969       return *this;
6970     }
6971 
6972     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT &
setSampleLocationGridSizeVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6973       setSampleLocationGridSize( VULKAN_HPP_NAMESPACE::Extent2D const & sampleLocationGridSize_ ) VULKAN_HPP_NOEXCEPT
6974     {
6975       sampleLocationGridSize = sampleLocationGridSize_;
6976       return *this;
6977     }
6978 
setSampleLocationsCountVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6979     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setSampleLocationsCount( uint32_t sampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
6980     {
6981       sampleLocationsCount = sampleLocationsCount_;
6982       return *this;
6983     }
6984 
6985     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT &
setPSampleLocationsVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6986       setPSampleLocations( const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations_ ) VULKAN_HPP_NOEXCEPT
6987     {
6988       pSampleLocations = pSampleLocations_;
6989       return *this;
6990     }
6991 
6992 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSampleLocationsVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6993     SampleLocationsInfoEXT & setSampleLocations(
6994       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleLocationEXT> const & sampleLocations_ ) VULKAN_HPP_NOEXCEPT
6995     {
6996       sampleLocationsCount = static_cast<uint32_t>( sampleLocations_.size() );
6997       pSampleLocations     = sampleLocations_.data();
6998       return *this;
6999     }
7000 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7001 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7002 
operator VkSampleLocationsInfoEXT const&VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT7003     operator VkSampleLocationsInfoEXT const &() const VULKAN_HPP_NOEXCEPT
7004     {
7005       return *reinterpret_cast<const VkSampleLocationsInfoEXT *>( this );
7006     }
7007 
operator VkSampleLocationsInfoEXT&VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT7008     operator VkSampleLocationsInfoEXT &() VULKAN_HPP_NOEXCEPT
7009     {
7010       return *reinterpret_cast<VkSampleLocationsInfoEXT *>( this );
7011     }
7012 
7013 #if defined( VULKAN_HPP_USE_REFLECT )
7014 #  if 14 <= VULKAN_HPP_CPP_VERSION
7015     auto
7016 #  else
7017     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7018                const void * const &,
7019                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
7020                VULKAN_HPP_NAMESPACE::Extent2D const &,
7021                uint32_t const &,
7022                const VULKAN_HPP_NAMESPACE::SampleLocationEXT * const &>
7023 #  endif
reflectVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT7024       reflect() const VULKAN_HPP_NOEXCEPT
7025     {
7026       return std::tie( sType, pNext, sampleLocationsPerPixel, sampleLocationGridSize, sampleLocationsCount, pSampleLocations );
7027     }
7028 #endif
7029 
7030 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7031     auto operator<=>( SampleLocationsInfoEXT const & ) const = default;
7032 #else
operator ==VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT7033     bool operator==( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
7034     {
7035 #  if defined( VULKAN_HPP_USE_REFLECT )
7036       return this->reflect() == rhs.reflect();
7037 #  else
7038       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel ) &&
7039              ( sampleLocationGridSize == rhs.sampleLocationGridSize ) && ( sampleLocationsCount == rhs.sampleLocationsCount ) &&
7040              ( pSampleLocations == rhs.pSampleLocations );
7041 #  endif
7042     }
7043 
operator !=VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT7044     bool operator!=( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
7045     {
7046       return !operator==( rhs );
7047     }
7048 #endif
7049 
7050   public:
7051     VULKAN_HPP_NAMESPACE::StructureType             sType                   = StructureType::eSampleLocationsInfoEXT;
7052     const void *                                    pNext                   = {};
7053     VULKAN_HPP_NAMESPACE::SampleCountFlagBits       sampleLocationsPerPixel = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
7054     VULKAN_HPP_NAMESPACE::Extent2D                  sampleLocationGridSize  = {};
7055     uint32_t                                        sampleLocationsCount    = {};
7056     const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations        = {};
7057   };
7058 
7059   template <>
7060   struct CppType<StructureType, StructureType::eSampleLocationsInfoEXT>
7061   {
7062     using Type = SampleLocationsInfoEXT;
7063   };
7064 
7065   struct AttachmentSampleLocationsEXT
7066   {
7067     using NativeType = VkAttachmentSampleLocationsEXT;
7068 
7069 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentSampleLocationsEXTVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT7070     VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT( uint32_t                                     attachmentIndex_     = {},
7071                                                        VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT
7072       : attachmentIndex{ attachmentIndex_ }
7073       , sampleLocationsInfo{ sampleLocationsInfo_ }
7074     {
7075     }
7076 
7077     VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7078 
AttachmentSampleLocationsEXTVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT7079     AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
7080       : AttachmentSampleLocationsEXT( *reinterpret_cast<AttachmentSampleLocationsEXT const *>( &rhs ) )
7081     {
7082     }
7083 
7084     AttachmentSampleLocationsEXT & operator=( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7085 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7086 
operator =VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT7087     AttachmentSampleLocationsEXT & operator=( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
7088     {
7089       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT const *>( &rhs );
7090       return *this;
7091     }
7092 
7093 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAttachmentIndexVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT7094     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & setAttachmentIndex( uint32_t attachmentIndex_ ) VULKAN_HPP_NOEXCEPT
7095     {
7096       attachmentIndex = attachmentIndex_;
7097       return *this;
7098     }
7099 
7100     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT &
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT7101       setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
7102     {
7103       sampleLocationsInfo = sampleLocationsInfo_;
7104       return *this;
7105     }
7106 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7107 
operator VkAttachmentSampleLocationsEXT const&VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT7108     operator VkAttachmentSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT
7109     {
7110       return *reinterpret_cast<const VkAttachmentSampleLocationsEXT *>( this );
7111     }
7112 
operator VkAttachmentSampleLocationsEXT&VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT7113     operator VkAttachmentSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT
7114     {
7115       return *reinterpret_cast<VkAttachmentSampleLocationsEXT *>( this );
7116     }
7117 
7118 #if defined( VULKAN_HPP_USE_REFLECT )
7119 #  if 14 <= VULKAN_HPP_CPP_VERSION
7120     auto
7121 #  else
7122     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
7123 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT7124       reflect() const VULKAN_HPP_NOEXCEPT
7125     {
7126       return std::tie( attachmentIndex, sampleLocationsInfo );
7127     }
7128 #endif
7129 
7130 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7131     auto operator<=>( AttachmentSampleLocationsEXT const & ) const = default;
7132 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT7133     bool operator==( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
7134     {
7135 #  if defined( VULKAN_HPP_USE_REFLECT )
7136       return this->reflect() == rhs.reflect();
7137 #  else
7138       return ( attachmentIndex == rhs.attachmentIndex ) && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
7139 #  endif
7140     }
7141 
operator !=VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT7142     bool operator!=( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
7143     {
7144       return !operator==( rhs );
7145     }
7146 #endif
7147 
7148   public:
7149     uint32_t                                     attachmentIndex     = {};
7150     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {};
7151   };
7152 
7153   struct BaseInStructure
7154   {
7155     using NativeType = VkBaseInStructure;
7156 
7157 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BaseInStructureVULKAN_HPP_NAMESPACE::BaseInStructure7158     BaseInStructure( VULKAN_HPP_NAMESPACE::StructureType                  sType_ = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo,
7159                      const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
7160       : sType{ sType_ }
7161       , pNext{ pNext_ }
7162     {
7163     }
7164 
7165     BaseInStructure( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7166 
BaseInStructureVULKAN_HPP_NAMESPACE::BaseInStructure7167     BaseInStructure( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT : BaseInStructure( *reinterpret_cast<BaseInStructure const *>( &rhs ) ) {}
7168 
7169     BaseInStructure & operator=( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7170 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7171 
operator =VULKAN_HPP_NAMESPACE::BaseInStructure7172     BaseInStructure & operator=( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT
7173     {
7174       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BaseInStructure const *>( &rhs );
7175       return *this;
7176     }
7177 
7178 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BaseInStructure7179     VULKAN_HPP_CONSTEXPR_14 BaseInStructure & setPNext( const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext_ ) VULKAN_HPP_NOEXCEPT
7180     {
7181       pNext = pNext_;
7182       return *this;
7183     }
7184 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7185 
operator VkBaseInStructure const&VULKAN_HPP_NAMESPACE::BaseInStructure7186     operator VkBaseInStructure const &() const VULKAN_HPP_NOEXCEPT
7187     {
7188       return *reinterpret_cast<const VkBaseInStructure *>( this );
7189     }
7190 
operator VkBaseInStructure&VULKAN_HPP_NAMESPACE::BaseInStructure7191     operator VkBaseInStructure &() VULKAN_HPP_NOEXCEPT
7192     {
7193       return *reinterpret_cast<VkBaseInStructure *>( this );
7194     }
7195 
7196 #if defined( VULKAN_HPP_USE_REFLECT )
7197 #  if 14 <= VULKAN_HPP_CPP_VERSION
7198     auto
7199 #  else
7200     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const struct VULKAN_HPP_NAMESPACE::BaseInStructure * const &>
7201 #  endif
reflectVULKAN_HPP_NAMESPACE::BaseInStructure7202       reflect() const VULKAN_HPP_NOEXCEPT
7203     {
7204       return std::tie( sType, pNext );
7205     }
7206 #endif
7207 
7208 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7209     auto operator<=>( BaseInStructure const & ) const = default;
7210 #else
operator ==VULKAN_HPP_NAMESPACE::BaseInStructure7211     bool operator==( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
7212     {
7213 #  if defined( VULKAN_HPP_USE_REFLECT )
7214       return this->reflect() == rhs.reflect();
7215 #  else
7216       return ( sType == rhs.sType ) && ( pNext == rhs.pNext );
7217 #  endif
7218     }
7219 
operator !=VULKAN_HPP_NAMESPACE::BaseInStructure7220     bool operator!=( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
7221     {
7222       return !operator==( rhs );
7223     }
7224 #endif
7225 
7226   public:
7227     VULKAN_HPP_NAMESPACE::StructureType                  sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo;
7228     const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext = {};
7229   };
7230 
7231   struct BaseOutStructure
7232   {
7233     using NativeType = VkBaseOutStructure;
7234 
7235 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BaseOutStructureVULKAN_HPP_NAMESPACE::BaseOutStructure7236     BaseOutStructure( VULKAN_HPP_NAMESPACE::StructureType             sType_ = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo,
7237                       struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
7238       : sType{ sType_ }
7239       , pNext{ pNext_ }
7240     {
7241     }
7242 
7243     BaseOutStructure( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7244 
BaseOutStructureVULKAN_HPP_NAMESPACE::BaseOutStructure7245     BaseOutStructure( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT : BaseOutStructure( *reinterpret_cast<BaseOutStructure const *>( &rhs ) ) {}
7246 
7247     BaseOutStructure & operator=( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7248 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7249 
operator =VULKAN_HPP_NAMESPACE::BaseOutStructure7250     BaseOutStructure & operator=( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT
7251     {
7252       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BaseOutStructure const *>( &rhs );
7253       return *this;
7254     }
7255 
7256 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BaseOutStructure7257     VULKAN_HPP_CONSTEXPR_14 BaseOutStructure & setPNext( struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext_ ) VULKAN_HPP_NOEXCEPT
7258     {
7259       pNext = pNext_;
7260       return *this;
7261     }
7262 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7263 
operator VkBaseOutStructure const&VULKAN_HPP_NAMESPACE::BaseOutStructure7264     operator VkBaseOutStructure const &() const VULKAN_HPP_NOEXCEPT
7265     {
7266       return *reinterpret_cast<const VkBaseOutStructure *>( this );
7267     }
7268 
operator VkBaseOutStructure&VULKAN_HPP_NAMESPACE::BaseOutStructure7269     operator VkBaseOutStructure &() VULKAN_HPP_NOEXCEPT
7270     {
7271       return *reinterpret_cast<VkBaseOutStructure *>( this );
7272     }
7273 
7274 #if defined( VULKAN_HPP_USE_REFLECT )
7275 #  if 14 <= VULKAN_HPP_CPP_VERSION
7276     auto
7277 #  else
7278     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, struct VULKAN_HPP_NAMESPACE::BaseOutStructure * const &>
7279 #  endif
reflectVULKAN_HPP_NAMESPACE::BaseOutStructure7280       reflect() const VULKAN_HPP_NOEXCEPT
7281     {
7282       return std::tie( sType, pNext );
7283     }
7284 #endif
7285 
7286 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7287     auto operator<=>( BaseOutStructure const & ) const = default;
7288 #else
operator ==VULKAN_HPP_NAMESPACE::BaseOutStructure7289     bool operator==( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
7290     {
7291 #  if defined( VULKAN_HPP_USE_REFLECT )
7292       return this->reflect() == rhs.reflect();
7293 #  else
7294       return ( sType == rhs.sType ) && ( pNext == rhs.pNext );
7295 #  endif
7296     }
7297 
operator !=VULKAN_HPP_NAMESPACE::BaseOutStructure7298     bool operator!=( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
7299     {
7300       return !operator==( rhs );
7301     }
7302 #endif
7303 
7304   public:
7305     VULKAN_HPP_NAMESPACE::StructureType             sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo;
7306     struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext = {};
7307   };
7308 
7309   struct BindAccelerationStructureMemoryInfoNV
7310   {
7311     using NativeType = VkBindAccelerationStructureMemoryInfoNV;
7312 
7313     static const bool                                  allowDuplicate = false;
7314     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindAccelerationStructureMemoryInfoNV;
7315 
7316 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindAccelerationStructureMemoryInfoNVVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7317     VULKAN_HPP_CONSTEXPR BindAccelerationStructureMemoryInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ = {},
7318                                                                 VULKAN_HPP_NAMESPACE::DeviceMemory            memory_                = {},
7319                                                                 VULKAN_HPP_NAMESPACE::DeviceSize              memoryOffset_          = {},
7320                                                                 uint32_t                                      deviceIndexCount_      = {},
7321                                                                 const uint32_t *                              pDeviceIndices_        = {},
7322                                                                 const void *                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
7323       : pNext{ pNext_ }
7324       , accelerationStructure{ accelerationStructure_ }
7325       , memory{ memory_ }
7326       , memoryOffset{ memoryOffset_ }
7327       , deviceIndexCount{ deviceIndexCount_ }
7328       , pDeviceIndices{ pDeviceIndices_ }
7329     {
7330     }
7331 
7332     VULKAN_HPP_CONSTEXPR BindAccelerationStructureMemoryInfoNV( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7333 
BindAccelerationStructureMemoryInfoNVVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7334     BindAccelerationStructureMemoryInfoNV( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
7335       : BindAccelerationStructureMemoryInfoNV( *reinterpret_cast<BindAccelerationStructureMemoryInfoNV const *>( &rhs ) )
7336     {
7337     }
7338 
7339 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindAccelerationStructureMemoryInfoNVVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7340     BindAccelerationStructureMemoryInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV                         accelerationStructure_,
7341                                            VULKAN_HPP_NAMESPACE::DeviceMemory                                    memory_,
7342                                            VULKAN_HPP_NAMESPACE::DeviceSize                                      memoryOffset_,
7343                                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_,
7344                                            const void *                                                          pNext_ = nullptr )
7345       : pNext( pNext_ )
7346       , accelerationStructure( accelerationStructure_ )
7347       , memory( memory_ )
7348       , memoryOffset( memoryOffset_ )
7349       , deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) )
7350       , pDeviceIndices( deviceIndices_.data() )
7351     {
7352     }
7353 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7354 
7355     BindAccelerationStructureMemoryInfoNV & operator=( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7356 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7357 
operator =VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7358     BindAccelerationStructureMemoryInfoNV & operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
7359     {
7360       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV const *>( &rhs );
7361       return *this;
7362     }
7363 
7364 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7365     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7366     {
7367       pNext = pNext_;
7368       return *this;
7369     }
7370 
7371     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV &
setAccelerationStructureVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7372       setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
7373     {
7374       accelerationStructure = accelerationStructure_;
7375       return *this;
7376     }
7377 
setMemoryVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7378     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
7379     {
7380       memory = memory_;
7381       return *this;
7382     }
7383 
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7384     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
7385     {
7386       memoryOffset = memoryOffset_;
7387       return *this;
7388     }
7389 
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7390     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
7391     {
7392       deviceIndexCount = deviceIndexCount_;
7393       return *this;
7394     }
7395 
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7396     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
7397     {
7398       pDeviceIndices = pDeviceIndices_;
7399       return *this;
7400     }
7401 
7402 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
7403     BindAccelerationStructureMemoryInfoNV &
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7404       setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
7405     {
7406       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
7407       pDeviceIndices   = deviceIndices_.data();
7408       return *this;
7409     }
7410 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7411 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7412 
operator VkBindAccelerationStructureMemoryInfoNV const&VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7413     operator VkBindAccelerationStructureMemoryInfoNV const &() const VULKAN_HPP_NOEXCEPT
7414     {
7415       return *reinterpret_cast<const VkBindAccelerationStructureMemoryInfoNV *>( this );
7416     }
7417 
operator VkBindAccelerationStructureMemoryInfoNV&VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7418     operator VkBindAccelerationStructureMemoryInfoNV &() VULKAN_HPP_NOEXCEPT
7419     {
7420       return *reinterpret_cast<VkBindAccelerationStructureMemoryInfoNV *>( this );
7421     }
7422 
7423 #if defined( VULKAN_HPP_USE_REFLECT )
7424 #  if 14 <= VULKAN_HPP_CPP_VERSION
7425     auto
7426 #  else
7427     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7428                const void * const &,
7429                VULKAN_HPP_NAMESPACE::AccelerationStructureNV const &,
7430                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
7431                VULKAN_HPP_NAMESPACE::DeviceSize const &,
7432                uint32_t const &,
7433                const uint32_t * const &>
7434 #  endif
reflectVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7435       reflect() const VULKAN_HPP_NOEXCEPT
7436     {
7437       return std::tie( sType, pNext, accelerationStructure, memory, memoryOffset, deviceIndexCount, pDeviceIndices );
7438     }
7439 #endif
7440 
7441 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7442     auto operator<=>( BindAccelerationStructureMemoryInfoNV const & ) const = default;
7443 #else
operator ==VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7444     bool operator==( BindAccelerationStructureMemoryInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
7445     {
7446 #  if defined( VULKAN_HPP_USE_REFLECT )
7447       return this->reflect() == rhs.reflect();
7448 #  else
7449       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ) && ( memory == rhs.memory ) &&
7450              ( memoryOffset == rhs.memoryOffset ) && ( deviceIndexCount == rhs.deviceIndexCount ) && ( pDeviceIndices == rhs.pDeviceIndices );
7451 #  endif
7452     }
7453 
operator !=VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7454     bool operator!=( BindAccelerationStructureMemoryInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
7455     {
7456       return !operator==( rhs );
7457     }
7458 #endif
7459 
7460   public:
7461     VULKAN_HPP_NAMESPACE::StructureType           sType                 = StructureType::eBindAccelerationStructureMemoryInfoNV;
7462     const void *                                  pNext                 = {};
7463     VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure = {};
7464     VULKAN_HPP_NAMESPACE::DeviceMemory            memory                = {};
7465     VULKAN_HPP_NAMESPACE::DeviceSize              memoryOffset          = {};
7466     uint32_t                                      deviceIndexCount      = {};
7467     const uint32_t *                              pDeviceIndices        = {};
7468   };
7469 
7470   template <>
7471   struct CppType<StructureType, StructureType::eBindAccelerationStructureMemoryInfoNV>
7472   {
7473     using Type = BindAccelerationStructureMemoryInfoNV;
7474   };
7475 
7476   struct BindBufferMemoryDeviceGroupInfo
7477   {
7478     using NativeType = VkBindBufferMemoryDeviceGroupInfo;
7479 
7480     static const bool                                  allowDuplicate = false;
7481     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindBufferMemoryDeviceGroupInfo;
7482 
7483 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7484     VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo( uint32_t         deviceIndexCount_ = {},
7485                                                           const uint32_t * pDeviceIndices_   = {},
7486                                                           const void *     pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
7487       : pNext{ pNext_ }
7488       , deviceIndexCount{ deviceIndexCount_ }
7489       , pDeviceIndices{ pDeviceIndices_ }
7490     {
7491     }
7492 
7493     VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7494 
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7495     BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7496       : BindBufferMemoryDeviceGroupInfo( *reinterpret_cast<BindBufferMemoryDeviceGroupInfo const *>( &rhs ) )
7497     {
7498     }
7499 
7500 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7501     BindBufferMemoryDeviceGroupInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_, const void * pNext_ = nullptr )
7502       : pNext( pNext_ ), deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) ), pDeviceIndices( deviceIndices_.data() )
7503     {
7504     }
7505 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7506 
7507     BindBufferMemoryDeviceGroupInfo & operator=( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7508 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7509 
operator =VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7510     BindBufferMemoryDeviceGroupInfo & operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7511     {
7512       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo const *>( &rhs );
7513       return *this;
7514     }
7515 
7516 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7517     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7518     {
7519       pNext = pNext_;
7520       return *this;
7521     }
7522 
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7523     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
7524     {
7525       deviceIndexCount = deviceIndexCount_;
7526       return *this;
7527     }
7528 
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7529     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
7530     {
7531       pDeviceIndices = pDeviceIndices_;
7532       return *this;
7533     }
7534 
7535 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
7536     BindBufferMemoryDeviceGroupInfo &
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7537       setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
7538     {
7539       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
7540       pDeviceIndices   = deviceIndices_.data();
7541       return *this;
7542     }
7543 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7544 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7545 
operator VkBindBufferMemoryDeviceGroupInfo const&VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7546     operator VkBindBufferMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT
7547     {
7548       return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo *>( this );
7549     }
7550 
operator VkBindBufferMemoryDeviceGroupInfo&VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7551     operator VkBindBufferMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT
7552     {
7553       return *reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo *>( this );
7554     }
7555 
7556 #if defined( VULKAN_HPP_USE_REFLECT )
7557 #  if 14 <= VULKAN_HPP_CPP_VERSION
7558     auto
7559 #  else
7560     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &>
7561 #  endif
reflectVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7562       reflect() const VULKAN_HPP_NOEXCEPT
7563     {
7564       return std::tie( sType, pNext, deviceIndexCount, pDeviceIndices );
7565     }
7566 #endif
7567 
7568 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7569     auto operator<=>( BindBufferMemoryDeviceGroupInfo const & ) const = default;
7570 #else
operator ==VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7571     bool operator==( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7572     {
7573 #  if defined( VULKAN_HPP_USE_REFLECT )
7574       return this->reflect() == rhs.reflect();
7575 #  else
7576       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceIndexCount == rhs.deviceIndexCount ) && ( pDeviceIndices == rhs.pDeviceIndices );
7577 #  endif
7578     }
7579 
operator !=VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7580     bool operator!=( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7581     {
7582       return !operator==( rhs );
7583     }
7584 #endif
7585 
7586   public:
7587     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eBindBufferMemoryDeviceGroupInfo;
7588     const void *                        pNext            = {};
7589     uint32_t                            deviceIndexCount = {};
7590     const uint32_t *                    pDeviceIndices   = {};
7591   };
7592 
7593   template <>
7594   struct CppType<StructureType, StructureType::eBindBufferMemoryDeviceGroupInfo>
7595   {
7596     using Type = BindBufferMemoryDeviceGroupInfo;
7597   };
7598 
7599   using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
7600 
7601   struct BindBufferMemoryInfo
7602   {
7603     using NativeType = VkBindBufferMemoryInfo;
7604 
7605     static const bool                                  allowDuplicate = false;
7606     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindBufferMemoryInfo;
7607 
7608 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindBufferMemoryInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7609     VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( VULKAN_HPP_NAMESPACE::Buffer       buffer_       = {},
7610                                                VULKAN_HPP_NAMESPACE::DeviceMemory memory_       = {},
7611                                                VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset_ = {},
7612                                                const void *                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
7613       : pNext{ pNext_ }
7614       , buffer{ buffer_ }
7615       , memory{ memory_ }
7616       , memoryOffset{ memoryOffset_ }
7617     {
7618     }
7619 
7620     VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7621 
BindBufferMemoryInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7622     BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7623       : BindBufferMemoryInfo( *reinterpret_cast<BindBufferMemoryInfo const *>( &rhs ) )
7624     {
7625     }
7626 
7627     BindBufferMemoryInfo & operator=( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7628 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7629 
operator =VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7630     BindBufferMemoryInfo & operator=( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7631     {
7632       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo const *>( &rhs );
7633       return *this;
7634     }
7635 
7636 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7637     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7638     {
7639       pNext = pNext_;
7640       return *this;
7641     }
7642 
setBufferVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7643     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
7644     {
7645       buffer = buffer_;
7646       return *this;
7647     }
7648 
setMemoryVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7649     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
7650     {
7651       memory = memory_;
7652       return *this;
7653     }
7654 
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7655     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
7656     {
7657       memoryOffset = memoryOffset_;
7658       return *this;
7659     }
7660 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7661 
operator VkBindBufferMemoryInfo const&VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7662     operator VkBindBufferMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
7663     {
7664       return *reinterpret_cast<const VkBindBufferMemoryInfo *>( this );
7665     }
7666 
operator VkBindBufferMemoryInfo&VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7667     operator VkBindBufferMemoryInfo &() VULKAN_HPP_NOEXCEPT
7668     {
7669       return *reinterpret_cast<VkBindBufferMemoryInfo *>( this );
7670     }
7671 
7672 #if defined( VULKAN_HPP_USE_REFLECT )
7673 #  if 14 <= VULKAN_HPP_CPP_VERSION
7674     auto
7675 #  else
7676     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7677                const void * const &,
7678                VULKAN_HPP_NAMESPACE::Buffer const &,
7679                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
7680                VULKAN_HPP_NAMESPACE::DeviceSize const &>
7681 #  endif
reflectVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7682       reflect() const VULKAN_HPP_NOEXCEPT
7683     {
7684       return std::tie( sType, pNext, buffer, memory, memoryOffset );
7685     }
7686 #endif
7687 
7688 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7689     auto operator<=>( BindBufferMemoryInfo const & ) const = default;
7690 #else
operator ==VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7691     bool operator==( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7692     {
7693 #  if defined( VULKAN_HPP_USE_REFLECT )
7694       return this->reflect() == rhs.reflect();
7695 #  else
7696       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset );
7697 #  endif
7698     }
7699 
operator !=VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7700     bool operator!=( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7701     {
7702       return !operator==( rhs );
7703     }
7704 #endif
7705 
7706   public:
7707     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eBindBufferMemoryInfo;
7708     const void *                        pNext        = {};
7709     VULKAN_HPP_NAMESPACE::Buffer        buffer       = {};
7710     VULKAN_HPP_NAMESPACE::DeviceMemory  memory       = {};
7711     VULKAN_HPP_NAMESPACE::DeviceSize    memoryOffset = {};
7712   };
7713 
7714   template <>
7715   struct CppType<StructureType, StructureType::eBindBufferMemoryInfo>
7716   {
7717     using Type = BindBufferMemoryInfo;
7718   };
7719 
7720   using BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
7721 
7722   struct BindDescriptorBufferEmbeddedSamplersInfoEXT
7723   {
7724     using NativeType = VkBindDescriptorBufferEmbeddedSamplersInfoEXT;
7725 
7726     static const bool                                  allowDuplicate = false;
7727     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindDescriptorBufferEmbeddedSamplersInfoEXT;
7728 
7729 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindDescriptorBufferEmbeddedSamplersInfoEXTVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7730     VULKAN_HPP_CONSTEXPR BindDescriptorBufferEmbeddedSamplersInfoEXT( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {},
7731                                                                       VULKAN_HPP_NAMESPACE::PipelineLayout   layout_     = {},
7732                                                                       uint32_t                               set_        = {},
7733                                                                       const void *                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
7734       : pNext{ pNext_ }
7735       , stageFlags{ stageFlags_ }
7736       , layout{ layout_ }
7737       , set{ set_ }
7738     {
7739     }
7740 
7741     VULKAN_HPP_CONSTEXPR BindDescriptorBufferEmbeddedSamplersInfoEXT( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7742 
BindDescriptorBufferEmbeddedSamplersInfoEXTVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7743     BindDescriptorBufferEmbeddedSamplersInfoEXT( VkBindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
7744       : BindDescriptorBufferEmbeddedSamplersInfoEXT( *reinterpret_cast<BindDescriptorBufferEmbeddedSamplersInfoEXT const *>( &rhs ) )
7745     {
7746     }
7747 
7748     BindDescriptorBufferEmbeddedSamplersInfoEXT & operator=( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7749 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7750 
operator =VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7751     BindDescriptorBufferEmbeddedSamplersInfoEXT & operator=( VkBindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
7752     {
7753       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT const *>( &rhs );
7754       return *this;
7755     }
7756 
7757 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7758     VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7759     {
7760       pNext = pNext_;
7761       return *this;
7762     }
7763 
7764     VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT &
setStageFlagsVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7765       setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
7766     {
7767       stageFlags = stageFlags_;
7768       return *this;
7769     }
7770 
setLayoutVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7771     VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
7772     {
7773       layout = layout_;
7774       return *this;
7775     }
7776 
setSetVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7777     VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT
7778     {
7779       set = set_;
7780       return *this;
7781     }
7782 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7783 
operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT const&VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7784     operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT const &() const VULKAN_HPP_NOEXCEPT
7785     {
7786       return *reinterpret_cast<const VkBindDescriptorBufferEmbeddedSamplersInfoEXT *>( this );
7787     }
7788 
operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT&VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7789     operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT &() VULKAN_HPP_NOEXCEPT
7790     {
7791       return *reinterpret_cast<VkBindDescriptorBufferEmbeddedSamplersInfoEXT *>( this );
7792     }
7793 
7794 #if defined( VULKAN_HPP_USE_REFLECT )
7795 #  if 14 <= VULKAN_HPP_CPP_VERSION
7796     auto
7797 #  else
7798     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7799                const void * const &,
7800                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
7801                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
7802                uint32_t const &>
7803 #  endif
reflectVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7804       reflect() const VULKAN_HPP_NOEXCEPT
7805     {
7806       return std::tie( sType, pNext, stageFlags, layout, set );
7807     }
7808 #endif
7809 
7810 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7811     auto operator<=>( BindDescriptorBufferEmbeddedSamplersInfoEXT const & ) const = default;
7812 #else
operator ==VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7813     bool operator==( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
7814     {
7815 #  if defined( VULKAN_HPP_USE_REFLECT )
7816       return this->reflect() == rhs.reflect();
7817 #  else
7818       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( set == rhs.set );
7819 #  endif
7820     }
7821 
operator !=VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7822     bool operator!=( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
7823     {
7824       return !operator==( rhs );
7825     }
7826 #endif
7827 
7828   public:
7829     VULKAN_HPP_NAMESPACE::StructureType    sType      = StructureType::eBindDescriptorBufferEmbeddedSamplersInfoEXT;
7830     const void *                           pNext      = {};
7831     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {};
7832     VULKAN_HPP_NAMESPACE::PipelineLayout   layout     = {};
7833     uint32_t                               set        = {};
7834   };
7835 
7836   template <>
7837   struct CppType<StructureType, StructureType::eBindDescriptorBufferEmbeddedSamplersInfoEXT>
7838   {
7839     using Type = BindDescriptorBufferEmbeddedSamplersInfoEXT;
7840   };
7841 
7842   struct BindDescriptorSetsInfo
7843   {
7844     using NativeType = VkBindDescriptorSetsInfo;
7845 
7846     static const bool                                  allowDuplicate = false;
7847     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindDescriptorSetsInfo;
7848 
7849 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindDescriptorSetsInfoVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7850     VULKAN_HPP_CONSTEXPR BindDescriptorSetsInfo( VULKAN_HPP_NAMESPACE::ShaderStageFlags      stageFlags_         = {},
7851                                                  VULKAN_HPP_NAMESPACE::PipelineLayout        layout_             = {},
7852                                                  uint32_t                                    firstSet_           = {},
7853                                                  uint32_t                                    descriptorSetCount_ = {},
7854                                                  const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets_    = {},
7855                                                  uint32_t                                    dynamicOffsetCount_ = {},
7856                                                  const uint32_t *                            pDynamicOffsets_    = {},
7857                                                  const void *                                pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
7858       : pNext{ pNext_ }
7859       , stageFlags{ stageFlags_ }
7860       , layout{ layout_ }
7861       , firstSet{ firstSet_ }
7862       , descriptorSetCount{ descriptorSetCount_ }
7863       , pDescriptorSets{ pDescriptorSets_ }
7864       , dynamicOffsetCount{ dynamicOffsetCount_ }
7865       , pDynamicOffsets{ pDynamicOffsets_ }
7866     {
7867     }
7868 
7869     VULKAN_HPP_CONSTEXPR BindDescriptorSetsInfo( BindDescriptorSetsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7870 
BindDescriptorSetsInfoVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7871     BindDescriptorSetsInfo( VkBindDescriptorSetsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7872       : BindDescriptorSetsInfo( *reinterpret_cast<BindDescriptorSetsInfo const *>( &rhs ) )
7873     {
7874     }
7875 
7876 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindDescriptorSetsInfoVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7877     BindDescriptorSetsInfo( VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                           stageFlags_,
7878                             VULKAN_HPP_NAMESPACE::PipelineLayout                                                             layout_,
7879                             uint32_t                                                                                         firstSet_,
7880                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets_,
7881                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                            dynamicOffsets_ = {},
7882                             const void *                                                                                     pNext_          = nullptr )
7883       : pNext( pNext_ )
7884       , stageFlags( stageFlags_ )
7885       , layout( layout_ )
7886       , firstSet( firstSet_ )
7887       , descriptorSetCount( static_cast<uint32_t>( descriptorSets_.size() ) )
7888       , pDescriptorSets( descriptorSets_.data() )
7889       , dynamicOffsetCount( static_cast<uint32_t>( dynamicOffsets_.size() ) )
7890       , pDynamicOffsets( dynamicOffsets_.data() )
7891     {
7892     }
7893 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7894 
7895     BindDescriptorSetsInfo & operator=( BindDescriptorSetsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7896 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7897 
operator =VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7898     BindDescriptorSetsInfo & operator=( VkBindDescriptorSetsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7899     {
7900       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo const *>( &rhs );
7901       return *this;
7902     }
7903 
7904 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7905     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7906     {
7907       pNext = pNext_;
7908       return *this;
7909     }
7910 
setStageFlagsVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7911     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
7912     {
7913       stageFlags = stageFlags_;
7914       return *this;
7915     }
7916 
setLayoutVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7917     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
7918     {
7919       layout = layout_;
7920       return *this;
7921     }
7922 
setFirstSetVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7923     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setFirstSet( uint32_t firstSet_ ) VULKAN_HPP_NOEXCEPT
7924     {
7925       firstSet = firstSet_;
7926       return *this;
7927     }
7928 
setDescriptorSetCountVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7929     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT
7930     {
7931       descriptorSetCount = descriptorSetCount_;
7932       return *this;
7933     }
7934 
setPDescriptorSetsVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7935     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setPDescriptorSets( const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets_ ) VULKAN_HPP_NOEXCEPT
7936     {
7937       pDescriptorSets = pDescriptorSets_;
7938       return *this;
7939     }
7940 
7941 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
7942     BindDescriptorSetsInfo &
setDescriptorSetsVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7943       setDescriptorSets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets_ ) VULKAN_HPP_NOEXCEPT
7944     {
7945       descriptorSetCount = static_cast<uint32_t>( descriptorSets_.size() );
7946       pDescriptorSets    = descriptorSets_.data();
7947       return *this;
7948     }
7949 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7950 
setDynamicOffsetCountVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7951     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setDynamicOffsetCount( uint32_t dynamicOffsetCount_ ) VULKAN_HPP_NOEXCEPT
7952     {
7953       dynamicOffsetCount = dynamicOffsetCount_;
7954       return *this;
7955     }
7956 
setPDynamicOffsetsVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7957     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setPDynamicOffsets( const uint32_t * pDynamicOffsets_ ) VULKAN_HPP_NOEXCEPT
7958     {
7959       pDynamicOffsets = pDynamicOffsets_;
7960       return *this;
7961     }
7962 
7963 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDynamicOffsetsVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7964     BindDescriptorSetsInfo & setDynamicOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & dynamicOffsets_ ) VULKAN_HPP_NOEXCEPT
7965     {
7966       dynamicOffsetCount = static_cast<uint32_t>( dynamicOffsets_.size() );
7967       pDynamicOffsets    = dynamicOffsets_.data();
7968       return *this;
7969     }
7970 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7971 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7972 
operator VkBindDescriptorSetsInfo const&VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7973     operator VkBindDescriptorSetsInfo const &() const VULKAN_HPP_NOEXCEPT
7974     {
7975       return *reinterpret_cast<const VkBindDescriptorSetsInfo *>( this );
7976     }
7977 
operator VkBindDescriptorSetsInfo&VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7978     operator VkBindDescriptorSetsInfo &() VULKAN_HPP_NOEXCEPT
7979     {
7980       return *reinterpret_cast<VkBindDescriptorSetsInfo *>( this );
7981     }
7982 
7983 #if defined( VULKAN_HPP_USE_REFLECT )
7984 #  if 14 <= VULKAN_HPP_CPP_VERSION
7985     auto
7986 #  else
7987     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7988                const void * const &,
7989                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
7990                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
7991                uint32_t const &,
7992                uint32_t const &,
7993                const VULKAN_HPP_NAMESPACE::DescriptorSet * const &,
7994                uint32_t const &,
7995                const uint32_t * const &>
7996 #  endif
reflectVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo7997       reflect() const VULKAN_HPP_NOEXCEPT
7998     {
7999       return std::tie( sType, pNext, stageFlags, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets );
8000     }
8001 #endif
8002 
8003 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8004     auto operator<=>( BindDescriptorSetsInfo const & ) const = default;
8005 #else
operator ==VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo8006     bool operator==( BindDescriptorSetsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8007     {
8008 #  if defined( VULKAN_HPP_USE_REFLECT )
8009       return this->reflect() == rhs.reflect();
8010 #  else
8011       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( firstSet == rhs.firstSet ) &&
8012              ( descriptorSetCount == rhs.descriptorSetCount ) && ( pDescriptorSets == rhs.pDescriptorSets ) &&
8013              ( dynamicOffsetCount == rhs.dynamicOffsetCount ) && ( pDynamicOffsets == rhs.pDynamicOffsets );
8014 #  endif
8015     }
8016 
operator !=VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo8017     bool operator!=( BindDescriptorSetsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8018     {
8019       return !operator==( rhs );
8020     }
8021 #endif
8022 
8023   public:
8024     VULKAN_HPP_NAMESPACE::StructureType         sType              = StructureType::eBindDescriptorSetsInfo;
8025     const void *                                pNext              = {};
8026     VULKAN_HPP_NAMESPACE::ShaderStageFlags      stageFlags         = {};
8027     VULKAN_HPP_NAMESPACE::PipelineLayout        layout             = {};
8028     uint32_t                                    firstSet           = {};
8029     uint32_t                                    descriptorSetCount = {};
8030     const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets    = {};
8031     uint32_t                                    dynamicOffsetCount = {};
8032     const uint32_t *                            pDynamicOffsets    = {};
8033   };
8034 
8035   template <>
8036   struct CppType<StructureType, StructureType::eBindDescriptorSetsInfo>
8037   {
8038     using Type = BindDescriptorSetsInfo;
8039   };
8040 
8041   using BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo;
8042 
8043   struct Offset2D
8044   {
8045     using NativeType = VkOffset2D;
8046 
8047 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Offset2DVULKAN_HPP_NAMESPACE::Offset2D8048     VULKAN_HPP_CONSTEXPR Offset2D( int32_t x_ = {}, int32_t y_ = {} ) VULKAN_HPP_NOEXCEPT
8049       : x{ x_ }
8050       , y{ y_ }
8051     {
8052     }
8053 
8054     VULKAN_HPP_CONSTEXPR Offset2D( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8055 
Offset2DVULKAN_HPP_NAMESPACE::Offset2D8056     Offset2D( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT : Offset2D( *reinterpret_cast<Offset2D const *>( &rhs ) ) {}
8057 
8058     Offset2D & operator=( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8059 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8060 
operator =VULKAN_HPP_NAMESPACE::Offset2D8061     Offset2D & operator=( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT
8062     {
8063       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Offset2D const *>( &rhs );
8064       return *this;
8065     }
8066 
8067 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Offset2D8068     VULKAN_HPP_CONSTEXPR_14 Offset2D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT
8069     {
8070       x = x_;
8071       return *this;
8072     }
8073 
setYVULKAN_HPP_NAMESPACE::Offset2D8074     VULKAN_HPP_CONSTEXPR_14 Offset2D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT
8075     {
8076       y = y_;
8077       return *this;
8078     }
8079 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8080 
operator VkOffset2D const&VULKAN_HPP_NAMESPACE::Offset2D8081     operator VkOffset2D const &() const VULKAN_HPP_NOEXCEPT
8082     {
8083       return *reinterpret_cast<const VkOffset2D *>( this );
8084     }
8085 
operator VkOffset2D&VULKAN_HPP_NAMESPACE::Offset2D8086     operator VkOffset2D &() VULKAN_HPP_NOEXCEPT
8087     {
8088       return *reinterpret_cast<VkOffset2D *>( this );
8089     }
8090 
8091 #if defined( VULKAN_HPP_USE_REFLECT )
8092 #  if 14 <= VULKAN_HPP_CPP_VERSION
8093     auto
8094 #  else
8095     std::tuple<int32_t const &, int32_t const &>
8096 #  endif
reflectVULKAN_HPP_NAMESPACE::Offset2D8097       reflect() const VULKAN_HPP_NOEXCEPT
8098     {
8099       return std::tie( x, y );
8100     }
8101 #endif
8102 
8103 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8104     auto operator<=>( Offset2D const & ) const = default;
8105 #else
operator ==VULKAN_HPP_NAMESPACE::Offset2D8106     bool operator==( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT
8107     {
8108 #  if defined( VULKAN_HPP_USE_REFLECT )
8109       return this->reflect() == rhs.reflect();
8110 #  else
8111       return ( x == rhs.x ) && ( y == rhs.y );
8112 #  endif
8113     }
8114 
operator !=VULKAN_HPP_NAMESPACE::Offset2D8115     bool operator!=( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT
8116     {
8117       return !operator==( rhs );
8118     }
8119 #endif
8120 
8121   public:
8122     int32_t x = {};
8123     int32_t y = {};
8124   };
8125 
8126   struct Rect2D
8127   {
8128     using NativeType = VkRect2D;
8129 
8130 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Rect2DVULKAN_HPP_NAMESPACE::Rect2D8131     VULKAN_HPP_CONSTEXPR Rect2D( VULKAN_HPP_NAMESPACE::Offset2D offset_ = {}, VULKAN_HPP_NAMESPACE::Extent2D extent_ = {} ) VULKAN_HPP_NOEXCEPT
8132       : offset{ offset_ }
8133       , extent{ extent_ }
8134     {
8135     }
8136 
8137     VULKAN_HPP_CONSTEXPR Rect2D( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8138 
Rect2DVULKAN_HPP_NAMESPACE::Rect2D8139     Rect2D( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT : Rect2D( *reinterpret_cast<Rect2D const *>( &rhs ) ) {}
8140 
8141     Rect2D & operator=( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8142 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8143 
operator =VULKAN_HPP_NAMESPACE::Rect2D8144     Rect2D & operator=( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT
8145     {
8146       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Rect2D const *>( &rhs );
8147       return *this;
8148     }
8149 
8150 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setOffsetVULKAN_HPP_NAMESPACE::Rect2D8151     VULKAN_HPP_CONSTEXPR_14 Rect2D & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT
8152     {
8153       offset = offset_;
8154       return *this;
8155     }
8156 
setExtentVULKAN_HPP_NAMESPACE::Rect2D8157     VULKAN_HPP_CONSTEXPR_14 Rect2D & setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT
8158     {
8159       extent = extent_;
8160       return *this;
8161     }
8162 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8163 
operator VkRect2D const&VULKAN_HPP_NAMESPACE::Rect2D8164     operator VkRect2D const &() const VULKAN_HPP_NOEXCEPT
8165     {
8166       return *reinterpret_cast<const VkRect2D *>( this );
8167     }
8168 
operator VkRect2D&VULKAN_HPP_NAMESPACE::Rect2D8169     operator VkRect2D &() VULKAN_HPP_NOEXCEPT
8170     {
8171       return *reinterpret_cast<VkRect2D *>( this );
8172     }
8173 
8174 #if defined( VULKAN_HPP_USE_REFLECT )
8175 #  if 14 <= VULKAN_HPP_CPP_VERSION
8176     auto
8177 #  else
8178     std::tuple<VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
8179 #  endif
reflectVULKAN_HPP_NAMESPACE::Rect2D8180       reflect() const VULKAN_HPP_NOEXCEPT
8181     {
8182       return std::tie( offset, extent );
8183     }
8184 #endif
8185 
8186 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8187     auto operator<=>( Rect2D const & ) const = default;
8188 #else
operator ==VULKAN_HPP_NAMESPACE::Rect2D8189     bool operator==( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT
8190     {
8191 #  if defined( VULKAN_HPP_USE_REFLECT )
8192       return this->reflect() == rhs.reflect();
8193 #  else
8194       return ( offset == rhs.offset ) && ( extent == rhs.extent );
8195 #  endif
8196     }
8197 
operator !=VULKAN_HPP_NAMESPACE::Rect2D8198     bool operator!=( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT
8199     {
8200       return !operator==( rhs );
8201     }
8202 #endif
8203 
8204   public:
8205     VULKAN_HPP_NAMESPACE::Offset2D offset = {};
8206     VULKAN_HPP_NAMESPACE::Extent2D extent = {};
8207   };
8208 
8209   struct BindImageMemoryDeviceGroupInfo
8210   {
8211     using NativeType = VkBindImageMemoryDeviceGroupInfo;
8212 
8213     static const bool                                  allowDuplicate = false;
8214     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImageMemoryDeviceGroupInfo;
8215 
8216 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8217     VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo( uint32_t                             deviceIndexCount_             = {},
8218                                                          const uint32_t *                     pDeviceIndices_               = {},
8219                                                          uint32_t                             splitInstanceBindRegionCount_ = {},
8220                                                          const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions_    = {},
8221                                                          const void *                         pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
8222       : pNext{ pNext_ }
8223       , deviceIndexCount{ deviceIndexCount_ }
8224       , pDeviceIndices{ pDeviceIndices_ }
8225       , splitInstanceBindRegionCount{ splitInstanceBindRegionCount_ }
8226       , pSplitInstanceBindRegions{ pSplitInstanceBindRegions_ }
8227     {
8228     }
8229 
8230     VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8231 
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8232     BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8233       : BindImageMemoryDeviceGroupInfo( *reinterpret_cast<BindImageMemoryDeviceGroupInfo const *>( &rhs ) )
8234     {
8235     }
8236 
8237 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8238     BindImageMemoryDeviceGroupInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                     deviceIndices_,
8239                                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & splitInstanceBindRegions_ = {},
8240                                     const void *                                                                              pNext_ = nullptr )
8241       : pNext( pNext_ )
8242       , deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) )
8243       , pDeviceIndices( deviceIndices_.data() )
8244       , splitInstanceBindRegionCount( static_cast<uint32_t>( splitInstanceBindRegions_.size() ) )
8245       , pSplitInstanceBindRegions( splitInstanceBindRegions_.data() )
8246     {
8247     }
8248 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8249 
8250     BindImageMemoryDeviceGroupInfo & operator=( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8251 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8252 
operator =VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8253     BindImageMemoryDeviceGroupInfo & operator=( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8254     {
8255       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo const *>( &rhs );
8256       return *this;
8257     }
8258 
8259 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8260     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8261     {
8262       pNext = pNext_;
8263       return *this;
8264     }
8265 
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8266     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
8267     {
8268       deviceIndexCount = deviceIndexCount_;
8269       return *this;
8270     }
8271 
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8272     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
8273     {
8274       pDeviceIndices = pDeviceIndices_;
8275       return *this;
8276     }
8277 
8278 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
8279     BindImageMemoryDeviceGroupInfo &
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8280       setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
8281     {
8282       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
8283       pDeviceIndices   = deviceIndices_.data();
8284       return *this;
8285     }
8286 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8287 
setSplitInstanceBindRegionCountVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8288     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ ) VULKAN_HPP_NOEXCEPT
8289     {
8290       splitInstanceBindRegionCount = splitInstanceBindRegionCount_;
8291       return *this;
8292     }
8293 
8294     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo &
setPSplitInstanceBindRegionsVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8295       setPSplitInstanceBindRegions( const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT
8296     {
8297       pSplitInstanceBindRegions = pSplitInstanceBindRegions_;
8298       return *this;
8299     }
8300 
8301 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSplitInstanceBindRegionsVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8302     BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegions(
8303       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & splitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT
8304     {
8305       splitInstanceBindRegionCount = static_cast<uint32_t>( splitInstanceBindRegions_.size() );
8306       pSplitInstanceBindRegions    = splitInstanceBindRegions_.data();
8307       return *this;
8308     }
8309 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8310 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8311 
operator VkBindImageMemoryDeviceGroupInfo const&VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8312     operator VkBindImageMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT
8313     {
8314       return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo *>( this );
8315     }
8316 
operator VkBindImageMemoryDeviceGroupInfo&VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8317     operator VkBindImageMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT
8318     {
8319       return *reinterpret_cast<VkBindImageMemoryDeviceGroupInfo *>( this );
8320     }
8321 
8322 #if defined( VULKAN_HPP_USE_REFLECT )
8323 #  if 14 <= VULKAN_HPP_CPP_VERSION
8324     auto
8325 #  else
8326     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
8327                const void * const &,
8328                uint32_t const &,
8329                const uint32_t * const &,
8330                uint32_t const &,
8331                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
8332 #  endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8333       reflect() const VULKAN_HPP_NOEXCEPT
8334     {
8335       return std::tie( sType, pNext, deviceIndexCount, pDeviceIndices, splitInstanceBindRegionCount, pSplitInstanceBindRegions );
8336     }
8337 #endif
8338 
8339 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8340     auto operator<=>( BindImageMemoryDeviceGroupInfo const & ) const = default;
8341 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8342     bool operator==( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8343     {
8344 #  if defined( VULKAN_HPP_USE_REFLECT )
8345       return this->reflect() == rhs.reflect();
8346 #  else
8347       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceIndexCount == rhs.deviceIndexCount ) && ( pDeviceIndices == rhs.pDeviceIndices ) &&
8348              ( splitInstanceBindRegionCount == rhs.splitInstanceBindRegionCount ) && ( pSplitInstanceBindRegions == rhs.pSplitInstanceBindRegions );
8349 #  endif
8350     }
8351 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8352     bool operator!=( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8353     {
8354       return !operator==( rhs );
8355     }
8356 #endif
8357 
8358   public:
8359     VULKAN_HPP_NAMESPACE::StructureType  sType                        = StructureType::eBindImageMemoryDeviceGroupInfo;
8360     const void *                         pNext                        = {};
8361     uint32_t                             deviceIndexCount             = {};
8362     const uint32_t *                     pDeviceIndices               = {};
8363     uint32_t                             splitInstanceBindRegionCount = {};
8364     const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions    = {};
8365   };
8366 
8367   template <>
8368   struct CppType<StructureType, StructureType::eBindImageMemoryDeviceGroupInfo>
8369   {
8370     using Type = BindImageMemoryDeviceGroupInfo;
8371   };
8372 
8373   using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
8374 
8375   struct BindImageMemoryInfo
8376   {
8377     using NativeType = VkBindImageMemoryInfo;
8378 
8379     static const bool                                  allowDuplicate = false;
8380     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImageMemoryInfo;
8381 
8382 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemoryInfoVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8383     VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( VULKAN_HPP_NAMESPACE::Image        image_        = {},
8384                                               VULKAN_HPP_NAMESPACE::DeviceMemory memory_       = {},
8385                                               VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset_ = {},
8386                                               const void *                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
8387       : pNext{ pNext_ }
8388       , image{ image_ }
8389       , memory{ memory_ }
8390       , memoryOffset{ memoryOffset_ }
8391     {
8392     }
8393 
8394     VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8395 
BindImageMemoryInfoVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8396     BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT : BindImageMemoryInfo( *reinterpret_cast<BindImageMemoryInfo const *>( &rhs ) )
8397     {
8398     }
8399 
8400     BindImageMemoryInfo & operator=( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8401 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8402 
operator =VULKAN_HPP_NAMESPACE::BindImageMemoryInfo8403     BindImageMemoryInfo & operator=( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8404     {
8405       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemoryInfo const *>( &rhs );
8406       return *this;
8407     }
8408 
8409 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8410     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8411     {
8412       pNext = pNext_;
8413       return *this;
8414     }
8415 
setImageVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8416     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
8417     {
8418       image = image_;
8419       return *this;
8420     }
8421 
setMemoryVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8422     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
8423     {
8424       memory = memory_;
8425       return *this;
8426     }
8427 
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8428     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
8429     {
8430       memoryOffset = memoryOffset_;
8431       return *this;
8432     }
8433 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8434 
operator VkBindImageMemoryInfo const&VULKAN_HPP_NAMESPACE::BindImageMemoryInfo8435     operator VkBindImageMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
8436     {
8437       return *reinterpret_cast<const VkBindImageMemoryInfo *>( this );
8438     }
8439 
operator VkBindImageMemoryInfo&VULKAN_HPP_NAMESPACE::BindImageMemoryInfo8440     operator VkBindImageMemoryInfo &() VULKAN_HPP_NOEXCEPT
8441     {
8442       return *reinterpret_cast<VkBindImageMemoryInfo *>( this );
8443     }
8444 
8445 #if defined( VULKAN_HPP_USE_REFLECT )
8446 #  if 14 <= VULKAN_HPP_CPP_VERSION
8447     auto
8448 #  else
8449     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
8450                const void * const &,
8451                VULKAN_HPP_NAMESPACE::Image const &,
8452                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
8453                VULKAN_HPP_NAMESPACE::DeviceSize const &>
8454 #  endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8455       reflect() const VULKAN_HPP_NOEXCEPT
8456     {
8457       return std::tie( sType, pNext, image, memory, memoryOffset );
8458     }
8459 #endif
8460 
8461 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8462     auto operator<=>( BindImageMemoryInfo const & ) const = default;
8463 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemoryInfo8464     bool operator==( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8465     {
8466 #  if defined( VULKAN_HPP_USE_REFLECT )
8467       return this->reflect() == rhs.reflect();
8468 #  else
8469       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset );
8470 #  endif
8471     }
8472 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemoryInfo8473     bool operator!=( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8474     {
8475       return !operator==( rhs );
8476     }
8477 #endif
8478 
8479   public:
8480     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eBindImageMemoryInfo;
8481     const void *                        pNext        = {};
8482     VULKAN_HPP_NAMESPACE::Image         image        = {};
8483     VULKAN_HPP_NAMESPACE::DeviceMemory  memory       = {};
8484     VULKAN_HPP_NAMESPACE::DeviceSize    memoryOffset = {};
8485   };
8486 
8487   template <>
8488   struct CppType<StructureType, StructureType::eBindImageMemoryInfo>
8489   {
8490     using Type = BindImageMemoryInfo;
8491   };
8492 
8493   using BindImageMemoryInfoKHR = BindImageMemoryInfo;
8494 
8495   struct BindImageMemorySwapchainInfoKHR
8496   {
8497     using NativeType = VkBindImageMemorySwapchainInfoKHR;
8498 
8499     static const bool                                  allowDuplicate = false;
8500     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImageMemorySwapchainInfoKHR;
8501 
8502 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemorySwapchainInfoKHRVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8503     VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_  = {},
8504                                                           uint32_t                           imageIndex_ = {},
8505                                                           const void *                       pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
8506       : pNext{ pNext_ }
8507       , swapchain{ swapchain_ }
8508       , imageIndex{ imageIndex_ }
8509     {
8510     }
8511 
8512     VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8513 
BindImageMemorySwapchainInfoKHRVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8514     BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
8515       : BindImageMemorySwapchainInfoKHR( *reinterpret_cast<BindImageMemorySwapchainInfoKHR const *>( &rhs ) )
8516     {
8517     }
8518 
8519     BindImageMemorySwapchainInfoKHR & operator=( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8520 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8521 
operator =VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8522     BindImageMemorySwapchainInfoKHR & operator=( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
8523     {
8524       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR const *>( &rhs );
8525       return *this;
8526     }
8527 
8528 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8529     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8530     {
8531       pNext = pNext_;
8532       return *this;
8533     }
8534 
setSwapchainVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8535     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
8536     {
8537       swapchain = swapchain_;
8538       return *this;
8539     }
8540 
setImageIndexVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8541     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setImageIndex( uint32_t imageIndex_ ) VULKAN_HPP_NOEXCEPT
8542     {
8543       imageIndex = imageIndex_;
8544       return *this;
8545     }
8546 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8547 
operator VkBindImageMemorySwapchainInfoKHR const&VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8548     operator VkBindImageMemorySwapchainInfoKHR const &() const VULKAN_HPP_NOEXCEPT
8549     {
8550       return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR *>( this );
8551     }
8552 
operator VkBindImageMemorySwapchainInfoKHR&VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8553     operator VkBindImageMemorySwapchainInfoKHR &() VULKAN_HPP_NOEXCEPT
8554     {
8555       return *reinterpret_cast<VkBindImageMemorySwapchainInfoKHR *>( this );
8556     }
8557 
8558 #if defined( VULKAN_HPP_USE_REFLECT )
8559 #  if 14 <= VULKAN_HPP_CPP_VERSION
8560     auto
8561 #  else
8562     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SwapchainKHR const &, uint32_t const &>
8563 #  endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8564       reflect() const VULKAN_HPP_NOEXCEPT
8565     {
8566       return std::tie( sType, pNext, swapchain, imageIndex );
8567     }
8568 #endif
8569 
8570 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8571     auto operator<=>( BindImageMemorySwapchainInfoKHR const & ) const = default;
8572 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8573     bool operator==( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
8574     {
8575 #  if defined( VULKAN_HPP_USE_REFLECT )
8576       return this->reflect() == rhs.reflect();
8577 #  else
8578       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && ( imageIndex == rhs.imageIndex );
8579 #  endif
8580     }
8581 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8582     bool operator!=( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
8583     {
8584       return !operator==( rhs );
8585     }
8586 #endif
8587 
8588   public:
8589     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eBindImageMemorySwapchainInfoKHR;
8590     const void *                        pNext      = {};
8591     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain  = {};
8592     uint32_t                            imageIndex = {};
8593   };
8594 
8595   template <>
8596   struct CppType<StructureType, StructureType::eBindImageMemorySwapchainInfoKHR>
8597   {
8598     using Type = BindImageMemorySwapchainInfoKHR;
8599   };
8600 
8601   struct BindImagePlaneMemoryInfo
8602   {
8603     using NativeType = VkBindImagePlaneMemoryInfo;
8604 
8605     static const bool                                  allowDuplicate = false;
8606     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImagePlaneMemoryInfo;
8607 
8608 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImagePlaneMemoryInfoVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8609     VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor,
8610                                                    const void *                              pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
8611       : pNext{ pNext_ }
8612       , planeAspect{ planeAspect_ }
8613     {
8614     }
8615 
8616     VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8617 
BindImagePlaneMemoryInfoVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8618     BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8619       : BindImagePlaneMemoryInfo( *reinterpret_cast<BindImagePlaneMemoryInfo const *>( &rhs ) )
8620     {
8621     }
8622 
8623     BindImagePlaneMemoryInfo & operator=( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8624 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8625 
operator =VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8626     BindImagePlaneMemoryInfo & operator=( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8627     {
8628       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo const *>( &rhs );
8629       return *this;
8630     }
8631 
8632 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8633     VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8634     {
8635       pNext = pNext_;
8636       return *this;
8637     }
8638 
setPlaneAspectVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8639     VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
8640     {
8641       planeAspect = planeAspect_;
8642       return *this;
8643     }
8644 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8645 
operator VkBindImagePlaneMemoryInfo const&VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8646     operator VkBindImagePlaneMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
8647     {
8648       return *reinterpret_cast<const VkBindImagePlaneMemoryInfo *>( this );
8649     }
8650 
operator VkBindImagePlaneMemoryInfo&VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8651     operator VkBindImagePlaneMemoryInfo &() VULKAN_HPP_NOEXCEPT
8652     {
8653       return *reinterpret_cast<VkBindImagePlaneMemoryInfo *>( this );
8654     }
8655 
8656 #if defined( VULKAN_HPP_USE_REFLECT )
8657 #  if 14 <= VULKAN_HPP_CPP_VERSION
8658     auto
8659 #  else
8660     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
8661 #  endif
reflectVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8662       reflect() const VULKAN_HPP_NOEXCEPT
8663     {
8664       return std::tie( sType, pNext, planeAspect );
8665     }
8666 #endif
8667 
8668 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8669     auto operator<=>( BindImagePlaneMemoryInfo const & ) const = default;
8670 #else
operator ==VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8671     bool operator==( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8672     {
8673 #  if defined( VULKAN_HPP_USE_REFLECT )
8674       return this->reflect() == rhs.reflect();
8675 #  else
8676       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( planeAspect == rhs.planeAspect );
8677 #  endif
8678     }
8679 
operator !=VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8680     bool operator!=( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8681     {
8682       return !operator==( rhs );
8683     }
8684 #endif
8685 
8686   public:
8687     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eBindImagePlaneMemoryInfo;
8688     const void *                              pNext       = {};
8689     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
8690   };
8691 
8692   template <>
8693   struct CppType<StructureType, StructureType::eBindImagePlaneMemoryInfo>
8694   {
8695     using Type = BindImagePlaneMemoryInfo;
8696   };
8697 
8698   using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
8699 
8700   struct BindIndexBufferIndirectCommandNV
8701   {
8702     using NativeType = VkBindIndexBufferIndirectCommandNV;
8703 
8704 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
8705     VULKAN_HPP_CONSTEXPR
BindIndexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8706       BindIndexBufferIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {},
8707                                         uint32_t                            size_          = {},
8708                                         VULKAN_HPP_NAMESPACE::IndexType     indexType_     = VULKAN_HPP_NAMESPACE::IndexType::eUint16 ) VULKAN_HPP_NOEXCEPT
8709       : bufferAddress{ bufferAddress_ }
8710       , size{ size_ }
8711       , indexType{ indexType_ }
8712     {
8713     }
8714 
8715     VULKAN_HPP_CONSTEXPR BindIndexBufferIndirectCommandNV( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8716 
BindIndexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8717     BindIndexBufferIndirectCommandNV( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8718       : BindIndexBufferIndirectCommandNV( *reinterpret_cast<BindIndexBufferIndirectCommandNV const *>( &rhs ) )
8719     {
8720     }
8721 
8722     BindIndexBufferIndirectCommandNV & operator=( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8723 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8724 
operator =VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8725     BindIndexBufferIndirectCommandNV & operator=( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8726     {
8727       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV const *>( &rhs );
8728       return *this;
8729     }
8730 
8731 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferAddressVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8732     VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT
8733     {
8734       bufferAddress = bufferAddress_;
8735       return *this;
8736     }
8737 
setSizeVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8738     VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
8739     {
8740       size = size_;
8741       return *this;
8742     }
8743 
setIndexTypeVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8744     VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
8745     {
8746       indexType = indexType_;
8747       return *this;
8748     }
8749 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8750 
operator VkBindIndexBufferIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8751     operator VkBindIndexBufferIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
8752     {
8753       return *reinterpret_cast<const VkBindIndexBufferIndirectCommandNV *>( this );
8754     }
8755 
operator VkBindIndexBufferIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8756     operator VkBindIndexBufferIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
8757     {
8758       return *reinterpret_cast<VkBindIndexBufferIndirectCommandNV *>( this );
8759     }
8760 
8761 #if defined( VULKAN_HPP_USE_REFLECT )
8762 #  if 14 <= VULKAN_HPP_CPP_VERSION
8763     auto
8764 #  else
8765     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, uint32_t const &, VULKAN_HPP_NAMESPACE::IndexType const &>
8766 #  endif
reflectVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8767       reflect() const VULKAN_HPP_NOEXCEPT
8768     {
8769       return std::tie( bufferAddress, size, indexType );
8770     }
8771 #endif
8772 
8773 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8774     auto operator<=>( BindIndexBufferIndirectCommandNV const & ) const = default;
8775 #else
operator ==VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8776     bool operator==( BindIndexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8777     {
8778 #  if defined( VULKAN_HPP_USE_REFLECT )
8779       return this->reflect() == rhs.reflect();
8780 #  else
8781       return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( indexType == rhs.indexType );
8782 #  endif
8783     }
8784 
operator !=VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8785     bool operator!=( BindIndexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8786     {
8787       return !operator==( rhs );
8788     }
8789 #endif
8790 
8791   public:
8792     VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {};
8793     uint32_t                            size          = {};
8794     VULKAN_HPP_NAMESPACE::IndexType     indexType     = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
8795   };
8796 
8797   struct BindMemoryStatus
8798   {
8799     using NativeType = VkBindMemoryStatus;
8800 
8801     static const bool                                  allowDuplicate = false;
8802     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindMemoryStatus;
8803 
8804 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindMemoryStatusVULKAN_HPP_NAMESPACE::BindMemoryStatus8805     VULKAN_HPP_CONSTEXPR BindMemoryStatus( VULKAN_HPP_NAMESPACE::Result * pResult_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
8806       : pNext{ pNext_ }
8807       , pResult{ pResult_ }
8808     {
8809     }
8810 
8811     VULKAN_HPP_CONSTEXPR BindMemoryStatus( BindMemoryStatus const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8812 
BindMemoryStatusVULKAN_HPP_NAMESPACE::BindMemoryStatus8813     BindMemoryStatus( VkBindMemoryStatus const & rhs ) VULKAN_HPP_NOEXCEPT : BindMemoryStatus( *reinterpret_cast<BindMemoryStatus const *>( &rhs ) ) {}
8814 
8815     BindMemoryStatus & operator=( BindMemoryStatus const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8816 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8817 
operator =VULKAN_HPP_NAMESPACE::BindMemoryStatus8818     BindMemoryStatus & operator=( VkBindMemoryStatus const & rhs ) VULKAN_HPP_NOEXCEPT
8819     {
8820       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindMemoryStatus const *>( &rhs );
8821       return *this;
8822     }
8823 
8824 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindMemoryStatus8825     VULKAN_HPP_CONSTEXPR_14 BindMemoryStatus & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8826     {
8827       pNext = pNext_;
8828       return *this;
8829     }
8830 
setPResultVULKAN_HPP_NAMESPACE::BindMemoryStatus8831     VULKAN_HPP_CONSTEXPR_14 BindMemoryStatus & setPResult( VULKAN_HPP_NAMESPACE::Result * pResult_ ) VULKAN_HPP_NOEXCEPT
8832     {
8833       pResult = pResult_;
8834       return *this;
8835     }
8836 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8837 
operator VkBindMemoryStatus const&VULKAN_HPP_NAMESPACE::BindMemoryStatus8838     operator VkBindMemoryStatus const &() const VULKAN_HPP_NOEXCEPT
8839     {
8840       return *reinterpret_cast<const VkBindMemoryStatus *>( this );
8841     }
8842 
operator VkBindMemoryStatus&VULKAN_HPP_NAMESPACE::BindMemoryStatus8843     operator VkBindMemoryStatus &() VULKAN_HPP_NOEXCEPT
8844     {
8845       return *reinterpret_cast<VkBindMemoryStatus *>( this );
8846     }
8847 
8848 #if defined( VULKAN_HPP_USE_REFLECT )
8849 #  if 14 <= VULKAN_HPP_CPP_VERSION
8850     auto
8851 #  else
8852     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Result * const &>
8853 #  endif
reflectVULKAN_HPP_NAMESPACE::BindMemoryStatus8854       reflect() const VULKAN_HPP_NOEXCEPT
8855     {
8856       return std::tie( sType, pNext, pResult );
8857     }
8858 #endif
8859 
8860 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8861     auto operator<=>( BindMemoryStatus const & ) const = default;
8862 #else
operator ==VULKAN_HPP_NAMESPACE::BindMemoryStatus8863     bool operator==( BindMemoryStatus const & rhs ) const VULKAN_HPP_NOEXCEPT
8864     {
8865 #  if defined( VULKAN_HPP_USE_REFLECT )
8866       return this->reflect() == rhs.reflect();
8867 #  else
8868       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pResult == rhs.pResult );
8869 #  endif
8870     }
8871 
operator !=VULKAN_HPP_NAMESPACE::BindMemoryStatus8872     bool operator!=( BindMemoryStatus const & rhs ) const VULKAN_HPP_NOEXCEPT
8873     {
8874       return !operator==( rhs );
8875     }
8876 #endif
8877 
8878   public:
8879     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::eBindMemoryStatus;
8880     const void *                        pNext   = {};
8881     VULKAN_HPP_NAMESPACE::Result *      pResult = {};
8882   };
8883 
8884   template <>
8885   struct CppType<StructureType, StructureType::eBindMemoryStatus>
8886   {
8887     using Type = BindMemoryStatus;
8888   };
8889 
8890   using BindMemoryStatusKHR = BindMemoryStatus;
8891 
8892   struct BindPipelineIndirectCommandNV
8893   {
8894     using NativeType = VkBindPipelineIndirectCommandNV;
8895 
8896 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindPipelineIndirectCommandNVVULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8897     VULKAN_HPP_CONSTEXPR BindPipelineIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress pipelineAddress_ = {} ) VULKAN_HPP_NOEXCEPT
8898       : pipelineAddress{ pipelineAddress_ }
8899     {
8900     }
8901 
8902     VULKAN_HPP_CONSTEXPR BindPipelineIndirectCommandNV( BindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8903 
BindPipelineIndirectCommandNVVULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8904     BindPipelineIndirectCommandNV( VkBindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8905       : BindPipelineIndirectCommandNV( *reinterpret_cast<BindPipelineIndirectCommandNV const *>( &rhs ) )
8906     {
8907     }
8908 
8909     BindPipelineIndirectCommandNV & operator=( BindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8910 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8911 
operator =VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8912     BindPipelineIndirectCommandNV & operator=( VkBindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8913     {
8914       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV const *>( &rhs );
8915       return *this;
8916     }
8917 
8918 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPipelineAddressVULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8919     VULKAN_HPP_CONSTEXPR_14 BindPipelineIndirectCommandNV & setPipelineAddress( VULKAN_HPP_NAMESPACE::DeviceAddress pipelineAddress_ ) VULKAN_HPP_NOEXCEPT
8920     {
8921       pipelineAddress = pipelineAddress_;
8922       return *this;
8923     }
8924 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8925 
operator VkBindPipelineIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8926     operator VkBindPipelineIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
8927     {
8928       return *reinterpret_cast<const VkBindPipelineIndirectCommandNV *>( this );
8929     }
8930 
operator VkBindPipelineIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8931     operator VkBindPipelineIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
8932     {
8933       return *reinterpret_cast<VkBindPipelineIndirectCommandNV *>( this );
8934     }
8935 
8936 #if defined( VULKAN_HPP_USE_REFLECT )
8937 #  if 14 <= VULKAN_HPP_CPP_VERSION
8938     auto
8939 #  else
8940     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &>
8941 #  endif
reflectVULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8942       reflect() const VULKAN_HPP_NOEXCEPT
8943     {
8944       return std::tie( pipelineAddress );
8945     }
8946 #endif
8947 
8948 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8949     auto operator<=>( BindPipelineIndirectCommandNV const & ) const = default;
8950 #else
operator ==VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8951     bool operator==( BindPipelineIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8952     {
8953 #  if defined( VULKAN_HPP_USE_REFLECT )
8954       return this->reflect() == rhs.reflect();
8955 #  else
8956       return ( pipelineAddress == rhs.pipelineAddress );
8957 #  endif
8958     }
8959 
operator !=VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8960     bool operator!=( BindPipelineIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8961     {
8962       return !operator==( rhs );
8963     }
8964 #endif
8965 
8966   public:
8967     VULKAN_HPP_NAMESPACE::DeviceAddress pipelineAddress = {};
8968   };
8969 
8970   struct BindShaderGroupIndirectCommandNV
8971   {
8972     using NativeType = VkBindShaderGroupIndirectCommandNV;
8973 
8974 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindShaderGroupIndirectCommandNVVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8975     VULKAN_HPP_CONSTEXPR BindShaderGroupIndirectCommandNV( uint32_t groupIndex_ = {} ) VULKAN_HPP_NOEXCEPT : groupIndex{ groupIndex_ } {}
8976 
8977     VULKAN_HPP_CONSTEXPR BindShaderGroupIndirectCommandNV( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8978 
BindShaderGroupIndirectCommandNVVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8979     BindShaderGroupIndirectCommandNV( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8980       : BindShaderGroupIndirectCommandNV( *reinterpret_cast<BindShaderGroupIndirectCommandNV const *>( &rhs ) )
8981     {
8982     }
8983 
8984     BindShaderGroupIndirectCommandNV & operator=( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8985 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8986 
operator =VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8987     BindShaderGroupIndirectCommandNV & operator=( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8988     {
8989       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV const *>( &rhs );
8990       return *this;
8991     }
8992 
8993 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setGroupIndexVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8994     VULKAN_HPP_CONSTEXPR_14 BindShaderGroupIndirectCommandNV & setGroupIndex( uint32_t groupIndex_ ) VULKAN_HPP_NOEXCEPT
8995     {
8996       groupIndex = groupIndex_;
8997       return *this;
8998     }
8999 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9000 
operator VkBindShaderGroupIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV9001     operator VkBindShaderGroupIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
9002     {
9003       return *reinterpret_cast<const VkBindShaderGroupIndirectCommandNV *>( this );
9004     }
9005 
operator VkBindShaderGroupIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV9006     operator VkBindShaderGroupIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
9007     {
9008       return *reinterpret_cast<VkBindShaderGroupIndirectCommandNV *>( this );
9009     }
9010 
9011 #if defined( VULKAN_HPP_USE_REFLECT )
9012 #  if 14 <= VULKAN_HPP_CPP_VERSION
9013     auto
9014 #  else
9015     std::tuple<uint32_t const &>
9016 #  endif
reflectVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV9017       reflect() const VULKAN_HPP_NOEXCEPT
9018     {
9019       return std::tie( groupIndex );
9020     }
9021 #endif
9022 
9023 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9024     auto operator<=>( BindShaderGroupIndirectCommandNV const & ) const = default;
9025 #else
operator ==VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV9026     bool operator==( BindShaderGroupIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
9027     {
9028 #  if defined( VULKAN_HPP_USE_REFLECT )
9029       return this->reflect() == rhs.reflect();
9030 #  else
9031       return ( groupIndex == rhs.groupIndex );
9032 #  endif
9033     }
9034 
operator !=VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV9035     bool operator!=( BindShaderGroupIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
9036     {
9037       return !operator==( rhs );
9038     }
9039 #endif
9040 
9041   public:
9042     uint32_t groupIndex = {};
9043   };
9044 
9045   struct SparseMemoryBind
9046   {
9047     using NativeType = VkSparseMemoryBind;
9048 
9049 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseMemoryBindVULKAN_HPP_NAMESPACE::SparseMemoryBind9050     VULKAN_HPP_CONSTEXPR SparseMemoryBind( VULKAN_HPP_NAMESPACE::DeviceSize            resourceOffset_ = {},
9051                                            VULKAN_HPP_NAMESPACE::DeviceSize            size_           = {},
9052                                            VULKAN_HPP_NAMESPACE::DeviceMemory          memory_         = {},
9053                                            VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset_   = {},
9054                                            VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_          = {} ) VULKAN_HPP_NOEXCEPT
9055       : resourceOffset{ resourceOffset_ }
9056       , size{ size_ }
9057       , memory{ memory_ }
9058       , memoryOffset{ memoryOffset_ }
9059       , flags{ flags_ }
9060     {
9061     }
9062 
9063     VULKAN_HPP_CONSTEXPR SparseMemoryBind( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9064 
SparseMemoryBindVULKAN_HPP_NAMESPACE::SparseMemoryBind9065     SparseMemoryBind( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT : SparseMemoryBind( *reinterpret_cast<SparseMemoryBind const *>( &rhs ) ) {}
9066 
9067     SparseMemoryBind & operator=( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9068 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9069 
operator =VULKAN_HPP_NAMESPACE::SparseMemoryBind9070     SparseMemoryBind & operator=( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
9071     {
9072       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseMemoryBind const *>( &rhs );
9073       return *this;
9074     }
9075 
9076 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setResourceOffsetVULKAN_HPP_NAMESPACE::SparseMemoryBind9077     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setResourceOffset( VULKAN_HPP_NAMESPACE::DeviceSize resourceOffset_ ) VULKAN_HPP_NOEXCEPT
9078     {
9079       resourceOffset = resourceOffset_;
9080       return *this;
9081     }
9082 
setSizeVULKAN_HPP_NAMESPACE::SparseMemoryBind9083     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
9084     {
9085       size = size_;
9086       return *this;
9087     }
9088 
setMemoryVULKAN_HPP_NAMESPACE::SparseMemoryBind9089     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
9090     {
9091       memory = memory_;
9092       return *this;
9093     }
9094 
setMemoryOffsetVULKAN_HPP_NAMESPACE::SparseMemoryBind9095     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
9096     {
9097       memoryOffset = memoryOffset_;
9098       return *this;
9099     }
9100 
setFlagsVULKAN_HPP_NAMESPACE::SparseMemoryBind9101     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setFlags( VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ ) VULKAN_HPP_NOEXCEPT
9102     {
9103       flags = flags_;
9104       return *this;
9105     }
9106 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9107 
operator VkSparseMemoryBind const&VULKAN_HPP_NAMESPACE::SparseMemoryBind9108     operator VkSparseMemoryBind const &() const VULKAN_HPP_NOEXCEPT
9109     {
9110       return *reinterpret_cast<const VkSparseMemoryBind *>( this );
9111     }
9112 
operator VkSparseMemoryBind&VULKAN_HPP_NAMESPACE::SparseMemoryBind9113     operator VkSparseMemoryBind &() VULKAN_HPP_NOEXCEPT
9114     {
9115       return *reinterpret_cast<VkSparseMemoryBind *>( this );
9116     }
9117 
9118 #if defined( VULKAN_HPP_USE_REFLECT )
9119 #  if 14 <= VULKAN_HPP_CPP_VERSION
9120     auto
9121 #  else
9122     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &,
9123                VULKAN_HPP_NAMESPACE::DeviceSize const &,
9124                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
9125                VULKAN_HPP_NAMESPACE::DeviceSize const &,
9126                VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags const &>
9127 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseMemoryBind9128       reflect() const VULKAN_HPP_NOEXCEPT
9129     {
9130       return std::tie( resourceOffset, size, memory, memoryOffset, flags );
9131     }
9132 #endif
9133 
9134 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9135     auto operator<=>( SparseMemoryBind const & ) const = default;
9136 #else
operator ==VULKAN_HPP_NAMESPACE::SparseMemoryBind9137     bool operator==( SparseMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
9138     {
9139 #  if defined( VULKAN_HPP_USE_REFLECT )
9140       return this->reflect() == rhs.reflect();
9141 #  else
9142       return ( resourceOffset == rhs.resourceOffset ) && ( size == rhs.size ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset ) &&
9143              ( flags == rhs.flags );
9144 #  endif
9145     }
9146 
operator !=VULKAN_HPP_NAMESPACE::SparseMemoryBind9147     bool operator!=( SparseMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
9148     {
9149       return !operator==( rhs );
9150     }
9151 #endif
9152 
9153   public:
9154     VULKAN_HPP_NAMESPACE::DeviceSize            resourceOffset = {};
9155     VULKAN_HPP_NAMESPACE::DeviceSize            size           = {};
9156     VULKAN_HPP_NAMESPACE::DeviceMemory          memory         = {};
9157     VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset   = {};
9158     VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags          = {};
9159   };
9160 
9161   struct SparseBufferMemoryBindInfo
9162   {
9163     using NativeType = VkSparseBufferMemoryBindInfo;
9164 
9165 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseBufferMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9166     VULKAN_HPP_CONSTEXPR SparseBufferMemoryBindInfo( VULKAN_HPP_NAMESPACE::Buffer                   buffer_    = {},
9167                                                      uint32_t                                       bindCount_ = {},
9168                                                      const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_    = {} ) VULKAN_HPP_NOEXCEPT
9169       : buffer{ buffer_ }
9170       , bindCount{ bindCount_ }
9171       , pBinds{ pBinds_ }
9172     {
9173     }
9174 
9175     VULKAN_HPP_CONSTEXPR SparseBufferMemoryBindInfo( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9176 
SparseBufferMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9177     SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9178       : SparseBufferMemoryBindInfo( *reinterpret_cast<SparseBufferMemoryBindInfo const *>( &rhs ) )
9179     {
9180     }
9181 
9182 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SparseBufferMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9183     SparseBufferMemoryBindInfo( VULKAN_HPP_NAMESPACE::Buffer                                                                        buffer_,
9184                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ )
9185       : buffer( buffer_ ), bindCount( static_cast<uint32_t>( binds_.size() ) ), pBinds( binds_.data() )
9186     {
9187     }
9188 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9189 
9190     SparseBufferMemoryBindInfo & operator=( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9191 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9192 
operator =VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9193     SparseBufferMemoryBindInfo & operator=( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9194     {
9195       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo const *>( &rhs );
9196       return *this;
9197     }
9198 
9199 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9200     VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
9201     {
9202       buffer = buffer_;
9203       return *this;
9204     }
9205 
setBindCountVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9206     VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT
9207     {
9208       bindCount = bindCount_;
9209       return *this;
9210     }
9211 
setPBindsVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9212     VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setPBinds( const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT
9213     {
9214       pBinds = pBinds_;
9215       return *this;
9216     }
9217 
9218 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
9219     SparseBufferMemoryBindInfo &
setBindsVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9220       setBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ ) VULKAN_HPP_NOEXCEPT
9221     {
9222       bindCount = static_cast<uint32_t>( binds_.size() );
9223       pBinds    = binds_.data();
9224       return *this;
9225     }
9226 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9227 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9228 
operator VkSparseBufferMemoryBindInfo const&VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9229     operator VkSparseBufferMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT
9230     {
9231       return *reinterpret_cast<const VkSparseBufferMemoryBindInfo *>( this );
9232     }
9233 
operator VkSparseBufferMemoryBindInfo&VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9234     operator VkSparseBufferMemoryBindInfo &() VULKAN_HPP_NOEXCEPT
9235     {
9236       return *reinterpret_cast<VkSparseBufferMemoryBindInfo *>( this );
9237     }
9238 
9239 #if defined( VULKAN_HPP_USE_REFLECT )
9240 #  if 14 <= VULKAN_HPP_CPP_VERSION
9241     auto
9242 #  else
9243     std::tuple<VULKAN_HPP_NAMESPACE::Buffer const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SparseMemoryBind * const &>
9244 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9245       reflect() const VULKAN_HPP_NOEXCEPT
9246     {
9247       return std::tie( buffer, bindCount, pBinds );
9248     }
9249 #endif
9250 
9251 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9252     auto operator<=>( SparseBufferMemoryBindInfo const & ) const = default;
9253 #else
operator ==VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9254     bool operator==( SparseBufferMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9255     {
9256 #  if defined( VULKAN_HPP_USE_REFLECT )
9257       return this->reflect() == rhs.reflect();
9258 #  else
9259       return ( buffer == rhs.buffer ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds );
9260 #  endif
9261     }
9262 
operator !=VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9263     bool operator!=( SparseBufferMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9264     {
9265       return !operator==( rhs );
9266     }
9267 #endif
9268 
9269   public:
9270     VULKAN_HPP_NAMESPACE::Buffer                   buffer    = {};
9271     uint32_t                                       bindCount = {};
9272     const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds    = {};
9273   };
9274 
9275   struct SparseImageOpaqueMemoryBindInfo
9276   {
9277     using NativeType = VkSparseImageOpaqueMemoryBindInfo;
9278 
9279 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageOpaqueMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9280     VULKAN_HPP_CONSTEXPR SparseImageOpaqueMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image                    image_     = {},
9281                                                           uint32_t                                       bindCount_ = {},
9282                                                           const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_    = {} ) VULKAN_HPP_NOEXCEPT
9283       : image{ image_ }
9284       , bindCount{ bindCount_ }
9285       , pBinds{ pBinds_ }
9286     {
9287     }
9288 
9289     VULKAN_HPP_CONSTEXPR SparseImageOpaqueMemoryBindInfo( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9290 
SparseImageOpaqueMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9291     SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9292       : SparseImageOpaqueMemoryBindInfo( *reinterpret_cast<SparseImageOpaqueMemoryBindInfo const *>( &rhs ) )
9293     {
9294     }
9295 
9296 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SparseImageOpaqueMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9297     SparseImageOpaqueMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image                                                                         image_,
9298                                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ )
9299       : image( image_ ), bindCount( static_cast<uint32_t>( binds_.size() ) ), pBinds( binds_.data() )
9300     {
9301     }
9302 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9303 
9304     SparseImageOpaqueMemoryBindInfo & operator=( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9305 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9306 
operator =VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9307     SparseImageOpaqueMemoryBindInfo & operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9308     {
9309       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo const *>( &rhs );
9310       return *this;
9311     }
9312 
9313 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setImageVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9314     VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
9315     {
9316       image = image_;
9317       return *this;
9318     }
9319 
setBindCountVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9320     VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT
9321     {
9322       bindCount = bindCount_;
9323       return *this;
9324     }
9325 
setPBindsVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9326     VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setPBinds( const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT
9327     {
9328       pBinds = pBinds_;
9329       return *this;
9330     }
9331 
9332 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
9333     SparseImageOpaqueMemoryBindInfo &
setBindsVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9334       setBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ ) VULKAN_HPP_NOEXCEPT
9335     {
9336       bindCount = static_cast<uint32_t>( binds_.size() );
9337       pBinds    = binds_.data();
9338       return *this;
9339     }
9340 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9341 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9342 
operator VkSparseImageOpaqueMemoryBindInfo const&VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9343     operator VkSparseImageOpaqueMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT
9344     {
9345       return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo *>( this );
9346     }
9347 
operator VkSparseImageOpaqueMemoryBindInfo&VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9348     operator VkSparseImageOpaqueMemoryBindInfo &() VULKAN_HPP_NOEXCEPT
9349     {
9350       return *reinterpret_cast<VkSparseImageOpaqueMemoryBindInfo *>( this );
9351     }
9352 
9353 #if defined( VULKAN_HPP_USE_REFLECT )
9354 #  if 14 <= VULKAN_HPP_CPP_VERSION
9355     auto
9356 #  else
9357     std::tuple<VULKAN_HPP_NAMESPACE::Image const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SparseMemoryBind * const &>
9358 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9359       reflect() const VULKAN_HPP_NOEXCEPT
9360     {
9361       return std::tie( image, bindCount, pBinds );
9362     }
9363 #endif
9364 
9365 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9366     auto operator<=>( SparseImageOpaqueMemoryBindInfo const & ) const = default;
9367 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9368     bool operator==( SparseImageOpaqueMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9369     {
9370 #  if defined( VULKAN_HPP_USE_REFLECT )
9371       return this->reflect() == rhs.reflect();
9372 #  else
9373       return ( image == rhs.image ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds );
9374 #  endif
9375     }
9376 
operator !=VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9377     bool operator!=( SparseImageOpaqueMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9378     {
9379       return !operator==( rhs );
9380     }
9381 #endif
9382 
9383   public:
9384     VULKAN_HPP_NAMESPACE::Image                    image     = {};
9385     uint32_t                                       bindCount = {};
9386     const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds    = {};
9387   };
9388 
9389   struct ImageSubresource
9390   {
9391     using NativeType = VkImageSubresource;
9392 
9393 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
9394     VULKAN_HPP_CONSTEXPR
ImageSubresourceVULKAN_HPP_NAMESPACE::ImageSubresource9395       ImageSubresource( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, uint32_t mipLevel_ = {}, uint32_t arrayLayer_ = {} ) VULKAN_HPP_NOEXCEPT
9396       : aspectMask{ aspectMask_ }
9397       , mipLevel{ mipLevel_ }
9398       , arrayLayer{ arrayLayer_ }
9399     {
9400     }
9401 
9402     VULKAN_HPP_CONSTEXPR ImageSubresource( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9403 
ImageSubresourceVULKAN_HPP_NAMESPACE::ImageSubresource9404     ImageSubresource( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT : ImageSubresource( *reinterpret_cast<ImageSubresource const *>( &rhs ) ) {}
9405 
9406     ImageSubresource & operator=( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9407 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9408 
operator =VULKAN_HPP_NAMESPACE::ImageSubresource9409     ImageSubresource & operator=( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT
9410     {
9411       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresource const *>( &rhs );
9412       return *this;
9413     }
9414 
9415 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresource9416     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
9417     {
9418       aspectMask = aspectMask_;
9419       return *this;
9420     }
9421 
setMipLevelVULKAN_HPP_NAMESPACE::ImageSubresource9422     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT
9423     {
9424       mipLevel = mipLevel_;
9425       return *this;
9426     }
9427 
setArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresource9428     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setArrayLayer( uint32_t arrayLayer_ ) VULKAN_HPP_NOEXCEPT
9429     {
9430       arrayLayer = arrayLayer_;
9431       return *this;
9432     }
9433 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9434 
operator VkImageSubresource const&VULKAN_HPP_NAMESPACE::ImageSubresource9435     operator VkImageSubresource const &() const VULKAN_HPP_NOEXCEPT
9436     {
9437       return *reinterpret_cast<const VkImageSubresource *>( this );
9438     }
9439 
operator VkImageSubresource&VULKAN_HPP_NAMESPACE::ImageSubresource9440     operator VkImageSubresource &() VULKAN_HPP_NOEXCEPT
9441     {
9442       return *reinterpret_cast<VkImageSubresource *>( this );
9443     }
9444 
9445 #if defined( VULKAN_HPP_USE_REFLECT )
9446 #  if 14 <= VULKAN_HPP_CPP_VERSION
9447     auto
9448 #  else
9449     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &>
9450 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresource9451       reflect() const VULKAN_HPP_NOEXCEPT
9452     {
9453       return std::tie( aspectMask, mipLevel, arrayLayer );
9454     }
9455 #endif
9456 
9457 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9458     auto operator<=>( ImageSubresource const & ) const = default;
9459 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresource9460     bool operator==( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT
9461     {
9462 #  if defined( VULKAN_HPP_USE_REFLECT )
9463       return this->reflect() == rhs.reflect();
9464 #  else
9465       return ( aspectMask == rhs.aspectMask ) && ( mipLevel == rhs.mipLevel ) && ( arrayLayer == rhs.arrayLayer );
9466 #  endif
9467     }
9468 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresource9469     bool operator!=( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT
9470     {
9471       return !operator==( rhs );
9472     }
9473 #endif
9474 
9475   public:
9476     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
9477     uint32_t                               mipLevel   = {};
9478     uint32_t                               arrayLayer = {};
9479   };
9480 
9481   struct Offset3D
9482   {
9483     using NativeType = VkOffset3D;
9484 
9485 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Offset3DVULKAN_HPP_NAMESPACE::Offset3D9486     VULKAN_HPP_CONSTEXPR Offset3D( int32_t x_ = {}, int32_t y_ = {}, int32_t z_ = {} ) VULKAN_HPP_NOEXCEPT
9487       : x{ x_ }
9488       , y{ y_ }
9489       , z{ z_ }
9490     {
9491     }
9492 
9493     VULKAN_HPP_CONSTEXPR Offset3D( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9494 
Offset3DVULKAN_HPP_NAMESPACE::Offset3D9495     Offset3D( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT : Offset3D( *reinterpret_cast<Offset3D const *>( &rhs ) ) {}
9496 
Offset3DVULKAN_HPP_NAMESPACE::Offset3D9497     explicit Offset3D( Offset2D const & offset2D, int32_t z_ = {} ) : x( offset2D.x ), y( offset2D.y ), z( z_ ) {}
9498 
9499     Offset3D & operator=( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9500 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9501 
operator =VULKAN_HPP_NAMESPACE::Offset3D9502     Offset3D & operator=( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT
9503     {
9504       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Offset3D const *>( &rhs );
9505       return *this;
9506     }
9507 
9508 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Offset3D9509     VULKAN_HPP_CONSTEXPR_14 Offset3D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT
9510     {
9511       x = x_;
9512       return *this;
9513     }
9514 
setYVULKAN_HPP_NAMESPACE::Offset3D9515     VULKAN_HPP_CONSTEXPR_14 Offset3D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT
9516     {
9517       y = y_;
9518       return *this;
9519     }
9520 
setZVULKAN_HPP_NAMESPACE::Offset3D9521     VULKAN_HPP_CONSTEXPR_14 Offset3D & setZ( int32_t z_ ) VULKAN_HPP_NOEXCEPT
9522     {
9523       z = z_;
9524       return *this;
9525     }
9526 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9527 
operator VkOffset3D const&VULKAN_HPP_NAMESPACE::Offset3D9528     operator VkOffset3D const &() const VULKAN_HPP_NOEXCEPT
9529     {
9530       return *reinterpret_cast<const VkOffset3D *>( this );
9531     }
9532 
operator VkOffset3D&VULKAN_HPP_NAMESPACE::Offset3D9533     operator VkOffset3D &() VULKAN_HPP_NOEXCEPT
9534     {
9535       return *reinterpret_cast<VkOffset3D *>( this );
9536     }
9537 
9538 #if defined( VULKAN_HPP_USE_REFLECT )
9539 #  if 14 <= VULKAN_HPP_CPP_VERSION
9540     auto
9541 #  else
9542     std::tuple<int32_t const &, int32_t const &, int32_t const &>
9543 #  endif
reflectVULKAN_HPP_NAMESPACE::Offset3D9544       reflect() const VULKAN_HPP_NOEXCEPT
9545     {
9546       return std::tie( x, y, z );
9547     }
9548 #endif
9549 
9550 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9551     auto operator<=>( Offset3D const & ) const = default;
9552 #else
operator ==VULKAN_HPP_NAMESPACE::Offset3D9553     bool operator==( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT
9554     {
9555 #  if defined( VULKAN_HPP_USE_REFLECT )
9556       return this->reflect() == rhs.reflect();
9557 #  else
9558       return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z );
9559 #  endif
9560     }
9561 
operator !=VULKAN_HPP_NAMESPACE::Offset3D9562     bool operator!=( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT
9563     {
9564       return !operator==( rhs );
9565     }
9566 #endif
9567 
9568   public:
9569     int32_t x = {};
9570     int32_t y = {};
9571     int32_t z = {};
9572   };
9573 
9574   struct Extent3D
9575   {
9576     using NativeType = VkExtent3D;
9577 
9578 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Extent3DVULKAN_HPP_NAMESPACE::Extent3D9579     VULKAN_HPP_CONSTEXPR Extent3D( uint32_t width_ = {}, uint32_t height_ = {}, uint32_t depth_ = {} ) VULKAN_HPP_NOEXCEPT
9580       : width{ width_ }
9581       , height{ height_ }
9582       , depth{ depth_ }
9583     {
9584     }
9585 
9586     VULKAN_HPP_CONSTEXPR Extent3D( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9587 
Extent3DVULKAN_HPP_NAMESPACE::Extent3D9588     Extent3D( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT : Extent3D( *reinterpret_cast<Extent3D const *>( &rhs ) ) {}
9589 
Extent3DVULKAN_HPP_NAMESPACE::Extent3D9590     explicit Extent3D( Extent2D const & extent2D, uint32_t depth_ = {} ) : width( extent2D.width ), height( extent2D.height ), depth( depth_ ) {}
9591 
9592     Extent3D & operator=( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9593 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9594 
operator =VULKAN_HPP_NAMESPACE::Extent3D9595     Extent3D & operator=( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT
9596     {
9597       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Extent3D const *>( &rhs );
9598       return *this;
9599     }
9600 
9601 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::Extent3D9602     VULKAN_HPP_CONSTEXPR_14 Extent3D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
9603     {
9604       width = width_;
9605       return *this;
9606     }
9607 
setHeightVULKAN_HPP_NAMESPACE::Extent3D9608     VULKAN_HPP_CONSTEXPR_14 Extent3D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
9609     {
9610       height = height_;
9611       return *this;
9612     }
9613 
setDepthVULKAN_HPP_NAMESPACE::Extent3D9614     VULKAN_HPP_CONSTEXPR_14 Extent3D & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT
9615     {
9616       depth = depth_;
9617       return *this;
9618     }
9619 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9620 
operator VkExtent3D const&VULKAN_HPP_NAMESPACE::Extent3D9621     operator VkExtent3D const &() const VULKAN_HPP_NOEXCEPT
9622     {
9623       return *reinterpret_cast<const VkExtent3D *>( this );
9624     }
9625 
operator VkExtent3D&VULKAN_HPP_NAMESPACE::Extent3D9626     operator VkExtent3D &() VULKAN_HPP_NOEXCEPT
9627     {
9628       return *reinterpret_cast<VkExtent3D *>( this );
9629     }
9630 
9631 #if defined( VULKAN_HPP_USE_REFLECT )
9632 #  if 14 <= VULKAN_HPP_CPP_VERSION
9633     auto
9634 #  else
9635     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
9636 #  endif
reflectVULKAN_HPP_NAMESPACE::Extent3D9637       reflect() const VULKAN_HPP_NOEXCEPT
9638     {
9639       return std::tie( width, height, depth );
9640     }
9641 #endif
9642 
9643 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9644     auto operator<=>( Extent3D const & ) const = default;
9645 #else
operator ==VULKAN_HPP_NAMESPACE::Extent3D9646     bool operator==( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT
9647     {
9648 #  if defined( VULKAN_HPP_USE_REFLECT )
9649       return this->reflect() == rhs.reflect();
9650 #  else
9651       return ( width == rhs.width ) && ( height == rhs.height ) && ( depth == rhs.depth );
9652 #  endif
9653     }
9654 
operator !=VULKAN_HPP_NAMESPACE::Extent3D9655     bool operator!=( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT
9656     {
9657       return !operator==( rhs );
9658     }
9659 #endif
9660 
9661   public:
9662     uint32_t width  = {};
9663     uint32_t height = {};
9664     uint32_t depth  = {};
9665   };
9666 
9667   struct SparseImageMemoryBind
9668   {
9669     using NativeType = VkSparseImageMemoryBind;
9670 
9671 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageMemoryBindVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9672     VULKAN_HPP_CONSTEXPR SparseImageMemoryBind( VULKAN_HPP_NAMESPACE::ImageSubresource      subresource_  = {},
9673                                                 VULKAN_HPP_NAMESPACE::Offset3D              offset_       = {},
9674                                                 VULKAN_HPP_NAMESPACE::Extent3D              extent_       = {},
9675                                                 VULKAN_HPP_NAMESPACE::DeviceMemory          memory_       = {},
9676                                                 VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset_ = {},
9677                                                 VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_        = {} ) VULKAN_HPP_NOEXCEPT
9678       : subresource{ subresource_ }
9679       , offset{ offset_ }
9680       , extent{ extent_ }
9681       , memory{ memory_ }
9682       , memoryOffset{ memoryOffset_ }
9683       , flags{ flags_ }
9684     {
9685     }
9686 
9687     VULKAN_HPP_CONSTEXPR SparseImageMemoryBind( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9688 
SparseImageMemoryBindVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9689     SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
9690       : SparseImageMemoryBind( *reinterpret_cast<SparseImageMemoryBind const *>( &rhs ) )
9691     {
9692     }
9693 
9694     SparseImageMemoryBind & operator=( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9695 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9696 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryBind9697     SparseImageMemoryBind & operator=( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
9698     {
9699       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryBind const *>( &rhs );
9700       return *this;
9701     }
9702 
9703 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSubresourceVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9704     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setSubresource( VULKAN_HPP_NAMESPACE::ImageSubresource const & subresource_ ) VULKAN_HPP_NOEXCEPT
9705     {
9706       subresource = subresource_;
9707       return *this;
9708     }
9709 
setOffsetVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9710     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setOffset( VULKAN_HPP_NAMESPACE::Offset3D const & offset_ ) VULKAN_HPP_NOEXCEPT
9711     {
9712       offset = offset_;
9713       return *this;
9714     }
9715 
setExtentVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9716     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
9717     {
9718       extent = extent_;
9719       return *this;
9720     }
9721 
setMemoryVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9722     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
9723     {
9724       memory = memory_;
9725       return *this;
9726     }
9727 
setMemoryOffsetVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9728     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
9729     {
9730       memoryOffset = memoryOffset_;
9731       return *this;
9732     }
9733 
setFlagsVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9734     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setFlags( VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ ) VULKAN_HPP_NOEXCEPT
9735     {
9736       flags = flags_;
9737       return *this;
9738     }
9739 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9740 
operator VkSparseImageMemoryBind const&VULKAN_HPP_NAMESPACE::SparseImageMemoryBind9741     operator VkSparseImageMemoryBind const &() const VULKAN_HPP_NOEXCEPT
9742     {
9743       return *reinterpret_cast<const VkSparseImageMemoryBind *>( this );
9744     }
9745 
operator VkSparseImageMemoryBind&VULKAN_HPP_NAMESPACE::SparseImageMemoryBind9746     operator VkSparseImageMemoryBind &() VULKAN_HPP_NOEXCEPT
9747     {
9748       return *reinterpret_cast<VkSparseImageMemoryBind *>( this );
9749     }
9750 
9751 #if defined( VULKAN_HPP_USE_REFLECT )
9752 #  if 14 <= VULKAN_HPP_CPP_VERSION
9753     auto
9754 #  else
9755     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresource const &,
9756                VULKAN_HPP_NAMESPACE::Offset3D const &,
9757                VULKAN_HPP_NAMESPACE::Extent3D const &,
9758                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
9759                VULKAN_HPP_NAMESPACE::DeviceSize const &,
9760                VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags const &>
9761 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9762       reflect() const VULKAN_HPP_NOEXCEPT
9763     {
9764       return std::tie( subresource, offset, extent, memory, memoryOffset, flags );
9765     }
9766 #endif
9767 
9768 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9769     auto operator<=>( SparseImageMemoryBind const & ) const = default;
9770 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryBind9771     bool operator==( SparseImageMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
9772     {
9773 #  if defined( VULKAN_HPP_USE_REFLECT )
9774       return this->reflect() == rhs.reflect();
9775 #  else
9776       return ( subresource == rhs.subresource ) && ( offset == rhs.offset ) && ( extent == rhs.extent ) && ( memory == rhs.memory ) &&
9777              ( memoryOffset == rhs.memoryOffset ) && ( flags == rhs.flags );
9778 #  endif
9779     }
9780 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryBind9781     bool operator!=( SparseImageMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
9782     {
9783       return !operator==( rhs );
9784     }
9785 #endif
9786 
9787   public:
9788     VULKAN_HPP_NAMESPACE::ImageSubresource      subresource  = {};
9789     VULKAN_HPP_NAMESPACE::Offset3D              offset       = {};
9790     VULKAN_HPP_NAMESPACE::Extent3D              extent       = {};
9791     VULKAN_HPP_NAMESPACE::DeviceMemory          memory       = {};
9792     VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset = {};
9793     VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags        = {};
9794   };
9795 
9796   struct SparseImageMemoryBindInfo
9797   {
9798     using NativeType = VkSparseImageMemoryBindInfo;
9799 
9800 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9801     VULKAN_HPP_CONSTEXPR SparseImageMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image                         image_     = {},
9802                                                     uint32_t                                            bindCount_ = {},
9803                                                     const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds_    = {} ) VULKAN_HPP_NOEXCEPT
9804       : image{ image_ }
9805       , bindCount{ bindCount_ }
9806       , pBinds{ pBinds_ }
9807     {
9808     }
9809 
9810     VULKAN_HPP_CONSTEXPR SparseImageMemoryBindInfo( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9811 
SparseImageMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9812     SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9813       : SparseImageMemoryBindInfo( *reinterpret_cast<SparseImageMemoryBindInfo const *>( &rhs ) )
9814     {
9815     }
9816 
9817 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SparseImageMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9818     SparseImageMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image                                                                              image_,
9819                                VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind> const & binds_ )
9820       : image( image_ ), bindCount( static_cast<uint32_t>( binds_.size() ) ), pBinds( binds_.data() )
9821     {
9822     }
9823 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9824 
9825     SparseImageMemoryBindInfo & operator=( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9826 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9827 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9828     SparseImageMemoryBindInfo & operator=( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9829     {
9830       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo const *>( &rhs );
9831       return *this;
9832     }
9833 
9834 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setImageVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9835     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
9836     {
9837       image = image_;
9838       return *this;
9839     }
9840 
setBindCountVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9841     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT
9842     {
9843       bindCount = bindCount_;
9844       return *this;
9845     }
9846 
setPBindsVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9847     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setPBinds( const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT
9848     {
9849       pBinds = pBinds_;
9850       return *this;
9851     }
9852 
9853 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
9854     SparseImageMemoryBindInfo &
setBindsVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9855       setBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind> const & binds_ ) VULKAN_HPP_NOEXCEPT
9856     {
9857       bindCount = static_cast<uint32_t>( binds_.size() );
9858       pBinds    = binds_.data();
9859       return *this;
9860     }
9861 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9862 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9863 
operator VkSparseImageMemoryBindInfo const&VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9864     operator VkSparseImageMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT
9865     {
9866       return *reinterpret_cast<const VkSparseImageMemoryBindInfo *>( this );
9867     }
9868 
operator VkSparseImageMemoryBindInfo&VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9869     operator VkSparseImageMemoryBindInfo &() VULKAN_HPP_NOEXCEPT
9870     {
9871       return *reinterpret_cast<VkSparseImageMemoryBindInfo *>( this );
9872     }
9873 
9874 #if defined( VULKAN_HPP_USE_REFLECT )
9875 #  if 14 <= VULKAN_HPP_CPP_VERSION
9876     auto
9877 #  else
9878     std::tuple<VULKAN_HPP_NAMESPACE::Image const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * const &>
9879 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9880       reflect() const VULKAN_HPP_NOEXCEPT
9881     {
9882       return std::tie( image, bindCount, pBinds );
9883     }
9884 #endif
9885 
9886 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9887     auto operator<=>( SparseImageMemoryBindInfo const & ) const = default;
9888 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9889     bool operator==( SparseImageMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9890     {
9891 #  if defined( VULKAN_HPP_USE_REFLECT )
9892       return this->reflect() == rhs.reflect();
9893 #  else
9894       return ( image == rhs.image ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds );
9895 #  endif
9896     }
9897 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9898     bool operator!=( SparseImageMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9899     {
9900       return !operator==( rhs );
9901     }
9902 #endif
9903 
9904   public:
9905     VULKAN_HPP_NAMESPACE::Image                         image     = {};
9906     uint32_t                                            bindCount = {};
9907     const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds    = {};
9908   };
9909 
9910   struct BindSparseInfo
9911   {
9912     using NativeType = VkBindSparseInfo;
9913 
9914     static const bool                                  allowDuplicate = false;
9915     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindSparseInfo;
9916 
9917 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindSparseInfoVULKAN_HPP_NAMESPACE::BindSparseInfo9918     VULKAN_HPP_CONSTEXPR BindSparseInfo( uint32_t                                                      waitSemaphoreCount_   = {},
9919                                          const VULKAN_HPP_NAMESPACE::Semaphore *                       pWaitSemaphores_      = {},
9920                                          uint32_t                                                      bufferBindCount_      = {},
9921                                          const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo *      pBufferBinds_         = {},
9922                                          uint32_t                                                      imageOpaqueBindCount_ = {},
9923                                          const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds_    = {},
9924                                          uint32_t                                                      imageBindCount_       = {},
9925                                          const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo *       pImageBinds_          = {},
9926                                          uint32_t                                                      signalSemaphoreCount_ = {},
9927                                          const VULKAN_HPP_NAMESPACE::Semaphore *                       pSignalSemaphores_    = {},
9928                                          const void *                                                  pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
9929       : pNext{ pNext_ }
9930       , waitSemaphoreCount{ waitSemaphoreCount_ }
9931       , pWaitSemaphores{ pWaitSemaphores_ }
9932       , bufferBindCount{ bufferBindCount_ }
9933       , pBufferBinds{ pBufferBinds_ }
9934       , imageOpaqueBindCount{ imageOpaqueBindCount_ }
9935       , pImageOpaqueBinds{ pImageOpaqueBinds_ }
9936       , imageBindCount{ imageBindCount_ }
9937       , pImageBinds{ pImageBinds_ }
9938       , signalSemaphoreCount{ signalSemaphoreCount_ }
9939       , pSignalSemaphores{ pSignalSemaphores_ }
9940     {
9941     }
9942 
9943     VULKAN_HPP_CONSTEXPR BindSparseInfo( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9944 
BindSparseInfoVULKAN_HPP_NAMESPACE::BindSparseInfo9945     BindSparseInfo( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT : BindSparseInfo( *reinterpret_cast<BindSparseInfo const *>( &rhs ) ) {}
9946 
9947 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindSparseInfoVULKAN_HPP_NAMESPACE::BindSparseInfo9948     BindSparseInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &                       waitSemaphores_,
9949                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo> const &      bufferBinds_      = {},
9950                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo> const & imageOpaqueBinds_ = {},
9951                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo> const &       imageBinds_       = {},
9952                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &                       signalSemaphores_ = {},
9953                     const void *                                                                                                       pNext_ = nullptr )
9954       : pNext( pNext_ )
9955       , waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) )
9956       , pWaitSemaphores( waitSemaphores_.data() )
9957       , bufferBindCount( static_cast<uint32_t>( bufferBinds_.size() ) )
9958       , pBufferBinds( bufferBinds_.data() )
9959       , imageOpaqueBindCount( static_cast<uint32_t>( imageOpaqueBinds_.size() ) )
9960       , pImageOpaqueBinds( imageOpaqueBinds_.data() )
9961       , imageBindCount( static_cast<uint32_t>( imageBinds_.size() ) )
9962       , pImageBinds( imageBinds_.data() )
9963       , signalSemaphoreCount( static_cast<uint32_t>( signalSemaphores_.size() ) )
9964       , pSignalSemaphores( signalSemaphores_.data() )
9965     {
9966     }
9967 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9968 
9969     BindSparseInfo & operator=( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9970 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9971 
operator =VULKAN_HPP_NAMESPACE::BindSparseInfo9972     BindSparseInfo & operator=( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9973     {
9974       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindSparseInfo const *>( &rhs );
9975       return *this;
9976     }
9977 
9978 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindSparseInfo9979     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9980     {
9981       pNext = pNext_;
9982       return *this;
9983     }
9984 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::BindSparseInfo9985     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
9986     {
9987       waitSemaphoreCount = waitSemaphoreCount_;
9988       return *this;
9989     }
9990 
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo9991     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
9992     {
9993       pWaitSemaphores = pWaitSemaphores_;
9994       return *this;
9995     }
9996 
9997 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
9998     BindSparseInfo &
setWaitSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo9999       setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT
10000     {
10001       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
10002       pWaitSemaphores    = waitSemaphores_.data();
10003       return *this;
10004     }
10005 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10006 
setBufferBindCountVULKAN_HPP_NAMESPACE::BindSparseInfo10007     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setBufferBindCount( uint32_t bufferBindCount_ ) VULKAN_HPP_NOEXCEPT
10008     {
10009       bufferBindCount = bufferBindCount_;
10010       return *this;
10011     }
10012 
setPBufferBindsVULKAN_HPP_NAMESPACE::BindSparseInfo10013     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPBufferBinds( const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo * pBufferBinds_ ) VULKAN_HPP_NOEXCEPT
10014     {
10015       pBufferBinds = pBufferBinds_;
10016       return *this;
10017     }
10018 
10019 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBufferBindsVULKAN_HPP_NAMESPACE::BindSparseInfo10020     BindSparseInfo & setBufferBinds(
10021       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo> const & bufferBinds_ ) VULKAN_HPP_NOEXCEPT
10022     {
10023       bufferBindCount = static_cast<uint32_t>( bufferBinds_.size() );
10024       pBufferBinds    = bufferBinds_.data();
10025       return *this;
10026     }
10027 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10028 
setImageOpaqueBindCountVULKAN_HPP_NAMESPACE::BindSparseInfo10029     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ ) VULKAN_HPP_NOEXCEPT
10030     {
10031       imageOpaqueBindCount = imageOpaqueBindCount_;
10032       return *this;
10033     }
10034 
10035     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo &
setPImageOpaqueBindsVULKAN_HPP_NAMESPACE::BindSparseInfo10036       setPImageOpaqueBinds( const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT
10037     {
10038       pImageOpaqueBinds = pImageOpaqueBinds_;
10039       return *this;
10040     }
10041 
10042 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageOpaqueBindsVULKAN_HPP_NAMESPACE::BindSparseInfo10043     BindSparseInfo & setImageOpaqueBinds(
10044       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo> const & imageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT
10045     {
10046       imageOpaqueBindCount = static_cast<uint32_t>( imageOpaqueBinds_.size() );
10047       pImageOpaqueBinds    = imageOpaqueBinds_.data();
10048       return *this;
10049     }
10050 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10051 
setImageBindCountVULKAN_HPP_NAMESPACE::BindSparseInfo10052     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setImageBindCount( uint32_t imageBindCount_ ) VULKAN_HPP_NOEXCEPT
10053     {
10054       imageBindCount = imageBindCount_;
10055       return *this;
10056     }
10057 
setPImageBindsVULKAN_HPP_NAMESPACE::BindSparseInfo10058     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPImageBinds( const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo * pImageBinds_ ) VULKAN_HPP_NOEXCEPT
10059     {
10060       pImageBinds = pImageBinds_;
10061       return *this;
10062     }
10063 
10064 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageBindsVULKAN_HPP_NAMESPACE::BindSparseInfo10065     BindSparseInfo & setImageBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo> const & imageBinds_ )
10066       VULKAN_HPP_NOEXCEPT
10067     {
10068       imageBindCount = static_cast<uint32_t>( imageBinds_.size() );
10069       pImageBinds    = imageBinds_.data();
10070       return *this;
10071     }
10072 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10073 
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::BindSparseInfo10074     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
10075     {
10076       signalSemaphoreCount = signalSemaphoreCount_;
10077       return *this;
10078     }
10079 
setPSignalSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo10080     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT
10081     {
10082       pSignalSemaphores = pSignalSemaphores_;
10083       return *this;
10084     }
10085 
10086 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
10087     BindSparseInfo &
setSignalSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo10088       setSignalSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & signalSemaphores_ ) VULKAN_HPP_NOEXCEPT
10089     {
10090       signalSemaphoreCount = static_cast<uint32_t>( signalSemaphores_.size() );
10091       pSignalSemaphores    = signalSemaphores_.data();
10092       return *this;
10093     }
10094 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10095 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10096 
operator VkBindSparseInfo const&VULKAN_HPP_NAMESPACE::BindSparseInfo10097     operator VkBindSparseInfo const &() const VULKAN_HPP_NOEXCEPT
10098     {
10099       return *reinterpret_cast<const VkBindSparseInfo *>( this );
10100     }
10101 
operator VkBindSparseInfo&VULKAN_HPP_NAMESPACE::BindSparseInfo10102     operator VkBindSparseInfo &() VULKAN_HPP_NOEXCEPT
10103     {
10104       return *reinterpret_cast<VkBindSparseInfo *>( this );
10105     }
10106 
10107 #if defined( VULKAN_HPP_USE_REFLECT )
10108 #  if 14 <= VULKAN_HPP_CPP_VERSION
10109     auto
10110 #  else
10111     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10112                const void * const &,
10113                uint32_t const &,
10114                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
10115                uint32_t const &,
10116                const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo * const &,
10117                uint32_t const &,
10118                const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * const &,
10119                uint32_t const &,
10120                const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo * const &,
10121                uint32_t const &,
10122                const VULKAN_HPP_NAMESPACE::Semaphore * const &>
10123 #  endif
reflectVULKAN_HPP_NAMESPACE::BindSparseInfo10124       reflect() const VULKAN_HPP_NOEXCEPT
10125     {
10126       return std::tie( sType,
10127                        pNext,
10128                        waitSemaphoreCount,
10129                        pWaitSemaphores,
10130                        bufferBindCount,
10131                        pBufferBinds,
10132                        imageOpaqueBindCount,
10133                        pImageOpaqueBinds,
10134                        imageBindCount,
10135                        pImageBinds,
10136                        signalSemaphoreCount,
10137                        pSignalSemaphores );
10138     }
10139 #endif
10140 
10141 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10142     auto operator<=>( BindSparseInfo const & ) const = default;
10143 #else
operator ==VULKAN_HPP_NAMESPACE::BindSparseInfo10144     bool operator==( BindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10145     {
10146 #  if defined( VULKAN_HPP_USE_REFLECT )
10147       return this->reflect() == rhs.reflect();
10148 #  else
10149       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) &&
10150              ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( bufferBindCount == rhs.bufferBindCount ) && ( pBufferBinds == rhs.pBufferBinds ) &&
10151              ( imageOpaqueBindCount == rhs.imageOpaqueBindCount ) && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds ) &&
10152              ( imageBindCount == rhs.imageBindCount ) && ( pImageBinds == rhs.pImageBinds ) && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) &&
10153              ( pSignalSemaphores == rhs.pSignalSemaphores );
10154 #  endif
10155     }
10156 
operator !=VULKAN_HPP_NAMESPACE::BindSparseInfo10157     bool operator!=( BindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10158     {
10159       return !operator==( rhs );
10160     }
10161 #endif
10162 
10163   public:
10164     VULKAN_HPP_NAMESPACE::StructureType                           sType                = StructureType::eBindSparseInfo;
10165     const void *                                                  pNext                = {};
10166     uint32_t                                                      waitSemaphoreCount   = {};
10167     const VULKAN_HPP_NAMESPACE::Semaphore *                       pWaitSemaphores      = {};
10168     uint32_t                                                      bufferBindCount      = {};
10169     const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo *      pBufferBinds         = {};
10170     uint32_t                                                      imageOpaqueBindCount = {};
10171     const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds    = {};
10172     uint32_t                                                      imageBindCount       = {};
10173     const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo *       pImageBinds          = {};
10174     uint32_t                                                      signalSemaphoreCount = {};
10175     const VULKAN_HPP_NAMESPACE::Semaphore *                       pSignalSemaphores    = {};
10176   };
10177 
10178   template <>
10179   struct CppType<StructureType, StructureType::eBindSparseInfo>
10180   {
10181     using Type = BindSparseInfo;
10182   };
10183 
10184   struct BindVertexBufferIndirectCommandNV
10185   {
10186     using NativeType = VkBindVertexBufferIndirectCommandNV;
10187 
10188 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindVertexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10189     VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {},
10190                                                             uint32_t                            size_          = {},
10191                                                             uint32_t                            stride_        = {} ) VULKAN_HPP_NOEXCEPT
10192       : bufferAddress{ bufferAddress_ }
10193       , size{ size_ }
10194       , stride{ stride_ }
10195     {
10196     }
10197 
10198     VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandNV( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10199 
BindVertexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10200     BindVertexBufferIndirectCommandNV( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
10201       : BindVertexBufferIndirectCommandNV( *reinterpret_cast<BindVertexBufferIndirectCommandNV const *>( &rhs ) )
10202     {
10203     }
10204 
10205     BindVertexBufferIndirectCommandNV & operator=( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10206 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10207 
operator =VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10208     BindVertexBufferIndirectCommandNV & operator=( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
10209     {
10210       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV const *>( &rhs );
10211       return *this;
10212     }
10213 
10214 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferAddressVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10215     VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT
10216     {
10217       bufferAddress = bufferAddress_;
10218       return *this;
10219     }
10220 
setSizeVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10221     VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
10222     {
10223       size = size_;
10224       return *this;
10225     }
10226 
setStrideVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10227     VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
10228     {
10229       stride = stride_;
10230       return *this;
10231     }
10232 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10233 
operator VkBindVertexBufferIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10234     operator VkBindVertexBufferIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
10235     {
10236       return *reinterpret_cast<const VkBindVertexBufferIndirectCommandNV *>( this );
10237     }
10238 
operator VkBindVertexBufferIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10239     operator VkBindVertexBufferIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
10240     {
10241       return *reinterpret_cast<VkBindVertexBufferIndirectCommandNV *>( this );
10242     }
10243 
10244 #if defined( VULKAN_HPP_USE_REFLECT )
10245 #  if 14 <= VULKAN_HPP_CPP_VERSION
10246     auto
10247 #  else
10248     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, uint32_t const &, uint32_t const &>
10249 #  endif
reflectVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10250       reflect() const VULKAN_HPP_NOEXCEPT
10251     {
10252       return std::tie( bufferAddress, size, stride );
10253     }
10254 #endif
10255 
10256 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10257     auto operator<=>( BindVertexBufferIndirectCommandNV const & ) const = default;
10258 #else
operator ==VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10259     bool operator==( BindVertexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
10260     {
10261 #  if defined( VULKAN_HPP_USE_REFLECT )
10262       return this->reflect() == rhs.reflect();
10263 #  else
10264       return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( stride == rhs.stride );
10265 #  endif
10266     }
10267 
operator !=VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10268     bool operator!=( BindVertexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
10269     {
10270       return !operator==( rhs );
10271     }
10272 #endif
10273 
10274   public:
10275     VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {};
10276     uint32_t                            size          = {};
10277     uint32_t                            stride        = {};
10278   };
10279 
10280   struct BindVideoSessionMemoryInfoKHR
10281   {
10282     using NativeType = VkBindVideoSessionMemoryInfoKHR;
10283 
10284     static const bool                                  allowDuplicate = false;
10285     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindVideoSessionMemoryInfoKHR;
10286 
10287 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindVideoSessionMemoryInfoKHRVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10288     VULKAN_HPP_CONSTEXPR BindVideoSessionMemoryInfoKHR( uint32_t                           memoryBindIndex_ = {},
10289                                                         VULKAN_HPP_NAMESPACE::DeviceMemory memory_          = {},
10290                                                         VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset_    = {},
10291                                                         VULKAN_HPP_NAMESPACE::DeviceSize   memorySize_      = {},
10292                                                         const void *                       pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
10293       : pNext{ pNext_ }
10294       , memoryBindIndex{ memoryBindIndex_ }
10295       , memory{ memory_ }
10296       , memoryOffset{ memoryOffset_ }
10297       , memorySize{ memorySize_ }
10298     {
10299     }
10300 
10301     VULKAN_HPP_CONSTEXPR BindVideoSessionMemoryInfoKHR( BindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10302 
BindVideoSessionMemoryInfoKHRVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10303     BindVideoSessionMemoryInfoKHR( VkBindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
10304       : BindVideoSessionMemoryInfoKHR( *reinterpret_cast<BindVideoSessionMemoryInfoKHR const *>( &rhs ) )
10305     {
10306     }
10307 
10308     BindVideoSessionMemoryInfoKHR & operator=( BindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10309 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10310 
operator =VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10311     BindVideoSessionMemoryInfoKHR & operator=( VkBindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
10312     {
10313       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR const *>( &rhs );
10314       return *this;
10315     }
10316 
10317 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10318     VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10319     {
10320       pNext = pNext_;
10321       return *this;
10322     }
10323 
setMemoryBindIndexVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10324     VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemoryBindIndex( uint32_t memoryBindIndex_ ) VULKAN_HPP_NOEXCEPT
10325     {
10326       memoryBindIndex = memoryBindIndex_;
10327       return *this;
10328     }
10329 
setMemoryVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10330     VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
10331     {
10332       memory = memory_;
10333       return *this;
10334     }
10335 
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10336     VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
10337     {
10338       memoryOffset = memoryOffset_;
10339       return *this;
10340     }
10341 
setMemorySizeVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10342     VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemorySize( VULKAN_HPP_NAMESPACE::DeviceSize memorySize_ ) VULKAN_HPP_NOEXCEPT
10343     {
10344       memorySize = memorySize_;
10345       return *this;
10346     }
10347 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10348 
operator VkBindVideoSessionMemoryInfoKHR const&VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10349     operator VkBindVideoSessionMemoryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
10350     {
10351       return *reinterpret_cast<const VkBindVideoSessionMemoryInfoKHR *>( this );
10352     }
10353 
operator VkBindVideoSessionMemoryInfoKHR&VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10354     operator VkBindVideoSessionMemoryInfoKHR &() VULKAN_HPP_NOEXCEPT
10355     {
10356       return *reinterpret_cast<VkBindVideoSessionMemoryInfoKHR *>( this );
10357     }
10358 
10359 #if defined( VULKAN_HPP_USE_REFLECT )
10360 #  if 14 <= VULKAN_HPP_CPP_VERSION
10361     auto
10362 #  else
10363     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10364                const void * const &,
10365                uint32_t const &,
10366                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
10367                VULKAN_HPP_NAMESPACE::DeviceSize const &,
10368                VULKAN_HPP_NAMESPACE::DeviceSize const &>
10369 #  endif
reflectVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10370       reflect() const VULKAN_HPP_NOEXCEPT
10371     {
10372       return std::tie( sType, pNext, memoryBindIndex, memory, memoryOffset, memorySize );
10373     }
10374 #endif
10375 
10376 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10377     auto operator<=>( BindVideoSessionMemoryInfoKHR const & ) const = default;
10378 #else
operator ==VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10379     bool operator==( BindVideoSessionMemoryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
10380     {
10381 #  if defined( VULKAN_HPP_USE_REFLECT )
10382       return this->reflect() == rhs.reflect();
10383 #  else
10384       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryBindIndex == rhs.memoryBindIndex ) && ( memory == rhs.memory ) &&
10385              ( memoryOffset == rhs.memoryOffset ) && ( memorySize == rhs.memorySize );
10386 #  endif
10387     }
10388 
operator !=VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10389     bool operator!=( BindVideoSessionMemoryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
10390     {
10391       return !operator==( rhs );
10392     }
10393 #endif
10394 
10395   public:
10396     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eBindVideoSessionMemoryInfoKHR;
10397     const void *                        pNext           = {};
10398     uint32_t                            memoryBindIndex = {};
10399     VULKAN_HPP_NAMESPACE::DeviceMemory  memory          = {};
10400     VULKAN_HPP_NAMESPACE::DeviceSize    memoryOffset    = {};
10401     VULKAN_HPP_NAMESPACE::DeviceSize    memorySize      = {};
10402   };
10403 
10404   template <>
10405   struct CppType<StructureType, StructureType::eBindVideoSessionMemoryInfoKHR>
10406   {
10407     using Type = BindVideoSessionMemoryInfoKHR;
10408   };
10409 
10410   struct BlitImageCubicWeightsInfoQCOM
10411   {
10412     using NativeType = VkBlitImageCubicWeightsInfoQCOM;
10413 
10414     static const bool                                  allowDuplicate = false;
10415     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBlitImageCubicWeightsInfoQCOM;
10416 
10417 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
10418     VULKAN_HPP_CONSTEXPR
BlitImageCubicWeightsInfoQCOMVULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10419       BlitImageCubicWeightsInfoQCOM( VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights_ = VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM::eCatmullRom,
10420                                      const void *                                 pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
10421       : pNext{ pNext_ }
10422       , cubicWeights{ cubicWeights_ }
10423     {
10424     }
10425 
10426     VULKAN_HPP_CONSTEXPR BlitImageCubicWeightsInfoQCOM( BlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10427 
BlitImageCubicWeightsInfoQCOMVULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10428     BlitImageCubicWeightsInfoQCOM( VkBlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
10429       : BlitImageCubicWeightsInfoQCOM( *reinterpret_cast<BlitImageCubicWeightsInfoQCOM const *>( &rhs ) )
10430     {
10431     }
10432 
10433     BlitImageCubicWeightsInfoQCOM & operator=( BlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10434 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10435 
operator =VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10436     BlitImageCubicWeightsInfoQCOM & operator=( VkBlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
10437     {
10438       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM const *>( &rhs );
10439       return *this;
10440     }
10441 
10442 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10443     VULKAN_HPP_CONSTEXPR_14 BlitImageCubicWeightsInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10444     {
10445       pNext = pNext_;
10446       return *this;
10447     }
10448 
setCubicWeightsVULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10449     VULKAN_HPP_CONSTEXPR_14 BlitImageCubicWeightsInfoQCOM & setCubicWeights( VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights_ ) VULKAN_HPP_NOEXCEPT
10450     {
10451       cubicWeights = cubicWeights_;
10452       return *this;
10453     }
10454 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10455 
operator VkBlitImageCubicWeightsInfoQCOM const&VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10456     operator VkBlitImageCubicWeightsInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
10457     {
10458       return *reinterpret_cast<const VkBlitImageCubicWeightsInfoQCOM *>( this );
10459     }
10460 
operator VkBlitImageCubicWeightsInfoQCOM&VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10461     operator VkBlitImageCubicWeightsInfoQCOM &() VULKAN_HPP_NOEXCEPT
10462     {
10463       return *reinterpret_cast<VkBlitImageCubicWeightsInfoQCOM *>( this );
10464     }
10465 
10466 #if defined( VULKAN_HPP_USE_REFLECT )
10467 #  if 14 <= VULKAN_HPP_CPP_VERSION
10468     auto
10469 #  else
10470     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM const &>
10471 #  endif
reflectVULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10472       reflect() const VULKAN_HPP_NOEXCEPT
10473     {
10474       return std::tie( sType, pNext, cubicWeights );
10475     }
10476 #endif
10477 
10478 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10479     auto operator<=>( BlitImageCubicWeightsInfoQCOM const & ) const = default;
10480 #else
operator ==VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10481     bool operator==( BlitImageCubicWeightsInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
10482     {
10483 #  if defined( VULKAN_HPP_USE_REFLECT )
10484       return this->reflect() == rhs.reflect();
10485 #  else
10486       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cubicWeights == rhs.cubicWeights );
10487 #  endif
10488     }
10489 
operator !=VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10490     bool operator!=( BlitImageCubicWeightsInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
10491     {
10492       return !operator==( rhs );
10493     }
10494 #endif
10495 
10496   public:
10497     VULKAN_HPP_NAMESPACE::StructureType          sType        = StructureType::eBlitImageCubicWeightsInfoQCOM;
10498     const void *                                 pNext        = {};
10499     VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights = VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM::eCatmullRom;
10500   };
10501 
10502   template <>
10503   struct CppType<StructureType, StructureType::eBlitImageCubicWeightsInfoQCOM>
10504   {
10505     using Type = BlitImageCubicWeightsInfoQCOM;
10506   };
10507 
10508   struct ImageSubresourceLayers
10509   {
10510     using NativeType = VkImageSubresourceLayers;
10511 
10512 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresourceLayersVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10513     VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_     = {},
10514                                                  uint32_t                               mipLevel_       = {},
10515                                                  uint32_t                               baseArrayLayer_ = {},
10516                                                  uint32_t                               layerCount_     = {} ) VULKAN_HPP_NOEXCEPT
10517       : aspectMask{ aspectMask_ }
10518       , mipLevel{ mipLevel_ }
10519       , baseArrayLayer{ baseArrayLayer_ }
10520       , layerCount{ layerCount_ }
10521     {
10522     }
10523 
10524     VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10525 
ImageSubresourceLayersVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10526     ImageSubresourceLayers( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
10527       : ImageSubresourceLayers( *reinterpret_cast<ImageSubresourceLayers const *>( &rhs ) )
10528     {
10529     }
10530 
10531     ImageSubresourceLayers & operator=( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10532 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10533 
operator =VULKAN_HPP_NAMESPACE::ImageSubresourceLayers10534     ImageSubresourceLayers & operator=( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
10535     {
10536       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const *>( &rhs );
10537       return *this;
10538     }
10539 
10540 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10541     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
10542     {
10543       aspectMask = aspectMask_;
10544       return *this;
10545     }
10546 
setMipLevelVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10547     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT
10548     {
10549       mipLevel = mipLevel_;
10550       return *this;
10551     }
10552 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10553     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
10554     {
10555       baseArrayLayer = baseArrayLayer_;
10556       return *this;
10557     }
10558 
setLayerCountVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10559     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
10560     {
10561       layerCount = layerCount_;
10562       return *this;
10563     }
10564 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10565 
operator VkImageSubresourceLayers const&VULKAN_HPP_NAMESPACE::ImageSubresourceLayers10566     operator VkImageSubresourceLayers const &() const VULKAN_HPP_NOEXCEPT
10567     {
10568       return *reinterpret_cast<const VkImageSubresourceLayers *>( this );
10569     }
10570 
operator VkImageSubresourceLayers&VULKAN_HPP_NAMESPACE::ImageSubresourceLayers10571     operator VkImageSubresourceLayers &() VULKAN_HPP_NOEXCEPT
10572     {
10573       return *reinterpret_cast<VkImageSubresourceLayers *>( this );
10574     }
10575 
10576 #if defined( VULKAN_HPP_USE_REFLECT )
10577 #  if 14 <= VULKAN_HPP_CPP_VERSION
10578     auto
10579 #  else
10580     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &, uint32_t const &>
10581 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10582       reflect() const VULKAN_HPP_NOEXCEPT
10583     {
10584       return std::tie( aspectMask, mipLevel, baseArrayLayer, layerCount );
10585     }
10586 #endif
10587 
10588 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10589     auto operator<=>( ImageSubresourceLayers const & ) const = default;
10590 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresourceLayers10591     bool operator==( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT
10592     {
10593 #  if defined( VULKAN_HPP_USE_REFLECT )
10594       return this->reflect() == rhs.reflect();
10595 #  else
10596       return ( aspectMask == rhs.aspectMask ) && ( mipLevel == rhs.mipLevel ) && ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount );
10597 #  endif
10598     }
10599 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresourceLayers10600     bool operator!=( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT
10601     {
10602       return !operator==( rhs );
10603     }
10604 #endif
10605 
10606   public:
10607     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask     = {};
10608     uint32_t                               mipLevel       = {};
10609     uint32_t                               baseArrayLayer = {};
10610     uint32_t                               layerCount     = {};
10611   };
10612 
10613   struct ImageBlit2
10614   {
10615     using NativeType = VkImageBlit2;
10616 
10617     static const bool                                  allowDuplicate = false;
10618     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageBlit2;
10619 
10620 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageBlit2VULKAN_HPP_NAMESPACE::ImageBlit210621     VULKAN_HPP_CONSTEXPR_14 ImageBlit2( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          srcSubresource_ = {},
10622                                         std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_     = {},
10623                                         VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          dstSubresource_ = {},
10624                                         std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_     = {},
10625                                         const void *                                          pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
10626       : pNext{ pNext_ }
10627       , srcSubresource{ srcSubresource_ }
10628       , srcOffsets{ srcOffsets_ }
10629       , dstSubresource{ dstSubresource_ }
10630       , dstOffsets{ dstOffsets_ }
10631     {
10632     }
10633 
10634     VULKAN_HPP_CONSTEXPR_14 ImageBlit2( ImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10635 
ImageBlit2VULKAN_HPP_NAMESPACE::ImageBlit210636     ImageBlit2( VkImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageBlit2( *reinterpret_cast<ImageBlit2 const *>( &rhs ) ) {}
10637 
10638     ImageBlit2 & operator=( ImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10639 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10640 
operator =VULKAN_HPP_NAMESPACE::ImageBlit210641     ImageBlit2 & operator=( VkImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT
10642     {
10643       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageBlit2 const *>( &rhs );
10644       return *this;
10645     }
10646 
10647 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageBlit210648     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10649     {
10650       pNext = pNext_;
10651       return *this;
10652     }
10653 
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageBlit210654     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
10655     {
10656       srcSubresource = srcSubresource_;
10657       return *this;
10658     }
10659 
setSrcOffsetsVULKAN_HPP_NAMESPACE::ImageBlit210660     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setSrcOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT
10661     {
10662       srcOffsets = srcOffsets_;
10663       return *this;
10664     }
10665 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageBlit210666     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
10667     {
10668       dstSubresource = dstSubresource_;
10669       return *this;
10670     }
10671 
setDstOffsetsVULKAN_HPP_NAMESPACE::ImageBlit210672     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setDstOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT
10673     {
10674       dstOffsets = dstOffsets_;
10675       return *this;
10676     }
10677 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10678 
operator VkImageBlit2 const&VULKAN_HPP_NAMESPACE::ImageBlit210679     operator VkImageBlit2 const &() const VULKAN_HPP_NOEXCEPT
10680     {
10681       return *reinterpret_cast<const VkImageBlit2 *>( this );
10682     }
10683 
operator VkImageBlit2&VULKAN_HPP_NAMESPACE::ImageBlit210684     operator VkImageBlit2 &() VULKAN_HPP_NOEXCEPT
10685     {
10686       return *reinterpret_cast<VkImageBlit2 *>( this );
10687     }
10688 
10689 #if defined( VULKAN_HPP_USE_REFLECT )
10690 #  if 14 <= VULKAN_HPP_CPP_VERSION
10691     auto
10692 #  else
10693     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10694                const void * const &,
10695                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
10696                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &,
10697                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
10698                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &>
10699 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageBlit210700       reflect() const VULKAN_HPP_NOEXCEPT
10701     {
10702       return std::tie( sType, pNext, srcSubresource, srcOffsets, dstSubresource, dstOffsets );
10703     }
10704 #endif
10705 
10706 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10707     auto operator<=>( ImageBlit2 const & ) const = default;
10708 #else
operator ==VULKAN_HPP_NAMESPACE::ImageBlit210709     bool operator==( ImageBlit2 const & rhs ) const VULKAN_HPP_NOEXCEPT
10710     {
10711 #  if defined( VULKAN_HPP_USE_REFLECT )
10712       return this->reflect() == rhs.reflect();
10713 #  else
10714       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && ( srcOffsets == rhs.srcOffsets ) &&
10715              ( dstSubresource == rhs.dstSubresource ) && ( dstOffsets == rhs.dstOffsets );
10716 #  endif
10717     }
10718 
operator !=VULKAN_HPP_NAMESPACE::ImageBlit210719     bool operator!=( ImageBlit2 const & rhs ) const VULKAN_HPP_NOEXCEPT
10720     {
10721       return !operator==( rhs );
10722     }
10723 #endif
10724 
10725   public:
10726     VULKAN_HPP_NAMESPACE::StructureType                                     sType          = StructureType::eImageBlit2;
10727     const void *                                                            pNext          = {};
10728     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            srcSubresource = {};
10729     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> srcOffsets     = {};
10730     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            dstSubresource = {};
10731     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> dstOffsets     = {};
10732   };
10733 
10734   template <>
10735   struct CppType<StructureType, StructureType::eImageBlit2>
10736   {
10737     using Type = ImageBlit2;
10738   };
10739 
10740   using ImageBlit2KHR = ImageBlit2;
10741 
10742   struct BlitImageInfo2
10743   {
10744     using NativeType = VkBlitImageInfo2;
10745 
10746     static const bool                                  allowDuplicate = false;
10747     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBlitImageInfo2;
10748 
10749 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BlitImageInfo2VULKAN_HPP_NAMESPACE::BlitImageInfo210750     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2( VULKAN_HPP_NAMESPACE::Image              srcImage_       = {},
10751                                             VULKAN_HPP_NAMESPACE::ImageLayout        srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
10752                                             VULKAN_HPP_NAMESPACE::Image              dstImage_       = {},
10753                                             VULKAN_HPP_NAMESPACE::ImageLayout        dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
10754                                             uint32_t                                 regionCount_    = {},
10755                                             const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions_       = {},
10756                                             VULKAN_HPP_NAMESPACE::Filter             filter_         = VULKAN_HPP_NAMESPACE::Filter::eNearest,
10757                                             const void *                             pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
10758       : pNext{ pNext_ }
10759       , srcImage{ srcImage_ }
10760       , srcImageLayout{ srcImageLayout_ }
10761       , dstImage{ dstImage_ }
10762       , dstImageLayout{ dstImageLayout_ }
10763       , regionCount{ regionCount_ }
10764       , pRegions{ pRegions_ }
10765       , filter{ filter_ }
10766     {
10767     }
10768 
10769     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2( BlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10770 
BlitImageInfo2VULKAN_HPP_NAMESPACE::BlitImageInfo210771     BlitImageInfo2( VkBlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : BlitImageInfo2( *reinterpret_cast<BlitImageInfo2 const *>( &rhs ) ) {}
10772 
10773 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BlitImageInfo2VULKAN_HPP_NAMESPACE::BlitImageInfo210774     BlitImageInfo2( VULKAN_HPP_NAMESPACE::Image                                                                   srcImage_,
10775                     VULKAN_HPP_NAMESPACE::ImageLayout                                                             srcImageLayout_,
10776                     VULKAN_HPP_NAMESPACE::Image                                                                   dstImage_,
10777                     VULKAN_HPP_NAMESPACE::ImageLayout                                                             dstImageLayout_,
10778                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageBlit2> const & regions_,
10779                     VULKAN_HPP_NAMESPACE::Filter filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest,
10780                     const void *                 pNext_  = nullptr )
10781       : pNext( pNext_ )
10782       , srcImage( srcImage_ )
10783       , srcImageLayout( srcImageLayout_ )
10784       , dstImage( dstImage_ )
10785       , dstImageLayout( dstImageLayout_ )
10786       , regionCount( static_cast<uint32_t>( regions_.size() ) )
10787       , pRegions( regions_.data() )
10788       , filter( filter_ )
10789     {
10790     }
10791 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10792 
10793     BlitImageInfo2 & operator=( BlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10794 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10795 
operator =VULKAN_HPP_NAMESPACE::BlitImageInfo210796     BlitImageInfo2 & operator=( VkBlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
10797     {
10798       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BlitImageInfo2 const *>( &rhs );
10799       return *this;
10800     }
10801 
10802 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BlitImageInfo210803     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10804     {
10805       pNext = pNext_;
10806       return *this;
10807     }
10808 
setSrcImageVULKAN_HPP_NAMESPACE::BlitImageInfo210809     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
10810     {
10811       srcImage = srcImage_;
10812       return *this;
10813     }
10814 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::BlitImageInfo210815     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
10816     {
10817       srcImageLayout = srcImageLayout_;
10818       return *this;
10819     }
10820 
setDstImageVULKAN_HPP_NAMESPACE::BlitImageInfo210821     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
10822     {
10823       dstImage = dstImage_;
10824       return *this;
10825     }
10826 
setDstImageLayoutVULKAN_HPP_NAMESPACE::BlitImageInfo210827     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
10828     {
10829       dstImageLayout = dstImageLayout_;
10830       return *this;
10831     }
10832 
setRegionCountVULKAN_HPP_NAMESPACE::BlitImageInfo210833     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
10834     {
10835       regionCount = regionCount_;
10836       return *this;
10837     }
10838 
setPRegionsVULKAN_HPP_NAMESPACE::BlitImageInfo210839     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
10840     {
10841       pRegions = pRegions_;
10842       return *this;
10843     }
10844 
10845 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::BlitImageInfo210846     BlitImageInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageBlit2> const & regions_ ) VULKAN_HPP_NOEXCEPT
10847     {
10848       regionCount = static_cast<uint32_t>( regions_.size() );
10849       pRegions    = regions_.data();
10850       return *this;
10851     }
10852 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10853 
setFilterVULKAN_HPP_NAMESPACE::BlitImageInfo210854     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setFilter( VULKAN_HPP_NAMESPACE::Filter filter_ ) VULKAN_HPP_NOEXCEPT
10855     {
10856       filter = filter_;
10857       return *this;
10858     }
10859 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10860 
operator VkBlitImageInfo2 const&VULKAN_HPP_NAMESPACE::BlitImageInfo210861     operator VkBlitImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
10862     {
10863       return *reinterpret_cast<const VkBlitImageInfo2 *>( this );
10864     }
10865 
operator VkBlitImageInfo2&VULKAN_HPP_NAMESPACE::BlitImageInfo210866     operator VkBlitImageInfo2 &() VULKAN_HPP_NOEXCEPT
10867     {
10868       return *reinterpret_cast<VkBlitImageInfo2 *>( this );
10869     }
10870 
10871 #if defined( VULKAN_HPP_USE_REFLECT )
10872 #  if 14 <= VULKAN_HPP_CPP_VERSION
10873     auto
10874 #  else
10875     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10876                const void * const &,
10877                VULKAN_HPP_NAMESPACE::Image const &,
10878                VULKAN_HPP_NAMESPACE::ImageLayout const &,
10879                VULKAN_HPP_NAMESPACE::Image const &,
10880                VULKAN_HPP_NAMESPACE::ImageLayout const &,
10881                uint32_t const &,
10882                const VULKAN_HPP_NAMESPACE::ImageBlit2 * const &,
10883                VULKAN_HPP_NAMESPACE::Filter const &>
10884 #  endif
reflectVULKAN_HPP_NAMESPACE::BlitImageInfo210885       reflect() const VULKAN_HPP_NOEXCEPT
10886     {
10887       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter );
10888     }
10889 #endif
10890 
10891 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10892     auto operator<=>( BlitImageInfo2 const & ) const = default;
10893 #else
operator ==VULKAN_HPP_NAMESPACE::BlitImageInfo210894     bool operator==( BlitImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
10895     {
10896 #  if defined( VULKAN_HPP_USE_REFLECT )
10897       return this->reflect() == rhs.reflect();
10898 #  else
10899       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) &&
10900              ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ) &&
10901              ( filter == rhs.filter );
10902 #  endif
10903     }
10904 
operator !=VULKAN_HPP_NAMESPACE::BlitImageInfo210905     bool operator!=( BlitImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
10906     {
10907       return !operator==( rhs );
10908     }
10909 #endif
10910 
10911   public:
10912     VULKAN_HPP_NAMESPACE::StructureType      sType          = StructureType::eBlitImageInfo2;
10913     const void *                             pNext          = {};
10914     VULKAN_HPP_NAMESPACE::Image              srcImage       = {};
10915     VULKAN_HPP_NAMESPACE::ImageLayout        srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
10916     VULKAN_HPP_NAMESPACE::Image              dstImage       = {};
10917     VULKAN_HPP_NAMESPACE::ImageLayout        dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
10918     uint32_t                                 regionCount    = {};
10919     const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions       = {};
10920     VULKAN_HPP_NAMESPACE::Filter             filter         = VULKAN_HPP_NAMESPACE::Filter::eNearest;
10921   };
10922 
10923   template <>
10924   struct CppType<StructureType, StructureType::eBlitImageInfo2>
10925   {
10926     using Type = BlitImageInfo2;
10927   };
10928 
10929   using BlitImageInfo2KHR = BlitImageInfo2;
10930 
10931   struct BufferCaptureDescriptorDataInfoEXT
10932   {
10933     using NativeType = VkBufferCaptureDescriptorDataInfoEXT;
10934 
10935     static const bool                                  allowDuplicate = false;
10936     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCaptureDescriptorDataInfoEXT;
10937 
10938 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10939     VULKAN_HPP_CONSTEXPR BufferCaptureDescriptorDataInfoEXT( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
10940       : pNext{ pNext_ }
10941       , buffer{ buffer_ }
10942     {
10943     }
10944 
10945     VULKAN_HPP_CONSTEXPR BufferCaptureDescriptorDataInfoEXT( BufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10946 
BufferCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10947     BufferCaptureDescriptorDataInfoEXT( VkBufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
10948       : BufferCaptureDescriptorDataInfoEXT( *reinterpret_cast<BufferCaptureDescriptorDataInfoEXT const *>( &rhs ) )
10949     {
10950     }
10951 
10952     BufferCaptureDescriptorDataInfoEXT & operator=( BufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10953 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10954 
operator =VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10955     BufferCaptureDescriptorDataInfoEXT & operator=( VkBufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
10956     {
10957       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT const *>( &rhs );
10958       return *this;
10959     }
10960 
10961 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10962     VULKAN_HPP_CONSTEXPR_14 BufferCaptureDescriptorDataInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10963     {
10964       pNext = pNext_;
10965       return *this;
10966     }
10967 
setBufferVULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10968     VULKAN_HPP_CONSTEXPR_14 BufferCaptureDescriptorDataInfoEXT & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
10969     {
10970       buffer = buffer_;
10971       return *this;
10972     }
10973 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10974 
operator VkBufferCaptureDescriptorDataInfoEXT const&VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10975     operator VkBufferCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT
10976     {
10977       return *reinterpret_cast<const VkBufferCaptureDescriptorDataInfoEXT *>( this );
10978     }
10979 
operator VkBufferCaptureDescriptorDataInfoEXT&VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10980     operator VkBufferCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT
10981     {
10982       return *reinterpret_cast<VkBufferCaptureDescriptorDataInfoEXT *>( this );
10983     }
10984 
10985 #if defined( VULKAN_HPP_USE_REFLECT )
10986 #  if 14 <= VULKAN_HPP_CPP_VERSION
10987     auto
10988 #  else
10989     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
10990 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10991       reflect() const VULKAN_HPP_NOEXCEPT
10992     {
10993       return std::tie( sType, pNext, buffer );
10994     }
10995 #endif
10996 
10997 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10998     auto operator<=>( BufferCaptureDescriptorDataInfoEXT const & ) const = default;
10999 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT11000     bool operator==( BufferCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
11001     {
11002 #  if defined( VULKAN_HPP_USE_REFLECT )
11003       return this->reflect() == rhs.reflect();
11004 #  else
11005       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
11006 #  endif
11007     }
11008 
operator !=VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT11009     bool operator!=( BufferCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
11010     {
11011       return !operator==( rhs );
11012     }
11013 #endif
11014 
11015   public:
11016     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eBufferCaptureDescriptorDataInfoEXT;
11017     const void *                        pNext  = {};
11018     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
11019   };
11020 
11021   template <>
11022   struct CppType<StructureType, StructureType::eBufferCaptureDescriptorDataInfoEXT>
11023   {
11024     using Type = BufferCaptureDescriptorDataInfoEXT;
11025   };
11026 
11027 #if defined( VK_USE_PLATFORM_FUCHSIA )
11028   struct BufferCollectionBufferCreateInfoFUCHSIA
11029   {
11030     using NativeType = VkBufferCollectionBufferCreateInfoFUCHSIA;
11031 
11032     static const bool                                  allowDuplicate = false;
11033     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCollectionBufferCreateInfoFUCHSIA;
11034 
11035 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionBufferCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11036     VULKAN_HPP_CONSTEXPR BufferCollectionBufferCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {},
11037                                                                   uint32_t                                      index_      = {},
11038                                                                   const void *                                  pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
11039       : pNext{ pNext_ }
11040       , collection{ collection_ }
11041       , index{ index_ }
11042     {
11043     }
11044 
11045     VULKAN_HPP_CONSTEXPR BufferCollectionBufferCreateInfoFUCHSIA( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11046 
BufferCollectionBufferCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11047     BufferCollectionBufferCreateInfoFUCHSIA( VkBufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11048       : BufferCollectionBufferCreateInfoFUCHSIA( *reinterpret_cast<BufferCollectionBufferCreateInfoFUCHSIA const *>( &rhs ) )
11049     {
11050     }
11051 
11052     BufferCollectionBufferCreateInfoFUCHSIA & operator=( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11053 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11054 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11055     BufferCollectionBufferCreateInfoFUCHSIA & operator=( VkBufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11056     {
11057       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA const *>( &rhs );
11058       return *this;
11059     }
11060 
11061 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11062     VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11063     {
11064       pNext = pNext_;
11065       return *this;
11066     }
11067 
11068     VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA &
setCollectionVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11069       setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT
11070     {
11071       collection = collection_;
11072       return *this;
11073     }
11074 
setIndexVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11075     VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
11076     {
11077       index = index_;
11078       return *this;
11079     }
11080 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11081 
operator VkBufferCollectionBufferCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11082     operator VkBufferCollectionBufferCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11083     {
11084       return *reinterpret_cast<const VkBufferCollectionBufferCreateInfoFUCHSIA *>( this );
11085     }
11086 
operator VkBufferCollectionBufferCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11087     operator VkBufferCollectionBufferCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
11088     {
11089       return *reinterpret_cast<VkBufferCollectionBufferCreateInfoFUCHSIA *>( this );
11090     }
11091 
11092 #  if defined( VULKAN_HPP_USE_REFLECT )
11093 #    if 14 <= VULKAN_HPP_CPP_VERSION
11094     auto
11095 #    else
11096     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const &, uint32_t const &>
11097 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11098       reflect() const VULKAN_HPP_NOEXCEPT
11099     {
11100       return std::tie( sType, pNext, collection, index );
11101     }
11102 #  endif
11103 
11104 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11105     auto operator<=>( BufferCollectionBufferCreateInfoFUCHSIA const & ) const = default;
11106 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11107     bool operator==( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11108     {
11109 #    if defined( VULKAN_HPP_USE_REFLECT )
11110       return this->reflect() == rhs.reflect();
11111 #    else
11112       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && ( index == rhs.index );
11113 #    endif
11114     }
11115 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA11116     bool operator!=( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11117     {
11118       return !operator==( rhs );
11119     }
11120 #  endif
11121 
11122   public:
11123     VULKAN_HPP_NAMESPACE::StructureType           sType      = StructureType::eBufferCollectionBufferCreateInfoFUCHSIA;
11124     const void *                                  pNext      = {};
11125     VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {};
11126     uint32_t                                      index      = {};
11127   };
11128 
11129   template <>
11130   struct CppType<StructureType, StructureType::eBufferCollectionBufferCreateInfoFUCHSIA>
11131   {
11132     using Type = BufferCollectionBufferCreateInfoFUCHSIA;
11133   };
11134 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11135 
11136 #if defined( VK_USE_PLATFORM_FUCHSIA )
11137   struct BufferCollectionConstraintsInfoFUCHSIA
11138   {
11139     using NativeType = VkBufferCollectionConstraintsInfoFUCHSIA;
11140 
11141     static const bool                                  allowDuplicate = false;
11142     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCollectionConstraintsInfoFUCHSIA;
11143 
11144 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11145     VULKAN_HPP_CONSTEXPR BufferCollectionConstraintsInfoFUCHSIA( uint32_t     minBufferCount_                  = {},
11146                                                                  uint32_t     maxBufferCount_                  = {},
11147                                                                  uint32_t     minBufferCountForCamping_        = {},
11148                                                                  uint32_t     minBufferCountForDedicatedSlack_ = {},
11149                                                                  uint32_t     minBufferCountForSharedSlack_    = {},
11150                                                                  const void * pNext_                           = nullptr ) VULKAN_HPP_NOEXCEPT
11151       : pNext{ pNext_ }
11152       , minBufferCount{ minBufferCount_ }
11153       , maxBufferCount{ maxBufferCount_ }
11154       , minBufferCountForCamping{ minBufferCountForCamping_ }
11155       , minBufferCountForDedicatedSlack{ minBufferCountForDedicatedSlack_ }
11156       , minBufferCountForSharedSlack{ minBufferCountForSharedSlack_ }
11157     {
11158     }
11159 
11160     VULKAN_HPP_CONSTEXPR BufferCollectionConstraintsInfoFUCHSIA( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11161 
BufferCollectionConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11162     BufferCollectionConstraintsInfoFUCHSIA( VkBufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11163       : BufferCollectionConstraintsInfoFUCHSIA( *reinterpret_cast<BufferCollectionConstraintsInfoFUCHSIA const *>( &rhs ) )
11164     {
11165     }
11166 
11167     BufferCollectionConstraintsInfoFUCHSIA & operator=( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11168 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11169 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11170     BufferCollectionConstraintsInfoFUCHSIA & operator=( VkBufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11171     {
11172       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const *>( &rhs );
11173       return *this;
11174     }
11175 
11176 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11177     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11178     {
11179       pNext = pNext_;
11180       return *this;
11181     }
11182 
setMinBufferCountVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11183     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMinBufferCount( uint32_t minBufferCount_ ) VULKAN_HPP_NOEXCEPT
11184     {
11185       minBufferCount = minBufferCount_;
11186       return *this;
11187     }
11188 
setMaxBufferCountVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11189     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMaxBufferCount( uint32_t maxBufferCount_ ) VULKAN_HPP_NOEXCEPT
11190     {
11191       maxBufferCount = maxBufferCount_;
11192       return *this;
11193     }
11194 
setMinBufferCountForCampingVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11195     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMinBufferCountForCamping( uint32_t minBufferCountForCamping_ ) VULKAN_HPP_NOEXCEPT
11196     {
11197       minBufferCountForCamping = minBufferCountForCamping_;
11198       return *this;
11199     }
11200 
11201     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA &
setMinBufferCountForDedicatedSlackVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11202       setMinBufferCountForDedicatedSlack( uint32_t minBufferCountForDedicatedSlack_ ) VULKAN_HPP_NOEXCEPT
11203     {
11204       minBufferCountForDedicatedSlack = minBufferCountForDedicatedSlack_;
11205       return *this;
11206     }
11207 
11208     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA &
setMinBufferCountForSharedSlackVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11209       setMinBufferCountForSharedSlack( uint32_t minBufferCountForSharedSlack_ ) VULKAN_HPP_NOEXCEPT
11210     {
11211       minBufferCountForSharedSlack = minBufferCountForSharedSlack_;
11212       return *this;
11213     }
11214 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11215 
operator VkBufferCollectionConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11216     operator VkBufferCollectionConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11217     {
11218       return *reinterpret_cast<const VkBufferCollectionConstraintsInfoFUCHSIA *>( this );
11219     }
11220 
operator VkBufferCollectionConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11221     operator VkBufferCollectionConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
11222     {
11223       return *reinterpret_cast<VkBufferCollectionConstraintsInfoFUCHSIA *>( this );
11224     }
11225 
11226 #  if defined( VULKAN_HPP_USE_REFLECT )
11227 #    if 14 <= VULKAN_HPP_CPP_VERSION
11228     auto
11229 #    else
11230     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11231                const void * const &,
11232                uint32_t const &,
11233                uint32_t const &,
11234                uint32_t const &,
11235                uint32_t const &,
11236                uint32_t const &>
11237 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11238       reflect() const VULKAN_HPP_NOEXCEPT
11239     {
11240       return std::tie( sType, pNext, minBufferCount, maxBufferCount, minBufferCountForCamping, minBufferCountForDedicatedSlack, minBufferCountForSharedSlack );
11241     }
11242 #  endif
11243 
11244 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11245     auto operator<=>( BufferCollectionConstraintsInfoFUCHSIA const & ) const = default;
11246 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11247     bool operator==( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11248     {
11249 #    if defined( VULKAN_HPP_USE_REFLECT )
11250       return this->reflect() == rhs.reflect();
11251 #    else
11252       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minBufferCount == rhs.minBufferCount ) && ( maxBufferCount == rhs.maxBufferCount ) &&
11253              ( minBufferCountForCamping == rhs.minBufferCountForCamping ) && ( minBufferCountForDedicatedSlack == rhs.minBufferCountForDedicatedSlack ) &&
11254              ( minBufferCountForSharedSlack == rhs.minBufferCountForSharedSlack );
11255 #    endif
11256     }
11257 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11258     bool operator!=( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11259     {
11260       return !operator==( rhs );
11261     }
11262 #  endif
11263 
11264   public:
11265     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::eBufferCollectionConstraintsInfoFUCHSIA;
11266     const void *                        pNext                           = {};
11267     uint32_t                            minBufferCount                  = {};
11268     uint32_t                            maxBufferCount                  = {};
11269     uint32_t                            minBufferCountForCamping        = {};
11270     uint32_t                            minBufferCountForDedicatedSlack = {};
11271     uint32_t                            minBufferCountForSharedSlack    = {};
11272   };
11273 
11274   template <>
11275   struct CppType<StructureType, StructureType::eBufferCollectionConstraintsInfoFUCHSIA>
11276   {
11277     using Type = BufferCollectionConstraintsInfoFUCHSIA;
11278   };
11279 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11280 
11281 #if defined( VK_USE_PLATFORM_FUCHSIA )
11282   struct BufferCollectionCreateInfoFUCHSIA
11283   {
11284     using NativeType = VkBufferCollectionCreateInfoFUCHSIA;
11285 
11286     static const bool                                  allowDuplicate = false;
11287     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCollectionCreateInfoFUCHSIA;
11288 
11289 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11290     VULKAN_HPP_CONSTEXPR BufferCollectionCreateInfoFUCHSIA( zx_handle_t collectionToken_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
11291       : pNext{ pNext_ }
11292       , collectionToken{ collectionToken_ }
11293     {
11294     }
11295 
11296     VULKAN_HPP_CONSTEXPR BufferCollectionCreateInfoFUCHSIA( BufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11297 
BufferCollectionCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11298     BufferCollectionCreateInfoFUCHSIA( VkBufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11299       : BufferCollectionCreateInfoFUCHSIA( *reinterpret_cast<BufferCollectionCreateInfoFUCHSIA const *>( &rhs ) )
11300     {
11301     }
11302 
11303     BufferCollectionCreateInfoFUCHSIA & operator=( BufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11304 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11305 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11306     BufferCollectionCreateInfoFUCHSIA & operator=( VkBufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11307     {
11308       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const *>( &rhs );
11309       return *this;
11310     }
11311 
11312 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11313     VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11314     {
11315       pNext = pNext_;
11316       return *this;
11317     }
11318 
setCollectionTokenVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11319     VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA & setCollectionToken( zx_handle_t collectionToken_ ) VULKAN_HPP_NOEXCEPT
11320     {
11321       collectionToken = collectionToken_;
11322       return *this;
11323     }
11324 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11325 
operator VkBufferCollectionCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11326     operator VkBufferCollectionCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11327     {
11328       return *reinterpret_cast<const VkBufferCollectionCreateInfoFUCHSIA *>( this );
11329     }
11330 
operator VkBufferCollectionCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11331     operator VkBufferCollectionCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
11332     {
11333       return *reinterpret_cast<VkBufferCollectionCreateInfoFUCHSIA *>( this );
11334     }
11335 
11336 #  if defined( VULKAN_HPP_USE_REFLECT )
11337 #    if 14 <= VULKAN_HPP_CPP_VERSION
11338     auto
11339 #    else
11340     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, zx_handle_t const &>
11341 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11342       reflect() const VULKAN_HPP_NOEXCEPT
11343     {
11344       return std::tie( sType, pNext, collectionToken );
11345     }
11346 #  endif
11347 
11348 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11349     std::strong_ordering operator<=>( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11350     {
11351       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
11352         return cmp;
11353       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
11354         return cmp;
11355       if ( auto cmp = memcmp( &collectionToken, &rhs.collectionToken, sizeof( zx_handle_t ) ); cmp != 0 )
11356         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
11357 
11358       return std::strong_ordering::equivalent;
11359     }
11360 #  endif
11361 
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11362     bool operator==( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11363     {
11364       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &collectionToken, &rhs.collectionToken, sizeof( zx_handle_t ) ) == 0 );
11365     }
11366 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11367     bool operator!=( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11368     {
11369       return !operator==( rhs );
11370     }
11371 
11372   public:
11373     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eBufferCollectionCreateInfoFUCHSIA;
11374     const void *                        pNext           = {};
11375     zx_handle_t                         collectionToken = {};
11376   };
11377 
11378   template <>
11379   struct CppType<StructureType, StructureType::eBufferCollectionCreateInfoFUCHSIA>
11380   {
11381     using Type = BufferCollectionCreateInfoFUCHSIA;
11382   };
11383 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11384 
11385 #if defined( VK_USE_PLATFORM_FUCHSIA )
11386   struct BufferCollectionImageCreateInfoFUCHSIA
11387   {
11388     using NativeType = VkBufferCollectionImageCreateInfoFUCHSIA;
11389 
11390     static const bool                                  allowDuplicate = false;
11391     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCollectionImageCreateInfoFUCHSIA;
11392 
11393 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionImageCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11394     VULKAN_HPP_CONSTEXPR BufferCollectionImageCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {},
11395                                                                  uint32_t                                      index_      = {},
11396                                                                  const void *                                  pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
11397       : pNext{ pNext_ }
11398       , collection{ collection_ }
11399       , index{ index_ }
11400     {
11401     }
11402 
11403     VULKAN_HPP_CONSTEXPR BufferCollectionImageCreateInfoFUCHSIA( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11404 
BufferCollectionImageCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11405     BufferCollectionImageCreateInfoFUCHSIA( VkBufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11406       : BufferCollectionImageCreateInfoFUCHSIA( *reinterpret_cast<BufferCollectionImageCreateInfoFUCHSIA const *>( &rhs ) )
11407     {
11408     }
11409 
11410     BufferCollectionImageCreateInfoFUCHSIA & operator=( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11411 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11412 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11413     BufferCollectionImageCreateInfoFUCHSIA & operator=( VkBufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11414     {
11415       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA const *>( &rhs );
11416       return *this;
11417     }
11418 
11419 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11420     VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11421     {
11422       pNext = pNext_;
11423       return *this;
11424     }
11425 
11426     VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA &
setCollectionVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11427       setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT
11428     {
11429       collection = collection_;
11430       return *this;
11431     }
11432 
setIndexVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11433     VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
11434     {
11435       index = index_;
11436       return *this;
11437     }
11438 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11439 
operator VkBufferCollectionImageCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11440     operator VkBufferCollectionImageCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11441     {
11442       return *reinterpret_cast<const VkBufferCollectionImageCreateInfoFUCHSIA *>( this );
11443     }
11444 
operator VkBufferCollectionImageCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11445     operator VkBufferCollectionImageCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
11446     {
11447       return *reinterpret_cast<VkBufferCollectionImageCreateInfoFUCHSIA *>( this );
11448     }
11449 
11450 #  if defined( VULKAN_HPP_USE_REFLECT )
11451 #    if 14 <= VULKAN_HPP_CPP_VERSION
11452     auto
11453 #    else
11454     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const &, uint32_t const &>
11455 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11456       reflect() const VULKAN_HPP_NOEXCEPT
11457     {
11458       return std::tie( sType, pNext, collection, index );
11459     }
11460 #  endif
11461 
11462 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11463     auto operator<=>( BufferCollectionImageCreateInfoFUCHSIA const & ) const = default;
11464 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11465     bool operator==( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11466     {
11467 #    if defined( VULKAN_HPP_USE_REFLECT )
11468       return this->reflect() == rhs.reflect();
11469 #    else
11470       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && ( index == rhs.index );
11471 #    endif
11472     }
11473 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11474     bool operator!=( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11475     {
11476       return !operator==( rhs );
11477     }
11478 #  endif
11479 
11480   public:
11481     VULKAN_HPP_NAMESPACE::StructureType           sType      = StructureType::eBufferCollectionImageCreateInfoFUCHSIA;
11482     const void *                                  pNext      = {};
11483     VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {};
11484     uint32_t                                      index      = {};
11485   };
11486 
11487   template <>
11488   struct CppType<StructureType, StructureType::eBufferCollectionImageCreateInfoFUCHSIA>
11489   {
11490     using Type = BufferCollectionImageCreateInfoFUCHSIA;
11491   };
11492 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11493 
11494 #if defined( VK_USE_PLATFORM_FUCHSIA )
11495   struct SysmemColorSpaceFUCHSIA
11496   {
11497     using NativeType = VkSysmemColorSpaceFUCHSIA;
11498 
11499     static const bool                                  allowDuplicate = false;
11500     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSysmemColorSpaceFUCHSIA;
11501 
11502 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SysmemColorSpaceFUCHSIAVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11503     VULKAN_HPP_CONSTEXPR SysmemColorSpaceFUCHSIA( uint32_t colorSpace_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
11504       : pNext{ pNext_ }
11505       , colorSpace{ colorSpace_ }
11506     {
11507     }
11508 
11509     VULKAN_HPP_CONSTEXPR SysmemColorSpaceFUCHSIA( SysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11510 
SysmemColorSpaceFUCHSIAVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11511     SysmemColorSpaceFUCHSIA( VkSysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11512       : SysmemColorSpaceFUCHSIA( *reinterpret_cast<SysmemColorSpaceFUCHSIA const *>( &rhs ) )
11513     {
11514     }
11515 
11516     SysmemColorSpaceFUCHSIA & operator=( SysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11517 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11518 
operator =VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11519     SysmemColorSpaceFUCHSIA & operator=( VkSysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11520     {
11521       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const *>( &rhs );
11522       return *this;
11523     }
11524 
11525 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11526     VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11527     {
11528       pNext = pNext_;
11529       return *this;
11530     }
11531 
setColorSpaceVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11532     VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA & setColorSpace( uint32_t colorSpace_ ) VULKAN_HPP_NOEXCEPT
11533     {
11534       colorSpace = colorSpace_;
11535       return *this;
11536     }
11537 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11538 
operator VkSysmemColorSpaceFUCHSIA const&VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11539     operator VkSysmemColorSpaceFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11540     {
11541       return *reinterpret_cast<const VkSysmemColorSpaceFUCHSIA *>( this );
11542     }
11543 
operator VkSysmemColorSpaceFUCHSIA&VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11544     operator VkSysmemColorSpaceFUCHSIA &() VULKAN_HPP_NOEXCEPT
11545     {
11546       return *reinterpret_cast<VkSysmemColorSpaceFUCHSIA *>( this );
11547     }
11548 
11549 #  if defined( VULKAN_HPP_USE_REFLECT )
11550 #    if 14 <= VULKAN_HPP_CPP_VERSION
11551     auto
11552 #    else
11553     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
11554 #    endif
reflectVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11555       reflect() const VULKAN_HPP_NOEXCEPT
11556     {
11557       return std::tie( sType, pNext, colorSpace );
11558     }
11559 #  endif
11560 
11561 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11562     auto operator<=>( SysmemColorSpaceFUCHSIA const & ) const = default;
11563 #  else
operator ==VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11564     bool operator==( SysmemColorSpaceFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11565     {
11566 #    if defined( VULKAN_HPP_USE_REFLECT )
11567       return this->reflect() == rhs.reflect();
11568 #    else
11569       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorSpace == rhs.colorSpace );
11570 #    endif
11571     }
11572 
operator !=VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11573     bool operator!=( SysmemColorSpaceFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11574     {
11575       return !operator==( rhs );
11576     }
11577 #  endif
11578 
11579   public:
11580     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eSysmemColorSpaceFUCHSIA;
11581     const void *                        pNext      = {};
11582     uint32_t                            colorSpace = {};
11583   };
11584 
11585   template <>
11586   struct CppType<StructureType, StructureType::eSysmemColorSpaceFUCHSIA>
11587   {
11588     using Type = SysmemColorSpaceFUCHSIA;
11589   };
11590 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11591 
11592 #if defined( VK_USE_PLATFORM_FUCHSIA )
11593   struct BufferCollectionPropertiesFUCHSIA
11594   {
11595     using NativeType = VkBufferCollectionPropertiesFUCHSIA;
11596 
11597     static const bool                                  allowDuplicate = false;
11598     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCollectionPropertiesFUCHSIA;
11599 
11600 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionPropertiesFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11601     VULKAN_HPP_CONSTEXPR BufferCollectionPropertiesFUCHSIA(
11602       uint32_t                                          memoryTypeBits_                   = {},
11603       uint32_t                                          bufferCount_                      = {},
11604       uint32_t                                          createInfoIndex_                  = {},
11605       uint64_t                                          sysmemPixelFormat_                = {},
11606       VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures_                   = {},
11607       VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA     sysmemColorSpaceIndex_            = {},
11608       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
11609       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
11610       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
11611       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
11612       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
11613       void *                                            pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
11614       : pNext{ pNext_ }
11615       , memoryTypeBits{ memoryTypeBits_ }
11616       , bufferCount{ bufferCount_ }
11617       , createInfoIndex{ createInfoIndex_ }
11618       , sysmemPixelFormat{ sysmemPixelFormat_ }
11619       , formatFeatures{ formatFeatures_ }
11620       , sysmemColorSpaceIndex{ sysmemColorSpaceIndex_ }
11621       , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ }
11622       , suggestedYcbcrModel{ suggestedYcbcrModel_ }
11623       , suggestedYcbcrRange{ suggestedYcbcrRange_ }
11624       , suggestedXChromaOffset{ suggestedXChromaOffset_ }
11625       , suggestedYChromaOffset{ suggestedYChromaOffset_ }
11626     {
11627     }
11628 
11629     VULKAN_HPP_CONSTEXPR BufferCollectionPropertiesFUCHSIA( BufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11630 
BufferCollectionPropertiesFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11631     BufferCollectionPropertiesFUCHSIA( VkBufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11632       : BufferCollectionPropertiesFUCHSIA( *reinterpret_cast<BufferCollectionPropertiesFUCHSIA const *>( &rhs ) )
11633     {
11634     }
11635 
11636     BufferCollectionPropertiesFUCHSIA & operator=( BufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11637 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11638 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11639     BufferCollectionPropertiesFUCHSIA & operator=( VkBufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11640     {
11641       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA const *>( &rhs );
11642       return *this;
11643     }
11644 
operator VkBufferCollectionPropertiesFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11645     operator VkBufferCollectionPropertiesFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11646     {
11647       return *reinterpret_cast<const VkBufferCollectionPropertiesFUCHSIA *>( this );
11648     }
11649 
operator VkBufferCollectionPropertiesFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11650     operator VkBufferCollectionPropertiesFUCHSIA &() VULKAN_HPP_NOEXCEPT
11651     {
11652       return *reinterpret_cast<VkBufferCollectionPropertiesFUCHSIA *>( this );
11653     }
11654 
11655 #  if defined( VULKAN_HPP_USE_REFLECT )
11656 #    if 14 <= VULKAN_HPP_CPP_VERSION
11657     auto
11658 #    else
11659     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11660                void * const &,
11661                uint32_t const &,
11662                uint32_t const &,
11663                uint32_t const &,
11664                uint64_t const &,
11665                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
11666                VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const &,
11667                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
11668                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
11669                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
11670                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
11671                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
11672 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11673       reflect() const VULKAN_HPP_NOEXCEPT
11674     {
11675       return std::tie( sType,
11676                        pNext,
11677                        memoryTypeBits,
11678                        bufferCount,
11679                        createInfoIndex,
11680                        sysmemPixelFormat,
11681                        formatFeatures,
11682                        sysmemColorSpaceIndex,
11683                        samplerYcbcrConversionComponents,
11684                        suggestedYcbcrModel,
11685                        suggestedYcbcrRange,
11686                        suggestedXChromaOffset,
11687                        suggestedYChromaOffset );
11688     }
11689 #  endif
11690 
11691 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11692     auto operator<=>( BufferCollectionPropertiesFUCHSIA const & ) const = default;
11693 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11694     bool operator==( BufferCollectionPropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11695     {
11696 #    if defined( VULKAN_HPP_USE_REFLECT )
11697       return this->reflect() == rhs.reflect();
11698 #    else
11699       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ) && ( bufferCount == rhs.bufferCount ) &&
11700              ( createInfoIndex == rhs.createInfoIndex ) && ( sysmemPixelFormat == rhs.sysmemPixelFormat ) && ( formatFeatures == rhs.formatFeatures ) &&
11701              ( sysmemColorSpaceIndex == rhs.sysmemColorSpaceIndex ) && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) &&
11702              ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) &&
11703              ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
11704 #    endif
11705     }
11706 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11707     bool operator!=( BufferCollectionPropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11708     {
11709       return !operator==( rhs );
11710     }
11711 #  endif
11712 
11713   public:
11714     VULKAN_HPP_NAMESPACE::StructureType               sType                            = StructureType::eBufferCollectionPropertiesFUCHSIA;
11715     void *                                            pNext                            = {};
11716     uint32_t                                          memoryTypeBits                   = {};
11717     uint32_t                                          bufferCount                      = {};
11718     uint32_t                                          createInfoIndex                  = {};
11719     uint64_t                                          sysmemPixelFormat                = {};
11720     VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures                   = {};
11721     VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA     sysmemColorSpaceIndex            = {};
11722     VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents = {};
11723     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
11724     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
11725     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
11726     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
11727   };
11728 
11729   template <>
11730   struct CppType<StructureType, StructureType::eBufferCollectionPropertiesFUCHSIA>
11731   {
11732     using Type = BufferCollectionPropertiesFUCHSIA;
11733   };
11734 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11735 
11736   struct BufferCreateInfo
11737   {
11738     using NativeType = VkBufferCreateInfo;
11739 
11740     static const bool                                  allowDuplicate = false;
11741     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCreateInfo;
11742 
11743 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo11744     VULKAN_HPP_CONSTEXPR BufferCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_                 = {},
11745                                            VULKAN_HPP_NAMESPACE::DeviceSize        size_                  = {},
11746                                            VULKAN_HPP_NAMESPACE::BufferUsageFlags  usage_                 = {},
11747                                            VULKAN_HPP_NAMESPACE::SharingMode       sharingMode_           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
11748                                            uint32_t                                queueFamilyIndexCount_ = {},
11749                                            const uint32_t *                        pQueueFamilyIndices_   = {},
11750                                            const void *                            pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
11751       : pNext{ pNext_ }
11752       , flags{ flags_ }
11753       , size{ size_ }
11754       , usage{ usage_ }
11755       , sharingMode{ sharingMode_ }
11756       , queueFamilyIndexCount{ queueFamilyIndexCount_ }
11757       , pQueueFamilyIndices{ pQueueFamilyIndices_ }
11758     {
11759     }
11760 
11761     VULKAN_HPP_CONSTEXPR BufferCreateInfo( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11762 
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo11763     BufferCreateInfo( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : BufferCreateInfo( *reinterpret_cast<BufferCreateInfo const *>( &rhs ) ) {}
11764 
11765 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo11766     BufferCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateFlags                               flags_,
11767                       VULKAN_HPP_NAMESPACE::DeviceSize                                      size_,
11768                       VULKAN_HPP_NAMESPACE::BufferUsageFlags                                usage_,
11769                       VULKAN_HPP_NAMESPACE::SharingMode                                     sharingMode_,
11770                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_,
11771                       const void *                                                          pNext_ = nullptr )
11772       : pNext( pNext_ )
11773       , flags( flags_ )
11774       , size( size_ )
11775       , usage( usage_ )
11776       , sharingMode( sharingMode_ )
11777       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
11778       , pQueueFamilyIndices( queueFamilyIndices_.data() )
11779     {
11780     }
11781 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
11782 
11783     BufferCreateInfo & operator=( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11784 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11785 
operator =VULKAN_HPP_NAMESPACE::BufferCreateInfo11786     BufferCreateInfo & operator=( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11787     {
11788       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCreateInfo const *>( &rhs );
11789       return *this;
11790     }
11791 
11792 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCreateInfo11793     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11794     {
11795       pNext = pNext_;
11796       return *this;
11797     }
11798 
setFlagsVULKAN_HPP_NAMESPACE::BufferCreateInfo11799     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
11800     {
11801       flags = flags_;
11802       return *this;
11803     }
11804 
setSizeVULKAN_HPP_NAMESPACE::BufferCreateInfo11805     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
11806     {
11807       size = size_;
11808       return *this;
11809     }
11810 
setUsageVULKAN_HPP_NAMESPACE::BufferCreateInfo11811     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
11812     {
11813       usage = usage_;
11814       return *this;
11815     }
11816 
setSharingModeVULKAN_HPP_NAMESPACE::BufferCreateInfo11817     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
11818     {
11819       sharingMode = sharingMode_;
11820       return *this;
11821     }
11822 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::BufferCreateInfo11823     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
11824     {
11825       queueFamilyIndexCount = queueFamilyIndexCount_;
11826       return *this;
11827     }
11828 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::BufferCreateInfo11829     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
11830     {
11831       pQueueFamilyIndices = pQueueFamilyIndices_;
11832       return *this;
11833     }
11834 
11835 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::BufferCreateInfo11836     BufferCreateInfo & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
11837     {
11838       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
11839       pQueueFamilyIndices   = queueFamilyIndices_.data();
11840       return *this;
11841     }
11842 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
11843 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11844 
operator VkBufferCreateInfo const&VULKAN_HPP_NAMESPACE::BufferCreateInfo11845     operator VkBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
11846     {
11847       return *reinterpret_cast<const VkBufferCreateInfo *>( this );
11848     }
11849 
operator VkBufferCreateInfo&VULKAN_HPP_NAMESPACE::BufferCreateInfo11850     operator VkBufferCreateInfo &() VULKAN_HPP_NOEXCEPT
11851     {
11852       return *reinterpret_cast<VkBufferCreateInfo *>( this );
11853     }
11854 
11855 #if defined( VULKAN_HPP_USE_REFLECT )
11856 #  if 14 <= VULKAN_HPP_CPP_VERSION
11857     auto
11858 #  else
11859     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11860                const void * const &,
11861                VULKAN_HPP_NAMESPACE::BufferCreateFlags const &,
11862                VULKAN_HPP_NAMESPACE::DeviceSize const &,
11863                VULKAN_HPP_NAMESPACE::BufferUsageFlags const &,
11864                VULKAN_HPP_NAMESPACE::SharingMode const &,
11865                uint32_t const &,
11866                const uint32_t * const &>
11867 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCreateInfo11868       reflect() const VULKAN_HPP_NOEXCEPT
11869     {
11870       return std::tie( sType, pNext, flags, size, usage, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices );
11871     }
11872 #endif
11873 
11874 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11875     auto operator<=>( BufferCreateInfo const & ) const = default;
11876 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCreateInfo11877     bool operator==( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11878     {
11879 #  if defined( VULKAN_HPP_USE_REFLECT )
11880       return this->reflect() == rhs.reflect();
11881 #  else
11882       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( size == rhs.size ) && ( usage == rhs.usage ) &&
11883              ( sharingMode == rhs.sharingMode ) && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
11884 #  endif
11885     }
11886 
operator !=VULKAN_HPP_NAMESPACE::BufferCreateInfo11887     bool operator!=( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11888     {
11889       return !operator==( rhs );
11890     }
11891 #endif
11892 
11893   public:
11894     VULKAN_HPP_NAMESPACE::StructureType     sType                 = StructureType::eBufferCreateInfo;
11895     const void *                            pNext                 = {};
11896     VULKAN_HPP_NAMESPACE::BufferCreateFlags flags                 = {};
11897     VULKAN_HPP_NAMESPACE::DeviceSize        size                  = {};
11898     VULKAN_HPP_NAMESPACE::BufferUsageFlags  usage                 = {};
11899     VULKAN_HPP_NAMESPACE::SharingMode       sharingMode           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
11900     uint32_t                                queueFamilyIndexCount = {};
11901     const uint32_t *                        pQueueFamilyIndices   = {};
11902   };
11903 
11904   template <>
11905   struct CppType<StructureType, StructureType::eBufferCreateInfo>
11906   {
11907     using Type = BufferCreateInfo;
11908   };
11909 
11910 #if defined( VK_USE_PLATFORM_FUCHSIA )
11911   struct BufferConstraintsInfoFUCHSIA
11912   {
11913     using NativeType = VkBufferConstraintsInfoFUCHSIA;
11914 
11915     static const bool                                  allowDuplicate = false;
11916     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferConstraintsInfoFUCHSIA;
11917 
11918 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11919     VULKAN_HPP_CONSTEXPR BufferConstraintsInfoFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCreateInfo                       createInfo_                  = {},
11920                                                        VULKAN_HPP_NAMESPACE::FormatFeatureFlags                     requiredFormatFeatures_      = {},
11921                                                        VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints_ = {},
11922                                                        const void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
11923       : pNext{ pNext_ }
11924       , createInfo{ createInfo_ }
11925       , requiredFormatFeatures{ requiredFormatFeatures_ }
11926       , bufferCollectionConstraints{ bufferCollectionConstraints_ }
11927     {
11928     }
11929 
11930     VULKAN_HPP_CONSTEXPR BufferConstraintsInfoFUCHSIA( BufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11931 
BufferConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11932     BufferConstraintsInfoFUCHSIA( VkBufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11933       : BufferConstraintsInfoFUCHSIA( *reinterpret_cast<BufferConstraintsInfoFUCHSIA const *>( &rhs ) )
11934     {
11935     }
11936 
11937     BufferConstraintsInfoFUCHSIA & operator=( BufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11938 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11939 
operator =VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11940     BufferConstraintsInfoFUCHSIA & operator=( VkBufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11941     {
11942       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA const *>( &rhs );
11943       return *this;
11944     }
11945 
11946 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11947     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11948     {
11949       pNext = pNext_;
11950       return *this;
11951     }
11952 
setCreateInfoVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11953     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateInfo const & createInfo_ ) VULKAN_HPP_NOEXCEPT
11954     {
11955       createInfo = createInfo_;
11956       return *this;
11957     }
11958 
11959     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA &
setRequiredFormatFeaturesVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11960       setRequiredFormatFeatures( VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures_ ) VULKAN_HPP_NOEXCEPT
11961     {
11962       requiredFormatFeatures = requiredFormatFeatures_;
11963       return *this;
11964     }
11965 
11966     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA &
setBufferCollectionConstraintsVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11967       setBufferCollectionConstraints( VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ ) VULKAN_HPP_NOEXCEPT
11968     {
11969       bufferCollectionConstraints = bufferCollectionConstraints_;
11970       return *this;
11971     }
11972 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11973 
operator VkBufferConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11974     operator VkBufferConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11975     {
11976       return *reinterpret_cast<const VkBufferConstraintsInfoFUCHSIA *>( this );
11977     }
11978 
operator VkBufferConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11979     operator VkBufferConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
11980     {
11981       return *reinterpret_cast<VkBufferConstraintsInfoFUCHSIA *>( this );
11982     }
11983 
11984 #  if defined( VULKAN_HPP_USE_REFLECT )
11985 #    if 14 <= VULKAN_HPP_CPP_VERSION
11986     auto
11987 #    else
11988     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11989                const void * const &,
11990                VULKAN_HPP_NAMESPACE::BufferCreateInfo const &,
11991                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
11992                VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const &>
11993 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11994       reflect() const VULKAN_HPP_NOEXCEPT
11995     {
11996       return std::tie( sType, pNext, createInfo, requiredFormatFeatures, bufferCollectionConstraints );
11997     }
11998 #  endif
11999 
12000 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12001     auto operator<=>( BufferConstraintsInfoFUCHSIA const & ) const = default;
12002 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA12003     bool operator==( BufferConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
12004     {
12005 #    if defined( VULKAN_HPP_USE_REFLECT )
12006       return this->reflect() == rhs.reflect();
12007 #    else
12008       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createInfo == rhs.createInfo ) && ( requiredFormatFeatures == rhs.requiredFormatFeatures ) &&
12009              ( bufferCollectionConstraints == rhs.bufferCollectionConstraints );
12010 #    endif
12011     }
12012 
operator !=VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA12013     bool operator!=( BufferConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
12014     {
12015       return !operator==( rhs );
12016     }
12017 #  endif
12018 
12019   public:
12020     VULKAN_HPP_NAMESPACE::StructureType                          sType                       = StructureType::eBufferConstraintsInfoFUCHSIA;
12021     const void *                                                 pNext                       = {};
12022     VULKAN_HPP_NAMESPACE::BufferCreateInfo                       createInfo                  = {};
12023     VULKAN_HPP_NAMESPACE::FormatFeatureFlags                     requiredFormatFeatures      = {};
12024     VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints = {};
12025   };
12026 
12027   template <>
12028   struct CppType<StructureType, StructureType::eBufferConstraintsInfoFUCHSIA>
12029   {
12030     using Type = BufferConstraintsInfoFUCHSIA;
12031   };
12032 #endif /*VK_USE_PLATFORM_FUCHSIA*/
12033 
12034   struct BufferCopy
12035   {
12036     using NativeType = VkBufferCopy;
12037 
12038 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCopyVULKAN_HPP_NAMESPACE::BufferCopy12039     VULKAN_HPP_CONSTEXPR BufferCopy( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {},
12040                                      VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {},
12041                                      VULKAN_HPP_NAMESPACE::DeviceSize size_      = {} ) VULKAN_HPP_NOEXCEPT
12042       : srcOffset{ srcOffset_ }
12043       , dstOffset{ dstOffset_ }
12044       , size{ size_ }
12045     {
12046     }
12047 
12048     VULKAN_HPP_CONSTEXPR BufferCopy( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12049 
BufferCopyVULKAN_HPP_NAMESPACE::BufferCopy12050     BufferCopy( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT : BufferCopy( *reinterpret_cast<BufferCopy const *>( &rhs ) ) {}
12051 
12052     BufferCopy & operator=( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12053 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12054 
operator =VULKAN_HPP_NAMESPACE::BufferCopy12055     BufferCopy & operator=( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT
12056     {
12057       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCopy const *>( &rhs );
12058       return *this;
12059     }
12060 
12061 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcOffsetVULKAN_HPP_NAMESPACE::BufferCopy12062     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT
12063     {
12064       srcOffset = srcOffset_;
12065       return *this;
12066     }
12067 
setDstOffsetVULKAN_HPP_NAMESPACE::BufferCopy12068     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT
12069     {
12070       dstOffset = dstOffset_;
12071       return *this;
12072     }
12073 
setSizeVULKAN_HPP_NAMESPACE::BufferCopy12074     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
12075     {
12076       size = size_;
12077       return *this;
12078     }
12079 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12080 
operator VkBufferCopy const&VULKAN_HPP_NAMESPACE::BufferCopy12081     operator VkBufferCopy const &() const VULKAN_HPP_NOEXCEPT
12082     {
12083       return *reinterpret_cast<const VkBufferCopy *>( this );
12084     }
12085 
operator VkBufferCopy&VULKAN_HPP_NAMESPACE::BufferCopy12086     operator VkBufferCopy &() VULKAN_HPP_NOEXCEPT
12087     {
12088       return *reinterpret_cast<VkBufferCopy *>( this );
12089     }
12090 
12091 #if defined( VULKAN_HPP_USE_REFLECT )
12092 #  if 14 <= VULKAN_HPP_CPP_VERSION
12093     auto
12094 #  else
12095     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
12096 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCopy12097       reflect() const VULKAN_HPP_NOEXCEPT
12098     {
12099       return std::tie( srcOffset, dstOffset, size );
12100     }
12101 #endif
12102 
12103 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12104     auto operator<=>( BufferCopy const & ) const = default;
12105 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCopy12106     bool operator==( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
12107     {
12108 #  if defined( VULKAN_HPP_USE_REFLECT )
12109       return this->reflect() == rhs.reflect();
12110 #  else
12111       return ( srcOffset == rhs.srcOffset ) && ( dstOffset == rhs.dstOffset ) && ( size == rhs.size );
12112 #  endif
12113     }
12114 
operator !=VULKAN_HPP_NAMESPACE::BufferCopy12115     bool operator!=( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
12116     {
12117       return !operator==( rhs );
12118     }
12119 #endif
12120 
12121   public:
12122     VULKAN_HPP_NAMESPACE::DeviceSize srcOffset = {};
12123     VULKAN_HPP_NAMESPACE::DeviceSize dstOffset = {};
12124     VULKAN_HPP_NAMESPACE::DeviceSize size      = {};
12125   };
12126 
12127   struct BufferCopy2
12128   {
12129     using NativeType = VkBufferCopy2;
12130 
12131     static const bool                                  allowDuplicate = false;
12132     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCopy2;
12133 
12134 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCopy2VULKAN_HPP_NAMESPACE::BufferCopy212135     VULKAN_HPP_CONSTEXPR BufferCopy2( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {},
12136                                       VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {},
12137                                       VULKAN_HPP_NAMESPACE::DeviceSize size_      = {},
12138                                       const void *                     pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
12139       : pNext{ pNext_ }
12140       , srcOffset{ srcOffset_ }
12141       , dstOffset{ dstOffset_ }
12142       , size{ size_ }
12143     {
12144     }
12145 
12146     VULKAN_HPP_CONSTEXPR BufferCopy2( BufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12147 
BufferCopy2VULKAN_HPP_NAMESPACE::BufferCopy212148     BufferCopy2( VkBufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT : BufferCopy2( *reinterpret_cast<BufferCopy2 const *>( &rhs ) ) {}
12149 
12150     BufferCopy2 & operator=( BufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12151 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12152 
operator =VULKAN_HPP_NAMESPACE::BufferCopy212153     BufferCopy2 & operator=( VkBufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
12154     {
12155       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCopy2 const *>( &rhs );
12156       return *this;
12157     }
12158 
12159 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCopy212160     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12161     {
12162       pNext = pNext_;
12163       return *this;
12164     }
12165 
setSrcOffsetVULKAN_HPP_NAMESPACE::BufferCopy212166     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT
12167     {
12168       srcOffset = srcOffset_;
12169       return *this;
12170     }
12171 
setDstOffsetVULKAN_HPP_NAMESPACE::BufferCopy212172     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT
12173     {
12174       dstOffset = dstOffset_;
12175       return *this;
12176     }
12177 
setSizeVULKAN_HPP_NAMESPACE::BufferCopy212178     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
12179     {
12180       size = size_;
12181       return *this;
12182     }
12183 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12184 
operator VkBufferCopy2 const&VULKAN_HPP_NAMESPACE::BufferCopy212185     operator VkBufferCopy2 const &() const VULKAN_HPP_NOEXCEPT
12186     {
12187       return *reinterpret_cast<const VkBufferCopy2 *>( this );
12188     }
12189 
operator VkBufferCopy2&VULKAN_HPP_NAMESPACE::BufferCopy212190     operator VkBufferCopy2 &() VULKAN_HPP_NOEXCEPT
12191     {
12192       return *reinterpret_cast<VkBufferCopy2 *>( this );
12193     }
12194 
12195 #if defined( VULKAN_HPP_USE_REFLECT )
12196 #  if 14 <= VULKAN_HPP_CPP_VERSION
12197     auto
12198 #  else
12199     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
12200                const void * const &,
12201                VULKAN_HPP_NAMESPACE::DeviceSize const &,
12202                VULKAN_HPP_NAMESPACE::DeviceSize const &,
12203                VULKAN_HPP_NAMESPACE::DeviceSize const &>
12204 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCopy212205       reflect() const VULKAN_HPP_NOEXCEPT
12206     {
12207       return std::tie( sType, pNext, srcOffset, dstOffset, size );
12208     }
12209 #endif
12210 
12211 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12212     auto operator<=>( BufferCopy2 const & ) const = default;
12213 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCopy212214     bool operator==( BufferCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
12215     {
12216 #  if defined( VULKAN_HPP_USE_REFLECT )
12217       return this->reflect() == rhs.reflect();
12218 #  else
12219       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcOffset == rhs.srcOffset ) && ( dstOffset == rhs.dstOffset ) && ( size == rhs.size );
12220 #  endif
12221     }
12222 
operator !=VULKAN_HPP_NAMESPACE::BufferCopy212223     bool operator!=( BufferCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
12224     {
12225       return !operator==( rhs );
12226     }
12227 #endif
12228 
12229   public:
12230     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eBufferCopy2;
12231     const void *                        pNext     = {};
12232     VULKAN_HPP_NAMESPACE::DeviceSize    srcOffset = {};
12233     VULKAN_HPP_NAMESPACE::DeviceSize    dstOffset = {};
12234     VULKAN_HPP_NAMESPACE::DeviceSize    size      = {};
12235   };
12236 
12237   template <>
12238   struct CppType<StructureType, StructureType::eBufferCopy2>
12239   {
12240     using Type = BufferCopy2;
12241   };
12242 
12243   using BufferCopy2KHR = BufferCopy2;
12244 
12245   struct BufferDeviceAddressCreateInfoEXT
12246   {
12247     using NativeType = VkBufferDeviceAddressCreateInfoEXT;
12248 
12249     static const bool                                  allowDuplicate = false;
12250     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferDeviceAddressCreateInfoEXT;
12251 
12252 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferDeviceAddressCreateInfoEXTVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12253     VULKAN_HPP_CONSTEXPR BufferDeviceAddressCreateInfoEXT( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {},
12254                                                            const void *                        pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
12255       : pNext{ pNext_ }
12256       , deviceAddress{ deviceAddress_ }
12257     {
12258     }
12259 
12260     VULKAN_HPP_CONSTEXPR BufferDeviceAddressCreateInfoEXT( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12261 
BufferDeviceAddressCreateInfoEXTVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12262     BufferDeviceAddressCreateInfoEXT( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
12263       : BufferDeviceAddressCreateInfoEXT( *reinterpret_cast<BufferDeviceAddressCreateInfoEXT const *>( &rhs ) )
12264     {
12265     }
12266 
12267     BufferDeviceAddressCreateInfoEXT & operator=( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12268 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12269 
operator =VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12270     BufferDeviceAddressCreateInfoEXT & operator=( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
12271     {
12272       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT const *>( &rhs );
12273       return *this;
12274     }
12275 
12276 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12277     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12278     {
12279       pNext = pNext_;
12280       return *this;
12281     }
12282 
setDeviceAddressVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12283     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
12284     {
12285       deviceAddress = deviceAddress_;
12286       return *this;
12287     }
12288 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12289 
operator VkBufferDeviceAddressCreateInfoEXT const&VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12290     operator VkBufferDeviceAddressCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
12291     {
12292       return *reinterpret_cast<const VkBufferDeviceAddressCreateInfoEXT *>( this );
12293     }
12294 
operator VkBufferDeviceAddressCreateInfoEXT&VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12295     operator VkBufferDeviceAddressCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
12296     {
12297       return *reinterpret_cast<VkBufferDeviceAddressCreateInfoEXT *>( this );
12298     }
12299 
12300 #if defined( VULKAN_HPP_USE_REFLECT )
12301 #  if 14 <= VULKAN_HPP_CPP_VERSION
12302     auto
12303 #  else
12304     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceAddress const &>
12305 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12306       reflect() const VULKAN_HPP_NOEXCEPT
12307     {
12308       return std::tie( sType, pNext, deviceAddress );
12309     }
12310 #endif
12311 
12312 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12313     auto operator<=>( BufferDeviceAddressCreateInfoEXT const & ) const = default;
12314 #else
operator ==VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12315     bool operator==( BufferDeviceAddressCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
12316     {
12317 #  if defined( VULKAN_HPP_USE_REFLECT )
12318       return this->reflect() == rhs.reflect();
12319 #  else
12320       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress );
12321 #  endif
12322     }
12323 
operator !=VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12324     bool operator!=( BufferDeviceAddressCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
12325     {
12326       return !operator==( rhs );
12327     }
12328 #endif
12329 
12330   public:
12331     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eBufferDeviceAddressCreateInfoEXT;
12332     const void *                        pNext         = {};
12333     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
12334   };
12335 
12336   template <>
12337   struct CppType<StructureType, StructureType::eBufferDeviceAddressCreateInfoEXT>
12338   {
12339     using Type = BufferDeviceAddressCreateInfoEXT;
12340   };
12341 
12342   struct BufferDeviceAddressInfo
12343   {
12344     using NativeType = VkBufferDeviceAddressInfo;
12345 
12346     static const bool                                  allowDuplicate = false;
12347     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferDeviceAddressInfo;
12348 
12349 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferDeviceAddressInfoVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12350     VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
12351       : pNext{ pNext_ }
12352       , buffer{ buffer_ }
12353     {
12354     }
12355 
12356     VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12357 
BufferDeviceAddressInfoVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12358     BufferDeviceAddressInfo( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12359       : BufferDeviceAddressInfo( *reinterpret_cast<BufferDeviceAddressInfo const *>( &rhs ) )
12360     {
12361     }
12362 
12363     BufferDeviceAddressInfo & operator=( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12364 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12365 
operator =VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12366     BufferDeviceAddressInfo & operator=( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12367     {
12368       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo const *>( &rhs );
12369       return *this;
12370     }
12371 
12372 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12373     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12374     {
12375       pNext = pNext_;
12376       return *this;
12377     }
12378 
setBufferVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12379     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
12380     {
12381       buffer = buffer_;
12382       return *this;
12383     }
12384 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12385 
operator VkBufferDeviceAddressInfo const&VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12386     operator VkBufferDeviceAddressInfo const &() const VULKAN_HPP_NOEXCEPT
12387     {
12388       return *reinterpret_cast<const VkBufferDeviceAddressInfo *>( this );
12389     }
12390 
operator VkBufferDeviceAddressInfo&VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12391     operator VkBufferDeviceAddressInfo &() VULKAN_HPP_NOEXCEPT
12392     {
12393       return *reinterpret_cast<VkBufferDeviceAddressInfo *>( this );
12394     }
12395 
12396 #if defined( VULKAN_HPP_USE_REFLECT )
12397 #  if 14 <= VULKAN_HPP_CPP_VERSION
12398     auto
12399 #  else
12400     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
12401 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12402       reflect() const VULKAN_HPP_NOEXCEPT
12403     {
12404       return std::tie( sType, pNext, buffer );
12405     }
12406 #endif
12407 
12408 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12409     auto operator<=>( BufferDeviceAddressInfo const & ) const = default;
12410 #else
operator ==VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12411     bool operator==( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12412     {
12413 #  if defined( VULKAN_HPP_USE_REFLECT )
12414       return this->reflect() == rhs.reflect();
12415 #  else
12416       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
12417 #  endif
12418     }
12419 
operator !=VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12420     bool operator!=( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12421     {
12422       return !operator==( rhs );
12423     }
12424 #endif
12425 
12426   public:
12427     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eBufferDeviceAddressInfo;
12428     const void *                        pNext  = {};
12429     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
12430   };
12431 
12432   template <>
12433   struct CppType<StructureType, StructureType::eBufferDeviceAddressInfo>
12434   {
12435     using Type = BufferDeviceAddressInfo;
12436   };
12437 
12438   using BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
12439   using BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
12440 
12441   struct BufferImageCopy
12442   {
12443     using NativeType = VkBufferImageCopy;
12444 
12445 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferImageCopyVULKAN_HPP_NAMESPACE::BufferImageCopy12446     VULKAN_HPP_CONSTEXPR BufferImageCopy( VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset_      = {},
12447                                           uint32_t                                     bufferRowLength_   = {},
12448                                           uint32_t                                     bufferImageHeight_ = {},
12449                                           VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
12450                                           VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
12451                                           VULKAN_HPP_NAMESPACE::Extent3D               imageExtent_       = {} ) VULKAN_HPP_NOEXCEPT
12452       : bufferOffset{ bufferOffset_ }
12453       , bufferRowLength{ bufferRowLength_ }
12454       , bufferImageHeight{ bufferImageHeight_ }
12455       , imageSubresource{ imageSubresource_ }
12456       , imageOffset{ imageOffset_ }
12457       , imageExtent{ imageExtent_ }
12458     {
12459     }
12460 
12461     VULKAN_HPP_CONSTEXPR BufferImageCopy( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12462 
BufferImageCopyVULKAN_HPP_NAMESPACE::BufferImageCopy12463     BufferImageCopy( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT : BufferImageCopy( *reinterpret_cast<BufferImageCopy const *>( &rhs ) ) {}
12464 
12465     BufferImageCopy & operator=( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12466 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12467 
operator =VULKAN_HPP_NAMESPACE::BufferImageCopy12468     BufferImageCopy & operator=( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
12469     {
12470       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferImageCopy const *>( &rhs );
12471       return *this;
12472     }
12473 
12474 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy12475     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT
12476     {
12477       bufferOffset = bufferOffset_;
12478       return *this;
12479     }
12480 
setBufferRowLengthVULKAN_HPP_NAMESPACE::BufferImageCopy12481     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT
12482     {
12483       bufferRowLength = bufferRowLength_;
12484       return *this;
12485     }
12486 
setBufferImageHeightVULKAN_HPP_NAMESPACE::BufferImageCopy12487     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT
12488     {
12489       bufferImageHeight = bufferImageHeight_;
12490       return *this;
12491     }
12492 
setImageSubresourceVULKAN_HPP_NAMESPACE::BufferImageCopy12493     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
12494     {
12495       imageSubresource = imageSubresource_;
12496       return *this;
12497     }
12498 
setImageOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy12499     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
12500     {
12501       imageOffset = imageOffset_;
12502       return *this;
12503     }
12504 
setImageExtentVULKAN_HPP_NAMESPACE::BufferImageCopy12505     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
12506     {
12507       imageExtent = imageExtent_;
12508       return *this;
12509     }
12510 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12511 
operator VkBufferImageCopy const&VULKAN_HPP_NAMESPACE::BufferImageCopy12512     operator VkBufferImageCopy const &() const VULKAN_HPP_NOEXCEPT
12513     {
12514       return *reinterpret_cast<const VkBufferImageCopy *>( this );
12515     }
12516 
operator VkBufferImageCopy&VULKAN_HPP_NAMESPACE::BufferImageCopy12517     operator VkBufferImageCopy &() VULKAN_HPP_NOEXCEPT
12518     {
12519       return *reinterpret_cast<VkBufferImageCopy *>( this );
12520     }
12521 
12522 #if defined( VULKAN_HPP_USE_REFLECT )
12523 #  if 14 <= VULKAN_HPP_CPP_VERSION
12524     auto
12525 #  else
12526     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &,
12527                uint32_t const &,
12528                uint32_t const &,
12529                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
12530                VULKAN_HPP_NAMESPACE::Offset3D const &,
12531                VULKAN_HPP_NAMESPACE::Extent3D const &>
12532 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferImageCopy12533       reflect() const VULKAN_HPP_NOEXCEPT
12534     {
12535       return std::tie( bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent );
12536     }
12537 #endif
12538 
12539 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12540     auto operator<=>( BufferImageCopy const & ) const = default;
12541 #else
operator ==VULKAN_HPP_NAMESPACE::BufferImageCopy12542     bool operator==( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
12543     {
12544 #  if defined( VULKAN_HPP_USE_REFLECT )
12545       return this->reflect() == rhs.reflect();
12546 #  else
12547       return ( bufferOffset == rhs.bufferOffset ) && ( bufferRowLength == rhs.bufferRowLength ) && ( bufferImageHeight == rhs.bufferImageHeight ) &&
12548              ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) && ( imageExtent == rhs.imageExtent );
12549 #  endif
12550     }
12551 
operator !=VULKAN_HPP_NAMESPACE::BufferImageCopy12552     bool operator!=( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
12553     {
12554       return !operator==( rhs );
12555     }
12556 #endif
12557 
12558   public:
12559     VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset      = {};
12560     uint32_t                                     bufferRowLength   = {};
12561     uint32_t                                     bufferImageHeight = {};
12562     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
12563     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
12564     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
12565   };
12566 
12567   struct BufferImageCopy2
12568   {
12569     using NativeType = VkBufferImageCopy2;
12570 
12571     static const bool                                  allowDuplicate = false;
12572     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferImageCopy2;
12573 
12574 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferImageCopy2VULKAN_HPP_NAMESPACE::BufferImageCopy212575     VULKAN_HPP_CONSTEXPR BufferImageCopy2( VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset_      = {},
12576                                            uint32_t                                     bufferRowLength_   = {},
12577                                            uint32_t                                     bufferImageHeight_ = {},
12578                                            VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
12579                                            VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
12580                                            VULKAN_HPP_NAMESPACE::Extent3D               imageExtent_       = {},
12581                                            const void *                                 pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
12582       : pNext{ pNext_ }
12583       , bufferOffset{ bufferOffset_ }
12584       , bufferRowLength{ bufferRowLength_ }
12585       , bufferImageHeight{ bufferImageHeight_ }
12586       , imageSubresource{ imageSubresource_ }
12587       , imageOffset{ imageOffset_ }
12588       , imageExtent{ imageExtent_ }
12589     {
12590     }
12591 
12592     VULKAN_HPP_CONSTEXPR BufferImageCopy2( BufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12593 
BufferImageCopy2VULKAN_HPP_NAMESPACE::BufferImageCopy212594     BufferImageCopy2( VkBufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT : BufferImageCopy2( *reinterpret_cast<BufferImageCopy2 const *>( &rhs ) ) {}
12595 
12596     BufferImageCopy2 & operator=( BufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12597 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12598 
operator =VULKAN_HPP_NAMESPACE::BufferImageCopy212599     BufferImageCopy2 & operator=( VkBufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
12600     {
12601       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferImageCopy2 const *>( &rhs );
12602       return *this;
12603     }
12604 
12605 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferImageCopy212606     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12607     {
12608       pNext = pNext_;
12609       return *this;
12610     }
12611 
setBufferOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy212612     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT
12613     {
12614       bufferOffset = bufferOffset_;
12615       return *this;
12616     }
12617 
setBufferRowLengthVULKAN_HPP_NAMESPACE::BufferImageCopy212618     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT
12619     {
12620       bufferRowLength = bufferRowLength_;
12621       return *this;
12622     }
12623 
setBufferImageHeightVULKAN_HPP_NAMESPACE::BufferImageCopy212624     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT
12625     {
12626       bufferImageHeight = bufferImageHeight_;
12627       return *this;
12628     }
12629 
setImageSubresourceVULKAN_HPP_NAMESPACE::BufferImageCopy212630     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
12631     {
12632       imageSubresource = imageSubresource_;
12633       return *this;
12634     }
12635 
setImageOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy212636     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
12637     {
12638       imageOffset = imageOffset_;
12639       return *this;
12640     }
12641 
setImageExtentVULKAN_HPP_NAMESPACE::BufferImageCopy212642     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
12643     {
12644       imageExtent = imageExtent_;
12645       return *this;
12646     }
12647 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12648 
operator VkBufferImageCopy2 const&VULKAN_HPP_NAMESPACE::BufferImageCopy212649     operator VkBufferImageCopy2 const &() const VULKAN_HPP_NOEXCEPT
12650     {
12651       return *reinterpret_cast<const VkBufferImageCopy2 *>( this );
12652     }
12653 
operator VkBufferImageCopy2&VULKAN_HPP_NAMESPACE::BufferImageCopy212654     operator VkBufferImageCopy2 &() VULKAN_HPP_NOEXCEPT
12655     {
12656       return *reinterpret_cast<VkBufferImageCopy2 *>( this );
12657     }
12658 
12659 #if defined( VULKAN_HPP_USE_REFLECT )
12660 #  if 14 <= VULKAN_HPP_CPP_VERSION
12661     auto
12662 #  else
12663     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
12664                const void * const &,
12665                VULKAN_HPP_NAMESPACE::DeviceSize const &,
12666                uint32_t const &,
12667                uint32_t const &,
12668                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
12669                VULKAN_HPP_NAMESPACE::Offset3D const &,
12670                VULKAN_HPP_NAMESPACE::Extent3D const &>
12671 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferImageCopy212672       reflect() const VULKAN_HPP_NOEXCEPT
12673     {
12674       return std::tie( sType, pNext, bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent );
12675     }
12676 #endif
12677 
12678 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12679     auto operator<=>( BufferImageCopy2 const & ) const = default;
12680 #else
operator ==VULKAN_HPP_NAMESPACE::BufferImageCopy212681     bool operator==( BufferImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
12682     {
12683 #  if defined( VULKAN_HPP_USE_REFLECT )
12684       return this->reflect() == rhs.reflect();
12685 #  else
12686       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferOffset == rhs.bufferOffset ) && ( bufferRowLength == rhs.bufferRowLength ) &&
12687              ( bufferImageHeight == rhs.bufferImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) &&
12688              ( imageExtent == rhs.imageExtent );
12689 #  endif
12690     }
12691 
operator !=VULKAN_HPP_NAMESPACE::BufferImageCopy212692     bool operator!=( BufferImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
12693     {
12694       return !operator==( rhs );
12695     }
12696 #endif
12697 
12698   public:
12699     VULKAN_HPP_NAMESPACE::StructureType          sType             = StructureType::eBufferImageCopy2;
12700     const void *                                 pNext             = {};
12701     VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset      = {};
12702     uint32_t                                     bufferRowLength   = {};
12703     uint32_t                                     bufferImageHeight = {};
12704     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
12705     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
12706     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
12707   };
12708 
12709   template <>
12710   struct CppType<StructureType, StructureType::eBufferImageCopy2>
12711   {
12712     using Type = BufferImageCopy2;
12713   };
12714 
12715   using BufferImageCopy2KHR = BufferImageCopy2;
12716 
12717   struct BufferMemoryBarrier
12718   {
12719     using NativeType = VkBufferMemoryBarrier;
12720 
12721     static const bool                                  allowDuplicate = false;
12722     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferMemoryBarrier;
12723 
12724 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryBarrierVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12725     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_       = {},
12726                                               VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_       = {},
12727                                               uint32_t                          srcQueueFamilyIndex_ = {},
12728                                               uint32_t                          dstQueueFamilyIndex_ = {},
12729                                               VULKAN_HPP_NAMESPACE::Buffer      buffer_              = {},
12730                                               VULKAN_HPP_NAMESPACE::DeviceSize  offset_              = {},
12731                                               VULKAN_HPP_NAMESPACE::DeviceSize  size_                = {},
12732                                               const void *                      pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
12733       : pNext{ pNext_ }
12734       , srcAccessMask{ srcAccessMask_ }
12735       , dstAccessMask{ dstAccessMask_ }
12736       , srcQueueFamilyIndex{ srcQueueFamilyIndex_ }
12737       , dstQueueFamilyIndex{ dstQueueFamilyIndex_ }
12738       , buffer{ buffer_ }
12739       , offset{ offset_ }
12740       , size{ size_ }
12741     {
12742     }
12743 
12744     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12745 
BufferMemoryBarrierVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12746     BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT : BufferMemoryBarrier( *reinterpret_cast<BufferMemoryBarrier const *>( &rhs ) )
12747     {
12748     }
12749 
12750     BufferMemoryBarrier & operator=( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12751 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12752 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryBarrier12753     BufferMemoryBarrier & operator=( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
12754     {
12755       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier const *>( &rhs );
12756       return *this;
12757     }
12758 
12759 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12760     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12761     {
12762       pNext = pNext_;
12763       return *this;
12764     }
12765 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12766     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
12767     {
12768       srcAccessMask = srcAccessMask_;
12769       return *this;
12770     }
12771 
setDstAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12772     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
12773     {
12774       dstAccessMask = dstAccessMask_;
12775       return *this;
12776     }
12777 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12778     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
12779     {
12780       srcQueueFamilyIndex = srcQueueFamilyIndex_;
12781       return *this;
12782     }
12783 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12784     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
12785     {
12786       dstQueueFamilyIndex = dstQueueFamilyIndex_;
12787       return *this;
12788     }
12789 
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12790     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
12791     {
12792       buffer = buffer_;
12793       return *this;
12794     }
12795 
setOffsetVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12796     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
12797     {
12798       offset = offset_;
12799       return *this;
12800     }
12801 
setSizeVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12802     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
12803     {
12804       size = size_;
12805       return *this;
12806     }
12807 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12808 
operator VkBufferMemoryBarrier const&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier12809     operator VkBufferMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
12810     {
12811       return *reinterpret_cast<const VkBufferMemoryBarrier *>( this );
12812     }
12813 
operator VkBufferMemoryBarrier&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier12814     operator VkBufferMemoryBarrier &() VULKAN_HPP_NOEXCEPT
12815     {
12816       return *reinterpret_cast<VkBufferMemoryBarrier *>( this );
12817     }
12818 
12819 #if defined( VULKAN_HPP_USE_REFLECT )
12820 #  if 14 <= VULKAN_HPP_CPP_VERSION
12821     auto
12822 #  else
12823     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
12824                const void * const &,
12825                VULKAN_HPP_NAMESPACE::AccessFlags const &,
12826                VULKAN_HPP_NAMESPACE::AccessFlags const &,
12827                uint32_t const &,
12828                uint32_t const &,
12829                VULKAN_HPP_NAMESPACE::Buffer const &,
12830                VULKAN_HPP_NAMESPACE::DeviceSize const &,
12831                VULKAN_HPP_NAMESPACE::DeviceSize const &>
12832 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12833       reflect() const VULKAN_HPP_NOEXCEPT
12834     {
12835       return std::tie( sType, pNext, srcAccessMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, buffer, offset, size );
12836     }
12837 #endif
12838 
12839 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12840     auto operator<=>( BufferMemoryBarrier const & ) const = default;
12841 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryBarrier12842     bool operator==( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
12843     {
12844 #  if defined( VULKAN_HPP_USE_REFLECT )
12845       return this->reflect() == rhs.reflect();
12846 #  else
12847       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ) &&
12848              ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( buffer == rhs.buffer ) &&
12849              ( offset == rhs.offset ) && ( size == rhs.size );
12850 #  endif
12851     }
12852 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryBarrier12853     bool operator!=( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
12854     {
12855       return !operator==( rhs );
12856     }
12857 #endif
12858 
12859   public:
12860     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eBufferMemoryBarrier;
12861     const void *                        pNext               = {};
12862     VULKAN_HPP_NAMESPACE::AccessFlags   srcAccessMask       = {};
12863     VULKAN_HPP_NAMESPACE::AccessFlags   dstAccessMask       = {};
12864     uint32_t                            srcQueueFamilyIndex = {};
12865     uint32_t                            dstQueueFamilyIndex = {};
12866     VULKAN_HPP_NAMESPACE::Buffer        buffer              = {};
12867     VULKAN_HPP_NAMESPACE::DeviceSize    offset              = {};
12868     VULKAN_HPP_NAMESPACE::DeviceSize    size                = {};
12869   };
12870 
12871   template <>
12872   struct CppType<StructureType, StructureType::eBufferMemoryBarrier>
12873   {
12874     using Type = BufferMemoryBarrier;
12875   };
12876 
12877   struct BufferMemoryBarrier2
12878   {
12879     using NativeType = VkBufferMemoryBarrier2;
12880 
12881     static const bool                                  allowDuplicate = false;
12882     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferMemoryBarrier2;
12883 
12884 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryBarrier2VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212885     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_        = {},
12886                                                VULKAN_HPP_NAMESPACE::AccessFlags2        srcAccessMask_       = {},
12887                                                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_        = {},
12888                                                VULKAN_HPP_NAMESPACE::AccessFlags2        dstAccessMask_       = {},
12889                                                uint32_t                                  srcQueueFamilyIndex_ = {},
12890                                                uint32_t                                  dstQueueFamilyIndex_ = {},
12891                                                VULKAN_HPP_NAMESPACE::Buffer              buffer_              = {},
12892                                                VULKAN_HPP_NAMESPACE::DeviceSize          offset_              = {},
12893                                                VULKAN_HPP_NAMESPACE::DeviceSize          size_                = {},
12894                                                const void *                              pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
12895       : pNext{ pNext_ }
12896       , srcStageMask{ srcStageMask_ }
12897       , srcAccessMask{ srcAccessMask_ }
12898       , dstStageMask{ dstStageMask_ }
12899       , dstAccessMask{ dstAccessMask_ }
12900       , srcQueueFamilyIndex{ srcQueueFamilyIndex_ }
12901       , dstQueueFamilyIndex{ dstQueueFamilyIndex_ }
12902       , buffer{ buffer_ }
12903       , offset{ offset_ }
12904       , size{ size_ }
12905     {
12906     }
12907 
12908     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2( BufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12909 
BufferMemoryBarrier2VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212910     BufferMemoryBarrier2( VkBufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
12911       : BufferMemoryBarrier2( *reinterpret_cast<BufferMemoryBarrier2 const *>( &rhs ) )
12912     {
12913     }
12914 
12915     BufferMemoryBarrier2 & operator=( BufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12916 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12917 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212918     BufferMemoryBarrier2 & operator=( VkBufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
12919     {
12920       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 const *>( &rhs );
12921       return *this;
12922     }
12923 
12924 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212925     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12926     {
12927       pNext = pNext_;
12928       return *this;
12929     }
12930 
setSrcStageMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212931     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT
12932     {
12933       srcStageMask = srcStageMask_;
12934       return *this;
12935     }
12936 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212937     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
12938     {
12939       srcAccessMask = srcAccessMask_;
12940       return *this;
12941     }
12942 
setDstStageMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212943     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT
12944     {
12945       dstStageMask = dstStageMask_;
12946       return *this;
12947     }
12948 
setDstAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212949     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
12950     {
12951       dstAccessMask = dstAccessMask_;
12952       return *this;
12953     }
12954 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212955     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
12956     {
12957       srcQueueFamilyIndex = srcQueueFamilyIndex_;
12958       return *this;
12959     }
12960 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212961     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
12962     {
12963       dstQueueFamilyIndex = dstQueueFamilyIndex_;
12964       return *this;
12965     }
12966 
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212967     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
12968     {
12969       buffer = buffer_;
12970       return *this;
12971     }
12972 
setOffsetVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212973     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
12974     {
12975       offset = offset_;
12976       return *this;
12977     }
12978 
setSizeVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212979     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
12980     {
12981       size = size_;
12982       return *this;
12983     }
12984 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12985 
operator VkBufferMemoryBarrier2 const&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212986     operator VkBufferMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT
12987     {
12988       return *reinterpret_cast<const VkBufferMemoryBarrier2 *>( this );
12989     }
12990 
operator VkBufferMemoryBarrier2&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212991     operator VkBufferMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT
12992     {
12993       return *reinterpret_cast<VkBufferMemoryBarrier2 *>( this );
12994     }
12995 
12996 #if defined( VULKAN_HPP_USE_REFLECT )
12997 #  if 14 <= VULKAN_HPP_CPP_VERSION
12998     auto
12999 #  else
13000     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
13001                const void * const &,
13002                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
13003                VULKAN_HPP_NAMESPACE::AccessFlags2 const &,
13004                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
13005                VULKAN_HPP_NAMESPACE::AccessFlags2 const &,
13006                uint32_t const &,
13007                uint32_t const &,
13008                VULKAN_HPP_NAMESPACE::Buffer const &,
13009                VULKAN_HPP_NAMESPACE::DeviceSize const &,
13010                VULKAN_HPP_NAMESPACE::DeviceSize const &>
13011 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryBarrier213012       reflect() const VULKAN_HPP_NOEXCEPT
13013     {
13014       return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, buffer, offset, size );
13015     }
13016 #endif
13017 
13018 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13019     auto operator<=>( BufferMemoryBarrier2 const & ) const = default;
13020 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryBarrier213021     bool operator==( BufferMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
13022     {
13023 #  if defined( VULKAN_HPP_USE_REFLECT )
13024       return this->reflect() == rhs.reflect();
13025 #  else
13026       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) &&
13027              ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) &&
13028              ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( size == rhs.size );
13029 #  endif
13030     }
13031 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryBarrier213032     bool operator!=( BufferMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
13033     {
13034       return !operator==( rhs );
13035     }
13036 #endif
13037 
13038   public:
13039     VULKAN_HPP_NAMESPACE::StructureType       sType               = StructureType::eBufferMemoryBarrier2;
13040     const void *                              pNext               = {};
13041     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask        = {};
13042     VULKAN_HPP_NAMESPACE::AccessFlags2        srcAccessMask       = {};
13043     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask        = {};
13044     VULKAN_HPP_NAMESPACE::AccessFlags2        dstAccessMask       = {};
13045     uint32_t                                  srcQueueFamilyIndex = {};
13046     uint32_t                                  dstQueueFamilyIndex = {};
13047     VULKAN_HPP_NAMESPACE::Buffer              buffer              = {};
13048     VULKAN_HPP_NAMESPACE::DeviceSize          offset              = {};
13049     VULKAN_HPP_NAMESPACE::DeviceSize          size                = {};
13050   };
13051 
13052   template <>
13053   struct CppType<StructureType, StructureType::eBufferMemoryBarrier2>
13054   {
13055     using Type = BufferMemoryBarrier2;
13056   };
13057 
13058   using BufferMemoryBarrier2KHR = BufferMemoryBarrier2;
13059 
13060   struct BufferMemoryRequirementsInfo2
13061   {
13062     using NativeType = VkBufferMemoryRequirementsInfo2;
13063 
13064     static const bool                                  allowDuplicate = false;
13065     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferMemoryRequirementsInfo2;
13066 
13067 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo213068     VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
13069       : pNext{ pNext_ }
13070       , buffer{ buffer_ }
13071     {
13072     }
13073 
13074     VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13075 
BufferMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo213076     BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
13077       : BufferMemoryRequirementsInfo2( *reinterpret_cast<BufferMemoryRequirementsInfo2 const *>( &rhs ) )
13078     {
13079     }
13080 
13081     BufferMemoryRequirementsInfo2 & operator=( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13082 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13083 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo213084     BufferMemoryRequirementsInfo2 & operator=( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
13085     {
13086       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 const *>( &rhs );
13087       return *this;
13088     }
13089 
13090 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo213091     VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13092     {
13093       pNext = pNext_;
13094       return *this;
13095     }
13096 
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo213097     VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
13098     {
13099       buffer = buffer_;
13100       return *this;
13101     }
13102 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13103 
operator VkBufferMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo213104     operator VkBufferMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
13105     {
13106       return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( this );
13107     }
13108 
operator VkBufferMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo213109     operator VkBufferMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
13110     {
13111       return *reinterpret_cast<VkBufferMemoryRequirementsInfo2 *>( this );
13112     }
13113 
13114 #if defined( VULKAN_HPP_USE_REFLECT )
13115 #  if 14 <= VULKAN_HPP_CPP_VERSION
13116     auto
13117 #  else
13118     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
13119 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo213120       reflect() const VULKAN_HPP_NOEXCEPT
13121     {
13122       return std::tie( sType, pNext, buffer );
13123     }
13124 #endif
13125 
13126 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13127     auto operator<=>( BufferMemoryRequirementsInfo2 const & ) const = default;
13128 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo213129     bool operator==( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
13130     {
13131 #  if defined( VULKAN_HPP_USE_REFLECT )
13132       return this->reflect() == rhs.reflect();
13133 #  else
13134       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
13135 #  endif
13136     }
13137 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo213138     bool operator!=( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
13139     {
13140       return !operator==( rhs );
13141     }
13142 #endif
13143 
13144   public:
13145     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eBufferMemoryRequirementsInfo2;
13146     const void *                        pNext  = {};
13147     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
13148   };
13149 
13150   template <>
13151   struct CppType<StructureType, StructureType::eBufferMemoryRequirementsInfo2>
13152   {
13153     using Type = BufferMemoryRequirementsInfo2;
13154   };
13155 
13156   using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
13157 
13158   struct BufferOpaqueCaptureAddressCreateInfo
13159   {
13160     using NativeType = VkBufferOpaqueCaptureAddressCreateInfo;
13161 
13162     static const bool                                  allowDuplicate = false;
13163     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferOpaqueCaptureAddressCreateInfo;
13164 
13165 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferOpaqueCaptureAddressCreateInfoVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13166     VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( uint64_t opaqueCaptureAddress_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
13167       : pNext{ pNext_ }
13168       , opaqueCaptureAddress{ opaqueCaptureAddress_ }
13169     {
13170     }
13171 
13172     VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13173 
BufferOpaqueCaptureAddressCreateInfoVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13174     BufferOpaqueCaptureAddressCreateInfo( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13175       : BufferOpaqueCaptureAddressCreateInfo( *reinterpret_cast<BufferOpaqueCaptureAddressCreateInfo const *>( &rhs ) )
13176     {
13177     }
13178 
13179     BufferOpaqueCaptureAddressCreateInfo & operator=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13180 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13181 
operator =VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13182     BufferOpaqueCaptureAddressCreateInfo & operator=( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13183     {
13184       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo const *>( &rhs );
13185       return *this;
13186     }
13187 
13188 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13189     VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13190     {
13191       pNext = pNext_;
13192       return *this;
13193     }
13194 
setOpaqueCaptureAddressVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13195     VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT
13196     {
13197       opaqueCaptureAddress = opaqueCaptureAddress_;
13198       return *this;
13199     }
13200 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13201 
operator VkBufferOpaqueCaptureAddressCreateInfo const&VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13202     operator VkBufferOpaqueCaptureAddressCreateInfo const &() const VULKAN_HPP_NOEXCEPT
13203     {
13204       return *reinterpret_cast<const VkBufferOpaqueCaptureAddressCreateInfo *>( this );
13205     }
13206 
operator VkBufferOpaqueCaptureAddressCreateInfo&VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13207     operator VkBufferOpaqueCaptureAddressCreateInfo &() VULKAN_HPP_NOEXCEPT
13208     {
13209       return *reinterpret_cast<VkBufferOpaqueCaptureAddressCreateInfo *>( this );
13210     }
13211 
13212 #if defined( VULKAN_HPP_USE_REFLECT )
13213 #  if 14 <= VULKAN_HPP_CPP_VERSION
13214     auto
13215 #  else
13216     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
13217 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13218       reflect() const VULKAN_HPP_NOEXCEPT
13219     {
13220       return std::tie( sType, pNext, opaqueCaptureAddress );
13221     }
13222 #endif
13223 
13224 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13225     auto operator<=>( BufferOpaqueCaptureAddressCreateInfo const & ) const = default;
13226 #else
operator ==VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13227     bool operator==( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13228     {
13229 #  if defined( VULKAN_HPP_USE_REFLECT )
13230       return this->reflect() == rhs.reflect();
13231 #  else
13232       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress );
13233 #  endif
13234     }
13235 
operator !=VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13236     bool operator!=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13237     {
13238       return !operator==( rhs );
13239     }
13240 #endif
13241 
13242   public:
13243     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eBufferOpaqueCaptureAddressCreateInfo;
13244     const void *                        pNext                = {};
13245     uint64_t                            opaqueCaptureAddress = {};
13246   };
13247 
13248   template <>
13249   struct CppType<StructureType, StructureType::eBufferOpaqueCaptureAddressCreateInfo>
13250   {
13251     using Type = BufferOpaqueCaptureAddressCreateInfo;
13252   };
13253 
13254   using BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
13255 
13256   struct BufferUsageFlags2CreateInfo
13257   {
13258     using NativeType = VkBufferUsageFlags2CreateInfo;
13259 
13260     static const bool                                  allowDuplicate = false;
13261     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferUsageFlags2CreateInfo;
13262 
13263 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferUsageFlags2CreateInfoVULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo13264     VULKAN_HPP_CONSTEXPR BufferUsageFlags2CreateInfo( VULKAN_HPP_NAMESPACE::BufferUsageFlags2 usage_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
13265       : pNext{ pNext_ }
13266       , usage{ usage_ }
13267     {
13268     }
13269 
13270     VULKAN_HPP_CONSTEXPR BufferUsageFlags2CreateInfo( BufferUsageFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13271 
BufferUsageFlags2CreateInfoVULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo13272     BufferUsageFlags2CreateInfo( VkBufferUsageFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13273       : BufferUsageFlags2CreateInfo( *reinterpret_cast<BufferUsageFlags2CreateInfo const *>( &rhs ) )
13274     {
13275     }
13276 
13277     BufferUsageFlags2CreateInfo & operator=( BufferUsageFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13278 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13279 
operator =VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo13280     BufferUsageFlags2CreateInfo & operator=( VkBufferUsageFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13281     {
13282       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo const *>( &rhs );
13283       return *this;
13284     }
13285 
13286 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo13287     VULKAN_HPP_CONSTEXPR_14 BufferUsageFlags2CreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13288     {
13289       pNext = pNext_;
13290       return *this;
13291     }
13292 
setUsageVULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo13293     VULKAN_HPP_CONSTEXPR_14 BufferUsageFlags2CreateInfo & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags2 usage_ ) VULKAN_HPP_NOEXCEPT
13294     {
13295       usage = usage_;
13296       return *this;
13297     }
13298 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13299 
operator VkBufferUsageFlags2CreateInfo const&VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo13300     operator VkBufferUsageFlags2CreateInfo const &() const VULKAN_HPP_NOEXCEPT
13301     {
13302       return *reinterpret_cast<const VkBufferUsageFlags2CreateInfo *>( this );
13303     }
13304 
operator VkBufferUsageFlags2CreateInfo&VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo13305     operator VkBufferUsageFlags2CreateInfo &() VULKAN_HPP_NOEXCEPT
13306     {
13307       return *reinterpret_cast<VkBufferUsageFlags2CreateInfo *>( this );
13308     }
13309 
13310 #if defined( VULKAN_HPP_USE_REFLECT )
13311 #  if 14 <= VULKAN_HPP_CPP_VERSION
13312     auto
13313 #  else
13314     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferUsageFlags2 const &>
13315 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo13316       reflect() const VULKAN_HPP_NOEXCEPT
13317     {
13318       return std::tie( sType, pNext, usage );
13319     }
13320 #endif
13321 
13322 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13323     auto operator<=>( BufferUsageFlags2CreateInfo const & ) const = default;
13324 #else
operator ==VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo13325     bool operator==( BufferUsageFlags2CreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13326     {
13327 #  if defined( VULKAN_HPP_USE_REFLECT )
13328       return this->reflect() == rhs.reflect();
13329 #  else
13330       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( usage == rhs.usage );
13331 #  endif
13332     }
13333 
operator !=VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo13334     bool operator!=( BufferUsageFlags2CreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13335     {
13336       return !operator==( rhs );
13337     }
13338 #endif
13339 
13340   public:
13341     VULKAN_HPP_NAMESPACE::StructureType     sType = StructureType::eBufferUsageFlags2CreateInfo;
13342     const void *                            pNext = {};
13343     VULKAN_HPP_NAMESPACE::BufferUsageFlags2 usage = {};
13344   };
13345 
13346   template <>
13347   struct CppType<StructureType, StructureType::eBufferUsageFlags2CreateInfo>
13348   {
13349     using Type = BufferUsageFlags2CreateInfo;
13350   };
13351 
13352   using BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo;
13353 
13354   struct BufferViewCreateInfo
13355   {
13356     using NativeType = VkBufferViewCreateInfo;
13357 
13358     static const bool                                  allowDuplicate = false;
13359     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferViewCreateInfo;
13360 
13361 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferViewCreateInfoVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13362     VULKAN_HPP_CONSTEXPR BufferViewCreateInfo( VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_  = {},
13363                                                VULKAN_HPP_NAMESPACE::Buffer                buffer_ = {},
13364                                                VULKAN_HPP_NAMESPACE::Format                format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
13365                                                VULKAN_HPP_NAMESPACE::DeviceSize            offset_ = {},
13366                                                VULKAN_HPP_NAMESPACE::DeviceSize            range_  = {},
13367                                                const void *                                pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
13368       : pNext{ pNext_ }
13369       , flags{ flags_ }
13370       , buffer{ buffer_ }
13371       , format{ format_ }
13372       , offset{ offset_ }
13373       , range{ range_ }
13374     {
13375     }
13376 
13377     VULKAN_HPP_CONSTEXPR BufferViewCreateInfo( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13378 
BufferViewCreateInfoVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13379     BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13380       : BufferViewCreateInfo( *reinterpret_cast<BufferViewCreateInfo const *>( &rhs ) )
13381     {
13382     }
13383 
13384     BufferViewCreateInfo & operator=( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13385 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13386 
operator =VULKAN_HPP_NAMESPACE::BufferViewCreateInfo13387     BufferViewCreateInfo & operator=( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13388     {
13389       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const *>( &rhs );
13390       return *this;
13391     }
13392 
13393 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13394     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13395     {
13396       pNext = pNext_;
13397       return *this;
13398     }
13399 
setFlagsVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13400     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
13401     {
13402       flags = flags_;
13403       return *this;
13404     }
13405 
setBufferVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13406     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
13407     {
13408       buffer = buffer_;
13409       return *this;
13410     }
13411 
setFormatVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13412     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
13413     {
13414       format = format_;
13415       return *this;
13416     }
13417 
setOffsetVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13418     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
13419     {
13420       offset = offset_;
13421       return *this;
13422     }
13423 
setRangeVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13424     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT
13425     {
13426       range = range_;
13427       return *this;
13428     }
13429 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13430 
operator VkBufferViewCreateInfo const&VULKAN_HPP_NAMESPACE::BufferViewCreateInfo13431     operator VkBufferViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
13432     {
13433       return *reinterpret_cast<const VkBufferViewCreateInfo *>( this );
13434     }
13435 
operator VkBufferViewCreateInfo&VULKAN_HPP_NAMESPACE::BufferViewCreateInfo13436     operator VkBufferViewCreateInfo &() VULKAN_HPP_NOEXCEPT
13437     {
13438       return *reinterpret_cast<VkBufferViewCreateInfo *>( this );
13439     }
13440 
13441 #if defined( VULKAN_HPP_USE_REFLECT )
13442 #  if 14 <= VULKAN_HPP_CPP_VERSION
13443     auto
13444 #  else
13445     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
13446                const void * const &,
13447                VULKAN_HPP_NAMESPACE::BufferViewCreateFlags const &,
13448                VULKAN_HPP_NAMESPACE::Buffer const &,
13449                VULKAN_HPP_NAMESPACE::Format const &,
13450                VULKAN_HPP_NAMESPACE::DeviceSize const &,
13451                VULKAN_HPP_NAMESPACE::DeviceSize const &>
13452 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13453       reflect() const VULKAN_HPP_NOEXCEPT
13454     {
13455       return std::tie( sType, pNext, flags, buffer, format, offset, range );
13456     }
13457 #endif
13458 
13459 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13460     auto operator<=>( BufferViewCreateInfo const & ) const = default;
13461 #else
operator ==VULKAN_HPP_NAMESPACE::BufferViewCreateInfo13462     bool operator==( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13463     {
13464 #  if defined( VULKAN_HPP_USE_REFLECT )
13465       return this->reflect() == rhs.reflect();
13466 #  else
13467       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( buffer == rhs.buffer ) && ( format == rhs.format ) &&
13468              ( offset == rhs.offset ) && ( range == rhs.range );
13469 #  endif
13470     }
13471 
operator !=VULKAN_HPP_NAMESPACE::BufferViewCreateInfo13472     bool operator!=( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13473     {
13474       return !operator==( rhs );
13475     }
13476 #endif
13477 
13478   public:
13479     VULKAN_HPP_NAMESPACE::StructureType         sType  = StructureType::eBufferViewCreateInfo;
13480     const void *                                pNext  = {};
13481     VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags  = {};
13482     VULKAN_HPP_NAMESPACE::Buffer                buffer = {};
13483     VULKAN_HPP_NAMESPACE::Format                format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
13484     VULKAN_HPP_NAMESPACE::DeviceSize            offset = {};
13485     VULKAN_HPP_NAMESPACE::DeviceSize            range  = {};
13486   };
13487 
13488   template <>
13489   struct CppType<StructureType, StructureType::eBufferViewCreateInfo>
13490   {
13491     using Type = BufferViewCreateInfo;
13492   };
13493 
13494   struct CalibratedTimestampInfoKHR
13495   {
13496     using NativeType = VkCalibratedTimestampInfoKHR;
13497 
13498     static const bool                                  allowDuplicate = false;
13499     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCalibratedTimestampInfoKHR;
13500 
13501 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CalibratedTimestampInfoKHRVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13502     VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoKHR( VULKAN_HPP_NAMESPACE::TimeDomainKHR timeDomain_ = VULKAN_HPP_NAMESPACE::TimeDomainKHR::eDevice,
13503                                                      const void *                        pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
13504       : pNext{ pNext_ }
13505       , timeDomain{ timeDomain_ }
13506     {
13507     }
13508 
13509     VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoKHR( CalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13510 
CalibratedTimestampInfoKHRVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13511     CalibratedTimestampInfoKHR( VkCalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
13512       : CalibratedTimestampInfoKHR( *reinterpret_cast<CalibratedTimestampInfoKHR const *>( &rhs ) )
13513     {
13514     }
13515 
13516     CalibratedTimestampInfoKHR & operator=( CalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13517 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13518 
operator =VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13519     CalibratedTimestampInfoKHR & operator=( VkCalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
13520     {
13521       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR const *>( &rhs );
13522       return *this;
13523     }
13524 
13525 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13526     VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13527     {
13528       pNext = pNext_;
13529       return *this;
13530     }
13531 
setTimeDomainVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13532     VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoKHR & setTimeDomain( VULKAN_HPP_NAMESPACE::TimeDomainKHR timeDomain_ ) VULKAN_HPP_NOEXCEPT
13533     {
13534       timeDomain = timeDomain_;
13535       return *this;
13536     }
13537 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13538 
operator VkCalibratedTimestampInfoKHR const&VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13539     operator VkCalibratedTimestampInfoKHR const &() const VULKAN_HPP_NOEXCEPT
13540     {
13541       return *reinterpret_cast<const VkCalibratedTimestampInfoKHR *>( this );
13542     }
13543 
operator VkCalibratedTimestampInfoKHR&VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13544     operator VkCalibratedTimestampInfoKHR &() VULKAN_HPP_NOEXCEPT
13545     {
13546       return *reinterpret_cast<VkCalibratedTimestampInfoKHR *>( this );
13547     }
13548 
13549 #if defined( VULKAN_HPP_USE_REFLECT )
13550 #  if 14 <= VULKAN_HPP_CPP_VERSION
13551     auto
13552 #  else
13553     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::TimeDomainKHR const &>
13554 #  endif
reflectVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13555       reflect() const VULKAN_HPP_NOEXCEPT
13556     {
13557       return std::tie( sType, pNext, timeDomain );
13558     }
13559 #endif
13560 
13561 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13562     auto operator<=>( CalibratedTimestampInfoKHR const & ) const = default;
13563 #else
operator ==VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13564     bool operator==( CalibratedTimestampInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
13565     {
13566 #  if defined( VULKAN_HPP_USE_REFLECT )
13567       return this->reflect() == rhs.reflect();
13568 #  else
13569       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timeDomain == rhs.timeDomain );
13570 #  endif
13571     }
13572 
operator !=VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13573     bool operator!=( CalibratedTimestampInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
13574     {
13575       return !operator==( rhs );
13576     }
13577 #endif
13578 
13579   public:
13580     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eCalibratedTimestampInfoKHR;
13581     const void *                        pNext      = {};
13582     VULKAN_HPP_NAMESPACE::TimeDomainKHR timeDomain = VULKAN_HPP_NAMESPACE::TimeDomainKHR::eDevice;
13583   };
13584 
13585   template <>
13586   struct CppType<StructureType, StructureType::eCalibratedTimestampInfoKHR>
13587   {
13588     using Type = CalibratedTimestampInfoKHR;
13589   };
13590 
13591   using CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR;
13592 
13593   struct CheckpointData2NV
13594   {
13595     using NativeType = VkCheckpointData2NV;
13596 
13597     static const bool                                  allowDuplicate = false;
13598     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCheckpointData2NV;
13599 
13600 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
13601     VULKAN_HPP_CONSTEXPR
CheckpointData2NVVULKAN_HPP_NAMESPACE::CheckpointData2NV13602       CheckpointData2NV( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage_ = {}, void * pCheckpointMarker_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
13603       : pNext{ pNext_ }
13604       , stage{ stage_ }
13605       , pCheckpointMarker{ pCheckpointMarker_ }
13606     {
13607     }
13608 
13609     VULKAN_HPP_CONSTEXPR CheckpointData2NV( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13610 
CheckpointData2NVVULKAN_HPP_NAMESPACE::CheckpointData2NV13611     CheckpointData2NV( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT : CheckpointData2NV( *reinterpret_cast<CheckpointData2NV const *>( &rhs ) ) {}
13612 
13613     CheckpointData2NV & operator=( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13614 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13615 
operator =VULKAN_HPP_NAMESPACE::CheckpointData2NV13616     CheckpointData2NV & operator=( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT
13617     {
13618       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CheckpointData2NV const *>( &rhs );
13619       return *this;
13620     }
13621 
operator VkCheckpointData2NV const&VULKAN_HPP_NAMESPACE::CheckpointData2NV13622     operator VkCheckpointData2NV const &() const VULKAN_HPP_NOEXCEPT
13623     {
13624       return *reinterpret_cast<const VkCheckpointData2NV *>( this );
13625     }
13626 
operator VkCheckpointData2NV&VULKAN_HPP_NAMESPACE::CheckpointData2NV13627     operator VkCheckpointData2NV &() VULKAN_HPP_NOEXCEPT
13628     {
13629       return *reinterpret_cast<VkCheckpointData2NV *>( this );
13630     }
13631 
13632 #if defined( VULKAN_HPP_USE_REFLECT )
13633 #  if 14 <= VULKAN_HPP_CPP_VERSION
13634     auto
13635 #  else
13636     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &, void * const &>
13637 #  endif
reflectVULKAN_HPP_NAMESPACE::CheckpointData2NV13638       reflect() const VULKAN_HPP_NOEXCEPT
13639     {
13640       return std::tie( sType, pNext, stage, pCheckpointMarker );
13641     }
13642 #endif
13643 
13644 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13645     auto operator<=>( CheckpointData2NV const & ) const = default;
13646 #else
operator ==VULKAN_HPP_NAMESPACE::CheckpointData2NV13647     bool operator==( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
13648     {
13649 #  if defined( VULKAN_HPP_USE_REFLECT )
13650       return this->reflect() == rhs.reflect();
13651 #  else
13652       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && ( pCheckpointMarker == rhs.pCheckpointMarker );
13653 #  endif
13654     }
13655 
operator !=VULKAN_HPP_NAMESPACE::CheckpointData2NV13656     bool operator!=( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
13657     {
13658       return !operator==( rhs );
13659     }
13660 #endif
13661 
13662   public:
13663     VULKAN_HPP_NAMESPACE::StructureType       sType             = StructureType::eCheckpointData2NV;
13664     void *                                    pNext             = {};
13665     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage             = {};
13666     void *                                    pCheckpointMarker = {};
13667   };
13668 
13669   template <>
13670   struct CppType<StructureType, StructureType::eCheckpointData2NV>
13671   {
13672     using Type = CheckpointData2NV;
13673   };
13674 
13675   struct CheckpointDataNV
13676   {
13677     using NativeType = VkCheckpointDataNV;
13678 
13679     static const bool                                  allowDuplicate = false;
13680     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCheckpointDataNV;
13681 
13682 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CheckpointDataNVVULKAN_HPP_NAMESPACE::CheckpointDataNV13683     VULKAN_HPP_CONSTEXPR CheckpointDataNV( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage_ = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe,
13684                                            void *                                      pCheckpointMarker_ = {},
13685                                            void *                                      pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
13686       : pNext{ pNext_ }
13687       , stage{ stage_ }
13688       , pCheckpointMarker{ pCheckpointMarker_ }
13689     {
13690     }
13691 
13692     VULKAN_HPP_CONSTEXPR CheckpointDataNV( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13693 
CheckpointDataNVVULKAN_HPP_NAMESPACE::CheckpointDataNV13694     CheckpointDataNV( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : CheckpointDataNV( *reinterpret_cast<CheckpointDataNV const *>( &rhs ) ) {}
13695 
13696     CheckpointDataNV & operator=( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13697 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13698 
operator =VULKAN_HPP_NAMESPACE::CheckpointDataNV13699     CheckpointDataNV & operator=( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
13700     {
13701       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CheckpointDataNV const *>( &rhs );
13702       return *this;
13703     }
13704 
operator VkCheckpointDataNV const&VULKAN_HPP_NAMESPACE::CheckpointDataNV13705     operator VkCheckpointDataNV const &() const VULKAN_HPP_NOEXCEPT
13706     {
13707       return *reinterpret_cast<const VkCheckpointDataNV *>( this );
13708     }
13709 
operator VkCheckpointDataNV&VULKAN_HPP_NAMESPACE::CheckpointDataNV13710     operator VkCheckpointDataNV &() VULKAN_HPP_NOEXCEPT
13711     {
13712       return *reinterpret_cast<VkCheckpointDataNV *>( this );
13713     }
13714 
13715 #if defined( VULKAN_HPP_USE_REFLECT )
13716 #  if 14 <= VULKAN_HPP_CPP_VERSION
13717     auto
13718 #  else
13719     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlagBits const &, void * const &>
13720 #  endif
reflectVULKAN_HPP_NAMESPACE::CheckpointDataNV13721       reflect() const VULKAN_HPP_NOEXCEPT
13722     {
13723       return std::tie( sType, pNext, stage, pCheckpointMarker );
13724     }
13725 #endif
13726 
13727 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13728     auto operator<=>( CheckpointDataNV const & ) const = default;
13729 #else
operator ==VULKAN_HPP_NAMESPACE::CheckpointDataNV13730     bool operator==( CheckpointDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
13731     {
13732 #  if defined( VULKAN_HPP_USE_REFLECT )
13733       return this->reflect() == rhs.reflect();
13734 #  else
13735       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && ( pCheckpointMarker == rhs.pCheckpointMarker );
13736 #  endif
13737     }
13738 
operator !=VULKAN_HPP_NAMESPACE::CheckpointDataNV13739     bool operator!=( CheckpointDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
13740     {
13741       return !operator==( rhs );
13742     }
13743 #endif
13744 
13745   public:
13746     VULKAN_HPP_NAMESPACE::StructureType         sType             = StructureType::eCheckpointDataNV;
13747     void *                                      pNext             = {};
13748     VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage             = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe;
13749     void *                                      pCheckpointMarker = {};
13750   };
13751 
13752   template <>
13753   struct CppType<StructureType, StructureType::eCheckpointDataNV>
13754   {
13755     using Type = CheckpointDataNV;
13756   };
13757 
13758   union ClearColorValue
13759   {
13760     using NativeType = VkClearColorValue;
13761 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
13762 
ClearColorValue(const std::array<float,4> & float32_={} )13763     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<float, 4> & float32_ = {} ) : float32( float32_ ) {}
13764 
ClearColorValue(float float32_0,float float32_1,float float32_2,float float32_3)13765     VULKAN_HPP_CONSTEXPR ClearColorValue( float float32_0, float float32_1, float float32_2, float float32_3 )
13766       : float32{ { { float32_0, float32_1, float32_2, float32_3 } } }
13767     {
13768     }
13769 
ClearColorValue(const std::array<int32_t,4> & int32_)13770     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<int32_t, 4> & int32_ ) : int32( int32_ ) {}
13771 
ClearColorValue(int32_t int32_0,int32_t int32_1,int32_t int32_2,int32_t int32_3)13772     VULKAN_HPP_CONSTEXPR ClearColorValue( int32_t int32_0, int32_t int32_1, int32_t int32_2, int32_t int32_3 )
13773       : int32{ { { int32_0, int32_1, int32_2, int32_3 } } }
13774     {
13775     }
13776 
ClearColorValue(const std::array<uint32_t,4> & uint32_)13777     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<uint32_t, 4> & uint32_ ) : uint32( uint32_ ) {}
13778 
ClearColorValue(uint32_t uint32_0,uint32_t uint32_1,uint32_t uint32_2,uint32_t uint32_3)13779     VULKAN_HPP_CONSTEXPR ClearColorValue( uint32_t uint32_0, uint32_t uint32_1, uint32_t uint32_2, uint32_t uint32_3 )
13780       : uint32{ { { uint32_0, uint32_1, uint32_2, uint32_3 } } }
13781     {
13782     }
13783 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
13784 
13785 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setFloat32(std::array<float,4> float32_)13786     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setFloat32( std::array<float, 4> float32_ ) VULKAN_HPP_NOEXCEPT
13787     {
13788       float32 = float32_;
13789       return *this;
13790     }
13791 
setInt32(std::array<int32_t,4> int32_)13792     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setInt32( std::array<int32_t, 4> int32_ ) VULKAN_HPP_NOEXCEPT
13793     {
13794       int32 = int32_;
13795       return *this;
13796     }
13797 
setUint32(std::array<uint32_t,4> uint32_)13798     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setUint32( std::array<uint32_t, 4> uint32_ ) VULKAN_HPP_NOEXCEPT
13799     {
13800       uint32 = uint32_;
13801       return *this;
13802     }
13803 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
13804 
operator VkClearColorValue const&() const13805     operator VkClearColorValue const &() const
13806     {
13807       return *reinterpret_cast<const VkClearColorValue *>( this );
13808     }
13809 
operator VkClearColorValue&()13810     operator VkClearColorValue &()
13811     {
13812       return *reinterpret_cast<VkClearColorValue *>( this );
13813     }
13814 
13815     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4>    float32;
13816     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<int32_t, 4>  int32;
13817     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 4> uint32;
13818   };
13819 
13820   struct ClearDepthStencilValue
13821   {
13822     using NativeType = VkClearDepthStencilValue;
13823 
13824 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearDepthStencilValueVULKAN_HPP_NAMESPACE::ClearDepthStencilValue13825     VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( float depth_ = {}, uint32_t stencil_ = {} ) VULKAN_HPP_NOEXCEPT
13826       : depth{ depth_ }
13827       , stencil{ stencil_ }
13828     {
13829     }
13830 
13831     VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13832 
ClearDepthStencilValueVULKAN_HPP_NAMESPACE::ClearDepthStencilValue13833     ClearDepthStencilValue( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
13834       : ClearDepthStencilValue( *reinterpret_cast<ClearDepthStencilValue const *>( &rhs ) )
13835     {
13836     }
13837 
13838     ClearDepthStencilValue & operator=( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13839 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13840 
operator =VULKAN_HPP_NAMESPACE::ClearDepthStencilValue13841     ClearDepthStencilValue & operator=( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
13842     {
13843       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const *>( &rhs );
13844       return *this;
13845     }
13846 
13847 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDepthVULKAN_HPP_NAMESPACE::ClearDepthStencilValue13848     VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setDepth( float depth_ ) VULKAN_HPP_NOEXCEPT
13849     {
13850       depth = depth_;
13851       return *this;
13852     }
13853 
setStencilVULKAN_HPP_NAMESPACE::ClearDepthStencilValue13854     VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setStencil( uint32_t stencil_ ) VULKAN_HPP_NOEXCEPT
13855     {
13856       stencil = stencil_;
13857       return *this;
13858     }
13859 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13860 
operator VkClearDepthStencilValue const&VULKAN_HPP_NAMESPACE::ClearDepthStencilValue13861     operator VkClearDepthStencilValue const &() const VULKAN_HPP_NOEXCEPT
13862     {
13863       return *reinterpret_cast<const VkClearDepthStencilValue *>( this );
13864     }
13865 
operator VkClearDepthStencilValue&VULKAN_HPP_NAMESPACE::ClearDepthStencilValue13866     operator VkClearDepthStencilValue &() VULKAN_HPP_NOEXCEPT
13867     {
13868       return *reinterpret_cast<VkClearDepthStencilValue *>( this );
13869     }
13870 
13871 #if defined( VULKAN_HPP_USE_REFLECT )
13872 #  if 14 <= VULKAN_HPP_CPP_VERSION
13873     auto
13874 #  else
13875     std::tuple<float const &, uint32_t const &>
13876 #  endif
reflectVULKAN_HPP_NAMESPACE::ClearDepthStencilValue13877       reflect() const VULKAN_HPP_NOEXCEPT
13878     {
13879       return std::tie( depth, stencil );
13880     }
13881 #endif
13882 
13883 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13884     auto operator<=>( ClearDepthStencilValue const & ) const = default;
13885 #else
operator ==VULKAN_HPP_NAMESPACE::ClearDepthStencilValue13886     bool operator==( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT
13887     {
13888 #  if defined( VULKAN_HPP_USE_REFLECT )
13889       return this->reflect() == rhs.reflect();
13890 #  else
13891       return ( depth == rhs.depth ) && ( stencil == rhs.stencil );
13892 #  endif
13893     }
13894 
operator !=VULKAN_HPP_NAMESPACE::ClearDepthStencilValue13895     bool operator!=( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT
13896     {
13897       return !operator==( rhs );
13898     }
13899 #endif
13900 
13901   public:
13902     float    depth   = {};
13903     uint32_t stencil = {};
13904   };
13905 
13906   union ClearValue
13907   {
13908     using NativeType = VkClearValue;
13909 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
13910 
ClearValue(VULKAN_HPP_NAMESPACE::ClearColorValue color_={} )13911     VULKAN_HPP_CONSTEXPR_14 ClearValue( VULKAN_HPP_NAMESPACE::ClearColorValue color_ = {} ) : color( color_ ) {}
13912 
ClearValue(VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil_)13913     VULKAN_HPP_CONSTEXPR_14 ClearValue( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil_ ) : depthStencil( depthStencil_ ) {}
13914 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
13915 
13916 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setColor(VULKAN_HPP_NAMESPACE::ClearColorValue const & color_)13917     VULKAN_HPP_CONSTEXPR_14 ClearValue & setColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & color_ ) VULKAN_HPP_NOEXCEPT
13918     {
13919       color = color_;
13920       return *this;
13921     }
13922 
setDepthStencil(VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & depthStencil_)13923     VULKAN_HPP_CONSTEXPR_14 ClearValue & setDepthStencil( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & depthStencil_ ) VULKAN_HPP_NOEXCEPT
13924     {
13925       depthStencil = depthStencil_;
13926       return *this;
13927     }
13928 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
13929 
operator VkClearValue const&() const13930     operator VkClearValue const &() const
13931     {
13932       return *reinterpret_cast<const VkClearValue *>( this );
13933     }
13934 
operator VkClearValue&()13935     operator VkClearValue &()
13936     {
13937       return *reinterpret_cast<VkClearValue *>( this );
13938     }
13939 
13940 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
13941     VULKAN_HPP_NAMESPACE::ClearColorValue        color;
13942     VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil;
13943 #else
13944     VkClearColorValue        color;
13945     VkClearDepthStencilValue depthStencil;
13946 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
13947   };
13948 
13949   struct ClearAttachment
13950   {
13951     using NativeType = VkClearAttachment;
13952 
13953 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment13954     VULKAN_HPP_CONSTEXPR_14 ClearAttachment( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_      = {},
13955                                              uint32_t                               colorAttachment_ = {},
13956                                              VULKAN_HPP_NAMESPACE::ClearValue       clearValue_      = {} ) VULKAN_HPP_NOEXCEPT
13957       : aspectMask{ aspectMask_ }
13958       , colorAttachment{ colorAttachment_ }
13959       , clearValue{ clearValue_ }
13960     {
13961     }
13962 
13963     VULKAN_HPP_CONSTEXPR_14 ClearAttachment( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13964 
ClearAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment13965     ClearAttachment( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT : ClearAttachment( *reinterpret_cast<ClearAttachment const *>( &rhs ) ) {}
13966 
13967     ClearAttachment & operator=( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13968 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13969 
operator =VULKAN_HPP_NAMESPACE::ClearAttachment13970     ClearAttachment & operator=( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT
13971     {
13972       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearAttachment const *>( &rhs );
13973       return *this;
13974     }
13975 
13976 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ClearAttachment13977     VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
13978     {
13979       aspectMask = aspectMask_;
13980       return *this;
13981     }
13982 
setColorAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment13983     VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setColorAttachment( uint32_t colorAttachment_ ) VULKAN_HPP_NOEXCEPT
13984     {
13985       colorAttachment = colorAttachment_;
13986       return *this;
13987     }
13988 
setClearValueVULKAN_HPP_NAMESPACE::ClearAttachment13989     VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT
13990     {
13991       clearValue = clearValue_;
13992       return *this;
13993     }
13994 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13995 
operator VkClearAttachment const&VULKAN_HPP_NAMESPACE::ClearAttachment13996     operator VkClearAttachment const &() const VULKAN_HPP_NOEXCEPT
13997     {
13998       return *reinterpret_cast<const VkClearAttachment *>( this );
13999     }
14000 
operator VkClearAttachment&VULKAN_HPP_NAMESPACE::ClearAttachment14001     operator VkClearAttachment &() VULKAN_HPP_NOEXCEPT
14002     {
14003       return *reinterpret_cast<VkClearAttachment *>( this );
14004     }
14005 
14006 #if defined( VULKAN_HPP_USE_REFLECT )
14007 #  if 14 <= VULKAN_HPP_CPP_VERSION
14008     auto
14009 #  else
14010     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ClearValue const &>
14011 #  endif
reflectVULKAN_HPP_NAMESPACE::ClearAttachment14012       reflect() const VULKAN_HPP_NOEXCEPT
14013     {
14014       return std::tie( aspectMask, colorAttachment, clearValue );
14015     }
14016 #endif
14017 
14018   public:
14019     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask      = {};
14020     uint32_t                               colorAttachment = {};
14021     VULKAN_HPP_NAMESPACE::ClearValue       clearValue      = {};
14022   };
14023 
14024   struct ClearRect
14025   {
14026     using NativeType = VkClearRect;
14027 
14028 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearRectVULKAN_HPP_NAMESPACE::ClearRect14029     VULKAN_HPP_CONSTEXPR ClearRect( VULKAN_HPP_NAMESPACE::Rect2D rect_ = {}, uint32_t baseArrayLayer_ = {}, uint32_t layerCount_ = {} ) VULKAN_HPP_NOEXCEPT
14030       : rect{ rect_ }
14031       , baseArrayLayer{ baseArrayLayer_ }
14032       , layerCount{ layerCount_ }
14033     {
14034     }
14035 
14036     VULKAN_HPP_CONSTEXPR ClearRect( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14037 
ClearRectVULKAN_HPP_NAMESPACE::ClearRect14038     ClearRect( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT : ClearRect( *reinterpret_cast<ClearRect const *>( &rhs ) ) {}
14039 
14040     ClearRect & operator=( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14041 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14042 
operator =VULKAN_HPP_NAMESPACE::ClearRect14043     ClearRect & operator=( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT
14044     {
14045       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearRect const *>( &rhs );
14046       return *this;
14047     }
14048 
14049 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRectVULKAN_HPP_NAMESPACE::ClearRect14050     VULKAN_HPP_CONSTEXPR_14 ClearRect & setRect( VULKAN_HPP_NAMESPACE::Rect2D const & rect_ ) VULKAN_HPP_NOEXCEPT
14051     {
14052       rect = rect_;
14053       return *this;
14054     }
14055 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ClearRect14056     VULKAN_HPP_CONSTEXPR_14 ClearRect & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
14057     {
14058       baseArrayLayer = baseArrayLayer_;
14059       return *this;
14060     }
14061 
setLayerCountVULKAN_HPP_NAMESPACE::ClearRect14062     VULKAN_HPP_CONSTEXPR_14 ClearRect & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
14063     {
14064       layerCount = layerCount_;
14065       return *this;
14066     }
14067 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14068 
operator VkClearRect const&VULKAN_HPP_NAMESPACE::ClearRect14069     operator VkClearRect const &() const VULKAN_HPP_NOEXCEPT
14070     {
14071       return *reinterpret_cast<const VkClearRect *>( this );
14072     }
14073 
operator VkClearRect&VULKAN_HPP_NAMESPACE::ClearRect14074     operator VkClearRect &() VULKAN_HPP_NOEXCEPT
14075     {
14076       return *reinterpret_cast<VkClearRect *>( this );
14077     }
14078 
14079 #if defined( VULKAN_HPP_USE_REFLECT )
14080 #  if 14 <= VULKAN_HPP_CPP_VERSION
14081     auto
14082 #  else
14083     std::tuple<VULKAN_HPP_NAMESPACE::Rect2D const &, uint32_t const &, uint32_t const &>
14084 #  endif
reflectVULKAN_HPP_NAMESPACE::ClearRect14085       reflect() const VULKAN_HPP_NOEXCEPT
14086     {
14087       return std::tie( rect, baseArrayLayer, layerCount );
14088     }
14089 #endif
14090 
14091 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14092     auto operator<=>( ClearRect const & ) const = default;
14093 #else
operator ==VULKAN_HPP_NAMESPACE::ClearRect14094     bool                     operator==( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT
14095     {
14096 #  if defined( VULKAN_HPP_USE_REFLECT )
14097       return this->reflect() == rhs.reflect();
14098 #  else
14099       return ( rect == rhs.rect ) && ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount );
14100 #  endif
14101     }
14102 
operator !=VULKAN_HPP_NAMESPACE::ClearRect14103     bool operator!=( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT
14104     {
14105       return !operator==( rhs );
14106     }
14107 #endif
14108 
14109   public:
14110     VULKAN_HPP_NAMESPACE::Rect2D rect           = {};
14111     uint32_t                     baseArrayLayer = {};
14112     uint32_t                     layerCount     = {};
14113   };
14114 
14115   struct CoarseSampleLocationNV
14116   {
14117     using NativeType = VkCoarseSampleLocationNV;
14118 
14119 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CoarseSampleLocationNVVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14120     VULKAN_HPP_CONSTEXPR CoarseSampleLocationNV( uint32_t pixelX_ = {}, uint32_t pixelY_ = {}, uint32_t sample_ = {} ) VULKAN_HPP_NOEXCEPT
14121       : pixelX{ pixelX_ }
14122       , pixelY{ pixelY_ }
14123       , sample{ sample_ }
14124     {
14125     }
14126 
14127     VULKAN_HPP_CONSTEXPR CoarseSampleLocationNV( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14128 
CoarseSampleLocationNVVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14129     CoarseSampleLocationNV( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT
14130       : CoarseSampleLocationNV( *reinterpret_cast<CoarseSampleLocationNV const *>( &rhs ) )
14131     {
14132     }
14133 
14134     CoarseSampleLocationNV & operator=( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14135 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14136 
operator =VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14137     CoarseSampleLocationNV & operator=( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT
14138     {
14139       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV const *>( &rhs );
14140       return *this;
14141     }
14142 
14143 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPixelXVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14144     VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setPixelX( uint32_t pixelX_ ) VULKAN_HPP_NOEXCEPT
14145     {
14146       pixelX = pixelX_;
14147       return *this;
14148     }
14149 
setPixelYVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14150     VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setPixelY( uint32_t pixelY_ ) VULKAN_HPP_NOEXCEPT
14151     {
14152       pixelY = pixelY_;
14153       return *this;
14154     }
14155 
setSampleVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14156     VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setSample( uint32_t sample_ ) VULKAN_HPP_NOEXCEPT
14157     {
14158       sample = sample_;
14159       return *this;
14160     }
14161 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14162 
operator VkCoarseSampleLocationNV const&VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14163     operator VkCoarseSampleLocationNV const &() const VULKAN_HPP_NOEXCEPT
14164     {
14165       return *reinterpret_cast<const VkCoarseSampleLocationNV *>( this );
14166     }
14167 
operator VkCoarseSampleLocationNV&VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14168     operator VkCoarseSampleLocationNV &() VULKAN_HPP_NOEXCEPT
14169     {
14170       return *reinterpret_cast<VkCoarseSampleLocationNV *>( this );
14171     }
14172 
14173 #if defined( VULKAN_HPP_USE_REFLECT )
14174 #  if 14 <= VULKAN_HPP_CPP_VERSION
14175     auto
14176 #  else
14177     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
14178 #  endif
reflectVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14179       reflect() const VULKAN_HPP_NOEXCEPT
14180     {
14181       return std::tie( pixelX, pixelY, sample );
14182     }
14183 #endif
14184 
14185 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14186     auto operator<=>( CoarseSampleLocationNV const & ) const = default;
14187 #else
operator ==VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14188     bool operator==( CoarseSampleLocationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
14189     {
14190 #  if defined( VULKAN_HPP_USE_REFLECT )
14191       return this->reflect() == rhs.reflect();
14192 #  else
14193       return ( pixelX == rhs.pixelX ) && ( pixelY == rhs.pixelY ) && ( sample == rhs.sample );
14194 #  endif
14195     }
14196 
operator !=VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV14197     bool operator!=( CoarseSampleLocationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
14198     {
14199       return !operator==( rhs );
14200     }
14201 #endif
14202 
14203   public:
14204     uint32_t pixelX = {};
14205     uint32_t pixelY = {};
14206     uint32_t sample = {};
14207   };
14208 
14209   struct CoarseSampleOrderCustomNV
14210   {
14211     using NativeType = VkCoarseSampleOrderCustomNV;
14212 
14213 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
14214     VULKAN_HPP_CONSTEXPR
CoarseSampleOrderCustomNVVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14215       CoarseSampleOrderCustomNV( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ = VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV::eNoInvocations,
14216                                  uint32_t                                        sampleCount_ = {},
14217                                  uint32_t                                        sampleLocationCount_   = {},
14218                                  const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations_ = {} ) VULKAN_HPP_NOEXCEPT
14219       : shadingRate{ shadingRate_ }
14220       , sampleCount{ sampleCount_ }
14221       , sampleLocationCount{ sampleLocationCount_ }
14222       , pSampleLocations{ pSampleLocations_ }
14223     {
14224     }
14225 
14226     VULKAN_HPP_CONSTEXPR CoarseSampleOrderCustomNV( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14227 
CoarseSampleOrderCustomNVVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14228     CoarseSampleOrderCustomNV( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT
14229       : CoarseSampleOrderCustomNV( *reinterpret_cast<CoarseSampleOrderCustomNV const *>( &rhs ) )
14230     {
14231     }
14232 
14233 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CoarseSampleOrderCustomNVVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14234     CoarseSampleOrderCustomNV( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV                                                           shadingRate_,
14235                                uint32_t                                                                                                  sampleCount_,
14236                                VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV> const & sampleLocations_ )
14237       : shadingRate( shadingRate_ )
14238       , sampleCount( sampleCount_ )
14239       , sampleLocationCount( static_cast<uint32_t>( sampleLocations_.size() ) )
14240       , pSampleLocations( sampleLocations_.data() )
14241     {
14242     }
14243 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
14244 
14245     CoarseSampleOrderCustomNV & operator=( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14246 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14247 
operator =VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14248     CoarseSampleOrderCustomNV & operator=( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT
14249     {
14250       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV const *>( &rhs );
14251       return *this;
14252     }
14253 
14254 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setShadingRateVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14255     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setShadingRate( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ ) VULKAN_HPP_NOEXCEPT
14256     {
14257       shadingRate = shadingRate_;
14258       return *this;
14259     }
14260 
setSampleCountVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14261     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setSampleCount( uint32_t sampleCount_ ) VULKAN_HPP_NOEXCEPT
14262     {
14263       sampleCount = sampleCount_;
14264       return *this;
14265     }
14266 
setSampleLocationCountVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14267     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setSampleLocationCount( uint32_t sampleLocationCount_ ) VULKAN_HPP_NOEXCEPT
14268     {
14269       sampleLocationCount = sampleLocationCount_;
14270       return *this;
14271     }
14272 
14273     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV &
setPSampleLocationsVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14274       setPSampleLocations( const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations_ ) VULKAN_HPP_NOEXCEPT
14275     {
14276       pSampleLocations = pSampleLocations_;
14277       return *this;
14278     }
14279 
14280 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSampleLocationsVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14281     CoarseSampleOrderCustomNV & setSampleLocations(
14282       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV> const & sampleLocations_ ) VULKAN_HPP_NOEXCEPT
14283     {
14284       sampleLocationCount = static_cast<uint32_t>( sampleLocations_.size() );
14285       pSampleLocations    = sampleLocations_.data();
14286       return *this;
14287     }
14288 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
14289 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14290 
operator VkCoarseSampleOrderCustomNV const&VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14291     operator VkCoarseSampleOrderCustomNV const &() const VULKAN_HPP_NOEXCEPT
14292     {
14293       return *reinterpret_cast<const VkCoarseSampleOrderCustomNV *>( this );
14294     }
14295 
operator VkCoarseSampleOrderCustomNV&VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14296     operator VkCoarseSampleOrderCustomNV &() VULKAN_HPP_NOEXCEPT
14297     {
14298       return *reinterpret_cast<VkCoarseSampleOrderCustomNV *>( this );
14299     }
14300 
14301 #if defined( VULKAN_HPP_USE_REFLECT )
14302 #  if 14 <= VULKAN_HPP_CPP_VERSION
14303     auto
14304 #  else
14305     std::tuple<VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV const &,
14306                uint32_t const &,
14307                uint32_t const &,
14308                const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * const &>
14309 #  endif
reflectVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14310       reflect() const VULKAN_HPP_NOEXCEPT
14311     {
14312       return std::tie( shadingRate, sampleCount, sampleLocationCount, pSampleLocations );
14313     }
14314 #endif
14315 
14316 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14317     auto operator<=>( CoarseSampleOrderCustomNV const & ) const = default;
14318 #else
operator ==VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14319     bool operator==( CoarseSampleOrderCustomNV const & rhs ) const VULKAN_HPP_NOEXCEPT
14320     {
14321 #  if defined( VULKAN_HPP_USE_REFLECT )
14322       return this->reflect() == rhs.reflect();
14323 #  else
14324       return ( shadingRate == rhs.shadingRate ) && ( sampleCount == rhs.sampleCount ) && ( sampleLocationCount == rhs.sampleLocationCount ) &&
14325              ( pSampleLocations == rhs.pSampleLocations );
14326 #  endif
14327     }
14328 
operator !=VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14329     bool operator!=( CoarseSampleOrderCustomNV const & rhs ) const VULKAN_HPP_NOEXCEPT
14330     {
14331       return !operator==( rhs );
14332     }
14333 #endif
14334 
14335   public:
14336     VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV      shadingRate         = VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV::eNoInvocations;
14337     uint32_t                                             sampleCount         = {};
14338     uint32_t                                             sampleLocationCount = {};
14339     const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations    = {};
14340   };
14341 
14342   struct ColorBlendAdvancedEXT
14343   {
14344     using NativeType = VkColorBlendAdvancedEXT;
14345 
14346 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ColorBlendAdvancedEXTVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14347     VULKAN_HPP_CONSTEXPR ColorBlendAdvancedEXT( VULKAN_HPP_NAMESPACE::BlendOp         advancedBlendOp_  = VULKAN_HPP_NAMESPACE::BlendOp::eAdd,
14348                                                 VULKAN_HPP_NAMESPACE::Bool32          srcPremultiplied_ = {},
14349                                                 VULKAN_HPP_NAMESPACE::Bool32          dstPremultiplied_ = {},
14350                                                 VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_     = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated,
14351                                                 VULKAN_HPP_NAMESPACE::Bool32          clampResults_     = {} ) VULKAN_HPP_NOEXCEPT
14352       : advancedBlendOp{ advancedBlendOp_ }
14353       , srcPremultiplied{ srcPremultiplied_ }
14354       , dstPremultiplied{ dstPremultiplied_ }
14355       , blendOverlap{ blendOverlap_ }
14356       , clampResults{ clampResults_ }
14357     {
14358     }
14359 
14360     VULKAN_HPP_CONSTEXPR ColorBlendAdvancedEXT( ColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14361 
ColorBlendAdvancedEXTVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14362     ColorBlendAdvancedEXT( VkColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14363       : ColorBlendAdvancedEXT( *reinterpret_cast<ColorBlendAdvancedEXT const *>( &rhs ) )
14364     {
14365     }
14366 
14367     ColorBlendAdvancedEXT & operator=( ColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14368 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14369 
operator =VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14370     ColorBlendAdvancedEXT & operator=( VkColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14371     {
14372       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT const *>( &rhs );
14373       return *this;
14374     }
14375 
14376 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAdvancedBlendOpVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14377     VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setAdvancedBlendOp( VULKAN_HPP_NAMESPACE::BlendOp advancedBlendOp_ ) VULKAN_HPP_NOEXCEPT
14378     {
14379       advancedBlendOp = advancedBlendOp_;
14380       return *this;
14381     }
14382 
setSrcPremultipliedVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14383     VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setSrcPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ ) VULKAN_HPP_NOEXCEPT
14384     {
14385       srcPremultiplied = srcPremultiplied_;
14386       return *this;
14387     }
14388 
setDstPremultipliedVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14389     VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setDstPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ ) VULKAN_HPP_NOEXCEPT
14390     {
14391       dstPremultiplied = dstPremultiplied_;
14392       return *this;
14393     }
14394 
setBlendOverlapVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14395     VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setBlendOverlap( VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ ) VULKAN_HPP_NOEXCEPT
14396     {
14397       blendOverlap = blendOverlap_;
14398       return *this;
14399     }
14400 
setClampResultsVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14401     VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setClampResults( VULKAN_HPP_NAMESPACE::Bool32 clampResults_ ) VULKAN_HPP_NOEXCEPT
14402     {
14403       clampResults = clampResults_;
14404       return *this;
14405     }
14406 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14407 
operator VkColorBlendAdvancedEXT const&VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14408     operator VkColorBlendAdvancedEXT const &() const VULKAN_HPP_NOEXCEPT
14409     {
14410       return *reinterpret_cast<const VkColorBlendAdvancedEXT *>( this );
14411     }
14412 
operator VkColorBlendAdvancedEXT&VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14413     operator VkColorBlendAdvancedEXT &() VULKAN_HPP_NOEXCEPT
14414     {
14415       return *reinterpret_cast<VkColorBlendAdvancedEXT *>( this );
14416     }
14417 
14418 #if defined( VULKAN_HPP_USE_REFLECT )
14419 #  if 14 <= VULKAN_HPP_CPP_VERSION
14420     auto
14421 #  else
14422     std::tuple<VULKAN_HPP_NAMESPACE::BlendOp const &,
14423                VULKAN_HPP_NAMESPACE::Bool32 const &,
14424                VULKAN_HPP_NAMESPACE::Bool32 const &,
14425                VULKAN_HPP_NAMESPACE::BlendOverlapEXT const &,
14426                VULKAN_HPP_NAMESPACE::Bool32 const &>
14427 #  endif
reflectVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14428       reflect() const VULKAN_HPP_NOEXCEPT
14429     {
14430       return std::tie( advancedBlendOp, srcPremultiplied, dstPremultiplied, blendOverlap, clampResults );
14431     }
14432 #endif
14433 
14434 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14435     auto operator<=>( ColorBlendAdvancedEXT const & ) const = default;
14436 #else
operator ==VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14437     bool operator==( ColorBlendAdvancedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14438     {
14439 #  if defined( VULKAN_HPP_USE_REFLECT )
14440       return this->reflect() == rhs.reflect();
14441 #  else
14442       return ( advancedBlendOp == rhs.advancedBlendOp ) && ( srcPremultiplied == rhs.srcPremultiplied ) && ( dstPremultiplied == rhs.dstPremultiplied ) &&
14443              ( blendOverlap == rhs.blendOverlap ) && ( clampResults == rhs.clampResults );
14444 #  endif
14445     }
14446 
operator !=VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14447     bool operator!=( ColorBlendAdvancedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14448     {
14449       return !operator==( rhs );
14450     }
14451 #endif
14452 
14453   public:
14454     VULKAN_HPP_NAMESPACE::BlendOp         advancedBlendOp  = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
14455     VULKAN_HPP_NAMESPACE::Bool32          srcPremultiplied = {};
14456     VULKAN_HPP_NAMESPACE::Bool32          dstPremultiplied = {};
14457     VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap     = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated;
14458     VULKAN_HPP_NAMESPACE::Bool32          clampResults     = {};
14459   };
14460 
14461   struct ColorBlendEquationEXT
14462   {
14463     using NativeType = VkColorBlendEquationEXT;
14464 
14465 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ColorBlendEquationEXTVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14466     VULKAN_HPP_CONSTEXPR ColorBlendEquationEXT( VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
14467                                                 VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
14468                                                 VULKAN_HPP_NAMESPACE::BlendOp     colorBlendOp_        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd,
14469                                                 VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
14470                                                 VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
14471                                                 VULKAN_HPP_NAMESPACE::BlendOp     alphaBlendOp_ = VULKAN_HPP_NAMESPACE::BlendOp::eAdd ) VULKAN_HPP_NOEXCEPT
14472       : srcColorBlendFactor{ srcColorBlendFactor_ }
14473       , dstColorBlendFactor{ dstColorBlendFactor_ }
14474       , colorBlendOp{ colorBlendOp_ }
14475       , srcAlphaBlendFactor{ srcAlphaBlendFactor_ }
14476       , dstAlphaBlendFactor{ dstAlphaBlendFactor_ }
14477       , alphaBlendOp{ alphaBlendOp_ }
14478     {
14479     }
14480 
14481     VULKAN_HPP_CONSTEXPR ColorBlendEquationEXT( ColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14482 
ColorBlendEquationEXTVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14483     ColorBlendEquationEXT( VkColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14484       : ColorBlendEquationEXT( *reinterpret_cast<ColorBlendEquationEXT const *>( &rhs ) )
14485     {
14486     }
14487 
14488     ColorBlendEquationEXT & operator=( ColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14489 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14490 
operator =VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14491     ColorBlendEquationEXT & operator=( VkColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14492     {
14493       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT const *>( &rhs );
14494       return *this;
14495     }
14496 
14497 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcColorBlendFactorVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14498     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setSrcColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
14499     {
14500       srcColorBlendFactor = srcColorBlendFactor_;
14501       return *this;
14502     }
14503 
setDstColorBlendFactorVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14504     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setDstColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
14505     {
14506       dstColorBlendFactor = dstColorBlendFactor_;
14507       return *this;
14508     }
14509 
setColorBlendOpVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14510     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setColorBlendOp( VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ ) VULKAN_HPP_NOEXCEPT
14511     {
14512       colorBlendOp = colorBlendOp_;
14513       return *this;
14514     }
14515 
setSrcAlphaBlendFactorVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14516     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setSrcAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
14517     {
14518       srcAlphaBlendFactor = srcAlphaBlendFactor_;
14519       return *this;
14520     }
14521 
setDstAlphaBlendFactorVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14522     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setDstAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
14523     {
14524       dstAlphaBlendFactor = dstAlphaBlendFactor_;
14525       return *this;
14526     }
14527 
setAlphaBlendOpVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14528     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setAlphaBlendOp( VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ ) VULKAN_HPP_NOEXCEPT
14529     {
14530       alphaBlendOp = alphaBlendOp_;
14531       return *this;
14532     }
14533 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14534 
operator VkColorBlendEquationEXT const&VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14535     operator VkColorBlendEquationEXT const &() const VULKAN_HPP_NOEXCEPT
14536     {
14537       return *reinterpret_cast<const VkColorBlendEquationEXT *>( this );
14538     }
14539 
operator VkColorBlendEquationEXT&VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14540     operator VkColorBlendEquationEXT &() VULKAN_HPP_NOEXCEPT
14541     {
14542       return *reinterpret_cast<VkColorBlendEquationEXT *>( this );
14543     }
14544 
14545 #if defined( VULKAN_HPP_USE_REFLECT )
14546 #  if 14 <= VULKAN_HPP_CPP_VERSION
14547     auto
14548 #  else
14549     std::tuple<VULKAN_HPP_NAMESPACE::BlendFactor const &,
14550                VULKAN_HPP_NAMESPACE::BlendFactor const &,
14551                VULKAN_HPP_NAMESPACE::BlendOp const &,
14552                VULKAN_HPP_NAMESPACE::BlendFactor const &,
14553                VULKAN_HPP_NAMESPACE::BlendFactor const &,
14554                VULKAN_HPP_NAMESPACE::BlendOp const &>
14555 #  endif
reflectVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14556       reflect() const VULKAN_HPP_NOEXCEPT
14557     {
14558       return std::tie( srcColorBlendFactor, dstColorBlendFactor, colorBlendOp, srcAlphaBlendFactor, dstAlphaBlendFactor, alphaBlendOp );
14559     }
14560 #endif
14561 
14562 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14563     auto operator<=>( ColorBlendEquationEXT const & ) const = default;
14564 #else
operator ==VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14565     bool operator==( ColorBlendEquationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14566     {
14567 #  if defined( VULKAN_HPP_USE_REFLECT )
14568       return this->reflect() == rhs.reflect();
14569 #  else
14570       return ( srcColorBlendFactor == rhs.srcColorBlendFactor ) && ( dstColorBlendFactor == rhs.dstColorBlendFactor ) && ( colorBlendOp == rhs.colorBlendOp ) &&
14571              ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor ) && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor ) && ( alphaBlendOp == rhs.alphaBlendOp );
14572 #  endif
14573     }
14574 
operator !=VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14575     bool operator!=( ColorBlendEquationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14576     {
14577       return !operator==( rhs );
14578     }
14579 #endif
14580 
14581   public:
14582     VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
14583     VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
14584     VULKAN_HPP_NAMESPACE::BlendOp     colorBlendOp        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
14585     VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
14586     VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
14587     VULKAN_HPP_NAMESPACE::BlendOp     alphaBlendOp        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
14588   };
14589 
14590   struct CommandBufferAllocateInfo
14591   {
14592     using NativeType = VkCommandBufferAllocateInfo;
14593 
14594     static const bool                                  allowDuplicate = false;
14595     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferAllocateInfo;
14596 
14597 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferAllocateInfoVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14598     VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo( VULKAN_HPP_NAMESPACE::CommandPool        commandPool_ = {},
14599                                                     VULKAN_HPP_NAMESPACE::CommandBufferLevel level_       = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary,
14600                                                     uint32_t                                 commandBufferCount_ = {},
14601                                                     const void *                             pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
14602       : pNext{ pNext_ }
14603       , commandPool{ commandPool_ }
14604       , level{ level_ }
14605       , commandBufferCount{ commandBufferCount_ }
14606     {
14607     }
14608 
14609     VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14610 
CommandBufferAllocateInfoVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14611     CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14612       : CommandBufferAllocateInfo( *reinterpret_cast<CommandBufferAllocateInfo const *>( &rhs ) )
14613     {
14614     }
14615 
14616     CommandBufferAllocateInfo & operator=( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14617 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14618 
operator =VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14619     CommandBufferAllocateInfo & operator=( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14620     {
14621       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const *>( &rhs );
14622       return *this;
14623     }
14624 
14625 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14626     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14627     {
14628       pNext = pNext_;
14629       return *this;
14630     }
14631 
setCommandPoolVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14632     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool_ ) VULKAN_HPP_NOEXCEPT
14633     {
14634       commandPool = commandPool_;
14635       return *this;
14636     }
14637 
setLevelVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14638     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setLevel( VULKAN_HPP_NAMESPACE::CommandBufferLevel level_ ) VULKAN_HPP_NOEXCEPT
14639     {
14640       level = level_;
14641       return *this;
14642     }
14643 
setCommandBufferCountVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14644     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
14645     {
14646       commandBufferCount = commandBufferCount_;
14647       return *this;
14648     }
14649 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14650 
operator VkCommandBufferAllocateInfo const&VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14651     operator VkCommandBufferAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
14652     {
14653       return *reinterpret_cast<const VkCommandBufferAllocateInfo *>( this );
14654     }
14655 
operator VkCommandBufferAllocateInfo&VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14656     operator VkCommandBufferAllocateInfo &() VULKAN_HPP_NOEXCEPT
14657     {
14658       return *reinterpret_cast<VkCommandBufferAllocateInfo *>( this );
14659     }
14660 
14661 #if defined( VULKAN_HPP_USE_REFLECT )
14662 #  if 14 <= VULKAN_HPP_CPP_VERSION
14663     auto
14664 #  else
14665     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14666                const void * const &,
14667                VULKAN_HPP_NAMESPACE::CommandPool const &,
14668                VULKAN_HPP_NAMESPACE::CommandBufferLevel const &,
14669                uint32_t const &>
14670 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14671       reflect() const VULKAN_HPP_NOEXCEPT
14672     {
14673       return std::tie( sType, pNext, commandPool, level, commandBufferCount );
14674     }
14675 #endif
14676 
14677 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14678     auto operator<=>( CommandBufferAllocateInfo const & ) const = default;
14679 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14680     bool operator==( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14681     {
14682 #  if defined( VULKAN_HPP_USE_REFLECT )
14683       return this->reflect() == rhs.reflect();
14684 #  else
14685       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( commandPool == rhs.commandPool ) && ( level == rhs.level ) &&
14686              ( commandBufferCount == rhs.commandBufferCount );
14687 #  endif
14688     }
14689 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14690     bool operator!=( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14691     {
14692       return !operator==( rhs );
14693     }
14694 #endif
14695 
14696   public:
14697     VULKAN_HPP_NAMESPACE::StructureType      sType              = StructureType::eCommandBufferAllocateInfo;
14698     const void *                             pNext              = {};
14699     VULKAN_HPP_NAMESPACE::CommandPool        commandPool        = {};
14700     VULKAN_HPP_NAMESPACE::CommandBufferLevel level              = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary;
14701     uint32_t                                 commandBufferCount = {};
14702   };
14703 
14704   template <>
14705   struct CppType<StructureType, StructureType::eCommandBufferAllocateInfo>
14706   {
14707     using Type = CommandBufferAllocateInfo;
14708   };
14709 
14710   struct CommandBufferInheritanceInfo
14711   {
14712     using NativeType = VkCommandBufferInheritanceInfo;
14713 
14714     static const bool                                  allowDuplicate = false;
14715     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceInfo;
14716 
14717 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14718     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo( VULKAN_HPP_NAMESPACE::RenderPass                  renderPass_           = {},
14719                                                        uint32_t                                          subpass_              = {},
14720                                                        VULKAN_HPP_NAMESPACE::Framebuffer                 framebuffer_          = {},
14721                                                        VULKAN_HPP_NAMESPACE::Bool32                      occlusionQueryEnable_ = {},
14722                                                        VULKAN_HPP_NAMESPACE::QueryControlFlags           queryFlags_           = {},
14723                                                        VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_   = {},
14724                                                        const void *                                      pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
14725       : pNext{ pNext_ }
14726       , renderPass{ renderPass_ }
14727       , subpass{ subpass_ }
14728       , framebuffer{ framebuffer_ }
14729       , occlusionQueryEnable{ occlusionQueryEnable_ }
14730       , queryFlags{ queryFlags_ }
14731       , pipelineStatistics{ pipelineStatistics_ }
14732     {
14733     }
14734 
14735     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14736 
CommandBufferInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14737     CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14738       : CommandBufferInheritanceInfo( *reinterpret_cast<CommandBufferInheritanceInfo const *>( &rhs ) )
14739     {
14740     }
14741 
14742     CommandBufferInheritanceInfo & operator=( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14743 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14744 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14745     CommandBufferInheritanceInfo & operator=( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14746     {
14747       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo const *>( &rhs );
14748       return *this;
14749     }
14750 
14751 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14752     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14753     {
14754       pNext = pNext_;
14755       return *this;
14756     }
14757 
setRenderPassVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14758     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
14759     {
14760       renderPass = renderPass_;
14761       return *this;
14762     }
14763 
setSubpassVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14764     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
14765     {
14766       subpass = subpass_;
14767       return *this;
14768     }
14769 
setFramebufferVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14770     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT
14771     {
14772       framebuffer = framebuffer_;
14773       return *this;
14774     }
14775 
setOcclusionQueryEnableVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14776     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setOcclusionQueryEnable( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable_ ) VULKAN_HPP_NOEXCEPT
14777     {
14778       occlusionQueryEnable = occlusionQueryEnable_;
14779       return *this;
14780     }
14781 
setQueryFlagsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14782     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setQueryFlags( VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags_ ) VULKAN_HPP_NOEXCEPT
14783     {
14784       queryFlags = queryFlags_;
14785       return *this;
14786     }
14787 
14788     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo &
setPipelineStatisticsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14789       setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT
14790     {
14791       pipelineStatistics = pipelineStatistics_;
14792       return *this;
14793     }
14794 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14795 
operator VkCommandBufferInheritanceInfo const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14796     operator VkCommandBufferInheritanceInfo const &() const VULKAN_HPP_NOEXCEPT
14797     {
14798       return *reinterpret_cast<const VkCommandBufferInheritanceInfo *>( this );
14799     }
14800 
operator VkCommandBufferInheritanceInfo&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14801     operator VkCommandBufferInheritanceInfo &() VULKAN_HPP_NOEXCEPT
14802     {
14803       return *reinterpret_cast<VkCommandBufferInheritanceInfo *>( this );
14804     }
14805 
14806 #if defined( VULKAN_HPP_USE_REFLECT )
14807 #  if 14 <= VULKAN_HPP_CPP_VERSION
14808     auto
14809 #  else
14810     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14811                const void * const &,
14812                VULKAN_HPP_NAMESPACE::RenderPass const &,
14813                uint32_t const &,
14814                VULKAN_HPP_NAMESPACE::Framebuffer const &,
14815                VULKAN_HPP_NAMESPACE::Bool32 const &,
14816                VULKAN_HPP_NAMESPACE::QueryControlFlags const &,
14817                VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags const &>
14818 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14819       reflect() const VULKAN_HPP_NOEXCEPT
14820     {
14821       return std::tie( sType, pNext, renderPass, subpass, framebuffer, occlusionQueryEnable, queryFlags, pipelineStatistics );
14822     }
14823 #endif
14824 
14825 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14826     auto operator<=>( CommandBufferInheritanceInfo const & ) const = default;
14827 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14828     bool operator==( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14829     {
14830 #  if defined( VULKAN_HPP_USE_REFLECT )
14831       return this->reflect() == rhs.reflect();
14832 #  else
14833       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && ( subpass == rhs.subpass ) &&
14834              ( framebuffer == rhs.framebuffer ) && ( occlusionQueryEnable == rhs.occlusionQueryEnable ) && ( queryFlags == rhs.queryFlags ) &&
14835              ( pipelineStatistics == rhs.pipelineStatistics );
14836 #  endif
14837     }
14838 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14839     bool operator!=( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14840     {
14841       return !operator==( rhs );
14842     }
14843 #endif
14844 
14845   public:
14846     VULKAN_HPP_NAMESPACE::StructureType               sType                = StructureType::eCommandBufferInheritanceInfo;
14847     const void *                                      pNext                = {};
14848     VULKAN_HPP_NAMESPACE::RenderPass                  renderPass           = {};
14849     uint32_t                                          subpass              = {};
14850     VULKAN_HPP_NAMESPACE::Framebuffer                 framebuffer          = {};
14851     VULKAN_HPP_NAMESPACE::Bool32                      occlusionQueryEnable = {};
14852     VULKAN_HPP_NAMESPACE::QueryControlFlags           queryFlags           = {};
14853     VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics   = {};
14854   };
14855 
14856   template <>
14857   struct CppType<StructureType, StructureType::eCommandBufferInheritanceInfo>
14858   {
14859     using Type = CommandBufferInheritanceInfo;
14860   };
14861 
14862   struct CommandBufferBeginInfo
14863   {
14864     using NativeType = VkCommandBufferBeginInfo;
14865 
14866     static const bool                                  allowDuplicate = false;
14867     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferBeginInfo;
14868 
14869 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferBeginInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14870     VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags              flags_            = {},
14871                                                  const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo_ = {},
14872                                                  const void *                                               pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
14873       : pNext{ pNext_ }
14874       , flags{ flags_ }
14875       , pInheritanceInfo{ pInheritanceInfo_ }
14876     {
14877     }
14878 
14879     VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14880 
CommandBufferBeginInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14881     CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14882       : CommandBufferBeginInfo( *reinterpret_cast<CommandBufferBeginInfo const *>( &rhs ) )
14883     {
14884     }
14885 
14886     CommandBufferBeginInfo & operator=( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14887 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14888 
operator =VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14889     CommandBufferBeginInfo & operator=( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14890     {
14891       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo const *>( &rhs );
14892       return *this;
14893     }
14894 
14895 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14896     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14897     {
14898       pNext = pNext_;
14899       return *this;
14900     }
14901 
setFlagsVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14902     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setFlags( VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags_ ) VULKAN_HPP_NOEXCEPT
14903     {
14904       flags = flags_;
14905       return *this;
14906     }
14907 
14908     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo &
setPInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14909       setPInheritanceInfo( const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo_ ) VULKAN_HPP_NOEXCEPT
14910     {
14911       pInheritanceInfo = pInheritanceInfo_;
14912       return *this;
14913     }
14914 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14915 
operator VkCommandBufferBeginInfo const&VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14916     operator VkCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT
14917     {
14918       return *reinterpret_cast<const VkCommandBufferBeginInfo *>( this );
14919     }
14920 
operator VkCommandBufferBeginInfo&VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14921     operator VkCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT
14922     {
14923       return *reinterpret_cast<VkCommandBufferBeginInfo *>( this );
14924     }
14925 
14926 #if defined( VULKAN_HPP_USE_REFLECT )
14927 #  if 14 <= VULKAN_HPP_CPP_VERSION
14928     auto
14929 #  else
14930     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14931                const void * const &,
14932                VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags const &,
14933                const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * const &>
14934 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14935       reflect() const VULKAN_HPP_NOEXCEPT
14936     {
14937       return std::tie( sType, pNext, flags, pInheritanceInfo );
14938     }
14939 #endif
14940 
14941 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14942     auto operator<=>( CommandBufferBeginInfo const & ) const = default;
14943 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14944     bool operator==( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14945     {
14946 #  if defined( VULKAN_HPP_USE_REFLECT )
14947       return this->reflect() == rhs.reflect();
14948 #  else
14949       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pInheritanceInfo == rhs.pInheritanceInfo );
14950 #  endif
14951     }
14952 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14953     bool operator!=( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14954     {
14955       return !operator==( rhs );
14956     }
14957 #endif
14958 
14959   public:
14960     VULKAN_HPP_NAMESPACE::StructureType                        sType            = StructureType::eCommandBufferBeginInfo;
14961     const void *                                               pNext            = {};
14962     VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags              flags            = {};
14963     const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo = {};
14964   };
14965 
14966   template <>
14967   struct CppType<StructureType, StructureType::eCommandBufferBeginInfo>
14968   {
14969     using Type = CommandBufferBeginInfo;
14970   };
14971 
14972   struct CommandBufferInheritanceConditionalRenderingInfoEXT
14973   {
14974     using NativeType = VkCommandBufferInheritanceConditionalRenderingInfoEXT;
14975 
14976     static const bool                                  allowDuplicate = false;
14977     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT;
14978 
14979 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceConditionalRenderingInfoEXTVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14980     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceConditionalRenderingInfoEXT( VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable_ = {},
14981                                                                               const void *                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
14982       : pNext{ pNext_ }
14983       , conditionalRenderingEnable{ conditionalRenderingEnable_ }
14984     {
14985     }
14986 
14987     VULKAN_HPP_CONSTEXPR
14988       CommandBufferInheritanceConditionalRenderingInfoEXT( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14989 
CommandBufferInheritanceConditionalRenderingInfoEXTVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14990     CommandBufferInheritanceConditionalRenderingInfoEXT( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14991       : CommandBufferInheritanceConditionalRenderingInfoEXT( *reinterpret_cast<CommandBufferInheritanceConditionalRenderingInfoEXT const *>( &rhs ) )
14992     {
14993     }
14994 
14995     CommandBufferInheritanceConditionalRenderingInfoEXT &
14996       operator=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14997 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14998 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14999     CommandBufferInheritanceConditionalRenderingInfoEXT & operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
15000     {
15001       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT const *>( &rhs );
15002       return *this;
15003     }
15004 
15005 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT15006     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15007     {
15008       pNext = pNext_;
15009       return *this;
15010     }
15011 
15012     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT &
setConditionalRenderingEnableVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT15013       setConditionalRenderingEnable( VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable_ ) VULKAN_HPP_NOEXCEPT
15014     {
15015       conditionalRenderingEnable = conditionalRenderingEnable_;
15016       return *this;
15017     }
15018 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15019 
operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT15020     operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const &() const VULKAN_HPP_NOEXCEPT
15021     {
15022       return *reinterpret_cast<const VkCommandBufferInheritanceConditionalRenderingInfoEXT *>( this );
15023     }
15024 
operator VkCommandBufferInheritanceConditionalRenderingInfoEXT&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT15025     operator VkCommandBufferInheritanceConditionalRenderingInfoEXT &() VULKAN_HPP_NOEXCEPT
15026     {
15027       return *reinterpret_cast<VkCommandBufferInheritanceConditionalRenderingInfoEXT *>( this );
15028     }
15029 
15030 #if defined( VULKAN_HPP_USE_REFLECT )
15031 #  if 14 <= VULKAN_HPP_CPP_VERSION
15032     auto
15033 #  else
15034     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
15035 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT15036       reflect() const VULKAN_HPP_NOEXCEPT
15037     {
15038       return std::tie( sType, pNext, conditionalRenderingEnable );
15039     }
15040 #endif
15041 
15042 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15043     auto operator<=>( CommandBufferInheritanceConditionalRenderingInfoEXT const & ) const = default;
15044 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT15045     bool operator==( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
15046     {
15047 #  if defined( VULKAN_HPP_USE_REFLECT )
15048       return this->reflect() == rhs.reflect();
15049 #  else
15050       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conditionalRenderingEnable == rhs.conditionalRenderingEnable );
15051 #  endif
15052     }
15053 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT15054     bool operator!=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
15055     {
15056       return !operator==( rhs );
15057     }
15058 #endif
15059 
15060   public:
15061     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT;
15062     const void *                        pNext                      = {};
15063     VULKAN_HPP_NAMESPACE::Bool32        conditionalRenderingEnable = {};
15064   };
15065 
15066   template <>
15067   struct CppType<StructureType, StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT>
15068   {
15069     using Type = CommandBufferInheritanceConditionalRenderingInfoEXT;
15070   };
15071 
15072   struct CommandBufferInheritanceRenderPassTransformInfoQCOM
15073   {
15074     using NativeType = VkCommandBufferInheritanceRenderPassTransformInfoQCOM;
15075 
15076     static const bool                                  allowDuplicate = false;
15077     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM;
15078 
15079 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceRenderPassTransformInfoQCOMVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15080     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderPassTransformInfoQCOM(
15081       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_  = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
15082       VULKAN_HPP_NAMESPACE::Rect2D                      renderArea_ = {},
15083       void *                                            pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
15084       : pNext{ pNext_ }
15085       , transform{ transform_ }
15086       , renderArea{ renderArea_ }
15087     {
15088     }
15089 
15090     VULKAN_HPP_CONSTEXPR
15091       CommandBufferInheritanceRenderPassTransformInfoQCOM( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15092 
CommandBufferInheritanceRenderPassTransformInfoQCOMVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15093     CommandBufferInheritanceRenderPassTransformInfoQCOM( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
15094       : CommandBufferInheritanceRenderPassTransformInfoQCOM( *reinterpret_cast<CommandBufferInheritanceRenderPassTransformInfoQCOM const *>( &rhs ) )
15095     {
15096     }
15097 
15098     CommandBufferInheritanceRenderPassTransformInfoQCOM &
15099       operator=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15100 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15101 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15102     CommandBufferInheritanceRenderPassTransformInfoQCOM & operator=( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
15103     {
15104       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM const *>( &rhs );
15105       return *this;
15106     }
15107 
15108 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15109     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
15110     {
15111       pNext = pNext_;
15112       return *this;
15113     }
15114 
15115     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM &
setTransformVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15116       setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
15117     {
15118       transform = transform_;
15119       return *this;
15120     }
15121 
15122     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM &
setRenderAreaVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15123       setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
15124     {
15125       renderArea = renderArea_;
15126       return *this;
15127     }
15128 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15129 
operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15130     operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
15131     {
15132       return *reinterpret_cast<const VkCommandBufferInheritanceRenderPassTransformInfoQCOM *>( this );
15133     }
15134 
operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15135     operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM &() VULKAN_HPP_NOEXCEPT
15136     {
15137       return *reinterpret_cast<VkCommandBufferInheritanceRenderPassTransformInfoQCOM *>( this );
15138     }
15139 
15140 #if defined( VULKAN_HPP_USE_REFLECT )
15141 #  if 14 <= VULKAN_HPP_CPP_VERSION
15142     auto
15143 #  else
15144     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15145                void * const &,
15146                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
15147                VULKAN_HPP_NAMESPACE::Rect2D const &>
15148 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15149       reflect() const VULKAN_HPP_NOEXCEPT
15150     {
15151       return std::tie( sType, pNext, transform, renderArea );
15152     }
15153 #endif
15154 
15155 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15156     auto operator<=>( CommandBufferInheritanceRenderPassTransformInfoQCOM const & ) const = default;
15157 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15158     bool operator==( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
15159     {
15160 #  if defined( VULKAN_HPP_USE_REFLECT )
15161       return this->reflect() == rhs.reflect();
15162 #  else
15163       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform ) && ( renderArea == rhs.renderArea );
15164 #  endif
15165     }
15166 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM15167     bool operator!=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
15168     {
15169       return !operator==( rhs );
15170     }
15171 #endif
15172 
15173   public:
15174     VULKAN_HPP_NAMESPACE::StructureType               sType      = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM;
15175     void *                                            pNext      = {};
15176     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform  = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
15177     VULKAN_HPP_NAMESPACE::Rect2D                      renderArea = {};
15178   };
15179 
15180   template <>
15181   struct CppType<StructureType, StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM>
15182   {
15183     using Type = CommandBufferInheritanceRenderPassTransformInfoQCOM;
15184   };
15185 
15186   struct CommandBufferInheritanceRenderingInfo
15187   {
15188     using NativeType = VkCommandBufferInheritanceRenderingInfo;
15189 
15190     static const bool                                  allowDuplicate = false;
15191     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceRenderingInfo;
15192 
15193 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
15194     VULKAN_HPP_CONSTEXPR
CommandBufferInheritanceRenderingInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15195       CommandBufferInheritanceRenderingInfo( VULKAN_HPP_NAMESPACE::RenderingFlags      flags_                   = {},
15196                                              uint32_t                                  viewMask_                = {},
15197                                              uint32_t                                  colorAttachmentCount_    = {},
15198                                              const VULKAN_HPP_NAMESPACE::Format *      pColorAttachmentFormats_ = {},
15199                                              VULKAN_HPP_NAMESPACE::Format              depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
15200                                              VULKAN_HPP_NAMESPACE::Format              stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
15201                                              VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_    = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
15202                                              const void *                              pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
15203       : pNext{ pNext_ }
15204       , flags{ flags_ }
15205       , viewMask{ viewMask_ }
15206       , colorAttachmentCount{ colorAttachmentCount_ }
15207       , pColorAttachmentFormats{ pColorAttachmentFormats_ }
15208       , depthAttachmentFormat{ depthAttachmentFormat_ }
15209       , stencilAttachmentFormat{ stencilAttachmentFormat_ }
15210       , rasterizationSamples{ rasterizationSamples_ }
15211     {
15212     }
15213 
15214     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderingInfo( CommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15215 
CommandBufferInheritanceRenderingInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15216     CommandBufferInheritanceRenderingInfo( VkCommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15217       : CommandBufferInheritanceRenderingInfo( *reinterpret_cast<CommandBufferInheritanceRenderingInfo const *>( &rhs ) )
15218     {
15219     }
15220 
15221 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CommandBufferInheritanceRenderingInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15222     CommandBufferInheritanceRenderingInfo( VULKAN_HPP_NAMESPACE::RenderingFlags                                                      flags_,
15223                                            uint32_t                                                                                  viewMask_,
15224                                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_,
15225                                            VULKAN_HPP_NAMESPACE::Format              depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
15226                                            VULKAN_HPP_NAMESPACE::Format              stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
15227                                            VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_    = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
15228                                            const void *                              pNext_                   = nullptr )
15229       : pNext( pNext_ )
15230       , flags( flags_ )
15231       , viewMask( viewMask_ )
15232       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentFormats_.size() ) )
15233       , pColorAttachmentFormats( colorAttachmentFormats_.data() )
15234       , depthAttachmentFormat( depthAttachmentFormat_ )
15235       , stencilAttachmentFormat( stencilAttachmentFormat_ )
15236       , rasterizationSamples( rasterizationSamples_ )
15237     {
15238     }
15239 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15240 
15241     CommandBufferInheritanceRenderingInfo & operator=( CommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15242 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15243 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15244     CommandBufferInheritanceRenderingInfo & operator=( VkCommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15245     {
15246       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo const *>( &rhs );
15247       return *this;
15248     }
15249 
15250 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15251     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15252     {
15253       pNext = pNext_;
15254       return *this;
15255     }
15256 
setFlagsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15257     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderingFlags flags_ ) VULKAN_HPP_NOEXCEPT
15258     {
15259       flags = flags_;
15260       return *this;
15261     }
15262 
setViewMaskVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15263     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
15264     {
15265       viewMask = viewMask_;
15266       return *this;
15267     }
15268 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15269     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
15270     {
15271       colorAttachmentCount = colorAttachmentCount_;
15272       return *this;
15273     }
15274 
15275     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo &
setPColorAttachmentFormatsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15276       setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
15277     {
15278       pColorAttachmentFormats = pColorAttachmentFormats_;
15279       return *this;
15280     }
15281 
15282 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentFormatsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15283     CommandBufferInheritanceRenderingInfo & setColorAttachmentFormats(
15284       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
15285     {
15286       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentFormats_.size() );
15287       pColorAttachmentFormats = colorAttachmentFormats_.data();
15288       return *this;
15289     }
15290 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15291 
15292     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo &
setDepthAttachmentFormatVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15293       setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
15294     {
15295       depthAttachmentFormat = depthAttachmentFormat_;
15296       return *this;
15297     }
15298 
15299     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo &
setStencilAttachmentFormatVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15300       setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
15301     {
15302       stencilAttachmentFormat = stencilAttachmentFormat_;
15303       return *this;
15304     }
15305 
15306     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo &
setRasterizationSamplesVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15307       setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
15308     {
15309       rasterizationSamples = rasterizationSamples_;
15310       return *this;
15311     }
15312 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15313 
operator VkCommandBufferInheritanceRenderingInfo const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15314     operator VkCommandBufferInheritanceRenderingInfo const &() const VULKAN_HPP_NOEXCEPT
15315     {
15316       return *reinterpret_cast<const VkCommandBufferInheritanceRenderingInfo *>( this );
15317     }
15318 
operator VkCommandBufferInheritanceRenderingInfo&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15319     operator VkCommandBufferInheritanceRenderingInfo &() VULKAN_HPP_NOEXCEPT
15320     {
15321       return *reinterpret_cast<VkCommandBufferInheritanceRenderingInfo *>( this );
15322     }
15323 
15324 #if defined( VULKAN_HPP_USE_REFLECT )
15325 #  if 14 <= VULKAN_HPP_CPP_VERSION
15326     auto
15327 #  else
15328     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15329                const void * const &,
15330                VULKAN_HPP_NAMESPACE::RenderingFlags const &,
15331                uint32_t const &,
15332                uint32_t const &,
15333                const VULKAN_HPP_NAMESPACE::Format * const &,
15334                VULKAN_HPP_NAMESPACE::Format const &,
15335                VULKAN_HPP_NAMESPACE::Format const &,
15336                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
15337 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15338       reflect() const VULKAN_HPP_NOEXCEPT
15339     {
15340       return std::tie(
15341         sType, pNext, flags, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat, rasterizationSamples );
15342     }
15343 #endif
15344 
15345 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15346     auto operator<=>( CommandBufferInheritanceRenderingInfo const & ) const = default;
15347 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15348     bool operator==( CommandBufferInheritanceRenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15349     {
15350 #  if defined( VULKAN_HPP_USE_REFLECT )
15351       return this->reflect() == rhs.reflect();
15352 #  else
15353       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( viewMask == rhs.viewMask ) &&
15354              ( colorAttachmentCount == rhs.colorAttachmentCount ) && ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) &&
15355              ( depthAttachmentFormat == rhs.depthAttachmentFormat ) && ( stencilAttachmentFormat == rhs.stencilAttachmentFormat ) &&
15356              ( rasterizationSamples == rhs.rasterizationSamples );
15357 #  endif
15358     }
15359 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15360     bool operator!=( CommandBufferInheritanceRenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15361     {
15362       return !operator==( rhs );
15363     }
15364 #endif
15365 
15366   public:
15367     VULKAN_HPP_NAMESPACE::StructureType       sType                   = StructureType::eCommandBufferInheritanceRenderingInfo;
15368     const void *                              pNext                   = {};
15369     VULKAN_HPP_NAMESPACE::RenderingFlags      flags                   = {};
15370     uint32_t                                  viewMask                = {};
15371     uint32_t                                  colorAttachmentCount    = {};
15372     const VULKAN_HPP_NAMESPACE::Format *      pColorAttachmentFormats = {};
15373     VULKAN_HPP_NAMESPACE::Format              depthAttachmentFormat   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
15374     VULKAN_HPP_NAMESPACE::Format              stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
15375     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples    = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
15376   };
15377 
15378   template <>
15379   struct CppType<StructureType, StructureType::eCommandBufferInheritanceRenderingInfo>
15380   {
15381     using Type = CommandBufferInheritanceRenderingInfo;
15382   };
15383 
15384   using CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo;
15385 
15386   struct Viewport
15387   {
15388     using NativeType = VkViewport;
15389 
15390 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
15391     VULKAN_HPP_CONSTEXPR
ViewportVULKAN_HPP_NAMESPACE::Viewport15392       Viewport( float x_ = {}, float y_ = {}, float width_ = {}, float height_ = {}, float minDepth_ = {}, float maxDepth_ = {} ) VULKAN_HPP_NOEXCEPT
15393       : x{ x_ }
15394       , y{ y_ }
15395       , width{ width_ }
15396       , height{ height_ }
15397       , minDepth{ minDepth_ }
15398       , maxDepth{ maxDepth_ }
15399     {
15400     }
15401 
15402     VULKAN_HPP_CONSTEXPR Viewport( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15403 
ViewportVULKAN_HPP_NAMESPACE::Viewport15404     Viewport( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT : Viewport( *reinterpret_cast<Viewport const *>( &rhs ) ) {}
15405 
15406     Viewport & operator=( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15407 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15408 
operator =VULKAN_HPP_NAMESPACE::Viewport15409     Viewport & operator=( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT
15410     {
15411       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Viewport const *>( &rhs );
15412       return *this;
15413     }
15414 
15415 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Viewport15416     VULKAN_HPP_CONSTEXPR_14 Viewport & setX( float x_ ) VULKAN_HPP_NOEXCEPT
15417     {
15418       x = x_;
15419       return *this;
15420     }
15421 
setYVULKAN_HPP_NAMESPACE::Viewport15422     VULKAN_HPP_CONSTEXPR_14 Viewport & setY( float y_ ) VULKAN_HPP_NOEXCEPT
15423     {
15424       y = y_;
15425       return *this;
15426     }
15427 
setWidthVULKAN_HPP_NAMESPACE::Viewport15428     VULKAN_HPP_CONSTEXPR_14 Viewport & setWidth( float width_ ) VULKAN_HPP_NOEXCEPT
15429     {
15430       width = width_;
15431       return *this;
15432     }
15433 
setHeightVULKAN_HPP_NAMESPACE::Viewport15434     VULKAN_HPP_CONSTEXPR_14 Viewport & setHeight( float height_ ) VULKAN_HPP_NOEXCEPT
15435     {
15436       height = height_;
15437       return *this;
15438     }
15439 
setMinDepthVULKAN_HPP_NAMESPACE::Viewport15440     VULKAN_HPP_CONSTEXPR_14 Viewport & setMinDepth( float minDepth_ ) VULKAN_HPP_NOEXCEPT
15441     {
15442       minDepth = minDepth_;
15443       return *this;
15444     }
15445 
setMaxDepthVULKAN_HPP_NAMESPACE::Viewport15446     VULKAN_HPP_CONSTEXPR_14 Viewport & setMaxDepth( float maxDepth_ ) VULKAN_HPP_NOEXCEPT
15447     {
15448       maxDepth = maxDepth_;
15449       return *this;
15450     }
15451 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15452 
operator VkViewport const&VULKAN_HPP_NAMESPACE::Viewport15453     operator VkViewport const &() const VULKAN_HPP_NOEXCEPT
15454     {
15455       return *reinterpret_cast<const VkViewport *>( this );
15456     }
15457 
operator VkViewport&VULKAN_HPP_NAMESPACE::Viewport15458     operator VkViewport &() VULKAN_HPP_NOEXCEPT
15459     {
15460       return *reinterpret_cast<VkViewport *>( this );
15461     }
15462 
15463 #if defined( VULKAN_HPP_USE_REFLECT )
15464 #  if 14 <= VULKAN_HPP_CPP_VERSION
15465     auto
15466 #  else
15467     std::tuple<float const &, float const &, float const &, float const &, float const &, float const &>
15468 #  endif
reflectVULKAN_HPP_NAMESPACE::Viewport15469       reflect() const VULKAN_HPP_NOEXCEPT
15470     {
15471       return std::tie( x, y, width, height, minDepth, maxDepth );
15472     }
15473 #endif
15474 
15475 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15476     auto operator<=>( Viewport const & ) const = default;
15477 #else
operator ==VULKAN_HPP_NAMESPACE::Viewport15478     bool operator==( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT
15479     {
15480 #  if defined( VULKAN_HPP_USE_REFLECT )
15481       return this->reflect() == rhs.reflect();
15482 #  else
15483       return ( x == rhs.x ) && ( y == rhs.y ) && ( width == rhs.width ) && ( height == rhs.height ) && ( minDepth == rhs.minDepth ) &&
15484              ( maxDepth == rhs.maxDepth );
15485 #  endif
15486     }
15487 
operator !=VULKAN_HPP_NAMESPACE::Viewport15488     bool operator!=( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT
15489     {
15490       return !operator==( rhs );
15491     }
15492 #endif
15493 
15494   public:
15495     float x        = {};
15496     float y        = {};
15497     float width    = {};
15498     float height   = {};
15499     float minDepth = {};
15500     float maxDepth = {};
15501   };
15502 
15503   struct CommandBufferInheritanceViewportScissorInfoNV
15504   {
15505     using NativeType = VkCommandBufferInheritanceViewportScissorInfoNV;
15506 
15507     static const bool                                  allowDuplicate = false;
15508     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceViewportScissorInfoNV;
15509 
15510 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceViewportScissorInfoNVVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15511     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceViewportScissorInfoNV( VULKAN_HPP_NAMESPACE::Bool32           viewportScissor2D_  = {},
15512                                                                         uint32_t                               viewportDepthCount_ = {},
15513                                                                         const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths_    = {},
15514                                                                         const void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
15515       : pNext{ pNext_ }
15516       , viewportScissor2D{ viewportScissor2D_ }
15517       , viewportDepthCount{ viewportDepthCount_ }
15518       , pViewportDepths{ pViewportDepths_ }
15519     {
15520     }
15521 
15522     VULKAN_HPP_CONSTEXPR
15523       CommandBufferInheritanceViewportScissorInfoNV( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15524 
CommandBufferInheritanceViewportScissorInfoNVVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15525     CommandBufferInheritanceViewportScissorInfoNV( VkCommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
15526       : CommandBufferInheritanceViewportScissorInfoNV( *reinterpret_cast<CommandBufferInheritanceViewportScissorInfoNV const *>( &rhs ) )
15527     {
15528     }
15529 
15530     CommandBufferInheritanceViewportScissorInfoNV & operator=( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15531 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15532 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15533     CommandBufferInheritanceViewportScissorInfoNV & operator=( VkCommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
15534     {
15535       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV const *>( &rhs );
15536       return *this;
15537     }
15538 
15539 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15540     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15541     {
15542       pNext = pNext_;
15543       return *this;
15544     }
15545 
15546     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV &
setViewportScissor2DVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15547       setViewportScissor2D( VULKAN_HPP_NAMESPACE::Bool32 viewportScissor2D_ ) VULKAN_HPP_NOEXCEPT
15548     {
15549       viewportScissor2D = viewportScissor2D_;
15550       return *this;
15551     }
15552 
setViewportDepthCountVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15553     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & setViewportDepthCount( uint32_t viewportDepthCount_ ) VULKAN_HPP_NOEXCEPT
15554     {
15555       viewportDepthCount = viewportDepthCount_;
15556       return *this;
15557     }
15558 
15559     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV &
setPViewportDepthsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15560       setPViewportDepths( const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths_ ) VULKAN_HPP_NOEXCEPT
15561     {
15562       pViewportDepths = pViewportDepths_;
15563       return *this;
15564     }
15565 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15566 
operator VkCommandBufferInheritanceViewportScissorInfoNV const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15567     operator VkCommandBufferInheritanceViewportScissorInfoNV const &() const VULKAN_HPP_NOEXCEPT
15568     {
15569       return *reinterpret_cast<const VkCommandBufferInheritanceViewportScissorInfoNV *>( this );
15570     }
15571 
operator VkCommandBufferInheritanceViewportScissorInfoNV&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15572     operator VkCommandBufferInheritanceViewportScissorInfoNV &() VULKAN_HPP_NOEXCEPT
15573     {
15574       return *reinterpret_cast<VkCommandBufferInheritanceViewportScissorInfoNV *>( this );
15575     }
15576 
15577 #if defined( VULKAN_HPP_USE_REFLECT )
15578 #  if 14 <= VULKAN_HPP_CPP_VERSION
15579     auto
15580 #  else
15581     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15582                const void * const &,
15583                VULKAN_HPP_NAMESPACE::Bool32 const &,
15584                uint32_t const &,
15585                const VULKAN_HPP_NAMESPACE::Viewport * const &>
15586 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15587       reflect() const VULKAN_HPP_NOEXCEPT
15588     {
15589       return std::tie( sType, pNext, viewportScissor2D, viewportDepthCount, pViewportDepths );
15590     }
15591 #endif
15592 
15593 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15594     auto operator<=>( CommandBufferInheritanceViewportScissorInfoNV const & ) const = default;
15595 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15596     bool operator==( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
15597     {
15598 #  if defined( VULKAN_HPP_USE_REFLECT )
15599       return this->reflect() == rhs.reflect();
15600 #  else
15601       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewportScissor2D == rhs.viewportScissor2D ) &&
15602              ( viewportDepthCount == rhs.viewportDepthCount ) && ( pViewportDepths == rhs.pViewportDepths );
15603 #  endif
15604     }
15605 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15606     bool operator!=( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
15607     {
15608       return !operator==( rhs );
15609     }
15610 #endif
15611 
15612   public:
15613     VULKAN_HPP_NAMESPACE::StructureType    sType              = StructureType::eCommandBufferInheritanceViewportScissorInfoNV;
15614     const void *                           pNext              = {};
15615     VULKAN_HPP_NAMESPACE::Bool32           viewportScissor2D  = {};
15616     uint32_t                               viewportDepthCount = {};
15617     const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths    = {};
15618   };
15619 
15620   template <>
15621   struct CppType<StructureType, StructureType::eCommandBufferInheritanceViewportScissorInfoNV>
15622   {
15623     using Type = CommandBufferInheritanceViewportScissorInfoNV;
15624   };
15625 
15626   struct CommandBufferSubmitInfo
15627   {
15628     using NativeType = VkCommandBufferSubmitInfo;
15629 
15630     static const bool                                  allowDuplicate = false;
15631     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferSubmitInfo;
15632 
15633 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferSubmitInfoVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15634     VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfo( VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ = {},
15635                                                   uint32_t                            deviceMask_    = {},
15636                                                   const void *                        pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
15637       : pNext{ pNext_ }
15638       , commandBuffer{ commandBuffer_ }
15639       , deviceMask{ deviceMask_ }
15640     {
15641     }
15642 
15643     VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfo( CommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15644 
CommandBufferSubmitInfoVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15645     CommandBufferSubmitInfo( VkCommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15646       : CommandBufferSubmitInfo( *reinterpret_cast<CommandBufferSubmitInfo const *>( &rhs ) )
15647     {
15648     }
15649 
15650     CommandBufferSubmitInfo & operator=( CommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15651 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15652 
operator =VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15653     CommandBufferSubmitInfo & operator=( VkCommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15654     {
15655       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo const *>( &rhs );
15656       return *this;
15657     }
15658 
15659 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15660     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15661     {
15662       pNext = pNext_;
15663       return *this;
15664     }
15665 
setCommandBufferVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15666     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setCommandBuffer( VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ ) VULKAN_HPP_NOEXCEPT
15667     {
15668       commandBuffer = commandBuffer_;
15669       return *this;
15670     }
15671 
setDeviceMaskVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15672     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
15673     {
15674       deviceMask = deviceMask_;
15675       return *this;
15676     }
15677 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15678 
operator VkCommandBufferSubmitInfo const&VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15679     operator VkCommandBufferSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
15680     {
15681       return *reinterpret_cast<const VkCommandBufferSubmitInfo *>( this );
15682     }
15683 
operator VkCommandBufferSubmitInfo&VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15684     operator VkCommandBufferSubmitInfo &() VULKAN_HPP_NOEXCEPT
15685     {
15686       return *reinterpret_cast<VkCommandBufferSubmitInfo *>( this );
15687     }
15688 
15689 #if defined( VULKAN_HPP_USE_REFLECT )
15690 #  if 14 <= VULKAN_HPP_CPP_VERSION
15691     auto
15692 #  else
15693     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CommandBuffer const &, uint32_t const &>
15694 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15695       reflect() const VULKAN_HPP_NOEXCEPT
15696     {
15697       return std::tie( sType, pNext, commandBuffer, deviceMask );
15698     }
15699 #endif
15700 
15701 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15702     auto operator<=>( CommandBufferSubmitInfo const & ) const = default;
15703 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15704     bool operator==( CommandBufferSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15705     {
15706 #  if defined( VULKAN_HPP_USE_REFLECT )
15707       return this->reflect() == rhs.reflect();
15708 #  else
15709       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( commandBuffer == rhs.commandBuffer ) && ( deviceMask == rhs.deviceMask );
15710 #  endif
15711     }
15712 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15713     bool operator!=( CommandBufferSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15714     {
15715       return !operator==( rhs );
15716     }
15717 #endif
15718 
15719   public:
15720     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eCommandBufferSubmitInfo;
15721     const void *                        pNext         = {};
15722     VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer = {};
15723     uint32_t                            deviceMask    = {};
15724   };
15725 
15726   template <>
15727   struct CppType<StructureType, StructureType::eCommandBufferSubmitInfo>
15728   {
15729     using Type = CommandBufferSubmitInfo;
15730   };
15731 
15732   using CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo;
15733 
15734   struct CommandPoolCreateInfo
15735   {
15736     using NativeType = VkCommandPoolCreateInfo;
15737 
15738     static const bool                                  allowDuplicate = false;
15739     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandPoolCreateInfo;
15740 
15741 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandPoolCreateInfoVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15742     VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_            = {},
15743                                                 uint32_t                                     queueFamilyIndex_ = {},
15744                                                 const void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
15745       : pNext{ pNext_ }
15746       , flags{ flags_ }
15747       , queueFamilyIndex{ queueFamilyIndex_ }
15748     {
15749     }
15750 
15751     VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15752 
CommandPoolCreateInfoVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15753     CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15754       : CommandPoolCreateInfo( *reinterpret_cast<CommandPoolCreateInfo const *>( &rhs ) )
15755     {
15756     }
15757 
15758     CommandPoolCreateInfo & operator=( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15759 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15760 
operator =VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15761     CommandPoolCreateInfo & operator=( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15762     {
15763       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const *>( &rhs );
15764       return *this;
15765     }
15766 
15767 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15768     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15769     {
15770       pNext = pNext_;
15771       return *this;
15772     }
15773 
setFlagsVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15774     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
15775     {
15776       flags = flags_;
15777       return *this;
15778     }
15779 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15780     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
15781     {
15782       queueFamilyIndex = queueFamilyIndex_;
15783       return *this;
15784     }
15785 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15786 
operator VkCommandPoolCreateInfo const&VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15787     operator VkCommandPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
15788     {
15789       return *reinterpret_cast<const VkCommandPoolCreateInfo *>( this );
15790     }
15791 
operator VkCommandPoolCreateInfo&VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15792     operator VkCommandPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
15793     {
15794       return *reinterpret_cast<VkCommandPoolCreateInfo *>( this );
15795     }
15796 
15797 #if defined( VULKAN_HPP_USE_REFLECT )
15798 #  if 14 <= VULKAN_HPP_CPP_VERSION
15799     auto
15800 #  else
15801     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags const &, uint32_t const &>
15802 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15803       reflect() const VULKAN_HPP_NOEXCEPT
15804     {
15805       return std::tie( sType, pNext, flags, queueFamilyIndex );
15806     }
15807 #endif
15808 
15809 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15810     auto operator<=>( CommandPoolCreateInfo const & ) const = default;
15811 #else
operator ==VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15812     bool operator==( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15813     {
15814 #  if defined( VULKAN_HPP_USE_REFLECT )
15815       return this->reflect() == rhs.reflect();
15816 #  else
15817       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueFamilyIndex == rhs.queueFamilyIndex );
15818 #  endif
15819     }
15820 
operator !=VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15821     bool operator!=( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15822     {
15823       return !operator==( rhs );
15824     }
15825 #endif
15826 
15827   public:
15828     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eCommandPoolCreateInfo;
15829     const void *                                 pNext            = {};
15830     VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags            = {};
15831     uint32_t                                     queueFamilyIndex = {};
15832   };
15833 
15834   template <>
15835   struct CppType<StructureType, StructureType::eCommandPoolCreateInfo>
15836   {
15837     using Type = CommandPoolCreateInfo;
15838   };
15839 
15840   struct SpecializationMapEntry
15841   {
15842     using NativeType = VkSpecializationMapEntry;
15843 
15844 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SpecializationMapEntryVULKAN_HPP_NAMESPACE::SpecializationMapEntry15845     VULKAN_HPP_CONSTEXPR SpecializationMapEntry( uint32_t constantID_ = {}, uint32_t offset_ = {}, size_t size_ = {} ) VULKAN_HPP_NOEXCEPT
15846       : constantID{ constantID_ }
15847       , offset{ offset_ }
15848       , size{ size_ }
15849     {
15850     }
15851 
15852     VULKAN_HPP_CONSTEXPR SpecializationMapEntry( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15853 
SpecializationMapEntryVULKAN_HPP_NAMESPACE::SpecializationMapEntry15854     SpecializationMapEntry( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
15855       : SpecializationMapEntry( *reinterpret_cast<SpecializationMapEntry const *>( &rhs ) )
15856     {
15857     }
15858 
15859     SpecializationMapEntry & operator=( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15860 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15861 
operator =VULKAN_HPP_NAMESPACE::SpecializationMapEntry15862     SpecializationMapEntry & operator=( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
15863     {
15864       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SpecializationMapEntry const *>( &rhs );
15865       return *this;
15866     }
15867 
15868 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setConstantIDVULKAN_HPP_NAMESPACE::SpecializationMapEntry15869     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setConstantID( uint32_t constantID_ ) VULKAN_HPP_NOEXCEPT
15870     {
15871       constantID = constantID_;
15872       return *this;
15873     }
15874 
setOffsetVULKAN_HPP_NAMESPACE::SpecializationMapEntry15875     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
15876     {
15877       offset = offset_;
15878       return *this;
15879     }
15880 
setSizeVULKAN_HPP_NAMESPACE::SpecializationMapEntry15881     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setSize( size_t size_ ) VULKAN_HPP_NOEXCEPT
15882     {
15883       size = size_;
15884       return *this;
15885     }
15886 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15887 
operator VkSpecializationMapEntry const&VULKAN_HPP_NAMESPACE::SpecializationMapEntry15888     operator VkSpecializationMapEntry const &() const VULKAN_HPP_NOEXCEPT
15889     {
15890       return *reinterpret_cast<const VkSpecializationMapEntry *>( this );
15891     }
15892 
operator VkSpecializationMapEntry&VULKAN_HPP_NAMESPACE::SpecializationMapEntry15893     operator VkSpecializationMapEntry &() VULKAN_HPP_NOEXCEPT
15894     {
15895       return *reinterpret_cast<VkSpecializationMapEntry *>( this );
15896     }
15897 
15898 #if defined( VULKAN_HPP_USE_REFLECT )
15899 #  if 14 <= VULKAN_HPP_CPP_VERSION
15900     auto
15901 #  else
15902     std::tuple<uint32_t const &, uint32_t const &, size_t const &>
15903 #  endif
reflectVULKAN_HPP_NAMESPACE::SpecializationMapEntry15904       reflect() const VULKAN_HPP_NOEXCEPT
15905     {
15906       return std::tie( constantID, offset, size );
15907     }
15908 #endif
15909 
15910 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15911     auto operator<=>( SpecializationMapEntry const & ) const = default;
15912 #else
operator ==VULKAN_HPP_NAMESPACE::SpecializationMapEntry15913     bool operator==( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
15914     {
15915 #  if defined( VULKAN_HPP_USE_REFLECT )
15916       return this->reflect() == rhs.reflect();
15917 #  else
15918       return ( constantID == rhs.constantID ) && ( offset == rhs.offset ) && ( size == rhs.size );
15919 #  endif
15920     }
15921 
operator !=VULKAN_HPP_NAMESPACE::SpecializationMapEntry15922     bool operator!=( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
15923     {
15924       return !operator==( rhs );
15925     }
15926 #endif
15927 
15928   public:
15929     uint32_t constantID = {};
15930     uint32_t offset     = {};
15931     size_t   size       = {};
15932   };
15933 
15934   struct SpecializationInfo
15935   {
15936     using NativeType = VkSpecializationInfo;
15937 
15938 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo15939     VULKAN_HPP_CONSTEXPR SpecializationInfo( uint32_t                                             mapEntryCount_ = {},
15940                                              const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries_   = {},
15941                                              size_t                                               dataSize_      = {},
15942                                              const void *                                         pData_         = {} ) VULKAN_HPP_NOEXCEPT
15943       : mapEntryCount{ mapEntryCount_ }
15944       , pMapEntries{ pMapEntries_ }
15945       , dataSize{ dataSize_ }
15946       , pData{ pData_ }
15947     {
15948     }
15949 
15950     VULKAN_HPP_CONSTEXPR SpecializationInfo( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15951 
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo15952     SpecializationInfo( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SpecializationInfo( *reinterpret_cast<SpecializationInfo const *>( &rhs ) ) {}
15953 
15954 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
15955     template <typename T>
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo15956     SpecializationInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SpecializationMapEntry> const & mapEntries_,
15957                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const &                                            data_ = {} )
15958       : mapEntryCount( static_cast<uint32_t>( mapEntries_.size() ) )
15959       , pMapEntries( mapEntries_.data() )
15960       , dataSize( data_.size() * sizeof( T ) )
15961       , pData( data_.data() )
15962     {
15963     }
15964 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15965 
15966     SpecializationInfo & operator=( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15967 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15968 
operator =VULKAN_HPP_NAMESPACE::SpecializationInfo15969     SpecializationInfo & operator=( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15970     {
15971       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SpecializationInfo const *>( &rhs );
15972       return *this;
15973     }
15974 
15975 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMapEntryCountVULKAN_HPP_NAMESPACE::SpecializationInfo15976     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setMapEntryCount( uint32_t mapEntryCount_ ) VULKAN_HPP_NOEXCEPT
15977     {
15978       mapEntryCount = mapEntryCount_;
15979       return *this;
15980     }
15981 
setPMapEntriesVULKAN_HPP_NAMESPACE::SpecializationInfo15982     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setPMapEntries( const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries_ ) VULKAN_HPP_NOEXCEPT
15983     {
15984       pMapEntries = pMapEntries_;
15985       return *this;
15986     }
15987 
15988 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
15989     SpecializationInfo &
setMapEntriesVULKAN_HPP_NAMESPACE::SpecializationInfo15990       setMapEntries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SpecializationMapEntry> const & mapEntries_ ) VULKAN_HPP_NOEXCEPT
15991     {
15992       mapEntryCount = static_cast<uint32_t>( mapEntries_.size() );
15993       pMapEntries   = mapEntries_.data();
15994       return *this;
15995     }
15996 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15997 
setDataSizeVULKAN_HPP_NAMESPACE::SpecializationInfo15998     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT
15999     {
16000       dataSize = dataSize_;
16001       return *this;
16002     }
16003 
setPDataVULKAN_HPP_NAMESPACE::SpecializationInfo16004     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
16005     {
16006       pData = pData_;
16007       return *this;
16008     }
16009 
16010 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
16011     template <typename T>
setDataVULKAN_HPP_NAMESPACE::SpecializationInfo16012     SpecializationInfo & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
16013     {
16014       dataSize = data_.size() * sizeof( T );
16015       pData    = data_.data();
16016       return *this;
16017     }
16018 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16019 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16020 
operator VkSpecializationInfo const&VULKAN_HPP_NAMESPACE::SpecializationInfo16021     operator VkSpecializationInfo const &() const VULKAN_HPP_NOEXCEPT
16022     {
16023       return *reinterpret_cast<const VkSpecializationInfo *>( this );
16024     }
16025 
operator VkSpecializationInfo&VULKAN_HPP_NAMESPACE::SpecializationInfo16026     operator VkSpecializationInfo &() VULKAN_HPP_NOEXCEPT
16027     {
16028       return *reinterpret_cast<VkSpecializationInfo *>( this );
16029     }
16030 
16031 #if defined( VULKAN_HPP_USE_REFLECT )
16032 #  if 14 <= VULKAN_HPP_CPP_VERSION
16033     auto
16034 #  else
16035     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * const &, size_t const &, const void * const &>
16036 #  endif
reflectVULKAN_HPP_NAMESPACE::SpecializationInfo16037       reflect() const VULKAN_HPP_NOEXCEPT
16038     {
16039       return std::tie( mapEntryCount, pMapEntries, dataSize, pData );
16040     }
16041 #endif
16042 
16043 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16044     auto operator<=>( SpecializationInfo const & ) const = default;
16045 #else
operator ==VULKAN_HPP_NAMESPACE::SpecializationInfo16046     bool operator==( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16047     {
16048 #  if defined( VULKAN_HPP_USE_REFLECT )
16049       return this->reflect() == rhs.reflect();
16050 #  else
16051       return ( mapEntryCount == rhs.mapEntryCount ) && ( pMapEntries == rhs.pMapEntries ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
16052 #  endif
16053     }
16054 
operator !=VULKAN_HPP_NAMESPACE::SpecializationInfo16055     bool operator!=( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16056     {
16057       return !operator==( rhs );
16058     }
16059 #endif
16060 
16061   public:
16062     uint32_t                                             mapEntryCount = {};
16063     const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries   = {};
16064     size_t                                               dataSize      = {};
16065     const void *                                         pData         = {};
16066   };
16067 
16068   struct PipelineShaderStageCreateInfo
16069   {
16070     using NativeType = VkPipelineShaderStageCreateInfo;
16071 
16072     static const bool                                  allowDuplicate = false;
16073     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineShaderStageCreateInfo;
16074 
16075 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineShaderStageCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16076     VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ = {},
16077                                                         VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_  = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex,
16078                                                         VULKAN_HPP_NAMESPACE::ShaderModule        module_ = {},
16079                                                         const char *                              pName_  = {},
16080                                                         const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ = {},
16081                                                         const void *                                     pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
16082       : pNext{ pNext_ }
16083       , flags{ flags_ }
16084       , stage{ stage_ }
16085       , module{ module_ }
16086       , pName{ pName_ }
16087       , pSpecializationInfo{ pSpecializationInfo_ }
16088     {
16089     }
16090 
16091     VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16092 
PipelineShaderStageCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16093     PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16094       : PipelineShaderStageCreateInfo( *reinterpret_cast<PipelineShaderStageCreateInfo const *>( &rhs ) )
16095     {
16096     }
16097 
16098     PipelineShaderStageCreateInfo & operator=( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16099 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16100 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16101     PipelineShaderStageCreateInfo & operator=( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16102     {
16103       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const *>( &rhs );
16104       return *this;
16105     }
16106 
16107 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16108     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16109     {
16110       pNext = pNext_;
16111       return *this;
16112     }
16113 
setFlagsVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16114     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
16115     {
16116       flags = flags_;
16117       return *this;
16118     }
16119 
setStageVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16120     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setStage( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ ) VULKAN_HPP_NOEXCEPT
16121     {
16122       stage = stage_;
16123       return *this;
16124     }
16125 
setModuleVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16126     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setModule( VULKAN_HPP_NAMESPACE::ShaderModule module_ ) VULKAN_HPP_NOEXCEPT
16127     {
16128       module = module_;
16129       return *this;
16130     }
16131 
setPNameVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16132     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
16133     {
16134       pName = pName_;
16135       return *this;
16136     }
16137 
16138     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo &
setPSpecializationInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16139       setPSpecializationInfo( const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ ) VULKAN_HPP_NOEXCEPT
16140     {
16141       pSpecializationInfo = pSpecializationInfo_;
16142       return *this;
16143     }
16144 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16145 
operator VkPipelineShaderStageCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16146     operator VkPipelineShaderStageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
16147     {
16148       return *reinterpret_cast<const VkPipelineShaderStageCreateInfo *>( this );
16149     }
16150 
operator VkPipelineShaderStageCreateInfo&VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16151     operator VkPipelineShaderStageCreateInfo &() VULKAN_HPP_NOEXCEPT
16152     {
16153       return *reinterpret_cast<VkPipelineShaderStageCreateInfo *>( this );
16154     }
16155 
16156 #if defined( VULKAN_HPP_USE_REFLECT )
16157 #  if 14 <= VULKAN_HPP_CPP_VERSION
16158     auto
16159 #  else
16160     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16161                const void * const &,
16162                VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags const &,
16163                VULKAN_HPP_NAMESPACE::ShaderStageFlagBits const &,
16164                VULKAN_HPP_NAMESPACE::ShaderModule const &,
16165                const char * const &,
16166                const VULKAN_HPP_NAMESPACE::SpecializationInfo * const &>
16167 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16168       reflect() const VULKAN_HPP_NOEXCEPT
16169     {
16170       return std::tie( sType, pNext, flags, stage, module, pName, pSpecializationInfo );
16171     }
16172 #endif
16173 
16174 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16175     std::strong_ordering operator<=>( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16176     {
16177       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
16178         return cmp;
16179       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
16180         return cmp;
16181       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
16182         return cmp;
16183       if ( auto cmp = stage <=> rhs.stage; cmp != 0 )
16184         return cmp;
16185       if ( auto cmp = module <=> rhs.module; cmp != 0 )
16186         return cmp;
16187       if ( pName != rhs.pName )
16188         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
16189           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
16190       if ( auto cmp = pSpecializationInfo <=> rhs.pSpecializationInfo; cmp != 0 )
16191         return cmp;
16192 
16193       return std::strong_ordering::equivalent;
16194     }
16195 #endif
16196 
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16197     bool operator==( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16198     {
16199       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && ( module == rhs.module ) &&
16200              ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && ( pSpecializationInfo == rhs.pSpecializationInfo );
16201     }
16202 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo16203     bool operator!=( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16204     {
16205       return !operator==( rhs );
16206     }
16207 
16208   public:
16209     VULKAN_HPP_NAMESPACE::StructureType                  sType               = StructureType::ePipelineShaderStageCreateInfo;
16210     const void *                                         pNext               = {};
16211     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags               = {};
16212     VULKAN_HPP_NAMESPACE::ShaderStageFlagBits            stage               = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex;
16213     VULKAN_HPP_NAMESPACE::ShaderModule                   module              = {};
16214     const char *                                         pName               = {};
16215     const VULKAN_HPP_NAMESPACE::SpecializationInfo *     pSpecializationInfo = {};
16216   };
16217 
16218   template <>
16219   struct CppType<StructureType, StructureType::ePipelineShaderStageCreateInfo>
16220   {
16221     using Type = PipelineShaderStageCreateInfo;
16222   };
16223 
16224   struct ComputePipelineCreateInfo
16225   {
16226     using NativeType = VkComputePipelineCreateInfo;
16227 
16228     static const bool                                  allowDuplicate = false;
16229     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eComputePipelineCreateInfo;
16230 
16231 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ComputePipelineCreateInfoVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16232     VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags           flags_              = {},
16233                                                     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage_              = {},
16234                                                     VULKAN_HPP_NAMESPACE::PipelineLayout                layout_             = {},
16235                                                     VULKAN_HPP_NAMESPACE::Pipeline                      basePipelineHandle_ = {},
16236                                                     int32_t                                             basePipelineIndex_  = {},
16237                                                     const void *                                        pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
16238       : pNext{ pNext_ }
16239       , flags{ flags_ }
16240       , stage{ stage_ }
16241       , layout{ layout_ }
16242       , basePipelineHandle{ basePipelineHandle_ }
16243       , basePipelineIndex{ basePipelineIndex_ }
16244     {
16245     }
16246 
16247     VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16248 
ComputePipelineCreateInfoVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16249     ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16250       : ComputePipelineCreateInfo( *reinterpret_cast<ComputePipelineCreateInfo const *>( &rhs ) )
16251     {
16252     }
16253 
16254     ComputePipelineCreateInfo & operator=( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16255 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16256 
operator =VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16257     ComputePipelineCreateInfo & operator=( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16258     {
16259       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const *>( &rhs );
16260       return *this;
16261     }
16262 
16263 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16264     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16265     {
16266       pNext = pNext_;
16267       return *this;
16268     }
16269 
setFlagsVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16270     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
16271     {
16272       flags = flags_;
16273       return *this;
16274     }
16275 
setStageVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16276     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setStage( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const & stage_ ) VULKAN_HPP_NOEXCEPT
16277     {
16278       stage = stage_;
16279       return *this;
16280     }
16281 
setLayoutVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16282     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
16283     {
16284       layout = layout_;
16285       return *this;
16286     }
16287 
setBasePipelineHandleVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16288     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
16289     {
16290       basePipelineHandle = basePipelineHandle_;
16291       return *this;
16292     }
16293 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16294     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
16295     {
16296       basePipelineIndex = basePipelineIndex_;
16297       return *this;
16298     }
16299 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16300 
operator VkComputePipelineCreateInfo const&VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16301     operator VkComputePipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT
16302     {
16303       return *reinterpret_cast<const VkComputePipelineCreateInfo *>( this );
16304     }
16305 
operator VkComputePipelineCreateInfo&VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16306     operator VkComputePipelineCreateInfo &() VULKAN_HPP_NOEXCEPT
16307     {
16308       return *reinterpret_cast<VkComputePipelineCreateInfo *>( this );
16309     }
16310 
16311 #if defined( VULKAN_HPP_USE_REFLECT )
16312 #  if 14 <= VULKAN_HPP_CPP_VERSION
16313     auto
16314 #  else
16315     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16316                const void * const &,
16317                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
16318                VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const &,
16319                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
16320                VULKAN_HPP_NAMESPACE::Pipeline const &,
16321                int32_t const &>
16322 #  endif
reflectVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16323       reflect() const VULKAN_HPP_NOEXCEPT
16324     {
16325       return std::tie( sType, pNext, flags, stage, layout, basePipelineHandle, basePipelineIndex );
16326     }
16327 #endif
16328 
16329 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16330     auto operator<=>( ComputePipelineCreateInfo const & ) const = default;
16331 #else
operator ==VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16332     bool operator==( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16333     {
16334 #  if defined( VULKAN_HPP_USE_REFLECT )
16335       return this->reflect() == rhs.reflect();
16336 #  else
16337       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && ( layout == rhs.layout ) &&
16338              ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex );
16339 #  endif
16340     }
16341 
operator !=VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16342     bool operator!=( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16343     {
16344       return !operator==( rhs );
16345     }
16346 #endif
16347 
16348   public:
16349     VULKAN_HPP_NAMESPACE::StructureType                 sType              = StructureType::eComputePipelineCreateInfo;
16350     const void *                                        pNext              = {};
16351     VULKAN_HPP_NAMESPACE::PipelineCreateFlags           flags              = {};
16352     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage              = {};
16353     VULKAN_HPP_NAMESPACE::PipelineLayout                layout             = {};
16354     VULKAN_HPP_NAMESPACE::Pipeline                      basePipelineHandle = {};
16355     int32_t                                             basePipelineIndex  = {};
16356   };
16357 
16358   template <>
16359   struct CppType<StructureType, StructureType::eComputePipelineCreateInfo>
16360   {
16361     using Type = ComputePipelineCreateInfo;
16362   };
16363 
16364   struct ComputePipelineIndirectBufferInfoNV
16365   {
16366     using NativeType = VkComputePipelineIndirectBufferInfoNV;
16367 
16368     static const bool                                  allowDuplicate = false;
16369     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eComputePipelineIndirectBufferInfoNV;
16370 
16371 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ComputePipelineIndirectBufferInfoNVVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16372     VULKAN_HPP_CONSTEXPR ComputePipelineIndirectBufferInfoNV( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_                      = {},
16373                                                               VULKAN_HPP_NAMESPACE::DeviceSize    size_                               = {},
16374                                                               VULKAN_HPP_NAMESPACE::DeviceAddress pipelineDeviceAddressCaptureReplay_ = {},
16375                                                               const void *                        pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
16376       : pNext{ pNext_ }
16377       , deviceAddress{ deviceAddress_ }
16378       , size{ size_ }
16379       , pipelineDeviceAddressCaptureReplay{ pipelineDeviceAddressCaptureReplay_ }
16380     {
16381     }
16382 
16383     VULKAN_HPP_CONSTEXPR ComputePipelineIndirectBufferInfoNV( ComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16384 
ComputePipelineIndirectBufferInfoNVVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16385     ComputePipelineIndirectBufferInfoNV( VkComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
16386       : ComputePipelineIndirectBufferInfoNV( *reinterpret_cast<ComputePipelineIndirectBufferInfoNV const *>( &rhs ) )
16387     {
16388     }
16389 
16390     ComputePipelineIndirectBufferInfoNV & operator=( ComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16391 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16392 
operator =VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16393     ComputePipelineIndirectBufferInfoNV & operator=( VkComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
16394     {
16395       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV const *>( &rhs );
16396       return *this;
16397     }
16398 
16399 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16400     VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16401     {
16402       pNext = pNext_;
16403       return *this;
16404     }
16405 
setDeviceAddressVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16406     VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
16407     {
16408       deviceAddress = deviceAddress_;
16409       return *this;
16410     }
16411 
setSizeVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16412     VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
16413     {
16414       size = size_;
16415       return *this;
16416     }
16417 
16418     VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV &
setPipelineDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16419       setPipelineDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::DeviceAddress pipelineDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
16420     {
16421       pipelineDeviceAddressCaptureReplay = pipelineDeviceAddressCaptureReplay_;
16422       return *this;
16423     }
16424 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16425 
operator VkComputePipelineIndirectBufferInfoNV const&VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16426     operator VkComputePipelineIndirectBufferInfoNV const &() const VULKAN_HPP_NOEXCEPT
16427     {
16428       return *reinterpret_cast<const VkComputePipelineIndirectBufferInfoNV *>( this );
16429     }
16430 
operator VkComputePipelineIndirectBufferInfoNV&VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16431     operator VkComputePipelineIndirectBufferInfoNV &() VULKAN_HPP_NOEXCEPT
16432     {
16433       return *reinterpret_cast<VkComputePipelineIndirectBufferInfoNV *>( this );
16434     }
16435 
16436 #if defined( VULKAN_HPP_USE_REFLECT )
16437 #  if 14 <= VULKAN_HPP_CPP_VERSION
16438     auto
16439 #  else
16440     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16441                const void * const &,
16442                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
16443                VULKAN_HPP_NAMESPACE::DeviceSize const &,
16444                VULKAN_HPP_NAMESPACE::DeviceAddress const &>
16445 #  endif
reflectVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16446       reflect() const VULKAN_HPP_NOEXCEPT
16447     {
16448       return std::tie( sType, pNext, deviceAddress, size, pipelineDeviceAddressCaptureReplay );
16449     }
16450 #endif
16451 
16452 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16453     auto operator<=>( ComputePipelineIndirectBufferInfoNV const & ) const = default;
16454 #else
operator ==VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16455     bool operator==( ComputePipelineIndirectBufferInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16456     {
16457 #  if defined( VULKAN_HPP_USE_REFLECT )
16458       return this->reflect() == rhs.reflect();
16459 #  else
16460       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress ) && ( size == rhs.size ) &&
16461              ( pipelineDeviceAddressCaptureReplay == rhs.pipelineDeviceAddressCaptureReplay );
16462 #  endif
16463     }
16464 
operator !=VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16465     bool operator!=( ComputePipelineIndirectBufferInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16466     {
16467       return !operator==( rhs );
16468     }
16469 #endif
16470 
16471   public:
16472     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::eComputePipelineIndirectBufferInfoNV;
16473     const void *                        pNext                              = {};
16474     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress                      = {};
16475     VULKAN_HPP_NAMESPACE::DeviceSize    size                               = {};
16476     VULKAN_HPP_NAMESPACE::DeviceAddress pipelineDeviceAddressCaptureReplay = {};
16477   };
16478 
16479   template <>
16480   struct CppType<StructureType, StructureType::eComputePipelineIndirectBufferInfoNV>
16481   {
16482     using Type = ComputePipelineIndirectBufferInfoNV;
16483   };
16484 
16485   struct ConditionalRenderingBeginInfoEXT
16486   {
16487     using NativeType = VkConditionalRenderingBeginInfoEXT;
16488 
16489     static const bool                                  allowDuplicate = false;
16490     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eConditionalRenderingBeginInfoEXT;
16491 
16492 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ConditionalRenderingBeginInfoEXTVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16493     VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfoEXT( VULKAN_HPP_NAMESPACE::Buffer                       buffer_ = {},
16494                                                            VULKAN_HPP_NAMESPACE::DeviceSize                   offset_ = {},
16495                                                            VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags_  = {},
16496                                                            const void *                                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
16497       : pNext{ pNext_ }
16498       , buffer{ buffer_ }
16499       , offset{ offset_ }
16500       , flags{ flags_ }
16501     {
16502     }
16503 
16504     VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfoEXT( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16505 
ConditionalRenderingBeginInfoEXTVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16506     ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
16507       : ConditionalRenderingBeginInfoEXT( *reinterpret_cast<ConditionalRenderingBeginInfoEXT const *>( &rhs ) )
16508     {
16509     }
16510 
16511     ConditionalRenderingBeginInfoEXT & operator=( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16512 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16513 
operator =VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16514     ConditionalRenderingBeginInfoEXT & operator=( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
16515     {
16516       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT const *>( &rhs );
16517       return *this;
16518     }
16519 
16520 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16521     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16522     {
16523       pNext = pNext_;
16524       return *this;
16525     }
16526 
setBufferVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16527     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
16528     {
16529       buffer = buffer_;
16530       return *this;
16531     }
16532 
setOffsetVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16533     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
16534     {
16535       offset = offset_;
16536       return *this;
16537     }
16538 
setFlagsVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16539     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
16540     {
16541       flags = flags_;
16542       return *this;
16543     }
16544 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16545 
operator VkConditionalRenderingBeginInfoEXT const&VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16546     operator VkConditionalRenderingBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT
16547     {
16548       return *reinterpret_cast<const VkConditionalRenderingBeginInfoEXT *>( this );
16549     }
16550 
operator VkConditionalRenderingBeginInfoEXT&VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16551     operator VkConditionalRenderingBeginInfoEXT &() VULKAN_HPP_NOEXCEPT
16552     {
16553       return *reinterpret_cast<VkConditionalRenderingBeginInfoEXT *>( this );
16554     }
16555 
16556 #if defined( VULKAN_HPP_USE_REFLECT )
16557 #  if 14 <= VULKAN_HPP_CPP_VERSION
16558     auto
16559 #  else
16560     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16561                const void * const &,
16562                VULKAN_HPP_NAMESPACE::Buffer const &,
16563                VULKAN_HPP_NAMESPACE::DeviceSize const &,
16564                VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT const &>
16565 #  endif
reflectVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16566       reflect() const VULKAN_HPP_NOEXCEPT
16567     {
16568       return std::tie( sType, pNext, buffer, offset, flags );
16569     }
16570 #endif
16571 
16572 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16573     auto operator<=>( ConditionalRenderingBeginInfoEXT const & ) const = default;
16574 #else
operator ==VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16575     bool operator==( ConditionalRenderingBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
16576     {
16577 #  if defined( VULKAN_HPP_USE_REFLECT )
16578       return this->reflect() == rhs.reflect();
16579 #  else
16580       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( flags == rhs.flags );
16581 #  endif
16582     }
16583 
operator !=VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16584     bool operator!=( ConditionalRenderingBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
16585     {
16586       return !operator==( rhs );
16587     }
16588 #endif
16589 
16590   public:
16591     VULKAN_HPP_NAMESPACE::StructureType                sType  = StructureType::eConditionalRenderingBeginInfoEXT;
16592     const void *                                       pNext  = {};
16593     VULKAN_HPP_NAMESPACE::Buffer                       buffer = {};
16594     VULKAN_HPP_NAMESPACE::DeviceSize                   offset = {};
16595     VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags  = {};
16596   };
16597 
16598   template <>
16599   struct CppType<StructureType, StructureType::eConditionalRenderingBeginInfoEXT>
16600   {
16601     using Type = ConditionalRenderingBeginInfoEXT;
16602   };
16603 
16604   struct ConformanceVersion
16605   {
16606     using NativeType = VkConformanceVersion;
16607 
16608 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ConformanceVersionVULKAN_HPP_NAMESPACE::ConformanceVersion16609     VULKAN_HPP_CONSTEXPR ConformanceVersion( uint8_t major_ = {}, uint8_t minor_ = {}, uint8_t subminor_ = {}, uint8_t patch_ = {} ) VULKAN_HPP_NOEXCEPT
16610       : major{ major_ }
16611       , minor{ minor_ }
16612       , subminor{ subminor_ }
16613       , patch{ patch_ }
16614     {
16615     }
16616 
16617     VULKAN_HPP_CONSTEXPR ConformanceVersion( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16618 
ConformanceVersionVULKAN_HPP_NAMESPACE::ConformanceVersion16619     ConformanceVersion( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT : ConformanceVersion( *reinterpret_cast<ConformanceVersion const *>( &rhs ) ) {}
16620 
16621     ConformanceVersion & operator=( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16622 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16623 
operator =VULKAN_HPP_NAMESPACE::ConformanceVersion16624     ConformanceVersion & operator=( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT
16625     {
16626       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ConformanceVersion const *>( &rhs );
16627       return *this;
16628     }
16629 
16630 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMajorVULKAN_HPP_NAMESPACE::ConformanceVersion16631     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMajor( uint8_t major_ ) VULKAN_HPP_NOEXCEPT
16632     {
16633       major = major_;
16634       return *this;
16635     }
16636 
setMinorVULKAN_HPP_NAMESPACE::ConformanceVersion16637     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMinor( uint8_t minor_ ) VULKAN_HPP_NOEXCEPT
16638     {
16639       minor = minor_;
16640       return *this;
16641     }
16642 
setSubminorVULKAN_HPP_NAMESPACE::ConformanceVersion16643     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setSubminor( uint8_t subminor_ ) VULKAN_HPP_NOEXCEPT
16644     {
16645       subminor = subminor_;
16646       return *this;
16647     }
16648 
setPatchVULKAN_HPP_NAMESPACE::ConformanceVersion16649     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setPatch( uint8_t patch_ ) VULKAN_HPP_NOEXCEPT
16650     {
16651       patch = patch_;
16652       return *this;
16653     }
16654 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16655 
operator VkConformanceVersion const&VULKAN_HPP_NAMESPACE::ConformanceVersion16656     operator VkConformanceVersion const &() const VULKAN_HPP_NOEXCEPT
16657     {
16658       return *reinterpret_cast<const VkConformanceVersion *>( this );
16659     }
16660 
operator VkConformanceVersion&VULKAN_HPP_NAMESPACE::ConformanceVersion16661     operator VkConformanceVersion &() VULKAN_HPP_NOEXCEPT
16662     {
16663       return *reinterpret_cast<VkConformanceVersion *>( this );
16664     }
16665 
16666 #if defined( VULKAN_HPP_USE_REFLECT )
16667 #  if 14 <= VULKAN_HPP_CPP_VERSION
16668     auto
16669 #  else
16670     std::tuple<uint8_t const &, uint8_t const &, uint8_t const &, uint8_t const &>
16671 #  endif
reflectVULKAN_HPP_NAMESPACE::ConformanceVersion16672       reflect() const VULKAN_HPP_NOEXCEPT
16673     {
16674       return std::tie( major, minor, subminor, patch );
16675     }
16676 #endif
16677 
16678 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16679     auto operator<=>( ConformanceVersion const & ) const = default;
16680 #else
operator ==VULKAN_HPP_NAMESPACE::ConformanceVersion16681     bool operator==( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT
16682     {
16683 #  if defined( VULKAN_HPP_USE_REFLECT )
16684       return this->reflect() == rhs.reflect();
16685 #  else
16686       return ( major == rhs.major ) && ( minor == rhs.minor ) && ( subminor == rhs.subminor ) && ( patch == rhs.patch );
16687 #  endif
16688     }
16689 
operator !=VULKAN_HPP_NAMESPACE::ConformanceVersion16690     bool operator!=( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT
16691     {
16692       return !operator==( rhs );
16693     }
16694 #endif
16695 
16696   public:
16697     uint8_t major    = {};
16698     uint8_t minor    = {};
16699     uint8_t subminor = {};
16700     uint8_t patch    = {};
16701   };
16702 
16703   using ConformanceVersionKHR = ConformanceVersion;
16704 
16705   struct CooperativeMatrixPropertiesKHR
16706   {
16707     using NativeType = VkCooperativeMatrixPropertiesKHR;
16708 
16709     static const bool                                  allowDuplicate = false;
16710     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCooperativeMatrixPropertiesKHR;
16711 
16712 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CooperativeMatrixPropertiesKHRVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16713     VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesKHR( uint32_t                               MSize_      = {},
16714                                                          uint32_t                               NSize_      = {},
16715                                                          uint32_t                               KSize_      = {},
16716                                                          VULKAN_HPP_NAMESPACE::ComponentTypeKHR AType_      = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16,
16717                                                          VULKAN_HPP_NAMESPACE::ComponentTypeKHR BType_      = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16,
16718                                                          VULKAN_HPP_NAMESPACE::ComponentTypeKHR CType_      = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16,
16719                                                          VULKAN_HPP_NAMESPACE::ComponentTypeKHR ResultType_ = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16,
16720                                                          VULKAN_HPP_NAMESPACE::Bool32           saturatingAccumulation_ = {},
16721                                                          VULKAN_HPP_NAMESPACE::ScopeKHR         scope_ = VULKAN_HPP_NAMESPACE::ScopeKHR::eDevice,
16722                                                          void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
16723       : pNext{ pNext_ }
16724       , MSize{ MSize_ }
16725       , NSize{ NSize_ }
16726       , KSize{ KSize_ }
16727       , AType{ AType_ }
16728       , BType{ BType_ }
16729       , CType{ CType_ }
16730       , ResultType{ ResultType_ }
16731       , saturatingAccumulation{ saturatingAccumulation_ }
16732       , scope{ scope_ }
16733     {
16734     }
16735 
16736     VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesKHR( CooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16737 
CooperativeMatrixPropertiesKHRVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16738     CooperativeMatrixPropertiesKHR( VkCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16739       : CooperativeMatrixPropertiesKHR( *reinterpret_cast<CooperativeMatrixPropertiesKHR const *>( &rhs ) )
16740     {
16741     }
16742 
16743     CooperativeMatrixPropertiesKHR & operator=( CooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16744 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16745 
operator =VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16746     CooperativeMatrixPropertiesKHR & operator=( VkCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16747     {
16748       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR const *>( &rhs );
16749       return *this;
16750     }
16751 
operator VkCooperativeMatrixPropertiesKHR const&VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16752     operator VkCooperativeMatrixPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
16753     {
16754       return *reinterpret_cast<const VkCooperativeMatrixPropertiesKHR *>( this );
16755     }
16756 
operator VkCooperativeMatrixPropertiesKHR&VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16757     operator VkCooperativeMatrixPropertiesKHR &() VULKAN_HPP_NOEXCEPT
16758     {
16759       return *reinterpret_cast<VkCooperativeMatrixPropertiesKHR *>( this );
16760     }
16761 
16762 #if defined( VULKAN_HPP_USE_REFLECT )
16763 #  if 14 <= VULKAN_HPP_CPP_VERSION
16764     auto
16765 #  else
16766     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16767                void * const &,
16768                uint32_t const &,
16769                uint32_t const &,
16770                uint32_t const &,
16771                VULKAN_HPP_NAMESPACE::ComponentTypeKHR const &,
16772                VULKAN_HPP_NAMESPACE::ComponentTypeKHR const &,
16773                VULKAN_HPP_NAMESPACE::ComponentTypeKHR const &,
16774                VULKAN_HPP_NAMESPACE::ComponentTypeKHR const &,
16775                VULKAN_HPP_NAMESPACE::Bool32 const &,
16776                VULKAN_HPP_NAMESPACE::ScopeKHR const &>
16777 #  endif
reflectVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16778       reflect() const VULKAN_HPP_NOEXCEPT
16779     {
16780       return std::tie( sType, pNext, MSize, NSize, KSize, AType, BType, CType, ResultType, saturatingAccumulation, scope );
16781     }
16782 #endif
16783 
16784 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16785     auto operator<=>( CooperativeMatrixPropertiesKHR const & ) const = default;
16786 #else
operator ==VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16787     bool operator==( CooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16788     {
16789 #  if defined( VULKAN_HPP_USE_REFLECT )
16790       return this->reflect() == rhs.reflect();
16791 #  else
16792       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( MSize == rhs.MSize ) && ( NSize == rhs.NSize ) && ( KSize == rhs.KSize ) &&
16793              ( AType == rhs.AType ) && ( BType == rhs.BType ) && ( CType == rhs.CType ) && ( ResultType == rhs.ResultType ) &&
16794              ( saturatingAccumulation == rhs.saturatingAccumulation ) && ( scope == rhs.scope );
16795 #  endif
16796     }
16797 
operator !=VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16798     bool operator!=( CooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16799     {
16800       return !operator==( rhs );
16801     }
16802 #endif
16803 
16804   public:
16805     VULKAN_HPP_NAMESPACE::StructureType    sType                  = StructureType::eCooperativeMatrixPropertiesKHR;
16806     void *                                 pNext                  = {};
16807     uint32_t                               MSize                  = {};
16808     uint32_t                               NSize                  = {};
16809     uint32_t                               KSize                  = {};
16810     VULKAN_HPP_NAMESPACE::ComponentTypeKHR AType                  = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16;
16811     VULKAN_HPP_NAMESPACE::ComponentTypeKHR BType                  = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16;
16812     VULKAN_HPP_NAMESPACE::ComponentTypeKHR CType                  = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16;
16813     VULKAN_HPP_NAMESPACE::ComponentTypeKHR ResultType             = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16;
16814     VULKAN_HPP_NAMESPACE::Bool32           saturatingAccumulation = {};
16815     VULKAN_HPP_NAMESPACE::ScopeKHR         scope                  = VULKAN_HPP_NAMESPACE::ScopeKHR::eDevice;
16816   };
16817 
16818   template <>
16819   struct CppType<StructureType, StructureType::eCooperativeMatrixPropertiesKHR>
16820   {
16821     using Type = CooperativeMatrixPropertiesKHR;
16822   };
16823 
16824   struct CooperativeMatrixPropertiesNV
16825   {
16826     using NativeType = VkCooperativeMatrixPropertiesNV;
16827 
16828     static const bool                                  allowDuplicate = false;
16829     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCooperativeMatrixPropertiesNV;
16830 
16831 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16832     VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesNV( uint32_t                              MSize_ = {},
16833                                                         uint32_t                              NSize_ = {},
16834                                                         uint32_t                              KSize_ = {},
16835                                                         VULKAN_HPP_NAMESPACE::ComponentTypeNV AType_ = {},
16836                                                         VULKAN_HPP_NAMESPACE::ComponentTypeNV BType_ = {},
16837                                                         VULKAN_HPP_NAMESPACE::ComponentTypeNV CType_ = {},
16838                                                         VULKAN_HPP_NAMESPACE::ComponentTypeNV DType_ = {},
16839                                                         VULKAN_HPP_NAMESPACE::ScopeNV         scope_ = {},
16840                                                         void *                                pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
16841       : pNext{ pNext_ }
16842       , MSize{ MSize_ }
16843       , NSize{ NSize_ }
16844       , KSize{ KSize_ }
16845       , AType{ AType_ }
16846       , BType{ BType_ }
16847       , CType{ CType_ }
16848       , DType{ DType_ }
16849       , scope{ scope_ }
16850     {
16851     }
16852 
16853     VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16854 
CooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16855     CooperativeMatrixPropertiesNV( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
16856       : CooperativeMatrixPropertiesNV( *reinterpret_cast<CooperativeMatrixPropertiesNV const *>( &rhs ) )
16857     {
16858     }
16859 
16860     CooperativeMatrixPropertiesNV & operator=( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16861 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16862 
operator =VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16863     CooperativeMatrixPropertiesNV & operator=( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
16864     {
16865       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV const *>( &rhs );
16866       return *this;
16867     }
16868 
operator VkCooperativeMatrixPropertiesNV const&VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16869     operator VkCooperativeMatrixPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
16870     {
16871       return *reinterpret_cast<const VkCooperativeMatrixPropertiesNV *>( this );
16872     }
16873 
operator VkCooperativeMatrixPropertiesNV&VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16874     operator VkCooperativeMatrixPropertiesNV &() VULKAN_HPP_NOEXCEPT
16875     {
16876       return *reinterpret_cast<VkCooperativeMatrixPropertiesNV *>( this );
16877     }
16878 
16879 #if defined( VULKAN_HPP_USE_REFLECT )
16880 #  if 14 <= VULKAN_HPP_CPP_VERSION
16881     auto
16882 #  else
16883     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16884                void * const &,
16885                uint32_t const &,
16886                uint32_t const &,
16887                uint32_t const &,
16888                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
16889                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
16890                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
16891                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
16892                VULKAN_HPP_NAMESPACE::ScopeNV const &>
16893 #  endif
reflectVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16894       reflect() const VULKAN_HPP_NOEXCEPT
16895     {
16896       return std::tie( sType, pNext, MSize, NSize, KSize, AType, BType, CType, DType, scope );
16897     }
16898 #endif
16899 
16900 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16901     auto operator<=>( CooperativeMatrixPropertiesNV const & ) const = default;
16902 #else
operator ==VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16903     bool operator==( CooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16904     {
16905 #  if defined( VULKAN_HPP_USE_REFLECT )
16906       return this->reflect() == rhs.reflect();
16907 #  else
16908       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( MSize == rhs.MSize ) && ( NSize == rhs.NSize ) && ( KSize == rhs.KSize ) &&
16909              ( AType == rhs.AType ) && ( BType == rhs.BType ) && ( CType == rhs.CType ) && ( DType == rhs.DType ) && ( scope == rhs.scope );
16910 #  endif
16911     }
16912 
operator !=VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16913     bool operator!=( CooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16914     {
16915       return !operator==( rhs );
16916     }
16917 #endif
16918 
16919   public:
16920     VULKAN_HPP_NAMESPACE::StructureType   sType = StructureType::eCooperativeMatrixPropertiesNV;
16921     void *                                pNext = {};
16922     uint32_t                              MSize = {};
16923     uint32_t                              NSize = {};
16924     uint32_t                              KSize = {};
16925     VULKAN_HPP_NAMESPACE::ComponentTypeNV AType = {};
16926     VULKAN_HPP_NAMESPACE::ComponentTypeNV BType = {};
16927     VULKAN_HPP_NAMESPACE::ComponentTypeNV CType = {};
16928     VULKAN_HPP_NAMESPACE::ComponentTypeNV DType = {};
16929     VULKAN_HPP_NAMESPACE::ScopeNV         scope = {};
16930   };
16931 
16932   template <>
16933   struct CppType<StructureType, StructureType::eCooperativeMatrixPropertiesNV>
16934   {
16935     using Type = CooperativeMatrixPropertiesNV;
16936   };
16937 
16938   struct CopyAccelerationStructureInfoKHR
16939   {
16940     using NativeType = VkCopyAccelerationStructureInfoKHR;
16941 
16942     static const bool                                  allowDuplicate = false;
16943     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyAccelerationStructureInfoKHR;
16944 
16945 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16946     VULKAN_HPP_CONSTEXPR CopyAccelerationStructureInfoKHR(
16947       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src_   = {},
16948       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst_   = {},
16949       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone,
16950       const void *                                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
16951       : pNext{ pNext_ }
16952       , src{ src_ }
16953       , dst{ dst_ }
16954       , mode{ mode_ }
16955     {
16956     }
16957 
16958     VULKAN_HPP_CONSTEXPR CopyAccelerationStructureInfoKHR( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16959 
CopyAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16960     CopyAccelerationStructureInfoKHR( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16961       : CopyAccelerationStructureInfoKHR( *reinterpret_cast<CopyAccelerationStructureInfoKHR const *>( &rhs ) )
16962     {
16963     }
16964 
16965     CopyAccelerationStructureInfoKHR & operator=( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16966 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16967 
operator =VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16968     CopyAccelerationStructureInfoKHR & operator=( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16969     {
16970       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR const *>( &rhs );
16971       return *this;
16972     }
16973 
16974 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16975     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16976     {
16977       pNext = pNext_;
16978       return *this;
16979     }
16980 
setSrcVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16981     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setSrc( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ ) VULKAN_HPP_NOEXCEPT
16982     {
16983       src = src_;
16984       return *this;
16985     }
16986 
setDstVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16987     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setDst( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ ) VULKAN_HPP_NOEXCEPT
16988     {
16989       dst = dst_;
16990       return *this;
16991     }
16992 
setModeVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16993     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
16994     {
16995       mode = mode_;
16996       return *this;
16997     }
16998 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16999 
operator VkCopyAccelerationStructureInfoKHR const&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR17000     operator VkCopyAccelerationStructureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
17001     {
17002       return *reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( this );
17003     }
17004 
operator VkCopyAccelerationStructureInfoKHR&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR17005     operator VkCopyAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT
17006     {
17007       return *reinterpret_cast<VkCopyAccelerationStructureInfoKHR *>( this );
17008     }
17009 
17010 #if defined( VULKAN_HPP_USE_REFLECT )
17011 #  if 14 <= VULKAN_HPP_CPP_VERSION
17012     auto
17013 #  else
17014     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17015                const void * const &,
17016                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
17017                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
17018                VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR const &>
17019 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR17020       reflect() const VULKAN_HPP_NOEXCEPT
17021     {
17022       return std::tie( sType, pNext, src, dst, mode );
17023     }
17024 #endif
17025 
17026 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17027     auto operator<=>( CopyAccelerationStructureInfoKHR const & ) const = default;
17028 #else
operator ==VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR17029     bool operator==( CopyAccelerationStructureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
17030     {
17031 #  if defined( VULKAN_HPP_USE_REFLECT )
17032       return this->reflect() == rhs.reflect();
17033 #  else
17034       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( src == rhs.src ) && ( dst == rhs.dst ) && ( mode == rhs.mode );
17035 #  endif
17036     }
17037 
operator !=VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR17038     bool operator!=( CopyAccelerationStructureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
17039     {
17040       return !operator==( rhs );
17041     }
17042 #endif
17043 
17044   public:
17045     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eCopyAccelerationStructureInfoKHR;
17046     const void *                                           pNext = {};
17047     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src   = {};
17048     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst   = {};
17049     VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone;
17050   };
17051 
17052   template <>
17053   struct CppType<StructureType, StructureType::eCopyAccelerationStructureInfoKHR>
17054   {
17055     using Type = CopyAccelerationStructureInfoKHR;
17056   };
17057 
17058   struct CopyAccelerationStructureToMemoryInfoKHR
17059   {
17060     using NativeType = VkCopyAccelerationStructureToMemoryInfoKHR;
17061 
17062     static const bool                                  allowDuplicate = false;
17063     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyAccelerationStructureToMemoryInfoKHR;
17064 
17065 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyAccelerationStructureToMemoryInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR17066     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR(
17067       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src_   = {},
17068       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR           dst_   = {},
17069       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone,
17070       const void *                                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
17071       : pNext{ pNext_ }
17072       , src{ src_ }
17073       , dst{ dst_ }
17074       , mode{ mode_ }
17075     {
17076     }
17077 
17078     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17079 
CopyAccelerationStructureToMemoryInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR17080     CopyAccelerationStructureToMemoryInfoKHR( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
17081       : CopyAccelerationStructureToMemoryInfoKHR( *reinterpret_cast<CopyAccelerationStructureToMemoryInfoKHR const *>( &rhs ) )
17082     {
17083     }
17084 
17085     CopyAccelerationStructureToMemoryInfoKHR & operator=( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17086 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17087 
operator =VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR17088     CopyAccelerationStructureToMemoryInfoKHR & operator=( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
17089     {
17090       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR const *>( &rhs );
17091       return *this;
17092     }
17093 
17094 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR17095     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17096     {
17097       pNext = pNext_;
17098       return *this;
17099     }
17100 
setSrcVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR17101     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & setSrc( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ ) VULKAN_HPP_NOEXCEPT
17102     {
17103       src = src_;
17104       return *this;
17105     }
17106 
setDstVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR17107     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & setDst( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & dst_ ) VULKAN_HPP_NOEXCEPT
17108     {
17109       dst = dst_;
17110       return *this;
17111     }
17112 
17113     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR &
setModeVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR17114       setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
17115     {
17116       mode = mode_;
17117       return *this;
17118     }
17119 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17120 
operator VkCopyAccelerationStructureToMemoryInfoKHR const&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR17121     operator VkCopyAccelerationStructureToMemoryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
17122     {
17123       return *reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( this );
17124     }
17125 
operator VkCopyAccelerationStructureToMemoryInfoKHR&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR17126     operator VkCopyAccelerationStructureToMemoryInfoKHR &() VULKAN_HPP_NOEXCEPT
17127     {
17128       return *reinterpret_cast<VkCopyAccelerationStructureToMemoryInfoKHR *>( this );
17129     }
17130 
17131 #if defined( VULKAN_HPP_USE_REFLECT )
17132 #  if 14 <= VULKAN_HPP_CPP_VERSION
17133     auto
17134 #  else
17135     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17136                const void * const &,
17137                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
17138                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const &,
17139                VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR const &>
17140 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR17141       reflect() const VULKAN_HPP_NOEXCEPT
17142     {
17143       return std::tie( sType, pNext, src, dst, mode );
17144     }
17145 #endif
17146 
17147   public:
17148     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eCopyAccelerationStructureToMemoryInfoKHR;
17149     const void *                                           pNext = {};
17150     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src   = {};
17151     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR           dst   = {};
17152     VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone;
17153   };
17154 
17155   template <>
17156   struct CppType<StructureType, StructureType::eCopyAccelerationStructureToMemoryInfoKHR>
17157   {
17158     using Type = CopyAccelerationStructureToMemoryInfoKHR;
17159   };
17160 
17161   struct CopyBufferInfo2
17162   {
17163     using NativeType = VkCopyBufferInfo2;
17164 
17165     static const bool                                  allowDuplicate = false;
17166     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyBufferInfo2;
17167 
17168 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyBufferInfo2VULKAN_HPP_NAMESPACE::CopyBufferInfo217169     VULKAN_HPP_CONSTEXPR CopyBufferInfo2( VULKAN_HPP_NAMESPACE::Buffer              srcBuffer_   = {},
17170                                           VULKAN_HPP_NAMESPACE::Buffer              dstBuffer_   = {},
17171                                           uint32_t                                  regionCount_ = {},
17172                                           const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions_    = {},
17173                                           const void *                              pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
17174       : pNext{ pNext_ }
17175       , srcBuffer{ srcBuffer_ }
17176       , dstBuffer{ dstBuffer_ }
17177       , regionCount{ regionCount_ }
17178       , pRegions{ pRegions_ }
17179     {
17180     }
17181 
17182     VULKAN_HPP_CONSTEXPR CopyBufferInfo2( CopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17183 
CopyBufferInfo2VULKAN_HPP_NAMESPACE::CopyBufferInfo217184     CopyBufferInfo2( VkCopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : CopyBufferInfo2( *reinterpret_cast<CopyBufferInfo2 const *>( &rhs ) ) {}
17185 
17186 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyBufferInfo2VULKAN_HPP_NAMESPACE::CopyBufferInfo217187     CopyBufferInfo2( VULKAN_HPP_NAMESPACE::Buffer                                                                   srcBuffer_,
17188                      VULKAN_HPP_NAMESPACE::Buffer                                                                   dstBuffer_,
17189                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferCopy2> const & regions_,
17190                      const void *                                                                                   pNext_ = nullptr )
17191       : pNext( pNext_ ), srcBuffer( srcBuffer_ ), dstBuffer( dstBuffer_ ), regionCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
17192     {
17193     }
17194 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17195 
17196     CopyBufferInfo2 & operator=( CopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17197 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17198 
operator =VULKAN_HPP_NAMESPACE::CopyBufferInfo217199     CopyBufferInfo2 & operator=( VkCopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
17200     {
17201       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyBufferInfo2 const *>( &rhs );
17202       return *this;
17203     }
17204 
17205 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyBufferInfo217206     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17207     {
17208       pNext = pNext_;
17209       return *this;
17210     }
17211 
setSrcBufferVULKAN_HPP_NAMESPACE::CopyBufferInfo217212     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
17213     {
17214       srcBuffer = srcBuffer_;
17215       return *this;
17216     }
17217 
setDstBufferVULKAN_HPP_NAMESPACE::CopyBufferInfo217218     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT
17219     {
17220       dstBuffer = dstBuffer_;
17221       return *this;
17222     }
17223 
setRegionCountVULKAN_HPP_NAMESPACE::CopyBufferInfo217224     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
17225     {
17226       regionCount = regionCount_;
17227       return *this;
17228     }
17229 
setPRegionsVULKAN_HPP_NAMESPACE::CopyBufferInfo217230     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
17231     {
17232       pRegions = pRegions_;
17233       return *this;
17234     }
17235 
17236 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyBufferInfo217237     CopyBufferInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
17238     {
17239       regionCount = static_cast<uint32_t>( regions_.size() );
17240       pRegions    = regions_.data();
17241       return *this;
17242     }
17243 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17244 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17245 
operator VkCopyBufferInfo2 const&VULKAN_HPP_NAMESPACE::CopyBufferInfo217246     operator VkCopyBufferInfo2 const &() const VULKAN_HPP_NOEXCEPT
17247     {
17248       return *reinterpret_cast<const VkCopyBufferInfo2 *>( this );
17249     }
17250 
operator VkCopyBufferInfo2&VULKAN_HPP_NAMESPACE::CopyBufferInfo217251     operator VkCopyBufferInfo2 &() VULKAN_HPP_NOEXCEPT
17252     {
17253       return *reinterpret_cast<VkCopyBufferInfo2 *>( this );
17254     }
17255 
17256 #if defined( VULKAN_HPP_USE_REFLECT )
17257 #  if 14 <= VULKAN_HPP_CPP_VERSION
17258     auto
17259 #  else
17260     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17261                const void * const &,
17262                VULKAN_HPP_NAMESPACE::Buffer const &,
17263                VULKAN_HPP_NAMESPACE::Buffer const &,
17264                uint32_t const &,
17265                const VULKAN_HPP_NAMESPACE::BufferCopy2 * const &>
17266 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyBufferInfo217267       reflect() const VULKAN_HPP_NOEXCEPT
17268     {
17269       return std::tie( sType, pNext, srcBuffer, dstBuffer, regionCount, pRegions );
17270     }
17271 #endif
17272 
17273 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17274     auto operator<=>( CopyBufferInfo2 const & ) const = default;
17275 #else
operator ==VULKAN_HPP_NAMESPACE::CopyBufferInfo217276     bool operator==( CopyBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17277     {
17278 #  if defined( VULKAN_HPP_USE_REFLECT )
17279       return this->reflect() == rhs.reflect();
17280 #  else
17281       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcBuffer == rhs.srcBuffer ) && ( dstBuffer == rhs.dstBuffer ) &&
17282              ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
17283 #  endif
17284     }
17285 
operator !=VULKAN_HPP_NAMESPACE::CopyBufferInfo217286     bool operator!=( CopyBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17287     {
17288       return !operator==( rhs );
17289     }
17290 #endif
17291 
17292   public:
17293     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eCopyBufferInfo2;
17294     const void *                              pNext       = {};
17295     VULKAN_HPP_NAMESPACE::Buffer              srcBuffer   = {};
17296     VULKAN_HPP_NAMESPACE::Buffer              dstBuffer   = {};
17297     uint32_t                                  regionCount = {};
17298     const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions    = {};
17299   };
17300 
17301   template <>
17302   struct CppType<StructureType, StructureType::eCopyBufferInfo2>
17303   {
17304     using Type = CopyBufferInfo2;
17305   };
17306 
17307   using CopyBufferInfo2KHR = CopyBufferInfo2;
17308 
17309   struct CopyBufferToImageInfo2
17310   {
17311     using NativeType = VkCopyBufferToImageInfo2;
17312 
17313     static const bool                                  allowDuplicate = false;
17314     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyBufferToImageInfo2;
17315 
17316 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyBufferToImageInfo2VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217317     VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2( VULKAN_HPP_NAMESPACE::Buffer                   srcBuffer_      = {},
17318                                                  VULKAN_HPP_NAMESPACE::Image                    dstImage_       = {},
17319                                                  VULKAN_HPP_NAMESPACE::ImageLayout              dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
17320                                                  uint32_t                                       regionCount_    = {},
17321                                                  const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_       = {},
17322                                                  const void *                                   pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
17323       : pNext{ pNext_ }
17324       , srcBuffer{ srcBuffer_ }
17325       , dstImage{ dstImage_ }
17326       , dstImageLayout{ dstImageLayout_ }
17327       , regionCount{ regionCount_ }
17328       , pRegions{ pRegions_ }
17329     {
17330     }
17331 
17332     VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2( CopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17333 
CopyBufferToImageInfo2VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217334     CopyBufferToImageInfo2( VkCopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
17335       : CopyBufferToImageInfo2( *reinterpret_cast<CopyBufferToImageInfo2 const *>( &rhs ) )
17336     {
17337     }
17338 
17339 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyBufferToImageInfo2VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217340     CopyBufferToImageInfo2( VULKAN_HPP_NAMESPACE::Buffer                                                                        srcBuffer_,
17341                             VULKAN_HPP_NAMESPACE::Image                                                                         dstImage_,
17342                             VULKAN_HPP_NAMESPACE::ImageLayout                                                                   dstImageLayout_,
17343                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_,
17344                             const void *                                                                                        pNext_ = nullptr )
17345       : pNext( pNext_ )
17346       , srcBuffer( srcBuffer_ )
17347       , dstImage( dstImage_ )
17348       , dstImageLayout( dstImageLayout_ )
17349       , regionCount( static_cast<uint32_t>( regions_.size() ) )
17350       , pRegions( regions_.data() )
17351     {
17352     }
17353 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17354 
17355     CopyBufferToImageInfo2 & operator=( CopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17356 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17357 
operator =VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217358     CopyBufferToImageInfo2 & operator=( VkCopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
17359     {
17360       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 const *>( &rhs );
17361       return *this;
17362     }
17363 
17364 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217365     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17366     {
17367       pNext = pNext_;
17368       return *this;
17369     }
17370 
setSrcBufferVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217371     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
17372     {
17373       srcBuffer = srcBuffer_;
17374       return *this;
17375     }
17376 
setDstImageVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217377     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
17378     {
17379       dstImage = dstImage_;
17380       return *this;
17381     }
17382 
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217383     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
17384     {
17385       dstImageLayout = dstImageLayout_;
17386       return *this;
17387     }
17388 
setRegionCountVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217389     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
17390     {
17391       regionCount = regionCount_;
17392       return *this;
17393     }
17394 
setPRegionsVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217395     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
17396     {
17397       pRegions = pRegions_;
17398       return *this;
17399     }
17400 
17401 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
17402     CopyBufferToImageInfo2 &
setRegionsVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217403       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
17404     {
17405       regionCount = static_cast<uint32_t>( regions_.size() );
17406       pRegions    = regions_.data();
17407       return *this;
17408     }
17409 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17410 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17411 
operator VkCopyBufferToImageInfo2 const&VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217412     operator VkCopyBufferToImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
17413     {
17414       return *reinterpret_cast<const VkCopyBufferToImageInfo2 *>( this );
17415     }
17416 
operator VkCopyBufferToImageInfo2&VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217417     operator VkCopyBufferToImageInfo2 &() VULKAN_HPP_NOEXCEPT
17418     {
17419       return *reinterpret_cast<VkCopyBufferToImageInfo2 *>( this );
17420     }
17421 
17422 #if defined( VULKAN_HPP_USE_REFLECT )
17423 #  if 14 <= VULKAN_HPP_CPP_VERSION
17424     auto
17425 #  else
17426     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17427                const void * const &,
17428                VULKAN_HPP_NAMESPACE::Buffer const &,
17429                VULKAN_HPP_NAMESPACE::Image const &,
17430                VULKAN_HPP_NAMESPACE::ImageLayout const &,
17431                uint32_t const &,
17432                const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * const &>
17433 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217434       reflect() const VULKAN_HPP_NOEXCEPT
17435     {
17436       return std::tie( sType, pNext, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions );
17437     }
17438 #endif
17439 
17440 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17441     auto operator<=>( CopyBufferToImageInfo2 const & ) const = default;
17442 #else
operator ==VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217443     bool operator==( CopyBufferToImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17444     {
17445 #  if defined( VULKAN_HPP_USE_REFLECT )
17446       return this->reflect() == rhs.reflect();
17447 #  else
17448       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcBuffer == rhs.srcBuffer ) && ( dstImage == rhs.dstImage ) &&
17449              ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
17450 #  endif
17451     }
17452 
operator !=VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217453     bool operator!=( CopyBufferToImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17454     {
17455       return !operator==( rhs );
17456     }
17457 #endif
17458 
17459   public:
17460     VULKAN_HPP_NAMESPACE::StructureType            sType          = StructureType::eCopyBufferToImageInfo2;
17461     const void *                                   pNext          = {};
17462     VULKAN_HPP_NAMESPACE::Buffer                   srcBuffer      = {};
17463     VULKAN_HPP_NAMESPACE::Image                    dstImage       = {};
17464     VULKAN_HPP_NAMESPACE::ImageLayout              dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
17465     uint32_t                                       regionCount    = {};
17466     const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions       = {};
17467   };
17468 
17469   template <>
17470   struct CppType<StructureType, StructureType::eCopyBufferToImageInfo2>
17471   {
17472     using Type = CopyBufferToImageInfo2;
17473   };
17474 
17475   using CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2;
17476 
17477   struct CopyCommandTransformInfoQCOM
17478   {
17479     using NativeType = VkCopyCommandTransformInfoQCOM;
17480 
17481     static const bool                                  allowDuplicate = false;
17482     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyCommandTransformInfoQCOM;
17483 
17484 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
17485     VULKAN_HPP_CONSTEXPR
CopyCommandTransformInfoQCOMVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17486       CopyCommandTransformInfoQCOM( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
17487                                     const void *                                      pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
17488       : pNext{ pNext_ }
17489       , transform{ transform_ }
17490     {
17491     }
17492 
17493     VULKAN_HPP_CONSTEXPR CopyCommandTransformInfoQCOM( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17494 
CopyCommandTransformInfoQCOMVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17495     CopyCommandTransformInfoQCOM( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
17496       : CopyCommandTransformInfoQCOM( *reinterpret_cast<CopyCommandTransformInfoQCOM const *>( &rhs ) )
17497     {
17498     }
17499 
17500     CopyCommandTransformInfoQCOM & operator=( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17501 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17502 
operator =VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17503     CopyCommandTransformInfoQCOM & operator=( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
17504     {
17505       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM const *>( &rhs );
17506       return *this;
17507     }
17508 
17509 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17510     VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17511     {
17512       pNext = pNext_;
17513       return *this;
17514     }
17515 
setTransformVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17516     VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
17517     {
17518       transform = transform_;
17519       return *this;
17520     }
17521 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17522 
operator VkCopyCommandTransformInfoQCOM const&VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17523     operator VkCopyCommandTransformInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
17524     {
17525       return *reinterpret_cast<const VkCopyCommandTransformInfoQCOM *>( this );
17526     }
17527 
operator VkCopyCommandTransformInfoQCOM&VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17528     operator VkCopyCommandTransformInfoQCOM &() VULKAN_HPP_NOEXCEPT
17529     {
17530       return *reinterpret_cast<VkCopyCommandTransformInfoQCOM *>( this );
17531     }
17532 
17533 #if defined( VULKAN_HPP_USE_REFLECT )
17534 #  if 14 <= VULKAN_HPP_CPP_VERSION
17535     auto
17536 #  else
17537     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &>
17538 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17539       reflect() const VULKAN_HPP_NOEXCEPT
17540     {
17541       return std::tie( sType, pNext, transform );
17542     }
17543 #endif
17544 
17545 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17546     auto operator<=>( CopyCommandTransformInfoQCOM const & ) const = default;
17547 #else
operator ==VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17548     bool operator==( CopyCommandTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
17549     {
17550 #  if defined( VULKAN_HPP_USE_REFLECT )
17551       return this->reflect() == rhs.reflect();
17552 #  else
17553       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform );
17554 #  endif
17555     }
17556 
operator !=VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17557     bool operator!=( CopyCommandTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
17558     {
17559       return !operator==( rhs );
17560     }
17561 #endif
17562 
17563   public:
17564     VULKAN_HPP_NAMESPACE::StructureType               sType     = StructureType::eCopyCommandTransformInfoQCOM;
17565     const void *                                      pNext     = {};
17566     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
17567   };
17568 
17569   template <>
17570   struct CppType<StructureType, StructureType::eCopyCommandTransformInfoQCOM>
17571   {
17572     using Type = CopyCommandTransformInfoQCOM;
17573   };
17574 
17575   struct CopyDescriptorSet
17576   {
17577     using NativeType = VkCopyDescriptorSet;
17578 
17579     static const bool                                  allowDuplicate = false;
17580     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyDescriptorSet;
17581 
17582 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyDescriptorSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet17583     VULKAN_HPP_CONSTEXPR CopyDescriptorSet( VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_          = {},
17584                                             uint32_t                            srcBinding_      = {},
17585                                             uint32_t                            srcArrayElement_ = {},
17586                                             VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_          = {},
17587                                             uint32_t                            dstBinding_      = {},
17588                                             uint32_t                            dstArrayElement_ = {},
17589                                             uint32_t                            descriptorCount_ = {},
17590                                             const void *                        pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
17591       : pNext{ pNext_ }
17592       , srcSet{ srcSet_ }
17593       , srcBinding{ srcBinding_ }
17594       , srcArrayElement{ srcArrayElement_ }
17595       , dstSet{ dstSet_ }
17596       , dstBinding{ dstBinding_ }
17597       , dstArrayElement{ dstArrayElement_ }
17598       , descriptorCount{ descriptorCount_ }
17599     {
17600     }
17601 
17602     VULKAN_HPP_CONSTEXPR CopyDescriptorSet( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17603 
CopyDescriptorSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet17604     CopyDescriptorSet( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT : CopyDescriptorSet( *reinterpret_cast<CopyDescriptorSet const *>( &rhs ) ) {}
17605 
17606     CopyDescriptorSet & operator=( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17607 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17608 
operator =VULKAN_HPP_NAMESPACE::CopyDescriptorSet17609     CopyDescriptorSet & operator=( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
17610     {
17611       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyDescriptorSet const *>( &rhs );
17612       return *this;
17613     }
17614 
17615 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyDescriptorSet17616     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17617     {
17618       pNext = pNext_;
17619       return *this;
17620     }
17621 
setSrcSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet17622     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcSet( VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_ ) VULKAN_HPP_NOEXCEPT
17623     {
17624       srcSet = srcSet_;
17625       return *this;
17626     }
17627 
setSrcBindingVULKAN_HPP_NAMESPACE::CopyDescriptorSet17628     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcBinding( uint32_t srcBinding_ ) VULKAN_HPP_NOEXCEPT
17629     {
17630       srcBinding = srcBinding_;
17631       return *this;
17632     }
17633 
setSrcArrayElementVULKAN_HPP_NAMESPACE::CopyDescriptorSet17634     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcArrayElement( uint32_t srcArrayElement_ ) VULKAN_HPP_NOEXCEPT
17635     {
17636       srcArrayElement = srcArrayElement_;
17637       return *this;
17638     }
17639 
setDstSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet17640     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT
17641     {
17642       dstSet = dstSet_;
17643       return *this;
17644     }
17645 
setDstBindingVULKAN_HPP_NAMESPACE::CopyDescriptorSet17646     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
17647     {
17648       dstBinding = dstBinding_;
17649       return *this;
17650     }
17651 
setDstArrayElementVULKAN_HPP_NAMESPACE::CopyDescriptorSet17652     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
17653     {
17654       dstArrayElement = dstArrayElement_;
17655       return *this;
17656     }
17657 
setDescriptorCountVULKAN_HPP_NAMESPACE::CopyDescriptorSet17658     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
17659     {
17660       descriptorCount = descriptorCount_;
17661       return *this;
17662     }
17663 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17664 
operator VkCopyDescriptorSet const&VULKAN_HPP_NAMESPACE::CopyDescriptorSet17665     operator VkCopyDescriptorSet const &() const VULKAN_HPP_NOEXCEPT
17666     {
17667       return *reinterpret_cast<const VkCopyDescriptorSet *>( this );
17668     }
17669 
operator VkCopyDescriptorSet&VULKAN_HPP_NAMESPACE::CopyDescriptorSet17670     operator VkCopyDescriptorSet &() VULKAN_HPP_NOEXCEPT
17671     {
17672       return *reinterpret_cast<VkCopyDescriptorSet *>( this );
17673     }
17674 
17675 #if defined( VULKAN_HPP_USE_REFLECT )
17676 #  if 14 <= VULKAN_HPP_CPP_VERSION
17677     auto
17678 #  else
17679     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17680                const void * const &,
17681                VULKAN_HPP_NAMESPACE::DescriptorSet const &,
17682                uint32_t const &,
17683                uint32_t const &,
17684                VULKAN_HPP_NAMESPACE::DescriptorSet const &,
17685                uint32_t const &,
17686                uint32_t const &,
17687                uint32_t const &>
17688 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyDescriptorSet17689       reflect() const VULKAN_HPP_NOEXCEPT
17690     {
17691       return std::tie( sType, pNext, srcSet, srcBinding, srcArrayElement, dstSet, dstBinding, dstArrayElement, descriptorCount );
17692     }
17693 #endif
17694 
17695 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17696     auto operator<=>( CopyDescriptorSet const & ) const = default;
17697 #else
operator ==VULKAN_HPP_NAMESPACE::CopyDescriptorSet17698     bool operator==( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
17699     {
17700 #  if defined( VULKAN_HPP_USE_REFLECT )
17701       return this->reflect() == rhs.reflect();
17702 #  else
17703       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSet == rhs.srcSet ) && ( srcBinding == rhs.srcBinding ) &&
17704              ( srcArrayElement == rhs.srcArrayElement ) && ( dstSet == rhs.dstSet ) && ( dstBinding == rhs.dstBinding ) &&
17705              ( dstArrayElement == rhs.dstArrayElement ) && ( descriptorCount == rhs.descriptorCount );
17706 #  endif
17707     }
17708 
operator !=VULKAN_HPP_NAMESPACE::CopyDescriptorSet17709     bool operator!=( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
17710     {
17711       return !operator==( rhs );
17712     }
17713 #endif
17714 
17715   public:
17716     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eCopyDescriptorSet;
17717     const void *                        pNext           = {};
17718     VULKAN_HPP_NAMESPACE::DescriptorSet srcSet          = {};
17719     uint32_t                            srcBinding      = {};
17720     uint32_t                            srcArrayElement = {};
17721     VULKAN_HPP_NAMESPACE::DescriptorSet dstSet          = {};
17722     uint32_t                            dstBinding      = {};
17723     uint32_t                            dstArrayElement = {};
17724     uint32_t                            descriptorCount = {};
17725   };
17726 
17727   template <>
17728   struct CppType<StructureType, StructureType::eCopyDescriptorSet>
17729   {
17730     using Type = CopyDescriptorSet;
17731   };
17732 
17733   struct ImageCopy2
17734   {
17735     using NativeType = VkImageCopy2;
17736 
17737     static const bool                                  allowDuplicate = false;
17738     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCopy2;
17739 
17740 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCopy2VULKAN_HPP_NAMESPACE::ImageCopy217741     VULKAN_HPP_CONSTEXPR ImageCopy2( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
17742                                      VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
17743                                      VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
17744                                      VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
17745                                      VULKAN_HPP_NAMESPACE::Extent3D               extent_         = {},
17746                                      const void *                                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
17747       : pNext{ pNext_ }
17748       , srcSubresource{ srcSubresource_ }
17749       , srcOffset{ srcOffset_ }
17750       , dstSubresource{ dstSubresource_ }
17751       , dstOffset{ dstOffset_ }
17752       , extent{ extent_ }
17753     {
17754     }
17755 
17756     VULKAN_HPP_CONSTEXPR ImageCopy2( ImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17757 
ImageCopy2VULKAN_HPP_NAMESPACE::ImageCopy217758     ImageCopy2( VkImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCopy2( *reinterpret_cast<ImageCopy2 const *>( &rhs ) ) {}
17759 
17760     ImageCopy2 & operator=( ImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17761 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17762 
operator =VULKAN_HPP_NAMESPACE::ImageCopy217763     ImageCopy2 & operator=( VkImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
17764     {
17765       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCopy2 const *>( &rhs );
17766       return *this;
17767     }
17768 
17769 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCopy217770     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17771     {
17772       pNext = pNext_;
17773       return *this;
17774     }
17775 
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageCopy217776     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
17777     {
17778       srcSubresource = srcSubresource_;
17779       return *this;
17780     }
17781 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageCopy217782     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
17783     {
17784       srcOffset = srcOffset_;
17785       return *this;
17786     }
17787 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageCopy217788     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
17789     {
17790       dstSubresource = dstSubresource_;
17791       return *this;
17792     }
17793 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageCopy217794     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
17795     {
17796       dstOffset = dstOffset_;
17797       return *this;
17798     }
17799 
setExtentVULKAN_HPP_NAMESPACE::ImageCopy217800     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
17801     {
17802       extent = extent_;
17803       return *this;
17804     }
17805 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17806 
operator VkImageCopy2 const&VULKAN_HPP_NAMESPACE::ImageCopy217807     operator VkImageCopy2 const &() const VULKAN_HPP_NOEXCEPT
17808     {
17809       return *reinterpret_cast<const VkImageCopy2 *>( this );
17810     }
17811 
operator VkImageCopy2&VULKAN_HPP_NAMESPACE::ImageCopy217812     operator VkImageCopy2 &() VULKAN_HPP_NOEXCEPT
17813     {
17814       return *reinterpret_cast<VkImageCopy2 *>( this );
17815     }
17816 
17817 #if defined( VULKAN_HPP_USE_REFLECT )
17818 #  if 14 <= VULKAN_HPP_CPP_VERSION
17819     auto
17820 #  else
17821     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17822                const void * const &,
17823                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
17824                VULKAN_HPP_NAMESPACE::Offset3D const &,
17825                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
17826                VULKAN_HPP_NAMESPACE::Offset3D const &,
17827                VULKAN_HPP_NAMESPACE::Extent3D const &>
17828 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCopy217829       reflect() const VULKAN_HPP_NOEXCEPT
17830     {
17831       return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
17832     }
17833 #endif
17834 
17835 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17836     auto operator<=>( ImageCopy2 const & ) const = default;
17837 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCopy217838     bool operator==( ImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17839     {
17840 #  if defined( VULKAN_HPP_USE_REFLECT )
17841       return this->reflect() == rhs.reflect();
17842 #  else
17843       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) &&
17844              ( dstSubresource == rhs.dstSubresource ) && ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent );
17845 #  endif
17846     }
17847 
operator !=VULKAN_HPP_NAMESPACE::ImageCopy217848     bool operator!=( ImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17849     {
17850       return !operator==( rhs );
17851     }
17852 #endif
17853 
17854   public:
17855     VULKAN_HPP_NAMESPACE::StructureType          sType          = StructureType::eImageCopy2;
17856     const void *                                 pNext          = {};
17857     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
17858     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
17859     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
17860     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
17861     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
17862   };
17863 
17864   template <>
17865   struct CppType<StructureType, StructureType::eImageCopy2>
17866   {
17867     using Type = ImageCopy2;
17868   };
17869 
17870   using ImageCopy2KHR = ImageCopy2;
17871 
17872   struct CopyImageInfo2
17873   {
17874     using NativeType = VkCopyImageInfo2;
17875 
17876     static const bool                                  allowDuplicate = false;
17877     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyImageInfo2;
17878 
17879 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageInfo2VULKAN_HPP_NAMESPACE::CopyImageInfo217880     VULKAN_HPP_CONSTEXPR CopyImageInfo2( VULKAN_HPP_NAMESPACE::Image              srcImage_       = {},
17881                                          VULKAN_HPP_NAMESPACE::ImageLayout        srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
17882                                          VULKAN_HPP_NAMESPACE::Image              dstImage_       = {},
17883                                          VULKAN_HPP_NAMESPACE::ImageLayout        dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
17884                                          uint32_t                                 regionCount_    = {},
17885                                          const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_       = {},
17886                                          const void *                             pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
17887       : pNext{ pNext_ }
17888       , srcImage{ srcImage_ }
17889       , srcImageLayout{ srcImageLayout_ }
17890       , dstImage{ dstImage_ }
17891       , dstImageLayout{ dstImageLayout_ }
17892       , regionCount{ regionCount_ }
17893       , pRegions{ pRegions_ }
17894     {
17895     }
17896 
17897     VULKAN_HPP_CONSTEXPR CopyImageInfo2( CopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17898 
CopyImageInfo2VULKAN_HPP_NAMESPACE::CopyImageInfo217899     CopyImageInfo2( VkCopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : CopyImageInfo2( *reinterpret_cast<CopyImageInfo2 const *>( &rhs ) ) {}
17900 
17901 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageInfo2VULKAN_HPP_NAMESPACE::CopyImageInfo217902     CopyImageInfo2( VULKAN_HPP_NAMESPACE::Image                                                                   srcImage_,
17903                     VULKAN_HPP_NAMESPACE::ImageLayout                                                             srcImageLayout_,
17904                     VULKAN_HPP_NAMESPACE::Image                                                                   dstImage_,
17905                     VULKAN_HPP_NAMESPACE::ImageLayout                                                             dstImageLayout_,
17906                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2> const & regions_,
17907                     const void *                                                                                  pNext_ = nullptr )
17908       : pNext( pNext_ )
17909       , srcImage( srcImage_ )
17910       , srcImageLayout( srcImageLayout_ )
17911       , dstImage( dstImage_ )
17912       , dstImageLayout( dstImageLayout_ )
17913       , regionCount( static_cast<uint32_t>( regions_.size() ) )
17914       , pRegions( regions_.data() )
17915     {
17916     }
17917 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17918 
17919     CopyImageInfo2 & operator=( CopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17920 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17921 
operator =VULKAN_HPP_NAMESPACE::CopyImageInfo217922     CopyImageInfo2 & operator=( VkCopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
17923     {
17924       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageInfo2 const *>( &rhs );
17925       return *this;
17926     }
17927 
17928 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageInfo217929     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17930     {
17931       pNext = pNext_;
17932       return *this;
17933     }
17934 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageInfo217935     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
17936     {
17937       srcImage = srcImage_;
17938       return *this;
17939     }
17940 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageInfo217941     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
17942     {
17943       srcImageLayout = srcImageLayout_;
17944       return *this;
17945     }
17946 
setDstImageVULKAN_HPP_NAMESPACE::CopyImageInfo217947     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
17948     {
17949       dstImage = dstImage_;
17950       return *this;
17951     }
17952 
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyImageInfo217953     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
17954     {
17955       dstImageLayout = dstImageLayout_;
17956       return *this;
17957     }
17958 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageInfo217959     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
17960     {
17961       regionCount = regionCount_;
17962       return *this;
17963     }
17964 
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageInfo217965     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
17966     {
17967       pRegions = pRegions_;
17968       return *this;
17969     }
17970 
17971 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyImageInfo217972     CopyImageInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
17973     {
17974       regionCount = static_cast<uint32_t>( regions_.size() );
17975       pRegions    = regions_.data();
17976       return *this;
17977     }
17978 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17979 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17980 
operator VkCopyImageInfo2 const&VULKAN_HPP_NAMESPACE::CopyImageInfo217981     operator VkCopyImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
17982     {
17983       return *reinterpret_cast<const VkCopyImageInfo2 *>( this );
17984     }
17985 
operator VkCopyImageInfo2&VULKAN_HPP_NAMESPACE::CopyImageInfo217986     operator VkCopyImageInfo2 &() VULKAN_HPP_NOEXCEPT
17987     {
17988       return *reinterpret_cast<VkCopyImageInfo2 *>( this );
17989     }
17990 
17991 #if defined( VULKAN_HPP_USE_REFLECT )
17992 #  if 14 <= VULKAN_HPP_CPP_VERSION
17993     auto
17994 #  else
17995     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17996                const void * const &,
17997                VULKAN_HPP_NAMESPACE::Image const &,
17998                VULKAN_HPP_NAMESPACE::ImageLayout const &,
17999                VULKAN_HPP_NAMESPACE::Image const &,
18000                VULKAN_HPP_NAMESPACE::ImageLayout const &,
18001                uint32_t const &,
18002                const VULKAN_HPP_NAMESPACE::ImageCopy2 * const &>
18003 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyImageInfo218004       reflect() const VULKAN_HPP_NOEXCEPT
18005     {
18006       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions );
18007     }
18008 #endif
18009 
18010 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18011     auto operator<=>( CopyImageInfo2 const & ) const = default;
18012 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageInfo218013     bool operator==( CopyImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
18014     {
18015 #  if defined( VULKAN_HPP_USE_REFLECT )
18016       return this->reflect() == rhs.reflect();
18017 #  else
18018       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) &&
18019              ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
18020 #  endif
18021     }
18022 
operator !=VULKAN_HPP_NAMESPACE::CopyImageInfo218023     bool operator!=( CopyImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
18024     {
18025       return !operator==( rhs );
18026     }
18027 #endif
18028 
18029   public:
18030     VULKAN_HPP_NAMESPACE::StructureType      sType          = StructureType::eCopyImageInfo2;
18031     const void *                             pNext          = {};
18032     VULKAN_HPP_NAMESPACE::Image              srcImage       = {};
18033     VULKAN_HPP_NAMESPACE::ImageLayout        srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
18034     VULKAN_HPP_NAMESPACE::Image              dstImage       = {};
18035     VULKAN_HPP_NAMESPACE::ImageLayout        dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
18036     uint32_t                                 regionCount    = {};
18037     const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions       = {};
18038   };
18039 
18040   template <>
18041   struct CppType<StructureType, StructureType::eCopyImageInfo2>
18042   {
18043     using Type = CopyImageInfo2;
18044   };
18045 
18046   using CopyImageInfo2KHR = CopyImageInfo2;
18047 
18048   struct CopyImageToBufferInfo2
18049   {
18050     using NativeType = VkCopyImageToBufferInfo2;
18051 
18052     static const bool                                  allowDuplicate = false;
18053     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyImageToBufferInfo2;
18054 
18055 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageToBufferInfo2VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218056     VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2( VULKAN_HPP_NAMESPACE::Image                    srcImage_       = {},
18057                                                  VULKAN_HPP_NAMESPACE::ImageLayout              srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
18058                                                  VULKAN_HPP_NAMESPACE::Buffer                   dstBuffer_      = {},
18059                                                  uint32_t                                       regionCount_    = {},
18060                                                  const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_       = {},
18061                                                  const void *                                   pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
18062       : pNext{ pNext_ }
18063       , srcImage{ srcImage_ }
18064       , srcImageLayout{ srcImageLayout_ }
18065       , dstBuffer{ dstBuffer_ }
18066       , regionCount{ regionCount_ }
18067       , pRegions{ pRegions_ }
18068     {
18069     }
18070 
18071     VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2( CopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18072 
CopyImageToBufferInfo2VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218073     CopyImageToBufferInfo2( VkCopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
18074       : CopyImageToBufferInfo2( *reinterpret_cast<CopyImageToBufferInfo2 const *>( &rhs ) )
18075     {
18076     }
18077 
18078 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageToBufferInfo2VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218079     CopyImageToBufferInfo2( VULKAN_HPP_NAMESPACE::Image                                                                         srcImage_,
18080                             VULKAN_HPP_NAMESPACE::ImageLayout                                                                   srcImageLayout_,
18081                             VULKAN_HPP_NAMESPACE::Buffer                                                                        dstBuffer_,
18082                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_,
18083                             const void *                                                                                        pNext_ = nullptr )
18084       : pNext( pNext_ )
18085       , srcImage( srcImage_ )
18086       , srcImageLayout( srcImageLayout_ )
18087       , dstBuffer( dstBuffer_ )
18088       , regionCount( static_cast<uint32_t>( regions_.size() ) )
18089       , pRegions( regions_.data() )
18090     {
18091     }
18092 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18093 
18094     CopyImageToBufferInfo2 & operator=( CopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18095 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18096 
operator =VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218097     CopyImageToBufferInfo2 & operator=( VkCopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
18098     {
18099       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 const *>( &rhs );
18100       return *this;
18101     }
18102 
18103 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218104     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18105     {
18106       pNext = pNext_;
18107       return *this;
18108     }
18109 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218110     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
18111     {
18112       srcImage = srcImage_;
18113       return *this;
18114     }
18115 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218116     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
18117     {
18118       srcImageLayout = srcImageLayout_;
18119       return *this;
18120     }
18121 
setDstBufferVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218122     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT
18123     {
18124       dstBuffer = dstBuffer_;
18125       return *this;
18126     }
18127 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218128     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
18129     {
18130       regionCount = regionCount_;
18131       return *this;
18132     }
18133 
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218134     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
18135     {
18136       pRegions = pRegions_;
18137       return *this;
18138     }
18139 
18140 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
18141     CopyImageToBufferInfo2 &
setRegionsVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218142       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
18143     {
18144       regionCount = static_cast<uint32_t>( regions_.size() );
18145       pRegions    = regions_.data();
18146       return *this;
18147     }
18148 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18149 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18150 
operator VkCopyImageToBufferInfo2 const&VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218151     operator VkCopyImageToBufferInfo2 const &() const VULKAN_HPP_NOEXCEPT
18152     {
18153       return *reinterpret_cast<const VkCopyImageToBufferInfo2 *>( this );
18154     }
18155 
operator VkCopyImageToBufferInfo2&VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218156     operator VkCopyImageToBufferInfo2 &() VULKAN_HPP_NOEXCEPT
18157     {
18158       return *reinterpret_cast<VkCopyImageToBufferInfo2 *>( this );
18159     }
18160 
18161 #if defined( VULKAN_HPP_USE_REFLECT )
18162 #  if 14 <= VULKAN_HPP_CPP_VERSION
18163     auto
18164 #  else
18165     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18166                const void * const &,
18167                VULKAN_HPP_NAMESPACE::Image const &,
18168                VULKAN_HPP_NAMESPACE::ImageLayout const &,
18169                VULKAN_HPP_NAMESPACE::Buffer const &,
18170                uint32_t const &,
18171                const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * const &>
18172 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218173       reflect() const VULKAN_HPP_NOEXCEPT
18174     {
18175       return std::tie( sType, pNext, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions );
18176     }
18177 #endif
18178 
18179 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18180     auto operator<=>( CopyImageToBufferInfo2 const & ) const = default;
18181 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218182     bool operator==( CopyImageToBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
18183     {
18184 #  if defined( VULKAN_HPP_USE_REFLECT )
18185       return this->reflect() == rhs.reflect();
18186 #  else
18187       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) &&
18188              ( dstBuffer == rhs.dstBuffer ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
18189 #  endif
18190     }
18191 
operator !=VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo218192     bool operator!=( CopyImageToBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
18193     {
18194       return !operator==( rhs );
18195     }
18196 #endif
18197 
18198   public:
18199     VULKAN_HPP_NAMESPACE::StructureType            sType          = StructureType::eCopyImageToBufferInfo2;
18200     const void *                                   pNext          = {};
18201     VULKAN_HPP_NAMESPACE::Image                    srcImage       = {};
18202     VULKAN_HPP_NAMESPACE::ImageLayout              srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
18203     VULKAN_HPP_NAMESPACE::Buffer                   dstBuffer      = {};
18204     uint32_t                                       regionCount    = {};
18205     const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions       = {};
18206   };
18207 
18208   template <>
18209   struct CppType<StructureType, StructureType::eCopyImageToBufferInfo2>
18210   {
18211     using Type = CopyImageToBufferInfo2;
18212   };
18213 
18214   using CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2;
18215 
18216   struct CopyImageToImageInfo
18217   {
18218     using NativeType = VkCopyImageToImageInfo;
18219 
18220     static const bool                                  allowDuplicate = false;
18221     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyImageToImageInfo;
18222 
18223 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageToImageInfoVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18224     VULKAN_HPP_CONSTEXPR CopyImageToImageInfo( VULKAN_HPP_NAMESPACE::HostImageCopyFlags flags_          = {},
18225                                                VULKAN_HPP_NAMESPACE::Image              srcImage_       = {},
18226                                                VULKAN_HPP_NAMESPACE::ImageLayout        srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
18227                                                VULKAN_HPP_NAMESPACE::Image              dstImage_       = {},
18228                                                VULKAN_HPP_NAMESPACE::ImageLayout        dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
18229                                                uint32_t                                 regionCount_    = {},
18230                                                const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_       = {},
18231                                                const void *                             pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
18232       : pNext{ pNext_ }
18233       , flags{ flags_ }
18234       , srcImage{ srcImage_ }
18235       , srcImageLayout{ srcImageLayout_ }
18236       , dstImage{ dstImage_ }
18237       , dstImageLayout{ dstImageLayout_ }
18238       , regionCount{ regionCount_ }
18239       , pRegions{ pRegions_ }
18240     {
18241     }
18242 
18243     VULKAN_HPP_CONSTEXPR CopyImageToImageInfo( CopyImageToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18244 
CopyImageToImageInfoVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18245     CopyImageToImageInfo( VkCopyImageToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
18246       : CopyImageToImageInfo( *reinterpret_cast<CopyImageToImageInfo const *>( &rhs ) )
18247     {
18248     }
18249 
18250 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageToImageInfoVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18251     CopyImageToImageInfo( VULKAN_HPP_NAMESPACE::HostImageCopyFlags                                                      flags_,
18252                           VULKAN_HPP_NAMESPACE::Image                                                                   srcImage_,
18253                           VULKAN_HPP_NAMESPACE::ImageLayout                                                             srcImageLayout_,
18254                           VULKAN_HPP_NAMESPACE::Image                                                                   dstImage_,
18255                           VULKAN_HPP_NAMESPACE::ImageLayout                                                             dstImageLayout_,
18256                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2> const & regions_,
18257                           const void *                                                                                  pNext_ = nullptr )
18258       : pNext( pNext_ )
18259       , flags( flags_ )
18260       , srcImage( srcImage_ )
18261       , srcImageLayout( srcImageLayout_ )
18262       , dstImage( dstImage_ )
18263       , dstImageLayout( dstImageLayout_ )
18264       , regionCount( static_cast<uint32_t>( regions_.size() ) )
18265       , pRegions( regions_.data() )
18266     {
18267     }
18268 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18269 
18270     CopyImageToImageInfo & operator=( CopyImageToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18271 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18272 
operator =VULKAN_HPP_NAMESPACE::CopyImageToImageInfo18273     CopyImageToImageInfo & operator=( VkCopyImageToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
18274     {
18275       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageToImageInfo const *>( &rhs );
18276       return *this;
18277     }
18278 
18279 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18280     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18281     {
18282       pNext = pNext_;
18283       return *this;
18284     }
18285 
setFlagsVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18286     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setFlags( VULKAN_HPP_NAMESPACE::HostImageCopyFlags flags_ ) VULKAN_HPP_NOEXCEPT
18287     {
18288       flags = flags_;
18289       return *this;
18290     }
18291 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18292     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
18293     {
18294       srcImage = srcImage_;
18295       return *this;
18296     }
18297 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18298     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
18299     {
18300       srcImageLayout = srcImageLayout_;
18301       return *this;
18302     }
18303 
setDstImageVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18304     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
18305     {
18306       dstImage = dstImage_;
18307       return *this;
18308     }
18309 
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18310     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
18311     {
18312       dstImageLayout = dstImageLayout_;
18313       return *this;
18314     }
18315 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18316     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
18317     {
18318       regionCount = regionCount_;
18319       return *this;
18320     }
18321 
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18322     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setPRegions( const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
18323     {
18324       pRegions = pRegions_;
18325       return *this;
18326     }
18327 
18328 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
18329     CopyImageToImageInfo &
setRegionsVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18330       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
18331     {
18332       regionCount = static_cast<uint32_t>( regions_.size() );
18333       pRegions    = regions_.data();
18334       return *this;
18335     }
18336 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18337 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18338 
operator VkCopyImageToImageInfo const&VULKAN_HPP_NAMESPACE::CopyImageToImageInfo18339     operator VkCopyImageToImageInfo const &() const VULKAN_HPP_NOEXCEPT
18340     {
18341       return *reinterpret_cast<const VkCopyImageToImageInfo *>( this );
18342     }
18343 
operator VkCopyImageToImageInfo&VULKAN_HPP_NAMESPACE::CopyImageToImageInfo18344     operator VkCopyImageToImageInfo &() VULKAN_HPP_NOEXCEPT
18345     {
18346       return *reinterpret_cast<VkCopyImageToImageInfo *>( this );
18347     }
18348 
18349 #if defined( VULKAN_HPP_USE_REFLECT )
18350 #  if 14 <= VULKAN_HPP_CPP_VERSION
18351     auto
18352 #  else
18353     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18354                const void * const &,
18355                VULKAN_HPP_NAMESPACE::HostImageCopyFlags const &,
18356                VULKAN_HPP_NAMESPACE::Image const &,
18357                VULKAN_HPP_NAMESPACE::ImageLayout const &,
18358                VULKAN_HPP_NAMESPACE::Image const &,
18359                VULKAN_HPP_NAMESPACE::ImageLayout const &,
18360                uint32_t const &,
18361                const VULKAN_HPP_NAMESPACE::ImageCopy2 * const &>
18362 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyImageToImageInfo18363       reflect() const VULKAN_HPP_NOEXCEPT
18364     {
18365       return std::tie( sType, pNext, flags, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions );
18366     }
18367 #endif
18368 
18369 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18370     auto operator<=>( CopyImageToImageInfo const & ) const = default;
18371 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageToImageInfo18372     bool operator==( CopyImageToImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
18373     {
18374 #  if defined( VULKAN_HPP_USE_REFLECT )
18375       return this->reflect() == rhs.reflect();
18376 #  else
18377       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( srcImage == rhs.srcImage ) &&
18378              ( srcImageLayout == rhs.srcImageLayout ) && ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) &&
18379              ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
18380 #  endif
18381     }
18382 
operator !=VULKAN_HPP_NAMESPACE::CopyImageToImageInfo18383     bool operator!=( CopyImageToImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
18384     {
18385       return !operator==( rhs );
18386     }
18387 #endif
18388 
18389   public:
18390     VULKAN_HPP_NAMESPACE::StructureType      sType          = StructureType::eCopyImageToImageInfo;
18391     const void *                             pNext          = {};
18392     VULKAN_HPP_NAMESPACE::HostImageCopyFlags flags          = {};
18393     VULKAN_HPP_NAMESPACE::Image              srcImage       = {};
18394     VULKAN_HPP_NAMESPACE::ImageLayout        srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
18395     VULKAN_HPP_NAMESPACE::Image              dstImage       = {};
18396     VULKAN_HPP_NAMESPACE::ImageLayout        dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
18397     uint32_t                                 regionCount    = {};
18398     const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions       = {};
18399   };
18400 
18401   template <>
18402   struct CppType<StructureType, StructureType::eCopyImageToImageInfo>
18403   {
18404     using Type = CopyImageToImageInfo;
18405   };
18406 
18407   using CopyImageToImageInfoEXT = CopyImageToImageInfo;
18408 
18409   struct ImageToMemoryCopy
18410   {
18411     using NativeType = VkImageToMemoryCopy;
18412 
18413     static const bool                                  allowDuplicate = false;
18414     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageToMemoryCopy;
18415 
18416 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageToMemoryCopyVULKAN_HPP_NAMESPACE::ImageToMemoryCopy18417     VULKAN_HPP_CONSTEXPR ImageToMemoryCopy( void *                                       pHostPointer_      = {},
18418                                             uint32_t                                     memoryRowLength_   = {},
18419                                             uint32_t                                     memoryImageHeight_ = {},
18420                                             VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
18421                                             VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
18422                                             VULKAN_HPP_NAMESPACE::Extent3D               imageExtent_       = {},
18423                                             const void *                                 pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
18424       : pNext{ pNext_ }
18425       , pHostPointer{ pHostPointer_ }
18426       , memoryRowLength{ memoryRowLength_ }
18427       , memoryImageHeight{ memoryImageHeight_ }
18428       , imageSubresource{ imageSubresource_ }
18429       , imageOffset{ imageOffset_ }
18430       , imageExtent{ imageExtent_ }
18431     {
18432     }
18433 
18434     VULKAN_HPP_CONSTEXPR ImageToMemoryCopy( ImageToMemoryCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18435 
ImageToMemoryCopyVULKAN_HPP_NAMESPACE::ImageToMemoryCopy18436     ImageToMemoryCopy( VkImageToMemoryCopy const & rhs ) VULKAN_HPP_NOEXCEPT : ImageToMemoryCopy( *reinterpret_cast<ImageToMemoryCopy const *>( &rhs ) ) {}
18437 
18438     ImageToMemoryCopy & operator=( ImageToMemoryCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18439 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18440 
operator =VULKAN_HPP_NAMESPACE::ImageToMemoryCopy18441     ImageToMemoryCopy & operator=( VkImageToMemoryCopy const & rhs ) VULKAN_HPP_NOEXCEPT
18442     {
18443       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageToMemoryCopy const *>( &rhs );
18444       return *this;
18445     }
18446 
18447 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageToMemoryCopy18448     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18449     {
18450       pNext = pNext_;
18451       return *this;
18452     }
18453 
setPHostPointerVULKAN_HPP_NAMESPACE::ImageToMemoryCopy18454     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setPHostPointer( void * pHostPointer_ ) VULKAN_HPP_NOEXCEPT
18455     {
18456       pHostPointer = pHostPointer_;
18457       return *this;
18458     }
18459 
setMemoryRowLengthVULKAN_HPP_NAMESPACE::ImageToMemoryCopy18460     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setMemoryRowLength( uint32_t memoryRowLength_ ) VULKAN_HPP_NOEXCEPT
18461     {
18462       memoryRowLength = memoryRowLength_;
18463       return *this;
18464     }
18465 
setMemoryImageHeightVULKAN_HPP_NAMESPACE::ImageToMemoryCopy18466     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setMemoryImageHeight( uint32_t memoryImageHeight_ ) VULKAN_HPP_NOEXCEPT
18467     {
18468       memoryImageHeight = memoryImageHeight_;
18469       return *this;
18470     }
18471 
18472     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy &
setImageSubresourceVULKAN_HPP_NAMESPACE::ImageToMemoryCopy18473       setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
18474     {
18475       imageSubresource = imageSubresource_;
18476       return *this;
18477     }
18478 
setImageOffsetVULKAN_HPP_NAMESPACE::ImageToMemoryCopy18479     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
18480     {
18481       imageOffset = imageOffset_;
18482       return *this;
18483     }
18484 
setImageExtentVULKAN_HPP_NAMESPACE::ImageToMemoryCopy18485     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
18486     {
18487       imageExtent = imageExtent_;
18488       return *this;
18489     }
18490 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18491 
operator VkImageToMemoryCopy const&VULKAN_HPP_NAMESPACE::ImageToMemoryCopy18492     operator VkImageToMemoryCopy const &() const VULKAN_HPP_NOEXCEPT
18493     {
18494       return *reinterpret_cast<const VkImageToMemoryCopy *>( this );
18495     }
18496 
operator VkImageToMemoryCopy&VULKAN_HPP_NAMESPACE::ImageToMemoryCopy18497     operator VkImageToMemoryCopy &() VULKAN_HPP_NOEXCEPT
18498     {
18499       return *reinterpret_cast<VkImageToMemoryCopy *>( this );
18500     }
18501 
18502 #if defined( VULKAN_HPP_USE_REFLECT )
18503 #  if 14 <= VULKAN_HPP_CPP_VERSION
18504     auto
18505 #  else
18506     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18507                const void * const &,
18508                void * const &,
18509                uint32_t const &,
18510                uint32_t const &,
18511                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
18512                VULKAN_HPP_NAMESPACE::Offset3D const &,
18513                VULKAN_HPP_NAMESPACE::Extent3D const &>
18514 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageToMemoryCopy18515       reflect() const VULKAN_HPP_NOEXCEPT
18516     {
18517       return std::tie( sType, pNext, pHostPointer, memoryRowLength, memoryImageHeight, imageSubresource, imageOffset, imageExtent );
18518     }
18519 #endif
18520 
18521 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18522     auto operator<=>( ImageToMemoryCopy const & ) const = default;
18523 #else
operator ==VULKAN_HPP_NAMESPACE::ImageToMemoryCopy18524     bool operator==( ImageToMemoryCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
18525     {
18526 #  if defined( VULKAN_HPP_USE_REFLECT )
18527       return this->reflect() == rhs.reflect();
18528 #  else
18529       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pHostPointer == rhs.pHostPointer ) && ( memoryRowLength == rhs.memoryRowLength ) &&
18530              ( memoryImageHeight == rhs.memoryImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) &&
18531              ( imageExtent == rhs.imageExtent );
18532 #  endif
18533     }
18534 
operator !=VULKAN_HPP_NAMESPACE::ImageToMemoryCopy18535     bool operator!=( ImageToMemoryCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
18536     {
18537       return !operator==( rhs );
18538     }
18539 #endif
18540 
18541   public:
18542     VULKAN_HPP_NAMESPACE::StructureType          sType             = StructureType::eImageToMemoryCopy;
18543     const void *                                 pNext             = {};
18544     void *                                       pHostPointer      = {};
18545     uint32_t                                     memoryRowLength   = {};
18546     uint32_t                                     memoryImageHeight = {};
18547     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
18548     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
18549     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
18550   };
18551 
18552   template <>
18553   struct CppType<StructureType, StructureType::eImageToMemoryCopy>
18554   {
18555     using Type = ImageToMemoryCopy;
18556   };
18557 
18558   using ImageToMemoryCopyEXT = ImageToMemoryCopy;
18559 
18560   struct CopyImageToMemoryInfo
18561   {
18562     using NativeType = VkCopyImageToMemoryInfo;
18563 
18564     static const bool                                  allowDuplicate = false;
18565     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyImageToMemoryInfo;
18566 
18567 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageToMemoryInfoVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18568     VULKAN_HPP_CONSTEXPR CopyImageToMemoryInfo( VULKAN_HPP_NAMESPACE::HostImageCopyFlags        flags_          = {},
18569                                                 VULKAN_HPP_NAMESPACE::Image                     srcImage_       = {},
18570                                                 VULKAN_HPP_NAMESPACE::ImageLayout               srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
18571                                                 uint32_t                                        regionCount_    = {},
18572                                                 const VULKAN_HPP_NAMESPACE::ImageToMemoryCopy * pRegions_       = {},
18573                                                 const void *                                    pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
18574       : pNext{ pNext_ }
18575       , flags{ flags_ }
18576       , srcImage{ srcImage_ }
18577       , srcImageLayout{ srcImageLayout_ }
18578       , regionCount{ regionCount_ }
18579       , pRegions{ pRegions_ }
18580     {
18581     }
18582 
18583     VULKAN_HPP_CONSTEXPR CopyImageToMemoryInfo( CopyImageToMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18584 
CopyImageToMemoryInfoVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18585     CopyImageToMemoryInfo( VkCopyImageToMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
18586       : CopyImageToMemoryInfo( *reinterpret_cast<CopyImageToMemoryInfo const *>( &rhs ) )
18587     {
18588     }
18589 
18590 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageToMemoryInfoVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18591     CopyImageToMemoryInfo( VULKAN_HPP_NAMESPACE::HostImageCopyFlags                                                             flags_,
18592                            VULKAN_HPP_NAMESPACE::Image                                                                          srcImage_,
18593                            VULKAN_HPP_NAMESPACE::ImageLayout                                                                    srcImageLayout_,
18594                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageToMemoryCopy> const & regions_,
18595                            const void *                                                                                         pNext_ = nullptr )
18596       : pNext( pNext_ )
18597       , flags( flags_ )
18598       , srcImage( srcImage_ )
18599       , srcImageLayout( srcImageLayout_ )
18600       , regionCount( static_cast<uint32_t>( regions_.size() ) )
18601       , pRegions( regions_.data() )
18602     {
18603     }
18604 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18605 
18606     CopyImageToMemoryInfo & operator=( CopyImageToMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18607 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18608 
operator =VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18609     CopyImageToMemoryInfo & operator=( VkCopyImageToMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
18610     {
18611       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo const *>( &rhs );
18612       return *this;
18613     }
18614 
18615 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18616     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18617     {
18618       pNext = pNext_;
18619       return *this;
18620     }
18621 
setFlagsVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18622     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setFlags( VULKAN_HPP_NAMESPACE::HostImageCopyFlags flags_ ) VULKAN_HPP_NOEXCEPT
18623     {
18624       flags = flags_;
18625       return *this;
18626     }
18627 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18628     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
18629     {
18630       srcImage = srcImage_;
18631       return *this;
18632     }
18633 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18634     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
18635     {
18636       srcImageLayout = srcImageLayout_;
18637       return *this;
18638     }
18639 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18640     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
18641     {
18642       regionCount = regionCount_;
18643       return *this;
18644     }
18645 
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18646     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setPRegions( const VULKAN_HPP_NAMESPACE::ImageToMemoryCopy * pRegions_ ) VULKAN_HPP_NOEXCEPT
18647     {
18648       pRegions = pRegions_;
18649       return *this;
18650     }
18651 
18652 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
18653     CopyImageToMemoryInfo &
setRegionsVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18654       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageToMemoryCopy> const & regions_ ) VULKAN_HPP_NOEXCEPT
18655     {
18656       regionCount = static_cast<uint32_t>( regions_.size() );
18657       pRegions    = regions_.data();
18658       return *this;
18659     }
18660 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18661 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18662 
operator VkCopyImageToMemoryInfo const&VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18663     operator VkCopyImageToMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
18664     {
18665       return *reinterpret_cast<const VkCopyImageToMemoryInfo *>( this );
18666     }
18667 
operator VkCopyImageToMemoryInfo&VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18668     operator VkCopyImageToMemoryInfo &() VULKAN_HPP_NOEXCEPT
18669     {
18670       return *reinterpret_cast<VkCopyImageToMemoryInfo *>( this );
18671     }
18672 
18673 #if defined( VULKAN_HPP_USE_REFLECT )
18674 #  if 14 <= VULKAN_HPP_CPP_VERSION
18675     auto
18676 #  else
18677     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18678                const void * const &,
18679                VULKAN_HPP_NAMESPACE::HostImageCopyFlags const &,
18680                VULKAN_HPP_NAMESPACE::Image const &,
18681                VULKAN_HPP_NAMESPACE::ImageLayout const &,
18682                uint32_t const &,
18683                const VULKAN_HPP_NAMESPACE::ImageToMemoryCopy * const &>
18684 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18685       reflect() const VULKAN_HPP_NOEXCEPT
18686     {
18687       return std::tie( sType, pNext, flags, srcImage, srcImageLayout, regionCount, pRegions );
18688     }
18689 #endif
18690 
18691 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18692     auto operator<=>( CopyImageToMemoryInfo const & ) const = default;
18693 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18694     bool operator==( CopyImageToMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
18695     {
18696 #  if defined( VULKAN_HPP_USE_REFLECT )
18697       return this->reflect() == rhs.reflect();
18698 #  else
18699       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( srcImage == rhs.srcImage ) &&
18700              ( srcImageLayout == rhs.srcImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
18701 #  endif
18702     }
18703 
operator !=VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo18704     bool operator!=( CopyImageToMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
18705     {
18706       return !operator==( rhs );
18707     }
18708 #endif
18709 
18710   public:
18711     VULKAN_HPP_NAMESPACE::StructureType             sType          = StructureType::eCopyImageToMemoryInfo;
18712     const void *                                    pNext          = {};
18713     VULKAN_HPP_NAMESPACE::HostImageCopyFlags        flags          = {};
18714     VULKAN_HPP_NAMESPACE::Image                     srcImage       = {};
18715     VULKAN_HPP_NAMESPACE::ImageLayout               srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
18716     uint32_t                                        regionCount    = {};
18717     const VULKAN_HPP_NAMESPACE::ImageToMemoryCopy * pRegions       = {};
18718   };
18719 
18720   template <>
18721   struct CppType<StructureType, StructureType::eCopyImageToMemoryInfo>
18722   {
18723     using Type = CopyImageToMemoryInfo;
18724   };
18725 
18726   using CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo;
18727 
18728   struct CopyMemoryIndirectCommandNV
18729   {
18730     using NativeType = VkCopyMemoryIndirectCommandNV;
18731 
18732 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryIndirectCommandNVVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18733     VULKAN_HPP_CONSTEXPR CopyMemoryIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress srcAddress_ = {},
18734                                                       VULKAN_HPP_NAMESPACE::DeviceAddress dstAddress_ = {},
18735                                                       VULKAN_HPP_NAMESPACE::DeviceSize    size_       = {} ) VULKAN_HPP_NOEXCEPT
18736       : srcAddress{ srcAddress_ }
18737       , dstAddress{ dstAddress_ }
18738       , size{ size_ }
18739     {
18740     }
18741 
18742     VULKAN_HPP_CONSTEXPR CopyMemoryIndirectCommandNV( CopyMemoryIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18743 
CopyMemoryIndirectCommandNVVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18744     CopyMemoryIndirectCommandNV( VkCopyMemoryIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
18745       : CopyMemoryIndirectCommandNV( *reinterpret_cast<CopyMemoryIndirectCommandNV const *>( &rhs ) )
18746     {
18747     }
18748 
18749     CopyMemoryIndirectCommandNV & operator=( CopyMemoryIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18750 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18751 
operator =VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18752     CopyMemoryIndirectCommandNV & operator=( VkCopyMemoryIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
18753     {
18754       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV const *>( &rhs );
18755       return *this;
18756     }
18757 
18758 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcAddressVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18759     VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandNV & setSrcAddress( VULKAN_HPP_NAMESPACE::DeviceAddress srcAddress_ ) VULKAN_HPP_NOEXCEPT
18760     {
18761       srcAddress = srcAddress_;
18762       return *this;
18763     }
18764 
setDstAddressVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18765     VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandNV & setDstAddress( VULKAN_HPP_NAMESPACE::DeviceAddress dstAddress_ ) VULKAN_HPP_NOEXCEPT
18766     {
18767       dstAddress = dstAddress_;
18768       return *this;
18769     }
18770 
setSizeVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18771     VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandNV & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
18772     {
18773       size = size_;
18774       return *this;
18775     }
18776 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18777 
operator VkCopyMemoryIndirectCommandNV const&VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18778     operator VkCopyMemoryIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
18779     {
18780       return *reinterpret_cast<const VkCopyMemoryIndirectCommandNV *>( this );
18781     }
18782 
operator VkCopyMemoryIndirectCommandNV&VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18783     operator VkCopyMemoryIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
18784     {
18785       return *reinterpret_cast<VkCopyMemoryIndirectCommandNV *>( this );
18786     }
18787 
18788 #if defined( VULKAN_HPP_USE_REFLECT )
18789 #  if 14 <= VULKAN_HPP_CPP_VERSION
18790     auto
18791 #  else
18792     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, VULKAN_HPP_NAMESPACE::DeviceAddress const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
18793 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18794       reflect() const VULKAN_HPP_NOEXCEPT
18795     {
18796       return std::tie( srcAddress, dstAddress, size );
18797     }
18798 #endif
18799 
18800 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18801     auto operator<=>( CopyMemoryIndirectCommandNV const & ) const = default;
18802 #else
operator ==VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18803     bool operator==( CopyMemoryIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18804     {
18805 #  if defined( VULKAN_HPP_USE_REFLECT )
18806       return this->reflect() == rhs.reflect();
18807 #  else
18808       return ( srcAddress == rhs.srcAddress ) && ( dstAddress == rhs.dstAddress ) && ( size == rhs.size );
18809 #  endif
18810     }
18811 
operator !=VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18812     bool operator!=( CopyMemoryIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18813     {
18814       return !operator==( rhs );
18815     }
18816 #endif
18817 
18818   public:
18819     VULKAN_HPP_NAMESPACE::DeviceAddress srcAddress = {};
18820     VULKAN_HPP_NAMESPACE::DeviceAddress dstAddress = {};
18821     VULKAN_HPP_NAMESPACE::DeviceSize    size       = {};
18822   };
18823 
18824   struct CopyMemoryToAccelerationStructureInfoKHR
18825   {
18826     using NativeType = VkCopyMemoryToAccelerationStructureInfoKHR;
18827 
18828     static const bool                                  allowDuplicate = false;
18829     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyMemoryToAccelerationStructureInfoKHR;
18830 
18831 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryToAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18832     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR(
18833       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      src_   = {},
18834       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst_   = {},
18835       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone,
18836       const void *                                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
18837       : pNext{ pNext_ }
18838       , src{ src_ }
18839       , dst{ dst_ }
18840       , mode{ mode_ }
18841     {
18842     }
18843 
18844     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18845 
CopyMemoryToAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18846     CopyMemoryToAccelerationStructureInfoKHR( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
18847       : CopyMemoryToAccelerationStructureInfoKHR( *reinterpret_cast<CopyMemoryToAccelerationStructureInfoKHR const *>( &rhs ) )
18848     {
18849     }
18850 
18851     CopyMemoryToAccelerationStructureInfoKHR & operator=( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18852 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18853 
operator =VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18854     CopyMemoryToAccelerationStructureInfoKHR & operator=( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
18855     {
18856       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR const *>( &rhs );
18857       return *this;
18858     }
18859 
18860 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18861     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18862     {
18863       pNext = pNext_;
18864       return *this;
18865     }
18866 
18867     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR &
setSrcVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18868       setSrc( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & src_ ) VULKAN_HPP_NOEXCEPT
18869     {
18870       src = src_;
18871       return *this;
18872     }
18873 
setDstVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18874     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & setDst( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ ) VULKAN_HPP_NOEXCEPT
18875     {
18876       dst = dst_;
18877       return *this;
18878     }
18879 
18880     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR &
setModeVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18881       setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
18882     {
18883       mode = mode_;
18884       return *this;
18885     }
18886 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18887 
operator VkCopyMemoryToAccelerationStructureInfoKHR const&VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18888     operator VkCopyMemoryToAccelerationStructureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
18889     {
18890       return *reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( this );
18891     }
18892 
operator VkCopyMemoryToAccelerationStructureInfoKHR&VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18893     operator VkCopyMemoryToAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT
18894     {
18895       return *reinterpret_cast<VkCopyMemoryToAccelerationStructureInfoKHR *>( this );
18896     }
18897 
18898 #if defined( VULKAN_HPP_USE_REFLECT )
18899 #  if 14 <= VULKAN_HPP_CPP_VERSION
18900     auto
18901 #  else
18902     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18903                const void * const &,
18904                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
18905                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
18906                VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR const &>
18907 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18908       reflect() const VULKAN_HPP_NOEXCEPT
18909     {
18910       return std::tie( sType, pNext, src, dst, mode );
18911     }
18912 #endif
18913 
18914   public:
18915     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eCopyMemoryToAccelerationStructureInfoKHR;
18916     const void *                                           pNext = {};
18917     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      src   = {};
18918     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst   = {};
18919     VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone;
18920   };
18921 
18922   template <>
18923   struct CppType<StructureType, StructureType::eCopyMemoryToAccelerationStructureInfoKHR>
18924   {
18925     using Type = CopyMemoryToAccelerationStructureInfoKHR;
18926   };
18927 
18928   struct CopyMemoryToImageIndirectCommandNV
18929   {
18930     using NativeType = VkCopyMemoryToImageIndirectCommandNV;
18931 
18932 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryToImageIndirectCommandNVVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18933     VULKAN_HPP_CONSTEXPR CopyMemoryToImageIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress          srcAddress_        = {},
18934                                                              uint32_t                                     bufferRowLength_   = {},
18935                                                              uint32_t                                     bufferImageHeight_ = {},
18936                                                              VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
18937                                                              VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
18938                                                              VULKAN_HPP_NAMESPACE::Extent3D               imageExtent_       = {} ) VULKAN_HPP_NOEXCEPT
18939       : srcAddress{ srcAddress_ }
18940       , bufferRowLength{ bufferRowLength_ }
18941       , bufferImageHeight{ bufferImageHeight_ }
18942       , imageSubresource{ imageSubresource_ }
18943       , imageOffset{ imageOffset_ }
18944       , imageExtent{ imageExtent_ }
18945     {
18946     }
18947 
18948     VULKAN_HPP_CONSTEXPR CopyMemoryToImageIndirectCommandNV( CopyMemoryToImageIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18949 
CopyMemoryToImageIndirectCommandNVVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18950     CopyMemoryToImageIndirectCommandNV( VkCopyMemoryToImageIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
18951       : CopyMemoryToImageIndirectCommandNV( *reinterpret_cast<CopyMemoryToImageIndirectCommandNV const *>( &rhs ) )
18952     {
18953     }
18954 
18955     CopyMemoryToImageIndirectCommandNV & operator=( CopyMemoryToImageIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18956 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18957 
operator =VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18958     CopyMemoryToImageIndirectCommandNV & operator=( VkCopyMemoryToImageIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
18959     {
18960       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV const *>( &rhs );
18961       return *this;
18962     }
18963 
18964 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcAddressVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18965     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV & setSrcAddress( VULKAN_HPP_NAMESPACE::DeviceAddress srcAddress_ ) VULKAN_HPP_NOEXCEPT
18966     {
18967       srcAddress = srcAddress_;
18968       return *this;
18969     }
18970 
setBufferRowLengthVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18971     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT
18972     {
18973       bufferRowLength = bufferRowLength_;
18974       return *this;
18975     }
18976 
setBufferImageHeightVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18977     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT
18978     {
18979       bufferImageHeight = bufferImageHeight_;
18980       return *this;
18981     }
18982 
18983     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV &
setImageSubresourceVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18984       setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
18985     {
18986       imageSubresource = imageSubresource_;
18987       return *this;
18988     }
18989 
setImageOffsetVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18990     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
18991     {
18992       imageOffset = imageOffset_;
18993       return *this;
18994     }
18995 
setImageExtentVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18996     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
18997     {
18998       imageExtent = imageExtent_;
18999       return *this;
19000     }
19001 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19002 
operator VkCopyMemoryToImageIndirectCommandNV const&VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV19003     operator VkCopyMemoryToImageIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
19004     {
19005       return *reinterpret_cast<const VkCopyMemoryToImageIndirectCommandNV *>( this );
19006     }
19007 
operator VkCopyMemoryToImageIndirectCommandNV&VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV19008     operator VkCopyMemoryToImageIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
19009     {
19010       return *reinterpret_cast<VkCopyMemoryToImageIndirectCommandNV *>( this );
19011     }
19012 
19013 #if defined( VULKAN_HPP_USE_REFLECT )
19014 #  if 14 <= VULKAN_HPP_CPP_VERSION
19015     auto
19016 #  else
19017     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &,
19018                uint32_t const &,
19019                uint32_t const &,
19020                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
19021                VULKAN_HPP_NAMESPACE::Offset3D const &,
19022                VULKAN_HPP_NAMESPACE::Extent3D const &>
19023 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV19024       reflect() const VULKAN_HPP_NOEXCEPT
19025     {
19026       return std::tie( srcAddress, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent );
19027     }
19028 #endif
19029 
19030 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19031     auto operator<=>( CopyMemoryToImageIndirectCommandNV const & ) const = default;
19032 #else
operator ==VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV19033     bool operator==( CopyMemoryToImageIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
19034     {
19035 #  if defined( VULKAN_HPP_USE_REFLECT )
19036       return this->reflect() == rhs.reflect();
19037 #  else
19038       return ( srcAddress == rhs.srcAddress ) && ( bufferRowLength == rhs.bufferRowLength ) && ( bufferImageHeight == rhs.bufferImageHeight ) &&
19039              ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) && ( imageExtent == rhs.imageExtent );
19040 #  endif
19041     }
19042 
operator !=VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV19043     bool operator!=( CopyMemoryToImageIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
19044     {
19045       return !operator==( rhs );
19046     }
19047 #endif
19048 
19049   public:
19050     VULKAN_HPP_NAMESPACE::DeviceAddress          srcAddress        = {};
19051     uint32_t                                     bufferRowLength   = {};
19052     uint32_t                                     bufferImageHeight = {};
19053     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
19054     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
19055     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
19056   };
19057 
19058   struct MemoryToImageCopy
19059   {
19060     using NativeType = VkMemoryToImageCopy;
19061 
19062     static const bool                                  allowDuplicate = false;
19063     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryToImageCopy;
19064 
19065 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryToImageCopyVULKAN_HPP_NAMESPACE::MemoryToImageCopy19066     VULKAN_HPP_CONSTEXPR MemoryToImageCopy( const void *                                 pHostPointer_      = {},
19067                                             uint32_t                                     memoryRowLength_   = {},
19068                                             uint32_t                                     memoryImageHeight_ = {},
19069                                             VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
19070                                             VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
19071                                             VULKAN_HPP_NAMESPACE::Extent3D               imageExtent_       = {},
19072                                             const void *                                 pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
19073       : pNext{ pNext_ }
19074       , pHostPointer{ pHostPointer_ }
19075       , memoryRowLength{ memoryRowLength_ }
19076       , memoryImageHeight{ memoryImageHeight_ }
19077       , imageSubresource{ imageSubresource_ }
19078       , imageOffset{ imageOffset_ }
19079       , imageExtent{ imageExtent_ }
19080     {
19081     }
19082 
19083     VULKAN_HPP_CONSTEXPR MemoryToImageCopy( MemoryToImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19084 
MemoryToImageCopyVULKAN_HPP_NAMESPACE::MemoryToImageCopy19085     MemoryToImageCopy( VkMemoryToImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryToImageCopy( *reinterpret_cast<MemoryToImageCopy const *>( &rhs ) ) {}
19086 
19087     MemoryToImageCopy & operator=( MemoryToImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19088 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19089 
operator =VULKAN_HPP_NAMESPACE::MemoryToImageCopy19090     MemoryToImageCopy & operator=( VkMemoryToImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
19091     {
19092       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryToImageCopy const *>( &rhs );
19093       return *this;
19094     }
19095 
19096 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryToImageCopy19097     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19098     {
19099       pNext = pNext_;
19100       return *this;
19101     }
19102 
setPHostPointerVULKAN_HPP_NAMESPACE::MemoryToImageCopy19103     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setPHostPointer( const void * pHostPointer_ ) VULKAN_HPP_NOEXCEPT
19104     {
19105       pHostPointer = pHostPointer_;
19106       return *this;
19107     }
19108 
setMemoryRowLengthVULKAN_HPP_NAMESPACE::MemoryToImageCopy19109     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setMemoryRowLength( uint32_t memoryRowLength_ ) VULKAN_HPP_NOEXCEPT
19110     {
19111       memoryRowLength = memoryRowLength_;
19112       return *this;
19113     }
19114 
setMemoryImageHeightVULKAN_HPP_NAMESPACE::MemoryToImageCopy19115     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setMemoryImageHeight( uint32_t memoryImageHeight_ ) VULKAN_HPP_NOEXCEPT
19116     {
19117       memoryImageHeight = memoryImageHeight_;
19118       return *this;
19119     }
19120 
19121     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy &
setImageSubresourceVULKAN_HPP_NAMESPACE::MemoryToImageCopy19122       setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
19123     {
19124       imageSubresource = imageSubresource_;
19125       return *this;
19126     }
19127 
setImageOffsetVULKAN_HPP_NAMESPACE::MemoryToImageCopy19128     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
19129     {
19130       imageOffset = imageOffset_;
19131       return *this;
19132     }
19133 
setImageExtentVULKAN_HPP_NAMESPACE::MemoryToImageCopy19134     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
19135     {
19136       imageExtent = imageExtent_;
19137       return *this;
19138     }
19139 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19140 
operator VkMemoryToImageCopy const&VULKAN_HPP_NAMESPACE::MemoryToImageCopy19141     operator VkMemoryToImageCopy const &() const VULKAN_HPP_NOEXCEPT
19142     {
19143       return *reinterpret_cast<const VkMemoryToImageCopy *>( this );
19144     }
19145 
operator VkMemoryToImageCopy&VULKAN_HPP_NAMESPACE::MemoryToImageCopy19146     operator VkMemoryToImageCopy &() VULKAN_HPP_NOEXCEPT
19147     {
19148       return *reinterpret_cast<VkMemoryToImageCopy *>( this );
19149     }
19150 
19151 #if defined( VULKAN_HPP_USE_REFLECT )
19152 #  if 14 <= VULKAN_HPP_CPP_VERSION
19153     auto
19154 #  else
19155     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19156                const void * const &,
19157                const void * const &,
19158                uint32_t const &,
19159                uint32_t const &,
19160                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
19161                VULKAN_HPP_NAMESPACE::Offset3D const &,
19162                VULKAN_HPP_NAMESPACE::Extent3D const &>
19163 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryToImageCopy19164       reflect() const VULKAN_HPP_NOEXCEPT
19165     {
19166       return std::tie( sType, pNext, pHostPointer, memoryRowLength, memoryImageHeight, imageSubresource, imageOffset, imageExtent );
19167     }
19168 #endif
19169 
19170 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19171     auto operator<=>( MemoryToImageCopy const & ) const = default;
19172 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryToImageCopy19173     bool operator==( MemoryToImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
19174     {
19175 #  if defined( VULKAN_HPP_USE_REFLECT )
19176       return this->reflect() == rhs.reflect();
19177 #  else
19178       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pHostPointer == rhs.pHostPointer ) && ( memoryRowLength == rhs.memoryRowLength ) &&
19179              ( memoryImageHeight == rhs.memoryImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) &&
19180              ( imageExtent == rhs.imageExtent );
19181 #  endif
19182     }
19183 
operator !=VULKAN_HPP_NAMESPACE::MemoryToImageCopy19184     bool operator!=( MemoryToImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
19185     {
19186       return !operator==( rhs );
19187     }
19188 #endif
19189 
19190   public:
19191     VULKAN_HPP_NAMESPACE::StructureType          sType             = StructureType::eMemoryToImageCopy;
19192     const void *                                 pNext             = {};
19193     const void *                                 pHostPointer      = {};
19194     uint32_t                                     memoryRowLength   = {};
19195     uint32_t                                     memoryImageHeight = {};
19196     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
19197     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
19198     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
19199   };
19200 
19201   template <>
19202   struct CppType<StructureType, StructureType::eMemoryToImageCopy>
19203   {
19204     using Type = MemoryToImageCopy;
19205   };
19206 
19207   using MemoryToImageCopyEXT = MemoryToImageCopy;
19208 
19209   struct CopyMemoryToImageInfo
19210   {
19211     using NativeType = VkCopyMemoryToImageInfo;
19212 
19213     static const bool                                  allowDuplicate = false;
19214     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyMemoryToImageInfo;
19215 
19216 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryToImageInfoVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19217     VULKAN_HPP_CONSTEXPR CopyMemoryToImageInfo( VULKAN_HPP_NAMESPACE::HostImageCopyFlags        flags_          = {},
19218                                                 VULKAN_HPP_NAMESPACE::Image                     dstImage_       = {},
19219                                                 VULKAN_HPP_NAMESPACE::ImageLayout               dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
19220                                                 uint32_t                                        regionCount_    = {},
19221                                                 const VULKAN_HPP_NAMESPACE::MemoryToImageCopy * pRegions_       = {},
19222                                                 const void *                                    pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
19223       : pNext{ pNext_ }
19224       , flags{ flags_ }
19225       , dstImage{ dstImage_ }
19226       , dstImageLayout{ dstImageLayout_ }
19227       , regionCount{ regionCount_ }
19228       , pRegions{ pRegions_ }
19229     {
19230     }
19231 
19232     VULKAN_HPP_CONSTEXPR CopyMemoryToImageInfo( CopyMemoryToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19233 
CopyMemoryToImageInfoVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19234     CopyMemoryToImageInfo( VkCopyMemoryToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19235       : CopyMemoryToImageInfo( *reinterpret_cast<CopyMemoryToImageInfo const *>( &rhs ) )
19236     {
19237     }
19238 
19239 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyMemoryToImageInfoVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19240     CopyMemoryToImageInfo( VULKAN_HPP_NAMESPACE::HostImageCopyFlags                                                             flags_,
19241                            VULKAN_HPP_NAMESPACE::Image                                                                          dstImage_,
19242                            VULKAN_HPP_NAMESPACE::ImageLayout                                                                    dstImageLayout_,
19243                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryToImageCopy> const & regions_,
19244                            const void *                                                                                         pNext_ = nullptr )
19245       : pNext( pNext_ )
19246       , flags( flags_ )
19247       , dstImage( dstImage_ )
19248       , dstImageLayout( dstImageLayout_ )
19249       , regionCount( static_cast<uint32_t>( regions_.size() ) )
19250       , pRegions( regions_.data() )
19251     {
19252     }
19253 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19254 
19255     CopyMemoryToImageInfo & operator=( CopyMemoryToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19256 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19257 
operator =VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19258     CopyMemoryToImageInfo & operator=( VkCopyMemoryToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19259     {
19260       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo const *>( &rhs );
19261       return *this;
19262     }
19263 
19264 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19265     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19266     {
19267       pNext = pNext_;
19268       return *this;
19269     }
19270 
setFlagsVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19271     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setFlags( VULKAN_HPP_NAMESPACE::HostImageCopyFlags flags_ ) VULKAN_HPP_NOEXCEPT
19272     {
19273       flags = flags_;
19274       return *this;
19275     }
19276 
setDstImageVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19277     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
19278     {
19279       dstImage = dstImage_;
19280       return *this;
19281     }
19282 
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19283     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
19284     {
19285       dstImageLayout = dstImageLayout_;
19286       return *this;
19287     }
19288 
setRegionCountVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19289     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
19290     {
19291       regionCount = regionCount_;
19292       return *this;
19293     }
19294 
setPRegionsVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19295     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setPRegions( const VULKAN_HPP_NAMESPACE::MemoryToImageCopy * pRegions_ ) VULKAN_HPP_NOEXCEPT
19296     {
19297       pRegions = pRegions_;
19298       return *this;
19299     }
19300 
19301 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
19302     CopyMemoryToImageInfo &
setRegionsVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19303       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryToImageCopy> const & regions_ ) VULKAN_HPP_NOEXCEPT
19304     {
19305       regionCount = static_cast<uint32_t>( regions_.size() );
19306       pRegions    = regions_.data();
19307       return *this;
19308     }
19309 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19310 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19311 
operator VkCopyMemoryToImageInfo const&VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19312     operator VkCopyMemoryToImageInfo const &() const VULKAN_HPP_NOEXCEPT
19313     {
19314       return *reinterpret_cast<const VkCopyMemoryToImageInfo *>( this );
19315     }
19316 
operator VkCopyMemoryToImageInfo&VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19317     operator VkCopyMemoryToImageInfo &() VULKAN_HPP_NOEXCEPT
19318     {
19319       return *reinterpret_cast<VkCopyMemoryToImageInfo *>( this );
19320     }
19321 
19322 #if defined( VULKAN_HPP_USE_REFLECT )
19323 #  if 14 <= VULKAN_HPP_CPP_VERSION
19324     auto
19325 #  else
19326     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19327                const void * const &,
19328                VULKAN_HPP_NAMESPACE::HostImageCopyFlags const &,
19329                VULKAN_HPP_NAMESPACE::Image const &,
19330                VULKAN_HPP_NAMESPACE::ImageLayout const &,
19331                uint32_t const &,
19332                const VULKAN_HPP_NAMESPACE::MemoryToImageCopy * const &>
19333 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19334       reflect() const VULKAN_HPP_NOEXCEPT
19335     {
19336       return std::tie( sType, pNext, flags, dstImage, dstImageLayout, regionCount, pRegions );
19337     }
19338 #endif
19339 
19340 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19341     auto operator<=>( CopyMemoryToImageInfo const & ) const = default;
19342 #else
operator ==VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19343     bool operator==( CopyMemoryToImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19344     {
19345 #  if defined( VULKAN_HPP_USE_REFLECT )
19346       return this->reflect() == rhs.reflect();
19347 #  else
19348       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dstImage == rhs.dstImage ) &&
19349              ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
19350 #  endif
19351     }
19352 
operator !=VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo19353     bool operator!=( CopyMemoryToImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19354     {
19355       return !operator==( rhs );
19356     }
19357 #endif
19358 
19359   public:
19360     VULKAN_HPP_NAMESPACE::StructureType             sType          = StructureType::eCopyMemoryToImageInfo;
19361     const void *                                    pNext          = {};
19362     VULKAN_HPP_NAMESPACE::HostImageCopyFlags        flags          = {};
19363     VULKAN_HPP_NAMESPACE::Image                     dstImage       = {};
19364     VULKAN_HPP_NAMESPACE::ImageLayout               dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
19365     uint32_t                                        regionCount    = {};
19366     const VULKAN_HPP_NAMESPACE::MemoryToImageCopy * pRegions       = {};
19367   };
19368 
19369   template <>
19370   struct CppType<StructureType, StructureType::eCopyMemoryToImageInfo>
19371   {
19372     using Type = CopyMemoryToImageInfo;
19373   };
19374 
19375   using CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo;
19376 
19377   struct CopyMemoryToMicromapInfoEXT
19378   {
19379     using NativeType = VkCopyMemoryToMicromapInfoEXT;
19380 
19381     static const bool                                  allowDuplicate = false;
19382     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyMemoryToMicromapInfoEXT;
19383 
19384 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryToMicromapInfoEXTVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19385     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR src_ = {},
19386                                                          VULKAN_HPP_NAMESPACE::MicromapEXT                 dst_ = {},
19387                                                          VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode_  = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone,
19388                                                          const void *                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
19389       : pNext{ pNext_ }
19390       , src{ src_ }
19391       , dst{ dst_ }
19392       , mode{ mode_ }
19393     {
19394     }
19395 
19396     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT( CopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19397 
CopyMemoryToMicromapInfoEXTVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19398     CopyMemoryToMicromapInfoEXT( VkCopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19399       : CopyMemoryToMicromapInfoEXT( *reinterpret_cast<CopyMemoryToMicromapInfoEXT const *>( &rhs ) )
19400     {
19401     }
19402 
19403     CopyMemoryToMicromapInfoEXT & operator=( CopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19404 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19405 
operator =VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19406     CopyMemoryToMicromapInfoEXT & operator=( VkCopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19407     {
19408       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT const *>( &rhs );
19409       return *this;
19410     }
19411 
19412 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19413     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19414     {
19415       pNext = pNext_;
19416       return *this;
19417     }
19418 
setSrcVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19419     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setSrc( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & src_ ) VULKAN_HPP_NOEXCEPT
19420     {
19421       src = src_;
19422       return *this;
19423     }
19424 
setDstVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19425     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setDst( VULKAN_HPP_NAMESPACE::MicromapEXT dst_ ) VULKAN_HPP_NOEXCEPT
19426     {
19427       dst = dst_;
19428       return *this;
19429     }
19430 
setModeVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19431     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setMode( VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode_ ) VULKAN_HPP_NOEXCEPT
19432     {
19433       mode = mode_;
19434       return *this;
19435     }
19436 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19437 
operator VkCopyMemoryToMicromapInfoEXT const&VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19438     operator VkCopyMemoryToMicromapInfoEXT const &() const VULKAN_HPP_NOEXCEPT
19439     {
19440       return *reinterpret_cast<const VkCopyMemoryToMicromapInfoEXT *>( this );
19441     }
19442 
operator VkCopyMemoryToMicromapInfoEXT&VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19443     operator VkCopyMemoryToMicromapInfoEXT &() VULKAN_HPP_NOEXCEPT
19444     {
19445       return *reinterpret_cast<VkCopyMemoryToMicromapInfoEXT *>( this );
19446     }
19447 
19448 #if defined( VULKAN_HPP_USE_REFLECT )
19449 #  if 14 <= VULKAN_HPP_CPP_VERSION
19450     auto
19451 #  else
19452     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19453                const void * const &,
19454                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
19455                VULKAN_HPP_NAMESPACE::MicromapEXT const &,
19456                VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT const &>
19457 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19458       reflect() const VULKAN_HPP_NOEXCEPT
19459     {
19460       return std::tie( sType, pNext, src, dst, mode );
19461     }
19462 #endif
19463 
19464   public:
19465     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eCopyMemoryToMicromapInfoEXT;
19466     const void *                                      pNext = {};
19467     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR src   = {};
19468     VULKAN_HPP_NAMESPACE::MicromapEXT                 dst   = {};
19469     VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT         mode  = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone;
19470   };
19471 
19472   template <>
19473   struct CppType<StructureType, StructureType::eCopyMemoryToMicromapInfoEXT>
19474   {
19475     using Type = CopyMemoryToMicromapInfoEXT;
19476   };
19477 
19478   struct CopyMicromapInfoEXT
19479   {
19480     using NativeType = VkCopyMicromapInfoEXT;
19481 
19482     static const bool                                  allowDuplicate = false;
19483     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyMicromapInfoEXT;
19484 
19485 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMicromapInfoEXTVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19486     VULKAN_HPP_CONSTEXPR CopyMicromapInfoEXT( VULKAN_HPP_NAMESPACE::MicromapEXT         src_   = {},
19487                                               VULKAN_HPP_NAMESPACE::MicromapEXT         dst_   = {},
19488                                               VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode_  = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone,
19489                                               const void *                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
19490       : pNext{ pNext_ }
19491       , src{ src_ }
19492       , dst{ dst_ }
19493       , mode{ mode_ }
19494     {
19495     }
19496 
19497     VULKAN_HPP_CONSTEXPR CopyMicromapInfoEXT( CopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19498 
CopyMicromapInfoEXTVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19499     CopyMicromapInfoEXT( VkCopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : CopyMicromapInfoEXT( *reinterpret_cast<CopyMicromapInfoEXT const *>( &rhs ) )
19500     {
19501     }
19502 
19503     CopyMicromapInfoEXT & operator=( CopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19504 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19505 
operator =VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19506     CopyMicromapInfoEXT & operator=( VkCopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19507     {
19508       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT const *>( &rhs );
19509       return *this;
19510     }
19511 
19512 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19513     VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19514     {
19515       pNext = pNext_;
19516       return *this;
19517     }
19518 
setSrcVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19519     VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setSrc( VULKAN_HPP_NAMESPACE::MicromapEXT src_ ) VULKAN_HPP_NOEXCEPT
19520     {
19521       src = src_;
19522       return *this;
19523     }
19524 
setDstVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19525     VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setDst( VULKAN_HPP_NAMESPACE::MicromapEXT dst_ ) VULKAN_HPP_NOEXCEPT
19526     {
19527       dst = dst_;
19528       return *this;
19529     }
19530 
setModeVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19531     VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setMode( VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode_ ) VULKAN_HPP_NOEXCEPT
19532     {
19533       mode = mode_;
19534       return *this;
19535     }
19536 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19537 
operator VkCopyMicromapInfoEXT const&VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19538     operator VkCopyMicromapInfoEXT const &() const VULKAN_HPP_NOEXCEPT
19539     {
19540       return *reinterpret_cast<const VkCopyMicromapInfoEXT *>( this );
19541     }
19542 
operator VkCopyMicromapInfoEXT&VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19543     operator VkCopyMicromapInfoEXT &() VULKAN_HPP_NOEXCEPT
19544     {
19545       return *reinterpret_cast<VkCopyMicromapInfoEXT *>( this );
19546     }
19547 
19548 #if defined( VULKAN_HPP_USE_REFLECT )
19549 #  if 14 <= VULKAN_HPP_CPP_VERSION
19550     auto
19551 #  else
19552     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19553                const void * const &,
19554                VULKAN_HPP_NAMESPACE::MicromapEXT const &,
19555                VULKAN_HPP_NAMESPACE::MicromapEXT const &,
19556                VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT const &>
19557 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19558       reflect() const VULKAN_HPP_NOEXCEPT
19559     {
19560       return std::tie( sType, pNext, src, dst, mode );
19561     }
19562 #endif
19563 
19564 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19565     auto operator<=>( CopyMicromapInfoEXT const & ) const = default;
19566 #else
operator ==VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19567     bool operator==( CopyMicromapInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
19568     {
19569 #  if defined( VULKAN_HPP_USE_REFLECT )
19570       return this->reflect() == rhs.reflect();
19571 #  else
19572       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( src == rhs.src ) && ( dst == rhs.dst ) && ( mode == rhs.mode );
19573 #  endif
19574     }
19575 
operator !=VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19576     bool operator!=( CopyMicromapInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
19577     {
19578       return !operator==( rhs );
19579     }
19580 #endif
19581 
19582   public:
19583     VULKAN_HPP_NAMESPACE::StructureType       sType = StructureType::eCopyMicromapInfoEXT;
19584     const void *                              pNext = {};
19585     VULKAN_HPP_NAMESPACE::MicromapEXT         src   = {};
19586     VULKAN_HPP_NAMESPACE::MicromapEXT         dst   = {};
19587     VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode  = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone;
19588   };
19589 
19590   template <>
19591   struct CppType<StructureType, StructureType::eCopyMicromapInfoEXT>
19592   {
19593     using Type = CopyMicromapInfoEXT;
19594   };
19595 
19596   struct CopyMicromapToMemoryInfoEXT
19597   {
19598     using NativeType = VkCopyMicromapToMemoryInfoEXT;
19599 
19600     static const bool                                  allowDuplicate = false;
19601     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyMicromapToMemoryInfoEXT;
19602 
19603 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMicromapToMemoryInfoEXTVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19604     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT( VULKAN_HPP_NAMESPACE::MicromapEXT            src_  = {},
19605                                                          VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR dst_  = {},
19606                                                          VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT    mode_ = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone,
19607                                                          const void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
19608       : pNext{ pNext_ }
19609       , src{ src_ }
19610       , dst{ dst_ }
19611       , mode{ mode_ }
19612     {
19613     }
19614 
19615     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT( CopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19616 
CopyMicromapToMemoryInfoEXTVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19617     CopyMicromapToMemoryInfoEXT( VkCopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19618       : CopyMicromapToMemoryInfoEXT( *reinterpret_cast<CopyMicromapToMemoryInfoEXT const *>( &rhs ) )
19619     {
19620     }
19621 
19622     CopyMicromapToMemoryInfoEXT & operator=( CopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19623 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19624 
operator =VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19625     CopyMicromapToMemoryInfoEXT & operator=( VkCopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19626     {
19627       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT const *>( &rhs );
19628       return *this;
19629     }
19630 
19631 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19632     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19633     {
19634       pNext = pNext_;
19635       return *this;
19636     }
19637 
setSrcVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19638     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setSrc( VULKAN_HPP_NAMESPACE::MicromapEXT src_ ) VULKAN_HPP_NOEXCEPT
19639     {
19640       src = src_;
19641       return *this;
19642     }
19643 
setDstVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19644     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setDst( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & dst_ ) VULKAN_HPP_NOEXCEPT
19645     {
19646       dst = dst_;
19647       return *this;
19648     }
19649 
setModeVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19650     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setMode( VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode_ ) VULKAN_HPP_NOEXCEPT
19651     {
19652       mode = mode_;
19653       return *this;
19654     }
19655 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19656 
operator VkCopyMicromapToMemoryInfoEXT const&VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19657     operator VkCopyMicromapToMemoryInfoEXT const &() const VULKAN_HPP_NOEXCEPT
19658     {
19659       return *reinterpret_cast<const VkCopyMicromapToMemoryInfoEXT *>( this );
19660     }
19661 
operator VkCopyMicromapToMemoryInfoEXT&VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19662     operator VkCopyMicromapToMemoryInfoEXT &() VULKAN_HPP_NOEXCEPT
19663     {
19664       return *reinterpret_cast<VkCopyMicromapToMemoryInfoEXT *>( this );
19665     }
19666 
19667 #if defined( VULKAN_HPP_USE_REFLECT )
19668 #  if 14 <= VULKAN_HPP_CPP_VERSION
19669     auto
19670 #  else
19671     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19672                const void * const &,
19673                VULKAN_HPP_NAMESPACE::MicromapEXT const &,
19674                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const &,
19675                VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT const &>
19676 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19677       reflect() const VULKAN_HPP_NOEXCEPT
19678     {
19679       return std::tie( sType, pNext, src, dst, mode );
19680     }
19681 #endif
19682 
19683   public:
19684     VULKAN_HPP_NAMESPACE::StructureType          sType = StructureType::eCopyMicromapToMemoryInfoEXT;
19685     const void *                                 pNext = {};
19686     VULKAN_HPP_NAMESPACE::MicromapEXT            src   = {};
19687     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR dst   = {};
19688     VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT    mode  = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone;
19689   };
19690 
19691   template <>
19692   struct CppType<StructureType, StructureType::eCopyMicromapToMemoryInfoEXT>
19693   {
19694     using Type = CopyMicromapToMemoryInfoEXT;
19695   };
19696 
19697   struct CuFunctionCreateInfoNVX
19698   {
19699     using NativeType = VkCuFunctionCreateInfoNVX;
19700 
19701     static const bool                                  allowDuplicate = false;
19702     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCuFunctionCreateInfoNVX;
19703 
19704 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
19705     VULKAN_HPP_CONSTEXPR
CuFunctionCreateInfoNVXVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19706       CuFunctionCreateInfoNVX( VULKAN_HPP_NAMESPACE::CuModuleNVX module_ = {}, const char * pName_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
19707       : pNext{ pNext_ }
19708       , module{ module_ }
19709       , pName{ pName_ }
19710     {
19711     }
19712 
19713     VULKAN_HPP_CONSTEXPR CuFunctionCreateInfoNVX( CuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19714 
CuFunctionCreateInfoNVXVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19715     CuFunctionCreateInfoNVX( VkCuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
19716       : CuFunctionCreateInfoNVX( *reinterpret_cast<CuFunctionCreateInfoNVX const *>( &rhs ) )
19717     {
19718     }
19719 
19720     CuFunctionCreateInfoNVX & operator=( CuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19721 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19722 
operator =VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19723     CuFunctionCreateInfoNVX & operator=( VkCuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
19724     {
19725       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const *>( &rhs );
19726       return *this;
19727     }
19728 
19729 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19730     VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19731     {
19732       pNext = pNext_;
19733       return *this;
19734     }
19735 
setModuleVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19736     VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setModule( VULKAN_HPP_NAMESPACE::CuModuleNVX module_ ) VULKAN_HPP_NOEXCEPT
19737     {
19738       module = module_;
19739       return *this;
19740     }
19741 
setPNameVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19742     VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
19743     {
19744       pName = pName_;
19745       return *this;
19746     }
19747 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19748 
operator VkCuFunctionCreateInfoNVX const&VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19749     operator VkCuFunctionCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT
19750     {
19751       return *reinterpret_cast<const VkCuFunctionCreateInfoNVX *>( this );
19752     }
19753 
operator VkCuFunctionCreateInfoNVX&VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19754     operator VkCuFunctionCreateInfoNVX &() VULKAN_HPP_NOEXCEPT
19755     {
19756       return *reinterpret_cast<VkCuFunctionCreateInfoNVX *>( this );
19757     }
19758 
19759 #if defined( VULKAN_HPP_USE_REFLECT )
19760 #  if 14 <= VULKAN_HPP_CPP_VERSION
19761     auto
19762 #  else
19763     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CuModuleNVX const &, const char * const &>
19764 #  endif
reflectVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19765       reflect() const VULKAN_HPP_NOEXCEPT
19766     {
19767       return std::tie( sType, pNext, module, pName );
19768     }
19769 #endif
19770 
19771 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19772     std::strong_ordering operator<=>( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
19773     {
19774       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
19775         return cmp;
19776       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
19777         return cmp;
19778       if ( auto cmp = module <=> rhs.module; cmp != 0 )
19779         return cmp;
19780       if ( pName != rhs.pName )
19781         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
19782           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
19783 
19784       return std::strong_ordering::equivalent;
19785     }
19786 #endif
19787 
operator ==VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19788     bool operator==( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
19789     {
19790       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( module == rhs.module ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) );
19791     }
19792 
operator !=VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19793     bool operator!=( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
19794     {
19795       return !operator==( rhs );
19796     }
19797 
19798   public:
19799     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eCuFunctionCreateInfoNVX;
19800     const void *                        pNext  = {};
19801     VULKAN_HPP_NAMESPACE::CuModuleNVX   module = {};
19802     const char *                        pName  = {};
19803   };
19804 
19805   template <>
19806   struct CppType<StructureType, StructureType::eCuFunctionCreateInfoNVX>
19807   {
19808     using Type = CuFunctionCreateInfoNVX;
19809   };
19810 
19811   struct CuLaunchInfoNVX
19812   {
19813     using NativeType = VkCuLaunchInfoNVX;
19814 
19815     static const bool                                  allowDuplicate = false;
19816     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCuLaunchInfoNVX;
19817 
19818 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CuLaunchInfoNVXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19819     VULKAN_HPP_CONSTEXPR CuLaunchInfoNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX function_       = {},
19820                                           uint32_t                            gridDimX_       = {},
19821                                           uint32_t                            gridDimY_       = {},
19822                                           uint32_t                            gridDimZ_       = {},
19823                                           uint32_t                            blockDimX_      = {},
19824                                           uint32_t                            blockDimY_      = {},
19825                                           uint32_t                            blockDimZ_      = {},
19826                                           uint32_t                            sharedMemBytes_ = {},
19827                                           size_t                              paramCount_     = {},
19828                                           const void * const *                pParams_        = {},
19829                                           size_t                              extraCount_     = {},
19830                                           const void * const *                pExtras_        = {},
19831                                           const void *                        pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
19832       : pNext{ pNext_ }
19833       , function{ function_ }
19834       , gridDimX{ gridDimX_ }
19835       , gridDimY{ gridDimY_ }
19836       , gridDimZ{ gridDimZ_ }
19837       , blockDimX{ blockDimX_ }
19838       , blockDimY{ blockDimY_ }
19839       , blockDimZ{ blockDimZ_ }
19840       , sharedMemBytes{ sharedMemBytes_ }
19841       , paramCount{ paramCount_ }
19842       , pParams{ pParams_ }
19843       , extraCount{ extraCount_ }
19844       , pExtras{ pExtras_ }
19845     {
19846     }
19847 
19848     VULKAN_HPP_CONSTEXPR CuLaunchInfoNVX( CuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19849 
CuLaunchInfoNVXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19850     CuLaunchInfoNVX( VkCuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT : CuLaunchInfoNVX( *reinterpret_cast<CuLaunchInfoNVX const *>( &rhs ) ) {}
19851 
19852 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CuLaunchInfoNVXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19853     CuLaunchInfoNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX                                       function_,
19854                      uint32_t                                                                  gridDimX_,
19855                      uint32_t                                                                  gridDimY_,
19856                      uint32_t                                                                  gridDimZ_,
19857                      uint32_t                                                                  blockDimX_,
19858                      uint32_t                                                                  blockDimY_,
19859                      uint32_t                                                                  blockDimZ_,
19860                      uint32_t                                                                  sharedMemBytes_,
19861                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & params_,
19862                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & extras_ = {},
19863                      const void *                                                              pNext_  = nullptr )
19864       : pNext( pNext_ )
19865       , function( function_ )
19866       , gridDimX( gridDimX_ )
19867       , gridDimY( gridDimY_ )
19868       , gridDimZ( gridDimZ_ )
19869       , blockDimX( blockDimX_ )
19870       , blockDimY( blockDimY_ )
19871       , blockDimZ( blockDimZ_ )
19872       , sharedMemBytes( sharedMemBytes_ )
19873       , paramCount( params_.size() )
19874       , pParams( params_.data() )
19875       , extraCount( extras_.size() )
19876       , pExtras( extras_.data() )
19877     {
19878     }
19879 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19880 
19881     CuLaunchInfoNVX & operator=( CuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19882 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19883 
operator =VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19884     CuLaunchInfoNVX & operator=( VkCuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
19885     {
19886       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX const *>( &rhs );
19887       return *this;
19888     }
19889 
19890 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19891     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19892     {
19893       pNext = pNext_;
19894       return *this;
19895     }
19896 
setFunctionVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19897     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setFunction( VULKAN_HPP_NAMESPACE::CuFunctionNVX function_ ) VULKAN_HPP_NOEXCEPT
19898     {
19899       function = function_;
19900       return *this;
19901     }
19902 
setGridDimXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19903     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimX( uint32_t gridDimX_ ) VULKAN_HPP_NOEXCEPT
19904     {
19905       gridDimX = gridDimX_;
19906       return *this;
19907     }
19908 
setGridDimYVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19909     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimY( uint32_t gridDimY_ ) VULKAN_HPP_NOEXCEPT
19910     {
19911       gridDimY = gridDimY_;
19912       return *this;
19913     }
19914 
setGridDimZVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19915     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimZ( uint32_t gridDimZ_ ) VULKAN_HPP_NOEXCEPT
19916     {
19917       gridDimZ = gridDimZ_;
19918       return *this;
19919     }
19920 
setBlockDimXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19921     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimX( uint32_t blockDimX_ ) VULKAN_HPP_NOEXCEPT
19922     {
19923       blockDimX = blockDimX_;
19924       return *this;
19925     }
19926 
setBlockDimYVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19927     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimY( uint32_t blockDimY_ ) VULKAN_HPP_NOEXCEPT
19928     {
19929       blockDimY = blockDimY_;
19930       return *this;
19931     }
19932 
setBlockDimZVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19933     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimZ( uint32_t blockDimZ_ ) VULKAN_HPP_NOEXCEPT
19934     {
19935       blockDimZ = blockDimZ_;
19936       return *this;
19937     }
19938 
setSharedMemBytesVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19939     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setSharedMemBytes( uint32_t sharedMemBytes_ ) VULKAN_HPP_NOEXCEPT
19940     {
19941       sharedMemBytes = sharedMemBytes_;
19942       return *this;
19943     }
19944 
setParamCountVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19945     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setParamCount( size_t paramCount_ ) VULKAN_HPP_NOEXCEPT
19946     {
19947       paramCount = paramCount_;
19948       return *this;
19949     }
19950 
setPParamsVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19951     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPParams( const void * const * pParams_ ) VULKAN_HPP_NOEXCEPT
19952     {
19953       pParams = pParams_;
19954       return *this;
19955     }
19956 
19957 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setParamsVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19958     CuLaunchInfoNVX & setParams( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & params_ ) VULKAN_HPP_NOEXCEPT
19959     {
19960       paramCount = params_.size();
19961       pParams    = params_.data();
19962       return *this;
19963     }
19964 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19965 
setExtraCountVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19966     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setExtraCount( size_t extraCount_ ) VULKAN_HPP_NOEXCEPT
19967     {
19968       extraCount = extraCount_;
19969       return *this;
19970     }
19971 
setPExtrasVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19972     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPExtras( const void * const * pExtras_ ) VULKAN_HPP_NOEXCEPT
19973     {
19974       pExtras = pExtras_;
19975       return *this;
19976     }
19977 
19978 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setExtrasVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19979     CuLaunchInfoNVX & setExtras( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & extras_ ) VULKAN_HPP_NOEXCEPT
19980     {
19981       extraCount = extras_.size();
19982       pExtras    = extras_.data();
19983       return *this;
19984     }
19985 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19986 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19987 
operator VkCuLaunchInfoNVX const&VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19988     operator VkCuLaunchInfoNVX const &() const VULKAN_HPP_NOEXCEPT
19989     {
19990       return *reinterpret_cast<const VkCuLaunchInfoNVX *>( this );
19991     }
19992 
operator VkCuLaunchInfoNVX&VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19993     operator VkCuLaunchInfoNVX &() VULKAN_HPP_NOEXCEPT
19994     {
19995       return *reinterpret_cast<VkCuLaunchInfoNVX *>( this );
19996     }
19997 
19998 #if defined( VULKAN_HPP_USE_REFLECT )
19999 #  if 14 <= VULKAN_HPP_CPP_VERSION
20000     auto
20001 #  else
20002     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
20003                const void * const &,
20004                VULKAN_HPP_NAMESPACE::CuFunctionNVX const &,
20005                uint32_t const &,
20006                uint32_t const &,
20007                uint32_t const &,
20008                uint32_t const &,
20009                uint32_t const &,
20010                uint32_t const &,
20011                uint32_t const &,
20012                size_t const &,
20013                const void * const * const &,
20014                size_t const &,
20015                const void * const * const &>
20016 #  endif
reflectVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX20017       reflect() const VULKAN_HPP_NOEXCEPT
20018     {
20019       return std::tie(
20020         sType, pNext, function, gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY, blockDimZ, sharedMemBytes, paramCount, pParams, extraCount, pExtras );
20021     }
20022 #endif
20023 
20024 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20025     auto operator<=>( CuLaunchInfoNVX const & ) const = default;
20026 #else
operator ==VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX20027     bool operator==( CuLaunchInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
20028     {
20029 #  if defined( VULKAN_HPP_USE_REFLECT )
20030       return this->reflect() == rhs.reflect();
20031 #  else
20032       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( function == rhs.function ) && ( gridDimX == rhs.gridDimX ) && ( gridDimY == rhs.gridDimY ) &&
20033              ( gridDimZ == rhs.gridDimZ ) && ( blockDimX == rhs.blockDimX ) && ( blockDimY == rhs.blockDimY ) && ( blockDimZ == rhs.blockDimZ ) &&
20034              ( sharedMemBytes == rhs.sharedMemBytes ) && ( paramCount == rhs.paramCount ) && ( pParams == rhs.pParams ) && ( extraCount == rhs.extraCount ) &&
20035              ( pExtras == rhs.pExtras );
20036 #  endif
20037     }
20038 
operator !=VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX20039     bool operator!=( CuLaunchInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
20040     {
20041       return !operator==( rhs );
20042     }
20043 #endif
20044 
20045   public:
20046     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eCuLaunchInfoNVX;
20047     const void *                        pNext          = {};
20048     VULKAN_HPP_NAMESPACE::CuFunctionNVX function       = {};
20049     uint32_t                            gridDimX       = {};
20050     uint32_t                            gridDimY       = {};
20051     uint32_t                            gridDimZ       = {};
20052     uint32_t                            blockDimX      = {};
20053     uint32_t                            blockDimY      = {};
20054     uint32_t                            blockDimZ      = {};
20055     uint32_t                            sharedMemBytes = {};
20056     size_t                              paramCount     = {};
20057     const void * const *                pParams        = {};
20058     size_t                              extraCount     = {};
20059     const void * const *                pExtras        = {};
20060   };
20061 
20062   template <>
20063   struct CppType<StructureType, StructureType::eCuLaunchInfoNVX>
20064   {
20065     using Type = CuLaunchInfoNVX;
20066   };
20067 
20068   struct CuModuleCreateInfoNVX
20069   {
20070     using NativeType = VkCuModuleCreateInfoNVX;
20071 
20072     static const bool                                  allowDuplicate = false;
20073     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCuModuleCreateInfoNVX;
20074 
20075 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CuModuleCreateInfoNVXVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20076     VULKAN_HPP_CONSTEXPR CuModuleCreateInfoNVX( size_t dataSize_ = {}, const void * pData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
20077       : pNext{ pNext_ }
20078       , dataSize{ dataSize_ }
20079       , pData{ pData_ }
20080     {
20081     }
20082 
20083     VULKAN_HPP_CONSTEXPR CuModuleCreateInfoNVX( CuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20084 
CuModuleCreateInfoNVXVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20085     CuModuleCreateInfoNVX( VkCuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
20086       : CuModuleCreateInfoNVX( *reinterpret_cast<CuModuleCreateInfoNVX const *>( &rhs ) )
20087     {
20088     }
20089 
20090 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20091     template <typename T>
CuModuleCreateInfoNVXVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20092     CuModuleCreateInfoNVX( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_, const void * pNext_ = nullptr )
20093       : pNext( pNext_ ), dataSize( data_.size() * sizeof( T ) ), pData( data_.data() )
20094     {
20095     }
20096 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20097 
20098     CuModuleCreateInfoNVX & operator=( CuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20099 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20100 
operator =VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20101     CuModuleCreateInfoNVX & operator=( VkCuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
20102     {
20103       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const *>( &rhs );
20104       return *this;
20105     }
20106 
20107 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20108     VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20109     {
20110       pNext = pNext_;
20111       return *this;
20112     }
20113 
setDataSizeVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20114     VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT
20115     {
20116       dataSize = dataSize_;
20117       return *this;
20118     }
20119 
setPDataVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20120     VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
20121     {
20122       pData = pData_;
20123       return *this;
20124     }
20125 
20126 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20127     template <typename T>
setDataVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20128     CuModuleCreateInfoNVX & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
20129     {
20130       dataSize = data_.size() * sizeof( T );
20131       pData    = data_.data();
20132       return *this;
20133     }
20134 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20135 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20136 
operator VkCuModuleCreateInfoNVX const&VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20137     operator VkCuModuleCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT
20138     {
20139       return *reinterpret_cast<const VkCuModuleCreateInfoNVX *>( this );
20140     }
20141 
operator VkCuModuleCreateInfoNVX&VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20142     operator VkCuModuleCreateInfoNVX &() VULKAN_HPP_NOEXCEPT
20143     {
20144       return *reinterpret_cast<VkCuModuleCreateInfoNVX *>( this );
20145     }
20146 
20147 #if defined( VULKAN_HPP_USE_REFLECT )
20148 #  if 14 <= VULKAN_HPP_CPP_VERSION
20149     auto
20150 #  else
20151     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, size_t const &, const void * const &>
20152 #  endif
reflectVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20153       reflect() const VULKAN_HPP_NOEXCEPT
20154     {
20155       return std::tie( sType, pNext, dataSize, pData );
20156     }
20157 #endif
20158 
20159 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20160     auto operator<=>( CuModuleCreateInfoNVX const & ) const = default;
20161 #else
operator ==VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20162     bool operator==( CuModuleCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
20163     {
20164 #  if defined( VULKAN_HPP_USE_REFLECT )
20165       return this->reflect() == rhs.reflect();
20166 #  else
20167       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
20168 #  endif
20169     }
20170 
operator !=VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX20171     bool operator!=( CuModuleCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
20172     {
20173       return !operator==( rhs );
20174     }
20175 #endif
20176 
20177   public:
20178     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eCuModuleCreateInfoNVX;
20179     const void *                        pNext    = {};
20180     size_t                              dataSize = {};
20181     const void *                        pData    = {};
20182   };
20183 
20184   template <>
20185   struct CppType<StructureType, StructureType::eCuModuleCreateInfoNVX>
20186   {
20187     using Type = CuModuleCreateInfoNVX;
20188   };
20189 
20190 #if defined( VK_ENABLE_BETA_EXTENSIONS )
20191   struct CudaFunctionCreateInfoNV
20192   {
20193     using NativeType = VkCudaFunctionCreateInfoNV;
20194 
20195     static const bool                                  allowDuplicate = false;
20196     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCudaFunctionCreateInfoNV;
20197 
20198 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
20199     VULKAN_HPP_CONSTEXPR
CudaFunctionCreateInfoNVVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20200       CudaFunctionCreateInfoNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module_ = {}, const char * pName_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
20201       : pNext{ pNext_ }
20202       , module{ module_ }
20203       , pName{ pName_ }
20204     {
20205     }
20206 
20207     VULKAN_HPP_CONSTEXPR CudaFunctionCreateInfoNV( CudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20208 
CudaFunctionCreateInfoNVVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20209     CudaFunctionCreateInfoNV( VkCudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
20210       : CudaFunctionCreateInfoNV( *reinterpret_cast<CudaFunctionCreateInfoNV const *>( &rhs ) )
20211     {
20212     }
20213 
20214     CudaFunctionCreateInfoNV & operator=( CudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20215 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20216 
operator =VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20217     CudaFunctionCreateInfoNV & operator=( VkCudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
20218     {
20219       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const *>( &rhs );
20220       return *this;
20221     }
20222 
20223 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20224     VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20225     {
20226       pNext = pNext_;
20227       return *this;
20228     }
20229 
setModuleVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20230     VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setModule( VULKAN_HPP_NAMESPACE::CudaModuleNV module_ ) VULKAN_HPP_NOEXCEPT
20231     {
20232       module = module_;
20233       return *this;
20234     }
20235 
setPNameVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20236     VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
20237     {
20238       pName = pName_;
20239       return *this;
20240     }
20241 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20242 
operator VkCudaFunctionCreateInfoNV const&VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20243     operator VkCudaFunctionCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
20244     {
20245       return *reinterpret_cast<const VkCudaFunctionCreateInfoNV *>( this );
20246     }
20247 
operator VkCudaFunctionCreateInfoNV&VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20248     operator VkCudaFunctionCreateInfoNV &() VULKAN_HPP_NOEXCEPT
20249     {
20250       return *reinterpret_cast<VkCudaFunctionCreateInfoNV *>( this );
20251     }
20252 
20253 #  if defined( VULKAN_HPP_USE_REFLECT )
20254 #    if 14 <= VULKAN_HPP_CPP_VERSION
20255     auto
20256 #    else
20257     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CudaModuleNV const &, const char * const &>
20258 #    endif
reflectVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20259       reflect() const VULKAN_HPP_NOEXCEPT
20260     {
20261       return std::tie( sType, pNext, module, pName );
20262     }
20263 #  endif
20264 
20265 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20266     std::strong_ordering operator<=>( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20267     {
20268       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
20269         return cmp;
20270       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
20271         return cmp;
20272       if ( auto cmp = module <=> rhs.module; cmp != 0 )
20273         return cmp;
20274       if ( pName != rhs.pName )
20275         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
20276           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
20277 
20278       return std::strong_ordering::equivalent;
20279     }
20280 #  endif
20281 
operator ==VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20282     bool operator==( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20283     {
20284       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( module == rhs.module ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) );
20285     }
20286 
operator !=VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20287     bool operator!=( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20288     {
20289       return !operator==( rhs );
20290     }
20291 
20292   public:
20293     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eCudaFunctionCreateInfoNV;
20294     const void *                        pNext  = {};
20295     VULKAN_HPP_NAMESPACE::CudaModuleNV  module = {};
20296     const char *                        pName  = {};
20297   };
20298 
20299   template <>
20300   struct CppType<StructureType, StructureType::eCudaFunctionCreateInfoNV>
20301   {
20302     using Type = CudaFunctionCreateInfoNV;
20303   };
20304 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
20305 
20306 #if defined( VK_ENABLE_BETA_EXTENSIONS )
20307   struct CudaLaunchInfoNV
20308   {
20309     using NativeType = VkCudaLaunchInfoNV;
20310 
20311     static const bool                                  allowDuplicate = false;
20312     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCudaLaunchInfoNV;
20313 
20314 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CudaLaunchInfoNVVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20315     VULKAN_HPP_CONSTEXPR CudaLaunchInfoNV( VULKAN_HPP_NAMESPACE::CudaFunctionNV function_       = {},
20316                                            uint32_t                             gridDimX_       = {},
20317                                            uint32_t                             gridDimY_       = {},
20318                                            uint32_t                             gridDimZ_       = {},
20319                                            uint32_t                             blockDimX_      = {},
20320                                            uint32_t                             blockDimY_      = {},
20321                                            uint32_t                             blockDimZ_      = {},
20322                                            uint32_t                             sharedMemBytes_ = {},
20323                                            size_t                               paramCount_     = {},
20324                                            const void * const *                 pParams_        = {},
20325                                            size_t                               extraCount_     = {},
20326                                            const void * const *                 pExtras_        = {},
20327                                            const void *                         pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
20328       : pNext{ pNext_ }
20329       , function{ function_ }
20330       , gridDimX{ gridDimX_ }
20331       , gridDimY{ gridDimY_ }
20332       , gridDimZ{ gridDimZ_ }
20333       , blockDimX{ blockDimX_ }
20334       , blockDimY{ blockDimY_ }
20335       , blockDimZ{ blockDimZ_ }
20336       , sharedMemBytes{ sharedMemBytes_ }
20337       , paramCount{ paramCount_ }
20338       , pParams{ pParams_ }
20339       , extraCount{ extraCount_ }
20340       , pExtras{ pExtras_ }
20341     {
20342     }
20343 
20344     VULKAN_HPP_CONSTEXPR CudaLaunchInfoNV( CudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20345 
CudaLaunchInfoNVVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20346     CudaLaunchInfoNV( VkCudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT : CudaLaunchInfoNV( *reinterpret_cast<CudaLaunchInfoNV const *>( &rhs ) ) {}
20347 
20348 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CudaLaunchInfoNVVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20349     CudaLaunchInfoNV( VULKAN_HPP_NAMESPACE::CudaFunctionNV                                      function_,
20350                       uint32_t                                                                  gridDimX_,
20351                       uint32_t                                                                  gridDimY_,
20352                       uint32_t                                                                  gridDimZ_,
20353                       uint32_t                                                                  blockDimX_,
20354                       uint32_t                                                                  blockDimY_,
20355                       uint32_t                                                                  blockDimZ_,
20356                       uint32_t                                                                  sharedMemBytes_,
20357                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & params_,
20358                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & extras_ = {},
20359                       const void *                                                              pNext_  = nullptr )
20360       : pNext( pNext_ )
20361       , function( function_ )
20362       , gridDimX( gridDimX_ )
20363       , gridDimY( gridDimY_ )
20364       , gridDimZ( gridDimZ_ )
20365       , blockDimX( blockDimX_ )
20366       , blockDimY( blockDimY_ )
20367       , blockDimZ( blockDimZ_ )
20368       , sharedMemBytes( sharedMemBytes_ )
20369       , paramCount( params_.size() )
20370       , pParams( params_.data() )
20371       , extraCount( extras_.size() )
20372       , pExtras( extras_.data() )
20373     {
20374     }
20375 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20376 
20377     CudaLaunchInfoNV & operator=( CudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20378 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20379 
operator =VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20380     CudaLaunchInfoNV & operator=( VkCudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
20381     {
20382       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV const *>( &rhs );
20383       return *this;
20384     }
20385 
20386 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20387     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20388     {
20389       pNext = pNext_;
20390       return *this;
20391     }
20392 
setFunctionVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20393     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setFunction( VULKAN_HPP_NAMESPACE::CudaFunctionNV function_ ) VULKAN_HPP_NOEXCEPT
20394     {
20395       function = function_;
20396       return *this;
20397     }
20398 
setGridDimXVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20399     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimX( uint32_t gridDimX_ ) VULKAN_HPP_NOEXCEPT
20400     {
20401       gridDimX = gridDimX_;
20402       return *this;
20403     }
20404 
setGridDimYVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20405     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimY( uint32_t gridDimY_ ) VULKAN_HPP_NOEXCEPT
20406     {
20407       gridDimY = gridDimY_;
20408       return *this;
20409     }
20410 
setGridDimZVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20411     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimZ( uint32_t gridDimZ_ ) VULKAN_HPP_NOEXCEPT
20412     {
20413       gridDimZ = gridDimZ_;
20414       return *this;
20415     }
20416 
setBlockDimXVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20417     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimX( uint32_t blockDimX_ ) VULKAN_HPP_NOEXCEPT
20418     {
20419       blockDimX = blockDimX_;
20420       return *this;
20421     }
20422 
setBlockDimYVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20423     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimY( uint32_t blockDimY_ ) VULKAN_HPP_NOEXCEPT
20424     {
20425       blockDimY = blockDimY_;
20426       return *this;
20427     }
20428 
setBlockDimZVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20429     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimZ( uint32_t blockDimZ_ ) VULKAN_HPP_NOEXCEPT
20430     {
20431       blockDimZ = blockDimZ_;
20432       return *this;
20433     }
20434 
setSharedMemBytesVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20435     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setSharedMemBytes( uint32_t sharedMemBytes_ ) VULKAN_HPP_NOEXCEPT
20436     {
20437       sharedMemBytes = sharedMemBytes_;
20438       return *this;
20439     }
20440 
setParamCountVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20441     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setParamCount( size_t paramCount_ ) VULKAN_HPP_NOEXCEPT
20442     {
20443       paramCount = paramCount_;
20444       return *this;
20445     }
20446 
setPParamsVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20447     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPParams( const void * const * pParams_ ) VULKAN_HPP_NOEXCEPT
20448     {
20449       pParams = pParams_;
20450       return *this;
20451     }
20452 
20453 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setParamsVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20454     CudaLaunchInfoNV & setParams( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & params_ ) VULKAN_HPP_NOEXCEPT
20455     {
20456       paramCount = params_.size();
20457       pParams    = params_.data();
20458       return *this;
20459     }
20460 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20461 
setExtraCountVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20462     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setExtraCount( size_t extraCount_ ) VULKAN_HPP_NOEXCEPT
20463     {
20464       extraCount = extraCount_;
20465       return *this;
20466     }
20467 
setPExtrasVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20468     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPExtras( const void * const * pExtras_ ) VULKAN_HPP_NOEXCEPT
20469     {
20470       pExtras = pExtras_;
20471       return *this;
20472     }
20473 
20474 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setExtrasVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20475     CudaLaunchInfoNV & setExtras( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & extras_ ) VULKAN_HPP_NOEXCEPT
20476     {
20477       extraCount = extras_.size();
20478       pExtras    = extras_.data();
20479       return *this;
20480     }
20481 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20482 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20483 
operator VkCudaLaunchInfoNV const&VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20484     operator VkCudaLaunchInfoNV const &() const VULKAN_HPP_NOEXCEPT
20485     {
20486       return *reinterpret_cast<const VkCudaLaunchInfoNV *>( this );
20487     }
20488 
operator VkCudaLaunchInfoNV&VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20489     operator VkCudaLaunchInfoNV &() VULKAN_HPP_NOEXCEPT
20490     {
20491       return *reinterpret_cast<VkCudaLaunchInfoNV *>( this );
20492     }
20493 
20494 #  if defined( VULKAN_HPP_USE_REFLECT )
20495 #    if 14 <= VULKAN_HPP_CPP_VERSION
20496     auto
20497 #    else
20498     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
20499                const void * const &,
20500                VULKAN_HPP_NAMESPACE::CudaFunctionNV const &,
20501                uint32_t const &,
20502                uint32_t const &,
20503                uint32_t const &,
20504                uint32_t const &,
20505                uint32_t const &,
20506                uint32_t const &,
20507                uint32_t const &,
20508                size_t const &,
20509                const void * const * const &,
20510                size_t const &,
20511                const void * const * const &>
20512 #    endif
reflectVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20513       reflect() const VULKAN_HPP_NOEXCEPT
20514     {
20515       return std::tie(
20516         sType, pNext, function, gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY, blockDimZ, sharedMemBytes, paramCount, pParams, extraCount, pExtras );
20517     }
20518 #  endif
20519 
20520 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20521     auto operator<=>( CudaLaunchInfoNV const & ) const = default;
20522 #  else
operator ==VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20523     bool operator==( CudaLaunchInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20524     {
20525 #    if defined( VULKAN_HPP_USE_REFLECT )
20526       return this->reflect() == rhs.reflect();
20527 #    else
20528       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( function == rhs.function ) && ( gridDimX == rhs.gridDimX ) && ( gridDimY == rhs.gridDimY ) &&
20529              ( gridDimZ == rhs.gridDimZ ) && ( blockDimX == rhs.blockDimX ) && ( blockDimY == rhs.blockDimY ) && ( blockDimZ == rhs.blockDimZ ) &&
20530              ( sharedMemBytes == rhs.sharedMemBytes ) && ( paramCount == rhs.paramCount ) && ( pParams == rhs.pParams ) && ( extraCount == rhs.extraCount ) &&
20531              ( pExtras == rhs.pExtras );
20532 #    endif
20533     }
20534 
operator !=VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20535     bool operator!=( CudaLaunchInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20536     {
20537       return !operator==( rhs );
20538     }
20539 #  endif
20540 
20541   public:
20542     VULKAN_HPP_NAMESPACE::StructureType  sType          = StructureType::eCudaLaunchInfoNV;
20543     const void *                         pNext          = {};
20544     VULKAN_HPP_NAMESPACE::CudaFunctionNV function       = {};
20545     uint32_t                             gridDimX       = {};
20546     uint32_t                             gridDimY       = {};
20547     uint32_t                             gridDimZ       = {};
20548     uint32_t                             blockDimX      = {};
20549     uint32_t                             blockDimY      = {};
20550     uint32_t                             blockDimZ      = {};
20551     uint32_t                             sharedMemBytes = {};
20552     size_t                               paramCount     = {};
20553     const void * const *                 pParams        = {};
20554     size_t                               extraCount     = {};
20555     const void * const *                 pExtras        = {};
20556   };
20557 
20558   template <>
20559   struct CppType<StructureType, StructureType::eCudaLaunchInfoNV>
20560   {
20561     using Type = CudaLaunchInfoNV;
20562   };
20563 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
20564 
20565 #if defined( VK_ENABLE_BETA_EXTENSIONS )
20566   struct CudaModuleCreateInfoNV
20567   {
20568     using NativeType = VkCudaModuleCreateInfoNV;
20569 
20570     static const bool                                  allowDuplicate = false;
20571     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCudaModuleCreateInfoNV;
20572 
20573 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CudaModuleCreateInfoNVVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20574     VULKAN_HPP_CONSTEXPR CudaModuleCreateInfoNV( size_t dataSize_ = {}, const void * pData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
20575       : pNext{ pNext_ }
20576       , dataSize{ dataSize_ }
20577       , pData{ pData_ }
20578     {
20579     }
20580 
20581     VULKAN_HPP_CONSTEXPR CudaModuleCreateInfoNV( CudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20582 
CudaModuleCreateInfoNVVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20583     CudaModuleCreateInfoNV( VkCudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
20584       : CudaModuleCreateInfoNV( *reinterpret_cast<CudaModuleCreateInfoNV const *>( &rhs ) )
20585     {
20586     }
20587 
20588 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20589     template <typename T>
CudaModuleCreateInfoNVVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20590     CudaModuleCreateInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_, const void * pNext_ = nullptr )
20591       : pNext( pNext_ ), dataSize( data_.size() * sizeof( T ) ), pData( data_.data() )
20592     {
20593     }
20594 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20595 
20596     CudaModuleCreateInfoNV & operator=( CudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20597 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20598 
operator =VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20599     CudaModuleCreateInfoNV & operator=( VkCudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
20600     {
20601       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const *>( &rhs );
20602       return *this;
20603     }
20604 
20605 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20606     VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20607     {
20608       pNext = pNext_;
20609       return *this;
20610     }
20611 
setDataSizeVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20612     VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT
20613     {
20614       dataSize = dataSize_;
20615       return *this;
20616     }
20617 
setPDataVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20618     VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
20619     {
20620       pData = pData_;
20621       return *this;
20622     }
20623 
20624 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20625     template <typename T>
setDataVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20626     CudaModuleCreateInfoNV & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
20627     {
20628       dataSize = data_.size() * sizeof( T );
20629       pData    = data_.data();
20630       return *this;
20631     }
20632 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20633 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20634 
operator VkCudaModuleCreateInfoNV const&VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20635     operator VkCudaModuleCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
20636     {
20637       return *reinterpret_cast<const VkCudaModuleCreateInfoNV *>( this );
20638     }
20639 
operator VkCudaModuleCreateInfoNV&VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20640     operator VkCudaModuleCreateInfoNV &() VULKAN_HPP_NOEXCEPT
20641     {
20642       return *reinterpret_cast<VkCudaModuleCreateInfoNV *>( this );
20643     }
20644 
20645 #  if defined( VULKAN_HPP_USE_REFLECT )
20646 #    if 14 <= VULKAN_HPP_CPP_VERSION
20647     auto
20648 #    else
20649     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, size_t const &, const void * const &>
20650 #    endif
reflectVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20651       reflect() const VULKAN_HPP_NOEXCEPT
20652     {
20653       return std::tie( sType, pNext, dataSize, pData );
20654     }
20655 #  endif
20656 
20657 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20658     auto operator<=>( CudaModuleCreateInfoNV const & ) const = default;
20659 #  else
operator ==VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20660     bool operator==( CudaModuleCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20661     {
20662 #    if defined( VULKAN_HPP_USE_REFLECT )
20663       return this->reflect() == rhs.reflect();
20664 #    else
20665       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
20666 #    endif
20667     }
20668 
operator !=VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20669     bool operator!=( CudaModuleCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20670     {
20671       return !operator==( rhs );
20672     }
20673 #  endif
20674 
20675   public:
20676     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eCudaModuleCreateInfoNV;
20677     const void *                        pNext    = {};
20678     size_t                              dataSize = {};
20679     const void *                        pData    = {};
20680   };
20681 
20682   template <>
20683   struct CppType<StructureType, StructureType::eCudaModuleCreateInfoNV>
20684   {
20685     using Type = CudaModuleCreateInfoNV;
20686   };
20687 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
20688 
20689 #if defined( VK_USE_PLATFORM_WIN32_KHR )
20690   struct D3D12FenceSubmitInfoKHR
20691   {
20692     using NativeType = VkD3D12FenceSubmitInfoKHR;
20693 
20694     static const bool                                  allowDuplicate = false;
20695     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eD3D12FenceSubmitInfoKHR;
20696 
20697 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
D3D12FenceSubmitInfoKHRVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20698     VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( uint32_t         waitSemaphoreValuesCount_   = {},
20699                                                   const uint64_t * pWaitSemaphoreValues_       = {},
20700                                                   uint32_t         signalSemaphoreValuesCount_ = {},
20701                                                   const uint64_t * pSignalSemaphoreValues_     = {},
20702                                                   const void *     pNext_                      = nullptr ) VULKAN_HPP_NOEXCEPT
20703       : pNext{ pNext_ }
20704       , waitSemaphoreValuesCount{ waitSemaphoreValuesCount_ }
20705       , pWaitSemaphoreValues{ pWaitSemaphoreValues_ }
20706       , signalSemaphoreValuesCount{ signalSemaphoreValuesCount_ }
20707       , pSignalSemaphoreValues{ pSignalSemaphoreValues_ }
20708     {
20709     }
20710 
20711     VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20712 
D3D12FenceSubmitInfoKHRVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20713     D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
20714       : D3D12FenceSubmitInfoKHR( *reinterpret_cast<D3D12FenceSubmitInfoKHR const *>( &rhs ) )
20715     {
20716     }
20717 
20718 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
D3D12FenceSubmitInfoKHRVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20719     D3D12FenceSubmitInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_,
20720                              VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ = {},
20721                              const void *                                                          pNext_                 = nullptr )
20722       : pNext( pNext_ )
20723       , waitSemaphoreValuesCount( static_cast<uint32_t>( waitSemaphoreValues_.size() ) )
20724       , pWaitSemaphoreValues( waitSemaphoreValues_.data() )
20725       , signalSemaphoreValuesCount( static_cast<uint32_t>( signalSemaphoreValues_.size() ) )
20726       , pSignalSemaphoreValues( signalSemaphoreValues_.data() )
20727     {
20728     }
20729 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20730 
20731     D3D12FenceSubmitInfoKHR & operator=( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20732 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20733 
operator =VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20734     D3D12FenceSubmitInfoKHR & operator=( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
20735     {
20736       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR const *>( &rhs );
20737       return *this;
20738     }
20739 
20740 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20741     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20742     {
20743       pNext = pNext_;
20744       return *this;
20745     }
20746 
setWaitSemaphoreValuesCountVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20747     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ ) VULKAN_HPP_NOEXCEPT
20748     {
20749       waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
20750       return *this;
20751     }
20752 
setPWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20753     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPWaitSemaphoreValues( const uint64_t * pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
20754     {
20755       pWaitSemaphoreValues = pWaitSemaphoreValues_;
20756       return *this;
20757     }
20758 
20759 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20760     D3D12FenceSubmitInfoKHR &
setWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20761       setWaitSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
20762     {
20763       waitSemaphoreValuesCount = static_cast<uint32_t>( waitSemaphoreValues_.size() );
20764       pWaitSemaphoreValues     = waitSemaphoreValues_.data();
20765       return *this;
20766     }
20767 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20768 
setSignalSemaphoreValuesCountVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20769     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ ) VULKAN_HPP_NOEXCEPT
20770     {
20771       signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
20772       return *this;
20773     }
20774 
setPSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20775     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPSignalSemaphoreValues( const uint64_t * pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
20776     {
20777       pSignalSemaphoreValues = pSignalSemaphoreValues_;
20778       return *this;
20779     }
20780 
20781 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20782     D3D12FenceSubmitInfoKHR &
setSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20783       setSignalSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
20784     {
20785       signalSemaphoreValuesCount = static_cast<uint32_t>( signalSemaphoreValues_.size() );
20786       pSignalSemaphoreValues     = signalSemaphoreValues_.data();
20787       return *this;
20788     }
20789 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20790 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20791 
operator VkD3D12FenceSubmitInfoKHR const&VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20792     operator VkD3D12FenceSubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT
20793     {
20794       return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR *>( this );
20795     }
20796 
operator VkD3D12FenceSubmitInfoKHR&VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20797     operator VkD3D12FenceSubmitInfoKHR &() VULKAN_HPP_NOEXCEPT
20798     {
20799       return *reinterpret_cast<VkD3D12FenceSubmitInfoKHR *>( this );
20800     }
20801 
20802 #  if defined( VULKAN_HPP_USE_REFLECT )
20803 #    if 14 <= VULKAN_HPP_CPP_VERSION
20804     auto
20805 #    else
20806     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
20807                const void * const &,
20808                uint32_t const &,
20809                const uint64_t * const &,
20810                uint32_t const &,
20811                const uint64_t * const &>
20812 #    endif
reflectVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20813       reflect() const VULKAN_HPP_NOEXCEPT
20814     {
20815       return std::tie( sType, pNext, waitSemaphoreValuesCount, pWaitSemaphoreValues, signalSemaphoreValuesCount, pSignalSemaphoreValues );
20816     }
20817 #  endif
20818 
20819 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20820     auto operator<=>( D3D12FenceSubmitInfoKHR const & ) const = default;
20821 #  else
operator ==VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20822     bool operator==( D3D12FenceSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
20823     {
20824 #    if defined( VULKAN_HPP_USE_REFLECT )
20825       return this->reflect() == rhs.reflect();
20826 #    else
20827       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount ) &&
20828              ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount ) &&
20829              ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
20830 #    endif
20831     }
20832 
operator !=VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20833     bool operator!=( D3D12FenceSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
20834     {
20835       return !operator==( rhs );
20836     }
20837 #  endif
20838 
20839   public:
20840     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::eD3D12FenceSubmitInfoKHR;
20841     const void *                        pNext                      = {};
20842     uint32_t                            waitSemaphoreValuesCount   = {};
20843     const uint64_t *                    pWaitSemaphoreValues       = {};
20844     uint32_t                            signalSemaphoreValuesCount = {};
20845     const uint64_t *                    pSignalSemaphoreValues     = {};
20846   };
20847 
20848   template <>
20849   struct CppType<StructureType, StructureType::eD3D12FenceSubmitInfoKHR>
20850   {
20851     using Type = D3D12FenceSubmitInfoKHR;
20852   };
20853 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
20854 
20855   struct DebugMarkerMarkerInfoEXT
20856   {
20857     using NativeType = VkDebugMarkerMarkerInfoEXT;
20858 
20859     static const bool                                  allowDuplicate = false;
20860     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugMarkerMarkerInfoEXT;
20861 
20862 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
20863     VULKAN_HPP_CONSTEXPR_14
DebugMarkerMarkerInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20864       DebugMarkerMarkerInfoEXT( const char * pMarkerName_ = {}, std::array<float, 4> const & color_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
20865       : pNext{ pNext_ }
20866       , pMarkerName{ pMarkerName_ }
20867       , color{ color_ }
20868     {
20869     }
20870 
20871     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20872 
DebugMarkerMarkerInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20873     DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
20874       : DebugMarkerMarkerInfoEXT( *reinterpret_cast<DebugMarkerMarkerInfoEXT const *>( &rhs ) )
20875     {
20876     }
20877 
20878     DebugMarkerMarkerInfoEXT & operator=( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20879 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20880 
operator =VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20881     DebugMarkerMarkerInfoEXT & operator=( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
20882     {
20883       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT const *>( &rhs );
20884       return *this;
20885     }
20886 
20887 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20888     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20889     {
20890       pNext = pNext_;
20891       return *this;
20892     }
20893 
setPMarkerNameVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20894     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setPMarkerName( const char * pMarkerName_ ) VULKAN_HPP_NOEXCEPT
20895     {
20896       pMarkerName = pMarkerName_;
20897       return *this;
20898     }
20899 
setColorVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20900     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setColor( std::array<float, 4> color_ ) VULKAN_HPP_NOEXCEPT
20901     {
20902       color = color_;
20903       return *this;
20904     }
20905 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20906 
operator VkDebugMarkerMarkerInfoEXT const&VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20907     operator VkDebugMarkerMarkerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
20908     {
20909       return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( this );
20910     }
20911 
operator VkDebugMarkerMarkerInfoEXT&VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20912     operator VkDebugMarkerMarkerInfoEXT &() VULKAN_HPP_NOEXCEPT
20913     {
20914       return *reinterpret_cast<VkDebugMarkerMarkerInfoEXT *>( this );
20915     }
20916 
20917 #if defined( VULKAN_HPP_USE_REFLECT )
20918 #  if 14 <= VULKAN_HPP_CPP_VERSION
20919     auto
20920 #  else
20921     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const char * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
20922 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20923       reflect() const VULKAN_HPP_NOEXCEPT
20924     {
20925       return std::tie( sType, pNext, pMarkerName, color );
20926     }
20927 #endif
20928 
20929 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20930     std::partial_ordering operator<=>( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
20931     {
20932       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
20933         return cmp;
20934       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
20935         return cmp;
20936       if ( pMarkerName != rhs.pMarkerName )
20937         if ( auto cmp = strcmp( pMarkerName, rhs.pMarkerName ); cmp != 0 )
20938           return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater;
20939       if ( auto cmp = color <=> rhs.color; cmp != 0 )
20940         return cmp;
20941 
20942       return std::partial_ordering::equivalent;
20943     }
20944 #endif
20945 
operator ==VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20946     bool operator==( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
20947     {
20948       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ( pMarkerName == rhs.pMarkerName ) || ( strcmp( pMarkerName, rhs.pMarkerName ) == 0 ) ) &&
20949              ( color == rhs.color );
20950     }
20951 
operator !=VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20952     bool operator!=( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
20953     {
20954       return !operator==( rhs );
20955     }
20956 
20957   public:
20958     VULKAN_HPP_NAMESPACE::StructureType            sType       = StructureType::eDebugMarkerMarkerInfoEXT;
20959     const void *                                   pNext       = {};
20960     const char *                                   pMarkerName = {};
20961     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> color       = {};
20962   };
20963 
20964   template <>
20965   struct CppType<StructureType, StructureType::eDebugMarkerMarkerInfoEXT>
20966   {
20967     using Type = DebugMarkerMarkerInfoEXT;
20968   };
20969 
20970   struct DebugMarkerObjectNameInfoEXT
20971   {
20972     using NativeType = VkDebugMarkerObjectNameInfoEXT;
20973 
20974     static const bool                                  allowDuplicate = false;
20975     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugMarkerObjectNameInfoEXT;
20976 
20977 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
20978     VULKAN_HPP_CONSTEXPR
DebugMarkerObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20979       DebugMarkerObjectNameInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_  = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown,
20980                                     uint64_t                                       object_      = {},
20981                                     const char *                                   pObjectName_ = {},
20982                                     const void *                                   pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
20983       : pNext{ pNext_ }
20984       , objectType{ objectType_ }
20985       , object{ object_ }
20986       , pObjectName{ pObjectName_ }
20987     {
20988     }
20989 
20990     VULKAN_HPP_CONSTEXPR DebugMarkerObjectNameInfoEXT( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20991 
DebugMarkerObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20992     DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
20993       : DebugMarkerObjectNameInfoEXT( *reinterpret_cast<DebugMarkerObjectNameInfoEXT const *>( &rhs ) )
20994     {
20995     }
20996 
20997     DebugMarkerObjectNameInfoEXT & operator=( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20998 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20999 
operator =VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21000     DebugMarkerObjectNameInfoEXT & operator=( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21001     {
21002       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT const *>( &rhs );
21003       return *this;
21004     }
21005 
21006 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21007     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21008     {
21009       pNext = pNext_;
21010       return *this;
21011     }
21012 
setObjectTypeVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21013     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ ) VULKAN_HPP_NOEXCEPT
21014     {
21015       objectType = objectType_;
21016       return *this;
21017     }
21018 
setObjectVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21019     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setObject( uint64_t object_ ) VULKAN_HPP_NOEXCEPT
21020     {
21021       object = object_;
21022       return *this;
21023     }
21024 
setPObjectNameVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21025     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setPObjectName( const char * pObjectName_ ) VULKAN_HPP_NOEXCEPT
21026     {
21027       pObjectName = pObjectName_;
21028       return *this;
21029     }
21030 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21031 
operator VkDebugMarkerObjectNameInfoEXT const&VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21032     operator VkDebugMarkerObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT
21033     {
21034       return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT *>( this );
21035     }
21036 
operator VkDebugMarkerObjectNameInfoEXT&VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21037     operator VkDebugMarkerObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT
21038     {
21039       return *reinterpret_cast<VkDebugMarkerObjectNameInfoEXT *>( this );
21040     }
21041 
21042 #if defined( VULKAN_HPP_USE_REFLECT )
21043 #  if 14 <= VULKAN_HPP_CPP_VERSION
21044     auto
21045 #  else
21046     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21047                const void * const &,
21048                VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT const &,
21049                uint64_t const &,
21050                const char * const &>
21051 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21052       reflect() const VULKAN_HPP_NOEXCEPT
21053     {
21054       return std::tie( sType, pNext, objectType, object, pObjectName );
21055     }
21056 #endif
21057 
21058 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21059     std::strong_ordering operator<=>( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21060     {
21061       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
21062         return cmp;
21063       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
21064         return cmp;
21065       if ( auto cmp = objectType <=> rhs.objectType; cmp != 0 )
21066         return cmp;
21067       if ( auto cmp = object <=> rhs.object; cmp != 0 )
21068         return cmp;
21069       if ( pObjectName != rhs.pObjectName )
21070         if ( auto cmp = strcmp( pObjectName, rhs.pObjectName ); cmp != 0 )
21071           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
21072 
21073       return std::strong_ordering::equivalent;
21074     }
21075 #endif
21076 
operator ==VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21077     bool operator==( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21078     {
21079       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( object == rhs.object ) &&
21080              ( ( pObjectName == rhs.pObjectName ) || ( strcmp( pObjectName, rhs.pObjectName ) == 0 ) );
21081     }
21082 
operator !=VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT21083     bool operator!=( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21084     {
21085       return !operator==( rhs );
21086     }
21087 
21088   public:
21089     VULKAN_HPP_NAMESPACE::StructureType            sType       = StructureType::eDebugMarkerObjectNameInfoEXT;
21090     const void *                                   pNext       = {};
21091     VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType  = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
21092     uint64_t                                       object      = {};
21093     const char *                                   pObjectName = {};
21094   };
21095 
21096   template <>
21097   struct CppType<StructureType, StructureType::eDebugMarkerObjectNameInfoEXT>
21098   {
21099     using Type = DebugMarkerObjectNameInfoEXT;
21100   };
21101 
21102   struct DebugMarkerObjectTagInfoEXT
21103   {
21104     using NativeType = VkDebugMarkerObjectTagInfoEXT;
21105 
21106     static const bool                                  allowDuplicate = false;
21107     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugMarkerObjectTagInfoEXT;
21108 
21109 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
21110     VULKAN_HPP_CONSTEXPR
DebugMarkerObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21111       DebugMarkerObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown,
21112                                    uint64_t                                       object_     = {},
21113                                    uint64_t                                       tagName_    = {},
21114                                    size_t                                         tagSize_    = {},
21115                                    const void *                                   pTag_       = {},
21116                                    const void *                                   pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
21117       : pNext{ pNext_ }
21118       , objectType{ objectType_ }
21119       , object{ object_ }
21120       , tagName{ tagName_ }
21121       , tagSize{ tagSize_ }
21122       , pTag{ pTag_ }
21123     {
21124     }
21125 
21126     VULKAN_HPP_CONSTEXPR DebugMarkerObjectTagInfoEXT( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21127 
DebugMarkerObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21128     DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21129       : DebugMarkerObjectTagInfoEXT( *reinterpret_cast<DebugMarkerObjectTagInfoEXT const *>( &rhs ) )
21130     {
21131     }
21132 
21133 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
21134     template <typename T>
DebugMarkerObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21135     DebugMarkerObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT                 objectType_,
21136                                  uint64_t                                                       object_,
21137                                  uint64_t                                                       tagName_,
21138                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_,
21139                                  const void *                                                   pNext_ = nullptr )
21140       : pNext( pNext_ ), objectType( objectType_ ), object( object_ ), tagName( tagName_ ), tagSize( tag_.size() * sizeof( T ) ), pTag( tag_.data() )
21141     {
21142     }
21143 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21144 
21145     DebugMarkerObjectTagInfoEXT & operator=( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21146 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21147 
operator =VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21148     DebugMarkerObjectTagInfoEXT & operator=( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21149     {
21150       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT const *>( &rhs );
21151       return *this;
21152     }
21153 
21154 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21155     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21156     {
21157       pNext = pNext_;
21158       return *this;
21159     }
21160 
setObjectTypeVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21161     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ ) VULKAN_HPP_NOEXCEPT
21162     {
21163       objectType = objectType_;
21164       return *this;
21165     }
21166 
setObjectVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21167     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setObject( uint64_t object_ ) VULKAN_HPP_NOEXCEPT
21168     {
21169       object = object_;
21170       return *this;
21171     }
21172 
setTagNameVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21173     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT
21174     {
21175       tagName = tagName_;
21176       return *this;
21177     }
21178 
setTagSizeVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21179     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT
21180     {
21181       tagSize = tagSize_;
21182       return *this;
21183     }
21184 
setPTagVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21185     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT
21186     {
21187       pTag = pTag_;
21188       return *this;
21189     }
21190 
21191 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
21192     template <typename T>
setTagVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21193     DebugMarkerObjectTagInfoEXT & setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ ) VULKAN_HPP_NOEXCEPT
21194     {
21195       tagSize = tag_.size() * sizeof( T );
21196       pTag    = tag_.data();
21197       return *this;
21198     }
21199 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21200 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21201 
operator VkDebugMarkerObjectTagInfoEXT const&VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21202     operator VkDebugMarkerObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT
21203     {
21204       return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT *>( this );
21205     }
21206 
operator VkDebugMarkerObjectTagInfoEXT&VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21207     operator VkDebugMarkerObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT
21208     {
21209       return *reinterpret_cast<VkDebugMarkerObjectTagInfoEXT *>( this );
21210     }
21211 
21212 #if defined( VULKAN_HPP_USE_REFLECT )
21213 #  if 14 <= VULKAN_HPP_CPP_VERSION
21214     auto
21215 #  else
21216     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21217                const void * const &,
21218                VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT const &,
21219                uint64_t const &,
21220                uint64_t const &,
21221                size_t const &,
21222                const void * const &>
21223 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21224       reflect() const VULKAN_HPP_NOEXCEPT
21225     {
21226       return std::tie( sType, pNext, objectType, object, tagName, tagSize, pTag );
21227     }
21228 #endif
21229 
21230 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
21231     auto operator<=>( DebugMarkerObjectTagInfoEXT const & ) const = default;
21232 #else
operator ==VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21233     bool operator==( DebugMarkerObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21234     {
21235 #  if defined( VULKAN_HPP_USE_REFLECT )
21236       return this->reflect() == rhs.reflect();
21237 #  else
21238       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( object == rhs.object ) && ( tagName == rhs.tagName ) &&
21239              ( tagSize == rhs.tagSize ) && ( pTag == rhs.pTag );
21240 #  endif
21241     }
21242 
operator !=VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21243     bool operator!=( DebugMarkerObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21244     {
21245       return !operator==( rhs );
21246     }
21247 #endif
21248 
21249   public:
21250     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::eDebugMarkerObjectTagInfoEXT;
21251     const void *                                   pNext      = {};
21252     VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
21253     uint64_t                                       object     = {};
21254     uint64_t                                       tagName    = {};
21255     size_t                                         tagSize    = {};
21256     const void *                                   pTag       = {};
21257   };
21258 
21259   template <>
21260   struct CppType<StructureType, StructureType::eDebugMarkerObjectTagInfoEXT>
21261   {
21262     using Type = DebugMarkerObjectTagInfoEXT;
21263   };
21264 
21265   struct DebugReportCallbackCreateInfoEXT
21266   {
21267     using NativeType = VkDebugReportCallbackCreateInfoEXT;
21268 
21269     static const bool                                  allowDuplicate = false;
21270     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugReportCallbackCreateInfoEXT;
21271 
21272 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugReportCallbackCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21273     VULKAN_HPP_CONSTEXPR DebugReportCallbackCreateInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags_       = {},
21274                                                            PFN_vkDebugReportCallbackEXT              pfnCallback_ = {},
21275                                                            void *                                    pUserData_   = {},
21276                                                            const void *                              pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
21277       : pNext{ pNext_ }
21278       , flags{ flags_ }
21279       , pfnCallback{ pfnCallback_ }
21280       , pUserData{ pUserData_ }
21281     {
21282     }
21283 
21284     VULKAN_HPP_CONSTEXPR DebugReportCallbackCreateInfoEXT( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21285 
DebugReportCallbackCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21286     DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21287       : DebugReportCallbackCreateInfoEXT( *reinterpret_cast<DebugReportCallbackCreateInfoEXT const *>( &rhs ) )
21288     {
21289     }
21290 
21291     DebugReportCallbackCreateInfoEXT & operator=( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21292 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21293 
operator =VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21294     DebugReportCallbackCreateInfoEXT & operator=( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21295     {
21296       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const *>( &rhs );
21297       return *this;
21298     }
21299 
21300 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21301     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21302     {
21303       pNext = pNext_;
21304       return *this;
21305     }
21306 
setFlagsVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21307     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
21308     {
21309       flags = flags_;
21310       return *this;
21311     }
21312 
setPfnCallbackVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21313     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ ) VULKAN_HPP_NOEXCEPT
21314     {
21315       pfnCallback = pfnCallback_;
21316       return *this;
21317     }
21318 
setPUserDataVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21319     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
21320     {
21321       pUserData = pUserData_;
21322       return *this;
21323     }
21324 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21325 
operator VkDebugReportCallbackCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21326     operator VkDebugReportCallbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
21327     {
21328       return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT *>( this );
21329     }
21330 
operator VkDebugReportCallbackCreateInfoEXT&VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21331     operator VkDebugReportCallbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
21332     {
21333       return *reinterpret_cast<VkDebugReportCallbackCreateInfoEXT *>( this );
21334     }
21335 
21336 #if defined( VULKAN_HPP_USE_REFLECT )
21337 #  if 14 <= VULKAN_HPP_CPP_VERSION
21338     auto
21339 #  else
21340     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21341                const void * const &,
21342                VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT const &,
21343                PFN_vkDebugReportCallbackEXT const &,
21344                void * const &>
21345 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21346       reflect() const VULKAN_HPP_NOEXCEPT
21347     {
21348       return std::tie( sType, pNext, flags, pfnCallback, pUserData );
21349     }
21350 #endif
21351 
operator ==VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21352     bool operator==( DebugReportCallbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21353     {
21354 #if defined( VULKAN_HPP_USE_REFLECT )
21355       return this->reflect() == rhs.reflect();
21356 #else
21357       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pfnCallback == rhs.pfnCallback ) && ( pUserData == rhs.pUserData );
21358 #endif
21359     }
21360 
operator !=VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21361     bool operator!=( DebugReportCallbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21362     {
21363       return !operator==( rhs );
21364     }
21365 
21366   public:
21367     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eDebugReportCallbackCreateInfoEXT;
21368     const void *                              pNext       = {};
21369     VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags       = {};
21370     PFN_vkDebugReportCallbackEXT              pfnCallback = {};
21371     void *                                    pUserData   = {};
21372   };
21373 
21374   template <>
21375   struct CppType<StructureType, StructureType::eDebugReportCallbackCreateInfoEXT>
21376   {
21377     using Type = DebugReportCallbackCreateInfoEXT;
21378   };
21379 
21380   struct DebugUtilsLabelEXT
21381   {
21382     using NativeType = VkDebugUtilsLabelEXT;
21383 
21384     static const bool                                  allowDuplicate = false;
21385     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsLabelEXT;
21386 
21387 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
21388     VULKAN_HPP_CONSTEXPR_14
DebugUtilsLabelEXTVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21389       DebugUtilsLabelEXT( const char * pLabelName_ = {}, std::array<float, 4> const & color_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
21390       : pNext{ pNext_ }
21391       , pLabelName{ pLabelName_ }
21392       , color{ color_ }
21393     {
21394     }
21395 
21396     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21397 
DebugUtilsLabelEXTVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21398     DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DebugUtilsLabelEXT( *reinterpret_cast<DebugUtilsLabelEXT const *>( &rhs ) ) {}
21399 
21400     DebugUtilsLabelEXT & operator=( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21401 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21402 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21403     DebugUtilsLabelEXT & operator=( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21404     {
21405       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT const *>( &rhs );
21406       return *this;
21407     }
21408 
21409 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21410     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21411     {
21412       pNext = pNext_;
21413       return *this;
21414     }
21415 
setPLabelNameVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21416     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPLabelName( const char * pLabelName_ ) VULKAN_HPP_NOEXCEPT
21417     {
21418       pLabelName = pLabelName_;
21419       return *this;
21420     }
21421 
setColorVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21422     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setColor( std::array<float, 4> color_ ) VULKAN_HPP_NOEXCEPT
21423     {
21424       color = color_;
21425       return *this;
21426     }
21427 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21428 
operator VkDebugUtilsLabelEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21429     operator VkDebugUtilsLabelEXT const &() const VULKAN_HPP_NOEXCEPT
21430     {
21431       return *reinterpret_cast<const VkDebugUtilsLabelEXT *>( this );
21432     }
21433 
operator VkDebugUtilsLabelEXT&VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21434     operator VkDebugUtilsLabelEXT &() VULKAN_HPP_NOEXCEPT
21435     {
21436       return *reinterpret_cast<VkDebugUtilsLabelEXT *>( this );
21437     }
21438 
21439 #if defined( VULKAN_HPP_USE_REFLECT )
21440 #  if 14 <= VULKAN_HPP_CPP_VERSION
21441     auto
21442 #  else
21443     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const char * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
21444 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21445       reflect() const VULKAN_HPP_NOEXCEPT
21446     {
21447       return std::tie( sType, pNext, pLabelName, color );
21448     }
21449 #endif
21450 
21451 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21452     std::partial_ordering operator<=>( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21453     {
21454       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
21455         return cmp;
21456       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
21457         return cmp;
21458       if ( pLabelName != rhs.pLabelName )
21459         if ( auto cmp = strcmp( pLabelName, rhs.pLabelName ); cmp != 0 )
21460           return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater;
21461       if ( auto cmp = color <=> rhs.color; cmp != 0 )
21462         return cmp;
21463 
21464       return std::partial_ordering::equivalent;
21465     }
21466 #endif
21467 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21468     bool operator==( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21469     {
21470       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ( pLabelName == rhs.pLabelName ) || ( strcmp( pLabelName, rhs.pLabelName ) == 0 ) ) &&
21471              ( color == rhs.color );
21472     }
21473 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21474     bool operator!=( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21475     {
21476       return !operator==( rhs );
21477     }
21478 
21479   public:
21480     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::eDebugUtilsLabelEXT;
21481     const void *                                   pNext      = {};
21482     const char *                                   pLabelName = {};
21483     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> color      = {};
21484   };
21485 
21486   template <>
21487   struct CppType<StructureType, StructureType::eDebugUtilsLabelEXT>
21488   {
21489     using Type = DebugUtilsLabelEXT;
21490   };
21491 
21492   struct DebugUtilsObjectNameInfoEXT
21493   {
21494     using NativeType = VkDebugUtilsObjectNameInfoEXT;
21495 
21496     static const bool                                  allowDuplicate = false;
21497     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsObjectNameInfoEXT;
21498 
21499 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21500     VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType_   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown,
21501                                                       uint64_t                         objectHandle_ = {},
21502                                                       const char *                     pObjectName_  = {},
21503                                                       const void *                     pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
21504       : pNext{ pNext_ }
21505       , objectType{ objectType_ }
21506       , objectHandle{ objectHandle_ }
21507       , pObjectName{ pObjectName_ }
21508     {
21509     }
21510 
21511     VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21512 
DebugUtilsObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21513     DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21514       : DebugUtilsObjectNameInfoEXT( *reinterpret_cast<DebugUtilsObjectNameInfoEXT const *>( &rhs ) )
21515     {
21516     }
21517 
21518     DebugUtilsObjectNameInfoEXT & operator=( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21519 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21520 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21521     DebugUtilsObjectNameInfoEXT & operator=( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21522     {
21523       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT const *>( &rhs );
21524       return *this;
21525     }
21526 
21527 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21528     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21529     {
21530       pNext = pNext_;
21531       return *this;
21532     }
21533 
setObjectTypeVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21534     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT
21535     {
21536       objectType = objectType_;
21537       return *this;
21538     }
21539 
setObjectHandleVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21540     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT
21541     {
21542       objectHandle = objectHandle_;
21543       return *this;
21544     }
21545 
setPObjectNameVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21546     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setPObjectName( const char * pObjectName_ ) VULKAN_HPP_NOEXCEPT
21547     {
21548       pObjectName = pObjectName_;
21549       return *this;
21550     }
21551 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21552 
operator VkDebugUtilsObjectNameInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21553     operator VkDebugUtilsObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT
21554     {
21555       return *reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT *>( this );
21556     }
21557 
operator VkDebugUtilsObjectNameInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21558     operator VkDebugUtilsObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT
21559     {
21560       return *reinterpret_cast<VkDebugUtilsObjectNameInfoEXT *>( this );
21561     }
21562 
21563 #if defined( VULKAN_HPP_USE_REFLECT )
21564 #  if 14 <= VULKAN_HPP_CPP_VERSION
21565     auto
21566 #  else
21567     std::
21568       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ObjectType const &, uint64_t const &, const char * const &>
21569 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21570       reflect() const VULKAN_HPP_NOEXCEPT
21571     {
21572       return std::tie( sType, pNext, objectType, objectHandle, pObjectName );
21573     }
21574 #endif
21575 
21576 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21577     std::strong_ordering operator<=>( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21578     {
21579       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
21580         return cmp;
21581       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
21582         return cmp;
21583       if ( auto cmp = objectType <=> rhs.objectType; cmp != 0 )
21584         return cmp;
21585       if ( auto cmp = objectHandle <=> rhs.objectHandle; cmp != 0 )
21586         return cmp;
21587       if ( pObjectName != rhs.pObjectName )
21588         if ( auto cmp = strcmp( pObjectName, rhs.pObjectName ); cmp != 0 )
21589           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
21590 
21591       return std::strong_ordering::equivalent;
21592     }
21593 #endif
21594 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21595     bool operator==( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21596     {
21597       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( objectHandle == rhs.objectHandle ) &&
21598              ( ( pObjectName == rhs.pObjectName ) || ( strcmp( pObjectName, rhs.pObjectName ) == 0 ) );
21599     }
21600 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21601     bool operator!=( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21602     {
21603       return !operator==( rhs );
21604     }
21605 
21606   public:
21607     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eDebugUtilsObjectNameInfoEXT;
21608     const void *                        pNext        = {};
21609     VULKAN_HPP_NAMESPACE::ObjectType    objectType   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
21610     uint64_t                            objectHandle = {};
21611     const char *                        pObjectName  = {};
21612   };
21613 
21614   template <>
21615   struct CppType<StructureType, StructureType::eDebugUtilsObjectNameInfoEXT>
21616   {
21617     using Type = DebugUtilsObjectNameInfoEXT;
21618   };
21619 
21620   struct DebugUtilsMessengerCallbackDataEXT
21621   {
21622     using NativeType = VkDebugUtilsMessengerCallbackDataEXT;
21623 
21624     static const bool                                  allowDuplicate = false;
21625     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsMessengerCallbackDataEXT;
21626 
21627 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21628     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_            = {},
21629                                                                 const char *                                                  pMessageIdName_   = {},
21630                                                                 int32_t                                                       messageIdNumber_  = {},
21631                                                                 const char *                                                  pMessage_         = {},
21632                                                                 uint32_t                                                      queueLabelCount_  = {},
21633                                                                 const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pQueueLabels_     = {},
21634                                                                 uint32_t                                                      cmdBufLabelCount_ = {},
21635                                                                 const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pCmdBufLabels_    = {},
21636                                                                 uint32_t                                                      objectCount_      = {},
21637                                                                 const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT *     pObjects_         = {},
21638                                                                 const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
21639       : pNext{ pNext_ }
21640       , flags{ flags_ }
21641       , pMessageIdName{ pMessageIdName_ }
21642       , messageIdNumber{ messageIdNumber_ }
21643       , pMessage{ pMessage_ }
21644       , queueLabelCount{ queueLabelCount_ }
21645       , pQueueLabels{ pQueueLabels_ }
21646       , cmdBufLabelCount{ cmdBufLabelCount_ }
21647       , pCmdBufLabels{ pCmdBufLabels_ }
21648       , objectCount{ objectCount_ }
21649       , pObjects{ pObjects_ }
21650     {
21651     }
21652 
21653     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21654 
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21655     DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21656       : DebugUtilsMessengerCallbackDataEXT( *reinterpret_cast<DebugUtilsMessengerCallbackDataEXT const *>( &rhs ) )
21657     {
21658     }
21659 
21660 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21661     DebugUtilsMessengerCallbackDataEXT(
21662       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT                                                  flags_,
21663       const char *                                                                                                   pMessageIdName_,
21664       int32_t                                                                                                        messageIdNumber_,
21665       const char *                                                                                                   pMessage_,
21666       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const &          queueLabels_,
21667       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const &          cmdBufLabels_ = {},
21668       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT> const & objects_      = {},
21669       const void *                                                                                                   pNext_        = nullptr )
21670       : pNext( pNext_ )
21671       , flags( flags_ )
21672       , pMessageIdName( pMessageIdName_ )
21673       , messageIdNumber( messageIdNumber_ )
21674       , pMessage( pMessage_ )
21675       , queueLabelCount( static_cast<uint32_t>( queueLabels_.size() ) )
21676       , pQueueLabels( queueLabels_.data() )
21677       , cmdBufLabelCount( static_cast<uint32_t>( cmdBufLabels_.size() ) )
21678       , pCmdBufLabels( cmdBufLabels_.data() )
21679       , objectCount( static_cast<uint32_t>( objects_.size() ) )
21680       , pObjects( objects_.data() )
21681     {
21682     }
21683 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21684 
21685     DebugUtilsMessengerCallbackDataEXT & operator=( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21686 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21687 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21688     DebugUtilsMessengerCallbackDataEXT & operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21689     {
21690       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT const *>( &rhs );
21691       return *this;
21692     }
21693 
21694 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21695     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21696     {
21697       pNext = pNext_;
21698       return *this;
21699     }
21700 
21701     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setFlagsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21702       setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
21703     {
21704       flags = flags_;
21705       return *this;
21706     }
21707 
setPMessageIdNameVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21708     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPMessageIdName( const char * pMessageIdName_ ) VULKAN_HPP_NOEXCEPT
21709     {
21710       pMessageIdName = pMessageIdName_;
21711       return *this;
21712     }
21713 
setMessageIdNumberVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21714     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setMessageIdNumber( int32_t messageIdNumber_ ) VULKAN_HPP_NOEXCEPT
21715     {
21716       messageIdNumber = messageIdNumber_;
21717       return *this;
21718     }
21719 
setPMessageVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21720     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPMessage( const char * pMessage_ ) VULKAN_HPP_NOEXCEPT
21721     {
21722       pMessage = pMessage_;
21723       return *this;
21724     }
21725 
setQueueLabelCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21726     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setQueueLabelCount( uint32_t queueLabelCount_ ) VULKAN_HPP_NOEXCEPT
21727     {
21728       queueLabelCount = queueLabelCount_;
21729       return *this;
21730     }
21731 
21732     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPQueueLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21733       setPQueueLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pQueueLabels_ ) VULKAN_HPP_NOEXCEPT
21734     {
21735       pQueueLabels = pQueueLabels_;
21736       return *this;
21737     }
21738 
21739 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
21740     DebugUtilsMessengerCallbackDataEXT &
setQueueLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21741       setQueueLabels( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const & queueLabels_ ) VULKAN_HPP_NOEXCEPT
21742     {
21743       queueLabelCount = static_cast<uint32_t>( queueLabels_.size() );
21744       pQueueLabels    = queueLabels_.data();
21745       return *this;
21746     }
21747 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21748 
setCmdBufLabelCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21749     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setCmdBufLabelCount( uint32_t cmdBufLabelCount_ ) VULKAN_HPP_NOEXCEPT
21750     {
21751       cmdBufLabelCount = cmdBufLabelCount_;
21752       return *this;
21753     }
21754 
21755     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPCmdBufLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21756       setPCmdBufLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pCmdBufLabels_ ) VULKAN_HPP_NOEXCEPT
21757     {
21758       pCmdBufLabels = pCmdBufLabels_;
21759       return *this;
21760     }
21761 
21762 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
21763     DebugUtilsMessengerCallbackDataEXT &
setCmdBufLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21764       setCmdBufLabels( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const & cmdBufLabels_ ) VULKAN_HPP_NOEXCEPT
21765     {
21766       cmdBufLabelCount = static_cast<uint32_t>( cmdBufLabels_.size() );
21767       pCmdBufLabels    = cmdBufLabels_.data();
21768       return *this;
21769     }
21770 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21771 
setObjectCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21772     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setObjectCount( uint32_t objectCount_ ) VULKAN_HPP_NOEXCEPT
21773     {
21774       objectCount = objectCount_;
21775       return *this;
21776     }
21777 
21778     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPObjectsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21779       setPObjects( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pObjects_ ) VULKAN_HPP_NOEXCEPT
21780     {
21781       pObjects = pObjects_;
21782       return *this;
21783     }
21784 
21785 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
21786     DebugUtilsMessengerCallbackDataEXT &
setObjectsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21787       setObjects( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT> const & objects_ ) VULKAN_HPP_NOEXCEPT
21788     {
21789       objectCount = static_cast<uint32_t>( objects_.size() );
21790       pObjects    = objects_.data();
21791       return *this;
21792     }
21793 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21794 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21795 
operator VkDebugUtilsMessengerCallbackDataEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21796     operator VkDebugUtilsMessengerCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT
21797     {
21798       return *reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT *>( this );
21799     }
21800 
operator VkDebugUtilsMessengerCallbackDataEXT&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21801     operator VkDebugUtilsMessengerCallbackDataEXT &() VULKAN_HPP_NOEXCEPT
21802     {
21803       return *reinterpret_cast<VkDebugUtilsMessengerCallbackDataEXT *>( this );
21804     }
21805 
21806 #if defined( VULKAN_HPP_USE_REFLECT )
21807 #  if 14 <= VULKAN_HPP_CPP_VERSION
21808     auto
21809 #  else
21810     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21811                const void * const &,
21812                VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT const &,
21813                const char * const &,
21814                int32_t const &,
21815                const char * const &,
21816                uint32_t const &,
21817                const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * const &,
21818                uint32_t const &,
21819                const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * const &,
21820                uint32_t const &,
21821                const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * const &>
21822 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21823       reflect() const VULKAN_HPP_NOEXCEPT
21824     {
21825       return std::tie(
21826         sType, pNext, flags, pMessageIdName, messageIdNumber, pMessage, queueLabelCount, pQueueLabels, cmdBufLabelCount, pCmdBufLabels, objectCount, pObjects );
21827     }
21828 #endif
21829 
21830 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21831     std::strong_ordering operator<=>( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21832     {
21833       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
21834         return cmp;
21835       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
21836         return cmp;
21837       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
21838         return cmp;
21839       if ( pMessageIdName != rhs.pMessageIdName )
21840         if ( auto cmp = strcmp( pMessageIdName, rhs.pMessageIdName ); cmp != 0 )
21841           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
21842       if ( auto cmp = messageIdNumber <=> rhs.messageIdNumber; cmp != 0 )
21843         return cmp;
21844       if ( pMessage != rhs.pMessage )
21845         if ( auto cmp = strcmp( pMessage, rhs.pMessage ); cmp != 0 )
21846           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
21847       if ( auto cmp = queueLabelCount <=> rhs.queueLabelCount; cmp != 0 )
21848         return cmp;
21849       if ( auto cmp = pQueueLabels <=> rhs.pQueueLabels; cmp != 0 )
21850         return cmp;
21851       if ( auto cmp = cmdBufLabelCount <=> rhs.cmdBufLabelCount; cmp != 0 )
21852         return cmp;
21853       if ( auto cmp = pCmdBufLabels <=> rhs.pCmdBufLabels; cmp != 0 )
21854         return cmp;
21855       if ( auto cmp = objectCount <=> rhs.objectCount; cmp != 0 )
21856         return cmp;
21857       if ( auto cmp = pObjects <=> rhs.pObjects; cmp != 0 )
21858         return cmp;
21859 
21860       return std::strong_ordering::equivalent;
21861     }
21862 #endif
21863 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21864     bool operator==( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21865     {
21866       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
21867              ( ( pMessageIdName == rhs.pMessageIdName ) || ( strcmp( pMessageIdName, rhs.pMessageIdName ) == 0 ) ) &&
21868              ( messageIdNumber == rhs.messageIdNumber ) && ( ( pMessage == rhs.pMessage ) || ( strcmp( pMessage, rhs.pMessage ) == 0 ) ) &&
21869              ( queueLabelCount == rhs.queueLabelCount ) && ( pQueueLabels == rhs.pQueueLabels ) && ( cmdBufLabelCount == rhs.cmdBufLabelCount ) &&
21870              ( pCmdBufLabels == rhs.pCmdBufLabels ) && ( objectCount == rhs.objectCount ) && ( pObjects == rhs.pObjects );
21871     }
21872 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21873     bool operator!=( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21874     {
21875       return !operator==( rhs );
21876     }
21877 
21878   public:
21879     VULKAN_HPP_NAMESPACE::StructureType                           sType            = StructureType::eDebugUtilsMessengerCallbackDataEXT;
21880     const void *                                                  pNext            = {};
21881     VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags            = {};
21882     const char *                                                  pMessageIdName   = {};
21883     int32_t                                                       messageIdNumber  = {};
21884     const char *                                                  pMessage         = {};
21885     uint32_t                                                      queueLabelCount  = {};
21886     const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pQueueLabels     = {};
21887     uint32_t                                                      cmdBufLabelCount = {};
21888     const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pCmdBufLabels    = {};
21889     uint32_t                                                      objectCount      = {};
21890     const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT *     pObjects         = {};
21891   };
21892 
21893   template <>
21894   struct CppType<StructureType, StructureType::eDebugUtilsMessengerCallbackDataEXT>
21895   {
21896     using Type = DebugUtilsMessengerCallbackDataEXT;
21897   };
21898 
21899   struct DebugUtilsMessengerCreateInfoEXT
21900   {
21901     using NativeType = VkDebugUtilsMessengerCreateInfoEXT;
21902 
21903     static const bool                                  allowDuplicate = true;
21904     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsMessengerCreateInfoEXT;
21905 
21906 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsMessengerCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21907     VULKAN_HPP_CONSTEXPR DebugUtilsMessengerCreateInfoEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_           = {},
21908                                                            VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = {},
21909                                                            VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT     messageType_     = {},
21910                                                            PFN_vkDebugUtilsMessengerCallbackEXT                    pfnUserCallback_ = {},
21911                                                            void *                                                  pUserData_       = {},
21912                                                            const void *                                            pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
21913       : pNext{ pNext_ }
21914       , flags{ flags_ }
21915       , messageSeverity{ messageSeverity_ }
21916       , messageType{ messageType_ }
21917       , pfnUserCallback{ pfnUserCallback_ }
21918       , pUserData{ pUserData_ }
21919     {
21920     }
21921 
21922     VULKAN_HPP_CONSTEXPR DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21923 
DebugUtilsMessengerCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21924     DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21925       : DebugUtilsMessengerCreateInfoEXT( *reinterpret_cast<DebugUtilsMessengerCreateInfoEXT const *>( &rhs ) )
21926     {
21927     }
21928 
21929     DebugUtilsMessengerCreateInfoEXT & operator=( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21930 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21931 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21932     DebugUtilsMessengerCreateInfoEXT & operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21933     {
21934       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const *>( &rhs );
21935       return *this;
21936     }
21937 
21938 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21939     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21940     {
21941       pNext = pNext_;
21942       return *this;
21943     }
21944 
setFlagsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21945     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
21946     {
21947       flags = flags_;
21948       return *this;
21949     }
21950 
21951     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT &
setMessageSeverityVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21952       setMessageSeverity( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ ) VULKAN_HPP_NOEXCEPT
21953     {
21954       messageSeverity = messageSeverity_;
21955       return *this;
21956     }
21957 
21958     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT &
setMessageTypeVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21959       setMessageType( VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType_ ) VULKAN_HPP_NOEXCEPT
21960     {
21961       messageType = messageType_;
21962       return *this;
21963     }
21964 
setPfnUserCallbackVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21965     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPfnUserCallback( PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT
21966     {
21967       pfnUserCallback = pfnUserCallback_;
21968       return *this;
21969     }
21970 
setPUserDataVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21971     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
21972     {
21973       pUserData = pUserData_;
21974       return *this;
21975     }
21976 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21977 
operator VkDebugUtilsMessengerCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21978     operator VkDebugUtilsMessengerCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
21979     {
21980       return *reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT *>( this );
21981     }
21982 
operator VkDebugUtilsMessengerCreateInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21983     operator VkDebugUtilsMessengerCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
21984     {
21985       return *reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT *>( this );
21986     }
21987 
21988 #if defined( VULKAN_HPP_USE_REFLECT )
21989 #  if 14 <= VULKAN_HPP_CPP_VERSION
21990     auto
21991 #  else
21992     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21993                const void * const &,
21994                VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT const &,
21995                VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT const &,
21996                VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT const &,
21997                PFN_vkDebugUtilsMessengerCallbackEXT const &,
21998                void * const &>
21999 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT22000       reflect() const VULKAN_HPP_NOEXCEPT
22001     {
22002       return std::tie( sType, pNext, flags, messageSeverity, messageType, pfnUserCallback, pUserData );
22003     }
22004 #endif
22005 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT22006     bool operator==( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22007     {
22008 #if defined( VULKAN_HPP_USE_REFLECT )
22009       return this->reflect() == rhs.reflect();
22010 #else
22011       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( messageSeverity == rhs.messageSeverity ) &&
22012              ( messageType == rhs.messageType ) && ( pfnUserCallback == rhs.pfnUserCallback ) && ( pUserData == rhs.pUserData );
22013 #endif
22014     }
22015 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT22016     bool operator!=( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22017     {
22018       return !operator==( rhs );
22019     }
22020 
22021   public:
22022     VULKAN_HPP_NAMESPACE::StructureType                     sType           = StructureType::eDebugUtilsMessengerCreateInfoEXT;
22023     const void *                                            pNext           = {};
22024     VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags           = {};
22025     VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity = {};
22026     VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT     messageType     = {};
22027     PFN_vkDebugUtilsMessengerCallbackEXT                    pfnUserCallback = {};
22028     void *                                                  pUserData       = {};
22029   };
22030 
22031   template <>
22032   struct CppType<StructureType, StructureType::eDebugUtilsMessengerCreateInfoEXT>
22033   {
22034     using Type = DebugUtilsMessengerCreateInfoEXT;
22035   };
22036 
22037   struct DebugUtilsObjectTagInfoEXT
22038   {
22039     using NativeType = VkDebugUtilsObjectTagInfoEXT;
22040 
22041     static const bool                                  allowDuplicate = false;
22042     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsObjectTagInfoEXT;
22043 
22044 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22045     VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType_   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown,
22046                                                      uint64_t                         objectHandle_ = {},
22047                                                      uint64_t                         tagName_      = {},
22048                                                      size_t                           tagSize_      = {},
22049                                                      const void *                     pTag_         = {},
22050                                                      const void *                     pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
22051       : pNext{ pNext_ }
22052       , objectType{ objectType_ }
22053       , objectHandle{ objectHandle_ }
22054       , tagName{ tagName_ }
22055       , tagSize{ tagSize_ }
22056       , pTag{ pTag_ }
22057     {
22058     }
22059 
22060     VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22061 
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22062     DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
22063       : DebugUtilsObjectTagInfoEXT( *reinterpret_cast<DebugUtilsObjectTagInfoEXT const *>( &rhs ) )
22064     {
22065     }
22066 
22067 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
22068     template <typename T>
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22069     DebugUtilsObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::ObjectType                               objectType_,
22070                                 uint64_t                                                       objectHandle_,
22071                                 uint64_t                                                       tagName_,
22072                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_,
22073                                 const void *                                                   pNext_ = nullptr )
22074       : pNext( pNext_ )
22075       , objectType( objectType_ )
22076       , objectHandle( objectHandle_ )
22077       , tagName( tagName_ )
22078       , tagSize( tag_.size() * sizeof( T ) )
22079       , pTag( tag_.data() )
22080     {
22081     }
22082 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22083 
22084     DebugUtilsObjectTagInfoEXT & operator=( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22085 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22086 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22087     DebugUtilsObjectTagInfoEXT & operator=( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
22088     {
22089       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT const *>( &rhs );
22090       return *this;
22091     }
22092 
22093 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22094     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22095     {
22096       pNext = pNext_;
22097       return *this;
22098     }
22099 
setObjectTypeVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22100     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT
22101     {
22102       objectType = objectType_;
22103       return *this;
22104     }
22105 
setObjectHandleVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22106     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT
22107     {
22108       objectHandle = objectHandle_;
22109       return *this;
22110     }
22111 
setTagNameVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22112     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT
22113     {
22114       tagName = tagName_;
22115       return *this;
22116     }
22117 
setTagSizeVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22118     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT
22119     {
22120       tagSize = tagSize_;
22121       return *this;
22122     }
22123 
setPTagVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22124     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT
22125     {
22126       pTag = pTag_;
22127       return *this;
22128     }
22129 
22130 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
22131     template <typename T>
setTagVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22132     DebugUtilsObjectTagInfoEXT & setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ ) VULKAN_HPP_NOEXCEPT
22133     {
22134       tagSize = tag_.size() * sizeof( T );
22135       pTag    = tag_.data();
22136       return *this;
22137     }
22138 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22139 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22140 
operator VkDebugUtilsObjectTagInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22141     operator VkDebugUtilsObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT
22142     {
22143       return *reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT *>( this );
22144     }
22145 
operator VkDebugUtilsObjectTagInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22146     operator VkDebugUtilsObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT
22147     {
22148       return *reinterpret_cast<VkDebugUtilsObjectTagInfoEXT *>( this );
22149     }
22150 
22151 #if defined( VULKAN_HPP_USE_REFLECT )
22152 #  if 14 <= VULKAN_HPP_CPP_VERSION
22153     auto
22154 #  else
22155     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
22156                const void * const &,
22157                VULKAN_HPP_NAMESPACE::ObjectType const &,
22158                uint64_t const &,
22159                uint64_t const &,
22160                size_t const &,
22161                const void * const &>
22162 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22163       reflect() const VULKAN_HPP_NOEXCEPT
22164     {
22165       return std::tie( sType, pNext, objectType, objectHandle, tagName, tagSize, pTag );
22166     }
22167 #endif
22168 
22169 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22170     auto operator<=>( DebugUtilsObjectTagInfoEXT const & ) const = default;
22171 #else
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22172     bool operator==( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22173     {
22174 #  if defined( VULKAN_HPP_USE_REFLECT )
22175       return this->reflect() == rhs.reflect();
22176 #  else
22177       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( objectHandle == rhs.objectHandle ) &&
22178              ( tagName == rhs.tagName ) && ( tagSize == rhs.tagSize ) && ( pTag == rhs.pTag );
22179 #  endif
22180     }
22181 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT22182     bool operator!=( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22183     {
22184       return !operator==( rhs );
22185     }
22186 #endif
22187 
22188   public:
22189     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eDebugUtilsObjectTagInfoEXT;
22190     const void *                        pNext        = {};
22191     VULKAN_HPP_NAMESPACE::ObjectType    objectType   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
22192     uint64_t                            objectHandle = {};
22193     uint64_t                            tagName      = {};
22194     size_t                              tagSize      = {};
22195     const void *                        pTag         = {};
22196   };
22197 
22198   template <>
22199   struct CppType<StructureType, StructureType::eDebugUtilsObjectTagInfoEXT>
22200   {
22201     using Type = DebugUtilsObjectTagInfoEXT;
22202   };
22203 
22204   struct DecompressMemoryRegionNV
22205   {
22206     using NativeType = VkDecompressMemoryRegionNV;
22207 
22208 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DecompressMemoryRegionNVVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22209     VULKAN_HPP_CONSTEXPR DecompressMemoryRegionNV( VULKAN_HPP_NAMESPACE::DeviceAddress                    srcAddress_          = {},
22210                                                    VULKAN_HPP_NAMESPACE::DeviceAddress                    dstAddress_          = {},
22211                                                    VULKAN_HPP_NAMESPACE::DeviceSize                       compressedSize_      = {},
22212                                                    VULKAN_HPP_NAMESPACE::DeviceSize                       decompressedSize_    = {},
22213                                                    VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV decompressionMethod_ = {} ) VULKAN_HPP_NOEXCEPT
22214       : srcAddress{ srcAddress_ }
22215       , dstAddress{ dstAddress_ }
22216       , compressedSize{ compressedSize_ }
22217       , decompressedSize{ decompressedSize_ }
22218       , decompressionMethod{ decompressionMethod_ }
22219     {
22220     }
22221 
22222     VULKAN_HPP_CONSTEXPR DecompressMemoryRegionNV( DecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22223 
DecompressMemoryRegionNVVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22224     DecompressMemoryRegionNV( VkDecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT
22225       : DecompressMemoryRegionNV( *reinterpret_cast<DecompressMemoryRegionNV const *>( &rhs ) )
22226     {
22227     }
22228 
22229     DecompressMemoryRegionNV & operator=( DecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22230 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22231 
operator =VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22232     DecompressMemoryRegionNV & operator=( VkDecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT
22233     {
22234       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV const *>( &rhs );
22235       return *this;
22236     }
22237 
22238 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcAddressVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22239     VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setSrcAddress( VULKAN_HPP_NAMESPACE::DeviceAddress srcAddress_ ) VULKAN_HPP_NOEXCEPT
22240     {
22241       srcAddress = srcAddress_;
22242       return *this;
22243     }
22244 
setDstAddressVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22245     VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setDstAddress( VULKAN_HPP_NAMESPACE::DeviceAddress dstAddress_ ) VULKAN_HPP_NOEXCEPT
22246     {
22247       dstAddress = dstAddress_;
22248       return *this;
22249     }
22250 
setCompressedSizeVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22251     VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setCompressedSize( VULKAN_HPP_NAMESPACE::DeviceSize compressedSize_ ) VULKAN_HPP_NOEXCEPT
22252     {
22253       compressedSize = compressedSize_;
22254       return *this;
22255     }
22256 
setDecompressedSizeVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22257     VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setDecompressedSize( VULKAN_HPP_NAMESPACE::DeviceSize decompressedSize_ ) VULKAN_HPP_NOEXCEPT
22258     {
22259       decompressedSize = decompressedSize_;
22260       return *this;
22261     }
22262 
22263     VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV &
setDecompressionMethodVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22264       setDecompressionMethod( VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV decompressionMethod_ ) VULKAN_HPP_NOEXCEPT
22265     {
22266       decompressionMethod = decompressionMethod_;
22267       return *this;
22268     }
22269 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22270 
operator VkDecompressMemoryRegionNV const&VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22271     operator VkDecompressMemoryRegionNV const &() const VULKAN_HPP_NOEXCEPT
22272     {
22273       return *reinterpret_cast<const VkDecompressMemoryRegionNV *>( this );
22274     }
22275 
operator VkDecompressMemoryRegionNV&VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22276     operator VkDecompressMemoryRegionNV &() VULKAN_HPP_NOEXCEPT
22277     {
22278       return *reinterpret_cast<VkDecompressMemoryRegionNV *>( this );
22279     }
22280 
22281 #if defined( VULKAN_HPP_USE_REFLECT )
22282 #  if 14 <= VULKAN_HPP_CPP_VERSION
22283     auto
22284 #  else
22285     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &,
22286                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
22287                VULKAN_HPP_NAMESPACE::DeviceSize const &,
22288                VULKAN_HPP_NAMESPACE::DeviceSize const &,
22289                VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV const &>
22290 #  endif
reflectVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22291       reflect() const VULKAN_HPP_NOEXCEPT
22292     {
22293       return std::tie( srcAddress, dstAddress, compressedSize, decompressedSize, decompressionMethod );
22294     }
22295 #endif
22296 
22297 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22298     auto operator<=>( DecompressMemoryRegionNV const & ) const = default;
22299 #else
operator ==VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22300     bool operator==( DecompressMemoryRegionNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22301     {
22302 #  if defined( VULKAN_HPP_USE_REFLECT )
22303       return this->reflect() == rhs.reflect();
22304 #  else
22305       return ( srcAddress == rhs.srcAddress ) && ( dstAddress == rhs.dstAddress ) && ( compressedSize == rhs.compressedSize ) &&
22306              ( decompressedSize == rhs.decompressedSize ) && ( decompressionMethod == rhs.decompressionMethod );
22307 #  endif
22308     }
22309 
operator !=VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22310     bool operator!=( DecompressMemoryRegionNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22311     {
22312       return !operator==( rhs );
22313     }
22314 #endif
22315 
22316   public:
22317     VULKAN_HPP_NAMESPACE::DeviceAddress                    srcAddress          = {};
22318     VULKAN_HPP_NAMESPACE::DeviceAddress                    dstAddress          = {};
22319     VULKAN_HPP_NAMESPACE::DeviceSize                       compressedSize      = {};
22320     VULKAN_HPP_NAMESPACE::DeviceSize                       decompressedSize    = {};
22321     VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV decompressionMethod = {};
22322   };
22323 
22324   struct DedicatedAllocationBufferCreateInfoNV
22325   {
22326     using NativeType = VkDedicatedAllocationBufferCreateInfoNV;
22327 
22328     static const bool                                  allowDuplicate = false;
22329     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDedicatedAllocationBufferCreateInfoNV;
22330 
22331 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DedicatedAllocationBufferCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22332     VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ = {},
22333                                                                 const void *                 pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
22334       : pNext{ pNext_ }
22335       , dedicatedAllocation{ dedicatedAllocation_ }
22336     {
22337     }
22338 
22339     VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22340 
DedicatedAllocationBufferCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22341     DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22342       : DedicatedAllocationBufferCreateInfoNV( *reinterpret_cast<DedicatedAllocationBufferCreateInfoNV const *>( &rhs ) )
22343     {
22344     }
22345 
22346     DedicatedAllocationBufferCreateInfoNV & operator=( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22347 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22348 
operator =VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22349     DedicatedAllocationBufferCreateInfoNV & operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22350     {
22351       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV const *>( &rhs );
22352       return *this;
22353     }
22354 
22355 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22356     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22357     {
22358       pNext = pNext_;
22359       return *this;
22360     }
22361 
22362     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV &
setDedicatedAllocationVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22363       setDedicatedAllocation( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ ) VULKAN_HPP_NOEXCEPT
22364     {
22365       dedicatedAllocation = dedicatedAllocation_;
22366       return *this;
22367     }
22368 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22369 
operator VkDedicatedAllocationBufferCreateInfoNV const&VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22370     operator VkDedicatedAllocationBufferCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
22371     {
22372       return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV *>( this );
22373     }
22374 
operator VkDedicatedAllocationBufferCreateInfoNV&VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22375     operator VkDedicatedAllocationBufferCreateInfoNV &() VULKAN_HPP_NOEXCEPT
22376     {
22377       return *reinterpret_cast<VkDedicatedAllocationBufferCreateInfoNV *>( this );
22378     }
22379 
22380 #if defined( VULKAN_HPP_USE_REFLECT )
22381 #  if 14 <= VULKAN_HPP_CPP_VERSION
22382     auto
22383 #  else
22384     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
22385 #  endif
reflectVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22386       reflect() const VULKAN_HPP_NOEXCEPT
22387     {
22388       return std::tie( sType, pNext, dedicatedAllocation );
22389     }
22390 #endif
22391 
22392 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22393     auto operator<=>( DedicatedAllocationBufferCreateInfoNV const & ) const = default;
22394 #else
operator ==VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22395     bool operator==( DedicatedAllocationBufferCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22396     {
22397 #  if defined( VULKAN_HPP_USE_REFLECT )
22398       return this->reflect() == rhs.reflect();
22399 #  else
22400       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocation == rhs.dedicatedAllocation );
22401 #  endif
22402     }
22403 
operator !=VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22404     bool operator!=( DedicatedAllocationBufferCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22405     {
22406       return !operator==( rhs );
22407     }
22408 #endif
22409 
22410   public:
22411     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDedicatedAllocationBufferCreateInfoNV;
22412     const void *                        pNext               = {};
22413     VULKAN_HPP_NAMESPACE::Bool32        dedicatedAllocation = {};
22414   };
22415 
22416   template <>
22417   struct CppType<StructureType, StructureType::eDedicatedAllocationBufferCreateInfoNV>
22418   {
22419     using Type = DedicatedAllocationBufferCreateInfoNV;
22420   };
22421 
22422   struct DedicatedAllocationImageCreateInfoNV
22423   {
22424     using NativeType = VkDedicatedAllocationImageCreateInfoNV;
22425 
22426     static const bool                                  allowDuplicate = false;
22427     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDedicatedAllocationImageCreateInfoNV;
22428 
22429 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DedicatedAllocationImageCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22430     VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ = {},
22431                                                                const void *                 pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
22432       : pNext{ pNext_ }
22433       , dedicatedAllocation{ dedicatedAllocation_ }
22434     {
22435     }
22436 
22437     VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22438 
DedicatedAllocationImageCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22439     DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22440       : DedicatedAllocationImageCreateInfoNV( *reinterpret_cast<DedicatedAllocationImageCreateInfoNV const *>( &rhs ) )
22441     {
22442     }
22443 
22444     DedicatedAllocationImageCreateInfoNV & operator=( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22445 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22446 
operator =VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22447     DedicatedAllocationImageCreateInfoNV & operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22448     {
22449       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV const *>( &rhs );
22450       return *this;
22451     }
22452 
22453 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22454     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22455     {
22456       pNext = pNext_;
22457       return *this;
22458     }
22459 
22460     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV &
setDedicatedAllocationVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22461       setDedicatedAllocation( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ ) VULKAN_HPP_NOEXCEPT
22462     {
22463       dedicatedAllocation = dedicatedAllocation_;
22464       return *this;
22465     }
22466 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22467 
operator VkDedicatedAllocationImageCreateInfoNV const&VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22468     operator VkDedicatedAllocationImageCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
22469     {
22470       return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV *>( this );
22471     }
22472 
operator VkDedicatedAllocationImageCreateInfoNV&VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22473     operator VkDedicatedAllocationImageCreateInfoNV &() VULKAN_HPP_NOEXCEPT
22474     {
22475       return *reinterpret_cast<VkDedicatedAllocationImageCreateInfoNV *>( this );
22476     }
22477 
22478 #if defined( VULKAN_HPP_USE_REFLECT )
22479 #  if 14 <= VULKAN_HPP_CPP_VERSION
22480     auto
22481 #  else
22482     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
22483 #  endif
reflectVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22484       reflect() const VULKAN_HPP_NOEXCEPT
22485     {
22486       return std::tie( sType, pNext, dedicatedAllocation );
22487     }
22488 #endif
22489 
22490 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22491     auto operator<=>( DedicatedAllocationImageCreateInfoNV const & ) const = default;
22492 #else
operator ==VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22493     bool operator==( DedicatedAllocationImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22494     {
22495 #  if defined( VULKAN_HPP_USE_REFLECT )
22496       return this->reflect() == rhs.reflect();
22497 #  else
22498       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocation == rhs.dedicatedAllocation );
22499 #  endif
22500     }
22501 
operator !=VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22502     bool operator!=( DedicatedAllocationImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22503     {
22504       return !operator==( rhs );
22505     }
22506 #endif
22507 
22508   public:
22509     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDedicatedAllocationImageCreateInfoNV;
22510     const void *                        pNext               = {};
22511     VULKAN_HPP_NAMESPACE::Bool32        dedicatedAllocation = {};
22512   };
22513 
22514   template <>
22515   struct CppType<StructureType, StructureType::eDedicatedAllocationImageCreateInfoNV>
22516   {
22517     using Type = DedicatedAllocationImageCreateInfoNV;
22518   };
22519 
22520   struct DedicatedAllocationMemoryAllocateInfoNV
22521   {
22522     using NativeType = VkDedicatedAllocationMemoryAllocateInfoNV;
22523 
22524     static const bool                                  allowDuplicate = false;
22525     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
22526 
22527 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DedicatedAllocationMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22528     VULKAN_HPP_CONSTEXPR DedicatedAllocationMemoryAllocateInfoNV( VULKAN_HPP_NAMESPACE::Image  image_  = {},
22529                                                                   VULKAN_HPP_NAMESPACE::Buffer buffer_ = {},
22530                                                                   const void *                 pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
22531       : pNext{ pNext_ }
22532       , image{ image_ }
22533       , buffer{ buffer_ }
22534     {
22535     }
22536 
22537     VULKAN_HPP_CONSTEXPR DedicatedAllocationMemoryAllocateInfoNV( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22538 
DedicatedAllocationMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22539     DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22540       : DedicatedAllocationMemoryAllocateInfoNV( *reinterpret_cast<DedicatedAllocationMemoryAllocateInfoNV const *>( &rhs ) )
22541     {
22542     }
22543 
22544     DedicatedAllocationMemoryAllocateInfoNV & operator=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22545 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22546 
operator =VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22547     DedicatedAllocationMemoryAllocateInfoNV & operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22548     {
22549       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV const *>( &rhs );
22550       return *this;
22551     }
22552 
22553 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22554     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22555     {
22556       pNext = pNext_;
22557       return *this;
22558     }
22559 
setImageVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22560     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
22561     {
22562       image = image_;
22563       return *this;
22564     }
22565 
setBufferVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22566     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
22567     {
22568       buffer = buffer_;
22569       return *this;
22570     }
22571 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22572 
operator VkDedicatedAllocationMemoryAllocateInfoNV const&VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22573     operator VkDedicatedAllocationMemoryAllocateInfoNV const &() const VULKAN_HPP_NOEXCEPT
22574     {
22575       return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV *>( this );
22576     }
22577 
operator VkDedicatedAllocationMemoryAllocateInfoNV&VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22578     operator VkDedicatedAllocationMemoryAllocateInfoNV &() VULKAN_HPP_NOEXCEPT
22579     {
22580       return *reinterpret_cast<VkDedicatedAllocationMemoryAllocateInfoNV *>( this );
22581     }
22582 
22583 #if defined( VULKAN_HPP_USE_REFLECT )
22584 #  if 14 <= VULKAN_HPP_CPP_VERSION
22585     auto
22586 #  else
22587     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::Buffer const &>
22588 #  endif
reflectVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22589       reflect() const VULKAN_HPP_NOEXCEPT
22590     {
22591       return std::tie( sType, pNext, image, buffer );
22592     }
22593 #endif
22594 
22595 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22596     auto operator<=>( DedicatedAllocationMemoryAllocateInfoNV const & ) const = default;
22597 #else
operator ==VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22598     bool operator==( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22599     {
22600 #  if defined( VULKAN_HPP_USE_REFLECT )
22601       return this->reflect() == rhs.reflect();
22602 #  else
22603       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( buffer == rhs.buffer );
22604 #  endif
22605     }
22606 
operator !=VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22607     bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22608     {
22609       return !operator==( rhs );
22610     }
22611 #endif
22612 
22613   public:
22614     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
22615     const void *                        pNext  = {};
22616     VULKAN_HPP_NAMESPACE::Image         image  = {};
22617     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
22618   };
22619 
22620   template <>
22621   struct CppType<StructureType, StructureType::eDedicatedAllocationMemoryAllocateInfoNV>
22622   {
22623     using Type = DedicatedAllocationMemoryAllocateInfoNV;
22624   };
22625 
22626   struct MemoryBarrier2
22627   {
22628     using NativeType = VkMemoryBarrier2;
22629 
22630     static const bool                                  allowDuplicate = false;
22631     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryBarrier2;
22632 
22633 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryBarrier2VULKAN_HPP_NAMESPACE::MemoryBarrier222634     VULKAN_HPP_CONSTEXPR MemoryBarrier2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_  = {},
22635                                          VULKAN_HPP_NAMESPACE::AccessFlags2        srcAccessMask_ = {},
22636                                          VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_  = {},
22637                                          VULKAN_HPP_NAMESPACE::AccessFlags2        dstAccessMask_ = {},
22638                                          const void *                              pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
22639       : pNext{ pNext_ }
22640       , srcStageMask{ srcStageMask_ }
22641       , srcAccessMask{ srcAccessMask_ }
22642       , dstStageMask{ dstStageMask_ }
22643       , dstAccessMask{ dstAccessMask_ }
22644     {
22645     }
22646 
22647     VULKAN_HPP_CONSTEXPR MemoryBarrier2( MemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22648 
MemoryBarrier2VULKAN_HPP_NAMESPACE::MemoryBarrier222649     MemoryBarrier2( VkMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryBarrier2( *reinterpret_cast<MemoryBarrier2 const *>( &rhs ) ) {}
22650 
22651     MemoryBarrier2 & operator=( MemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22652 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22653 
operator =VULKAN_HPP_NAMESPACE::MemoryBarrier222654     MemoryBarrier2 & operator=( VkMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
22655     {
22656       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryBarrier2 const *>( &rhs );
22657       return *this;
22658     }
22659 
22660 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryBarrier222661     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22662     {
22663       pNext = pNext_;
22664       return *this;
22665     }
22666 
setSrcStageMaskVULKAN_HPP_NAMESPACE::MemoryBarrier222667     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT
22668     {
22669       srcStageMask = srcStageMask_;
22670       return *this;
22671     }
22672 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier222673     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
22674     {
22675       srcAccessMask = srcAccessMask_;
22676       return *this;
22677     }
22678 
setDstStageMaskVULKAN_HPP_NAMESPACE::MemoryBarrier222679     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT
22680     {
22681       dstStageMask = dstStageMask_;
22682       return *this;
22683     }
22684 
setDstAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier222685     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
22686     {
22687       dstAccessMask = dstAccessMask_;
22688       return *this;
22689     }
22690 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22691 
operator VkMemoryBarrier2 const&VULKAN_HPP_NAMESPACE::MemoryBarrier222692     operator VkMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT
22693     {
22694       return *reinterpret_cast<const VkMemoryBarrier2 *>( this );
22695     }
22696 
operator VkMemoryBarrier2&VULKAN_HPP_NAMESPACE::MemoryBarrier222697     operator VkMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT
22698     {
22699       return *reinterpret_cast<VkMemoryBarrier2 *>( this );
22700     }
22701 
22702 #if defined( VULKAN_HPP_USE_REFLECT )
22703 #  if 14 <= VULKAN_HPP_CPP_VERSION
22704     auto
22705 #  else
22706     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
22707                const void * const &,
22708                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
22709                VULKAN_HPP_NAMESPACE::AccessFlags2 const &,
22710                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
22711                VULKAN_HPP_NAMESPACE::AccessFlags2 const &>
22712 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryBarrier222713       reflect() const VULKAN_HPP_NOEXCEPT
22714     {
22715       return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask );
22716     }
22717 #endif
22718 
22719 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22720     auto operator<=>( MemoryBarrier2 const & ) const = default;
22721 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryBarrier222722     bool operator==( MemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
22723     {
22724 #  if defined( VULKAN_HPP_USE_REFLECT )
22725       return this->reflect() == rhs.reflect();
22726 #  else
22727       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) &&
22728              ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask );
22729 #  endif
22730     }
22731 
operator !=VULKAN_HPP_NAMESPACE::MemoryBarrier222732     bool operator!=( MemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
22733     {
22734       return !operator==( rhs );
22735     }
22736 #endif
22737 
22738   public:
22739     VULKAN_HPP_NAMESPACE::StructureType       sType         = StructureType::eMemoryBarrier2;
22740     const void *                              pNext         = {};
22741     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask  = {};
22742     VULKAN_HPP_NAMESPACE::AccessFlags2        srcAccessMask = {};
22743     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask  = {};
22744     VULKAN_HPP_NAMESPACE::AccessFlags2        dstAccessMask = {};
22745   };
22746 
22747   template <>
22748   struct CppType<StructureType, StructureType::eMemoryBarrier2>
22749   {
22750     using Type = MemoryBarrier2;
22751   };
22752 
22753   using MemoryBarrier2KHR = MemoryBarrier2;
22754 
22755   struct ImageSubresourceRange
22756   {
22757     using NativeType = VkImageSubresourceRange;
22758 
22759 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresourceRangeVULKAN_HPP_NAMESPACE::ImageSubresourceRange22760     VULKAN_HPP_CONSTEXPR ImageSubresourceRange( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_     = {},
22761                                                 uint32_t                               baseMipLevel_   = {},
22762                                                 uint32_t                               levelCount_     = {},
22763                                                 uint32_t                               baseArrayLayer_ = {},
22764                                                 uint32_t                               layerCount_     = {} ) VULKAN_HPP_NOEXCEPT
22765       : aspectMask{ aspectMask_ }
22766       , baseMipLevel{ baseMipLevel_ }
22767       , levelCount{ levelCount_ }
22768       , baseArrayLayer{ baseArrayLayer_ }
22769       , layerCount{ layerCount_ }
22770     {
22771     }
22772 
22773     VULKAN_HPP_CONSTEXPR ImageSubresourceRange( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22774 
ImageSubresourceRangeVULKAN_HPP_NAMESPACE::ImageSubresourceRange22775     ImageSubresourceRange( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
22776       : ImageSubresourceRange( *reinterpret_cast<ImageSubresourceRange const *>( &rhs ) )
22777     {
22778     }
22779 
22780     ImageSubresourceRange & operator=( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22781 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22782 
operator =VULKAN_HPP_NAMESPACE::ImageSubresourceRange22783     ImageSubresourceRange & operator=( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
22784     {
22785       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresourceRange const *>( &rhs );
22786       return *this;
22787     }
22788 
22789 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresourceRange22790     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
22791     {
22792       aspectMask = aspectMask_;
22793       return *this;
22794     }
22795 
setBaseMipLevelVULKAN_HPP_NAMESPACE::ImageSubresourceRange22796     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseMipLevel( uint32_t baseMipLevel_ ) VULKAN_HPP_NOEXCEPT
22797     {
22798       baseMipLevel = baseMipLevel_;
22799       return *this;
22800     }
22801 
setLevelCountVULKAN_HPP_NAMESPACE::ImageSubresourceRange22802     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLevelCount( uint32_t levelCount_ ) VULKAN_HPP_NOEXCEPT
22803     {
22804       levelCount = levelCount_;
22805       return *this;
22806     }
22807 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresourceRange22808     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
22809     {
22810       baseArrayLayer = baseArrayLayer_;
22811       return *this;
22812     }
22813 
setLayerCountVULKAN_HPP_NAMESPACE::ImageSubresourceRange22814     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
22815     {
22816       layerCount = layerCount_;
22817       return *this;
22818     }
22819 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22820 
operator VkImageSubresourceRange const&VULKAN_HPP_NAMESPACE::ImageSubresourceRange22821     operator VkImageSubresourceRange const &() const VULKAN_HPP_NOEXCEPT
22822     {
22823       return *reinterpret_cast<const VkImageSubresourceRange *>( this );
22824     }
22825 
operator VkImageSubresourceRange&VULKAN_HPP_NAMESPACE::ImageSubresourceRange22826     operator VkImageSubresourceRange &() VULKAN_HPP_NOEXCEPT
22827     {
22828       return *reinterpret_cast<VkImageSubresourceRange *>( this );
22829     }
22830 
22831 #if defined( VULKAN_HPP_USE_REFLECT )
22832 #  if 14 <= VULKAN_HPP_CPP_VERSION
22833     auto
22834 #  else
22835     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
22836 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresourceRange22837       reflect() const VULKAN_HPP_NOEXCEPT
22838     {
22839       return std::tie( aspectMask, baseMipLevel, levelCount, baseArrayLayer, layerCount );
22840     }
22841 #endif
22842 
22843 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22844     auto operator<=>( ImageSubresourceRange const & ) const = default;
22845 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresourceRange22846     bool operator==( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT
22847     {
22848 #  if defined( VULKAN_HPP_USE_REFLECT )
22849       return this->reflect() == rhs.reflect();
22850 #  else
22851       return ( aspectMask == rhs.aspectMask ) && ( baseMipLevel == rhs.baseMipLevel ) && ( levelCount == rhs.levelCount ) &&
22852              ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount );
22853 #  endif
22854     }
22855 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresourceRange22856     bool operator!=( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT
22857     {
22858       return !operator==( rhs );
22859     }
22860 #endif
22861 
22862   public:
22863     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask     = {};
22864     uint32_t                               baseMipLevel   = {};
22865     uint32_t                               levelCount     = {};
22866     uint32_t                               baseArrayLayer = {};
22867     uint32_t                               layerCount     = {};
22868   };
22869 
22870   struct ImageMemoryBarrier2
22871   {
22872     using NativeType = VkImageMemoryBarrier2;
22873 
22874     static const bool                                  allowDuplicate = false;
22875     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageMemoryBarrier2;
22876 
22877 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryBarrier2VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222878     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2   srcStageMask_        = {},
22879                                               VULKAN_HPP_NAMESPACE::AccessFlags2          srcAccessMask_       = {},
22880                                               VULKAN_HPP_NAMESPACE::PipelineStageFlags2   dstStageMask_        = {},
22881                                               VULKAN_HPP_NAMESPACE::AccessFlags2          dstAccessMask_       = {},
22882                                               VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout_           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
22883                                               VULKAN_HPP_NAMESPACE::ImageLayout           newLayout_           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
22884                                               uint32_t                                    srcQueueFamilyIndex_ = {},
22885                                               uint32_t                                    dstQueueFamilyIndex_ = {},
22886                                               VULKAN_HPP_NAMESPACE::Image                 image_               = {},
22887                                               VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_    = {},
22888                                               const void *                                pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
22889       : pNext{ pNext_ }
22890       , srcStageMask{ srcStageMask_ }
22891       , srcAccessMask{ srcAccessMask_ }
22892       , dstStageMask{ dstStageMask_ }
22893       , dstAccessMask{ dstAccessMask_ }
22894       , oldLayout{ oldLayout_ }
22895       , newLayout{ newLayout_ }
22896       , srcQueueFamilyIndex{ srcQueueFamilyIndex_ }
22897       , dstQueueFamilyIndex{ dstQueueFamilyIndex_ }
22898       , image{ image_ }
22899       , subresourceRange{ subresourceRange_ }
22900     {
22901     }
22902 
22903     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2( ImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22904 
ImageMemoryBarrier2VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222905     ImageMemoryBarrier2( VkImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageMemoryBarrier2( *reinterpret_cast<ImageMemoryBarrier2 const *>( &rhs ) )
22906     {
22907     }
22908 
22909     ImageMemoryBarrier2 & operator=( ImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22910 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22911 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222912     ImageMemoryBarrier2 & operator=( VkImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
22913     {
22914       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 const *>( &rhs );
22915       return *this;
22916     }
22917 
22918 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222919     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22920     {
22921       pNext = pNext_;
22922       return *this;
22923     }
22924 
setSrcStageMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222925     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT
22926     {
22927       srcStageMask = srcStageMask_;
22928       return *this;
22929     }
22930 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222931     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
22932     {
22933       srcAccessMask = srcAccessMask_;
22934       return *this;
22935     }
22936 
setDstStageMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222937     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT
22938     {
22939       dstStageMask = dstStageMask_;
22940       return *this;
22941     }
22942 
setDstAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222943     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
22944     {
22945       dstAccessMask = dstAccessMask_;
22946       return *this;
22947     }
22948 
setOldLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222949     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT
22950     {
22951       oldLayout = oldLayout_;
22952       return *this;
22953     }
22954 
setNewLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222955     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT
22956     {
22957       newLayout = newLayout_;
22958       return *this;
22959     }
22960 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222961     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
22962     {
22963       srcQueueFamilyIndex = srcQueueFamilyIndex_;
22964       return *this;
22965     }
22966 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222967     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
22968     {
22969       dstQueueFamilyIndex = dstQueueFamilyIndex_;
22970       return *this;
22971     }
22972 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222973     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
22974     {
22975       image = image_;
22976       return *this;
22977     }
22978 
22979     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 &
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222980       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
22981     {
22982       subresourceRange = subresourceRange_;
22983       return *this;
22984     }
22985 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22986 
operator VkImageMemoryBarrier2 const&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222987     operator VkImageMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT
22988     {
22989       return *reinterpret_cast<const VkImageMemoryBarrier2 *>( this );
22990     }
22991 
operator VkImageMemoryBarrier2&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222992     operator VkImageMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT
22993     {
22994       return *reinterpret_cast<VkImageMemoryBarrier2 *>( this );
22995     }
22996 
22997 #if defined( VULKAN_HPP_USE_REFLECT )
22998 #  if 14 <= VULKAN_HPP_CPP_VERSION
22999     auto
23000 #  else
23001     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23002                const void * const &,
23003                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
23004                VULKAN_HPP_NAMESPACE::AccessFlags2 const &,
23005                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
23006                VULKAN_HPP_NAMESPACE::AccessFlags2 const &,
23007                VULKAN_HPP_NAMESPACE::ImageLayout const &,
23008                VULKAN_HPP_NAMESPACE::ImageLayout const &,
23009                uint32_t const &,
23010                uint32_t const &,
23011                VULKAN_HPP_NAMESPACE::Image const &,
23012                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
23013 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryBarrier223014       reflect() const VULKAN_HPP_NOEXCEPT
23015     {
23016       return std::tie( sType,
23017                        pNext,
23018                        srcStageMask,
23019                        srcAccessMask,
23020                        dstStageMask,
23021                        dstAccessMask,
23022                        oldLayout,
23023                        newLayout,
23024                        srcQueueFamilyIndex,
23025                        dstQueueFamilyIndex,
23026                        image,
23027                        subresourceRange );
23028     }
23029 #endif
23030 
23031 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23032     auto operator<=>( ImageMemoryBarrier2 const & ) const = default;
23033 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryBarrier223034     bool operator==( ImageMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
23035     {
23036 #  if defined( VULKAN_HPP_USE_REFLECT )
23037       return this->reflect() == rhs.reflect();
23038 #  else
23039       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) &&
23040              ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask ) && ( oldLayout == rhs.oldLayout ) &&
23041              ( newLayout == rhs.newLayout ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) &&
23042              ( image == rhs.image ) && ( subresourceRange == rhs.subresourceRange );
23043 #  endif
23044     }
23045 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryBarrier223046     bool operator!=( ImageMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
23047     {
23048       return !operator==( rhs );
23049     }
23050 #endif
23051 
23052   public:
23053     VULKAN_HPP_NAMESPACE::StructureType         sType               = StructureType::eImageMemoryBarrier2;
23054     const void *                                pNext               = {};
23055     VULKAN_HPP_NAMESPACE::PipelineStageFlags2   srcStageMask        = {};
23056     VULKAN_HPP_NAMESPACE::AccessFlags2          srcAccessMask       = {};
23057     VULKAN_HPP_NAMESPACE::PipelineStageFlags2   dstStageMask        = {};
23058     VULKAN_HPP_NAMESPACE::AccessFlags2          dstAccessMask       = {};
23059     VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
23060     VULKAN_HPP_NAMESPACE::ImageLayout           newLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
23061     uint32_t                                    srcQueueFamilyIndex = {};
23062     uint32_t                                    dstQueueFamilyIndex = {};
23063     VULKAN_HPP_NAMESPACE::Image                 image               = {};
23064     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange    = {};
23065   };
23066 
23067   template <>
23068   struct CppType<StructureType, StructureType::eImageMemoryBarrier2>
23069   {
23070     using Type = ImageMemoryBarrier2;
23071   };
23072 
23073   using ImageMemoryBarrier2KHR = ImageMemoryBarrier2;
23074 
23075   struct DependencyInfo
23076   {
23077     using NativeType = VkDependencyInfo;
23078 
23079     static const bool                                  allowDuplicate = false;
23080     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDependencyInfo;
23081 
23082 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DependencyInfoVULKAN_HPP_NAMESPACE::DependencyInfo23083     VULKAN_HPP_CONSTEXPR DependencyInfo( VULKAN_HPP_NAMESPACE::DependencyFlags              dependencyFlags_          = {},
23084                                          uint32_t                                           memoryBarrierCount_       = {},
23085                                          const VULKAN_HPP_NAMESPACE::MemoryBarrier2 *       pMemoryBarriers_          = {},
23086                                          uint32_t                                           bufferMemoryBarrierCount_ = {},
23087                                          const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers_    = {},
23088                                          uint32_t                                           imageMemoryBarrierCount_  = {},
23089                                          const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 *  pImageMemoryBarriers_     = {},
23090                                          const void *                                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
23091       : pNext{ pNext_ }
23092       , dependencyFlags{ dependencyFlags_ }
23093       , memoryBarrierCount{ memoryBarrierCount_ }
23094       , pMemoryBarriers{ pMemoryBarriers_ }
23095       , bufferMemoryBarrierCount{ bufferMemoryBarrierCount_ }
23096       , pBufferMemoryBarriers{ pBufferMemoryBarriers_ }
23097       , imageMemoryBarrierCount{ imageMemoryBarrierCount_ }
23098       , pImageMemoryBarriers{ pImageMemoryBarriers_ }
23099     {
23100     }
23101 
23102     VULKAN_HPP_CONSTEXPR DependencyInfo( DependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23103 
DependencyInfoVULKAN_HPP_NAMESPACE::DependencyInfo23104     DependencyInfo( VkDependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT : DependencyInfo( *reinterpret_cast<DependencyInfo const *>( &rhs ) ) {}
23105 
23106 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DependencyInfoVULKAN_HPP_NAMESPACE::DependencyInfo23107     DependencyInfo( VULKAN_HPP_NAMESPACE::DependencyFlags                                                                   dependencyFlags_,
23108                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryBarrier2> const &       memoryBarriers_,
23109                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2> const & bufferMemoryBarriers_ = {},
23110                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2> const &  imageMemoryBarriers_  = {},
23111                     const void *                                                                                            pNext_                = nullptr )
23112       : pNext( pNext_ )
23113       , dependencyFlags( dependencyFlags_ )
23114       , memoryBarrierCount( static_cast<uint32_t>( memoryBarriers_.size() ) )
23115       , pMemoryBarriers( memoryBarriers_.data() )
23116       , bufferMemoryBarrierCount( static_cast<uint32_t>( bufferMemoryBarriers_.size() ) )
23117       , pBufferMemoryBarriers( bufferMemoryBarriers_.data() )
23118       , imageMemoryBarrierCount( static_cast<uint32_t>( imageMemoryBarriers_.size() ) )
23119       , pImageMemoryBarriers( imageMemoryBarriers_.data() )
23120     {
23121     }
23122 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23123 
23124     DependencyInfo & operator=( DependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23125 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23126 
operator =VULKAN_HPP_NAMESPACE::DependencyInfo23127     DependencyInfo & operator=( VkDependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23128     {
23129       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DependencyInfo const *>( &rhs );
23130       return *this;
23131     }
23132 
23133 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DependencyInfo23134     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23135     {
23136       pNext = pNext_;
23137       return *this;
23138     }
23139 
setDependencyFlagsVULKAN_HPP_NAMESPACE::DependencyInfo23140     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
23141     {
23142       dependencyFlags = dependencyFlags_;
23143       return *this;
23144     }
23145 
setMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfo23146     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setMemoryBarrierCount( uint32_t memoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
23147     {
23148       memoryBarrierCount = memoryBarrierCount_;
23149       return *this;
23150     }
23151 
setPMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo23152     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPMemoryBarriers( const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * pMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
23153     {
23154       pMemoryBarriers = pMemoryBarriers_;
23155       return *this;
23156     }
23157 
23158 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
23159     DependencyInfo &
setMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo23160       setMemoryBarriers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryBarrier2> const & memoryBarriers_ ) VULKAN_HPP_NOEXCEPT
23161     {
23162       memoryBarrierCount = static_cast<uint32_t>( memoryBarriers_.size() );
23163       pMemoryBarriers    = memoryBarriers_.data();
23164       return *this;
23165     }
23166 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23167 
setBufferMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfo23168     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setBufferMemoryBarrierCount( uint32_t bufferMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
23169     {
23170       bufferMemoryBarrierCount = bufferMemoryBarrierCount_;
23171       return *this;
23172     }
23173 
23174     VULKAN_HPP_CONSTEXPR_14 DependencyInfo &
setPBufferMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo23175       setPBufferMemoryBarriers( const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
23176     {
23177       pBufferMemoryBarriers = pBufferMemoryBarriers_;
23178       return *this;
23179     }
23180 
23181 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBufferMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo23182     DependencyInfo & setBufferMemoryBarriers(
23183       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2> const & bufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
23184     {
23185       bufferMemoryBarrierCount = static_cast<uint32_t>( bufferMemoryBarriers_.size() );
23186       pBufferMemoryBarriers    = bufferMemoryBarriers_.data();
23187       return *this;
23188     }
23189 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23190 
setImageMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfo23191     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setImageMemoryBarrierCount( uint32_t imageMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
23192     {
23193       imageMemoryBarrierCount = imageMemoryBarrierCount_;
23194       return *this;
23195     }
23196 
23197     VULKAN_HPP_CONSTEXPR_14 DependencyInfo &
setPImageMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo23198       setPImageMemoryBarriers( const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * pImageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
23199     {
23200       pImageMemoryBarriers = pImageMemoryBarriers_;
23201       return *this;
23202     }
23203 
23204 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo23205     DependencyInfo & setImageMemoryBarriers(
23206       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2> const & imageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
23207     {
23208       imageMemoryBarrierCount = static_cast<uint32_t>( imageMemoryBarriers_.size() );
23209       pImageMemoryBarriers    = imageMemoryBarriers_.data();
23210       return *this;
23211     }
23212 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23213 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23214 
operator VkDependencyInfo const&VULKAN_HPP_NAMESPACE::DependencyInfo23215     operator VkDependencyInfo const &() const VULKAN_HPP_NOEXCEPT
23216     {
23217       return *reinterpret_cast<const VkDependencyInfo *>( this );
23218     }
23219 
operator VkDependencyInfo&VULKAN_HPP_NAMESPACE::DependencyInfo23220     operator VkDependencyInfo &() VULKAN_HPP_NOEXCEPT
23221     {
23222       return *reinterpret_cast<VkDependencyInfo *>( this );
23223     }
23224 
23225 #if defined( VULKAN_HPP_USE_REFLECT )
23226 #  if 14 <= VULKAN_HPP_CPP_VERSION
23227     auto
23228 #  else
23229     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23230                const void * const &,
23231                VULKAN_HPP_NAMESPACE::DependencyFlags const &,
23232                uint32_t const &,
23233                const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * const &,
23234                uint32_t const &,
23235                const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * const &,
23236                uint32_t const &,
23237                const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * const &>
23238 #  endif
reflectVULKAN_HPP_NAMESPACE::DependencyInfo23239       reflect() const VULKAN_HPP_NOEXCEPT
23240     {
23241       return std::tie( sType,
23242                        pNext,
23243                        dependencyFlags,
23244                        memoryBarrierCount,
23245                        pMemoryBarriers,
23246                        bufferMemoryBarrierCount,
23247                        pBufferMemoryBarriers,
23248                        imageMemoryBarrierCount,
23249                        pImageMemoryBarriers );
23250     }
23251 #endif
23252 
23253 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23254     auto operator<=>( DependencyInfo const & ) const = default;
23255 #else
operator ==VULKAN_HPP_NAMESPACE::DependencyInfo23256     bool operator==( DependencyInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23257     {
23258 #  if defined( VULKAN_HPP_USE_REFLECT )
23259       return this->reflect() == rhs.reflect();
23260 #  else
23261       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dependencyFlags == rhs.dependencyFlags ) &&
23262              ( memoryBarrierCount == rhs.memoryBarrierCount ) && ( pMemoryBarriers == rhs.pMemoryBarriers ) &&
23263              ( bufferMemoryBarrierCount == rhs.bufferMemoryBarrierCount ) && ( pBufferMemoryBarriers == rhs.pBufferMemoryBarriers ) &&
23264              ( imageMemoryBarrierCount == rhs.imageMemoryBarrierCount ) && ( pImageMemoryBarriers == rhs.pImageMemoryBarriers );
23265 #  endif
23266     }
23267 
operator !=VULKAN_HPP_NAMESPACE::DependencyInfo23268     bool operator!=( DependencyInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23269     {
23270       return !operator==( rhs );
23271     }
23272 #endif
23273 
23274   public:
23275     VULKAN_HPP_NAMESPACE::StructureType                sType                    = StructureType::eDependencyInfo;
23276     const void *                                       pNext                    = {};
23277     VULKAN_HPP_NAMESPACE::DependencyFlags              dependencyFlags          = {};
23278     uint32_t                                           memoryBarrierCount       = {};
23279     const VULKAN_HPP_NAMESPACE::MemoryBarrier2 *       pMemoryBarriers          = {};
23280     uint32_t                                           bufferMemoryBarrierCount = {};
23281     const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers    = {};
23282     uint32_t                                           imageMemoryBarrierCount  = {};
23283     const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 *  pImageMemoryBarriers     = {};
23284   };
23285 
23286   template <>
23287   struct CppType<StructureType, StructureType::eDependencyInfo>
23288   {
23289     using Type = DependencyInfo;
23290   };
23291 
23292   using DependencyInfoKHR = DependencyInfo;
23293 
23294   struct DepthBiasInfoEXT
23295   {
23296     using NativeType = VkDepthBiasInfoEXT;
23297 
23298     static const bool                                  allowDuplicate = false;
23299     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDepthBiasInfoEXT;
23300 
23301 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DepthBiasInfoEXTVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23302     VULKAN_HPP_CONSTEXPR DepthBiasInfoEXT( float        depthBiasConstantFactor_ = {},
23303                                            float        depthBiasClamp_          = {},
23304                                            float        depthBiasSlopeFactor_    = {},
23305                                            const void * pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
23306       : pNext{ pNext_ }
23307       , depthBiasConstantFactor{ depthBiasConstantFactor_ }
23308       , depthBiasClamp{ depthBiasClamp_ }
23309       , depthBiasSlopeFactor{ depthBiasSlopeFactor_ }
23310     {
23311     }
23312 
23313     VULKAN_HPP_CONSTEXPR DepthBiasInfoEXT( DepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23314 
DepthBiasInfoEXTVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23315     DepthBiasInfoEXT( VkDepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DepthBiasInfoEXT( *reinterpret_cast<DepthBiasInfoEXT const *>( &rhs ) ) {}
23316 
23317     DepthBiasInfoEXT & operator=( DepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23318 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23319 
operator =VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23320     DepthBiasInfoEXT & operator=( VkDepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23321     {
23322       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT const *>( &rhs );
23323       return *this;
23324     }
23325 
23326 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23327     VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23328     {
23329       pNext = pNext_;
23330       return *this;
23331     }
23332 
setDepthBiasConstantFactorVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23333     VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) VULKAN_HPP_NOEXCEPT
23334     {
23335       depthBiasConstantFactor = depthBiasConstantFactor_;
23336       return *this;
23337     }
23338 
setDepthBiasClampVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23339     VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setDepthBiasClamp( float depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT
23340     {
23341       depthBiasClamp = depthBiasClamp_;
23342       return *this;
23343     }
23344 
setDepthBiasSlopeFactorVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23345     VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) VULKAN_HPP_NOEXCEPT
23346     {
23347       depthBiasSlopeFactor = depthBiasSlopeFactor_;
23348       return *this;
23349     }
23350 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23351 
operator VkDepthBiasInfoEXT const&VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23352     operator VkDepthBiasInfoEXT const &() const VULKAN_HPP_NOEXCEPT
23353     {
23354       return *reinterpret_cast<const VkDepthBiasInfoEXT *>( this );
23355     }
23356 
operator VkDepthBiasInfoEXT&VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23357     operator VkDepthBiasInfoEXT &() VULKAN_HPP_NOEXCEPT
23358     {
23359       return *reinterpret_cast<VkDepthBiasInfoEXT *>( this );
23360     }
23361 
23362 #if defined( VULKAN_HPP_USE_REFLECT )
23363 #  if 14 <= VULKAN_HPP_CPP_VERSION
23364     auto
23365 #  else
23366     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, float const &, float const &, float const &>
23367 #  endif
reflectVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23368       reflect() const VULKAN_HPP_NOEXCEPT
23369     {
23370       return std::tie( sType, pNext, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
23371     }
23372 #endif
23373 
23374 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23375     auto operator<=>( DepthBiasInfoEXT const & ) const = default;
23376 #else
operator ==VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23377     bool operator==( DepthBiasInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23378     {
23379 #  if defined( VULKAN_HPP_USE_REFLECT )
23380       return this->reflect() == rhs.reflect();
23381 #  else
23382       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor ) &&
23383              ( depthBiasClamp == rhs.depthBiasClamp ) && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor );
23384 #  endif
23385     }
23386 
operator !=VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23387     bool operator!=( DepthBiasInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23388     {
23389       return !operator==( rhs );
23390     }
23391 #endif
23392 
23393   public:
23394     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::eDepthBiasInfoEXT;
23395     const void *                        pNext                   = {};
23396     float                               depthBiasConstantFactor = {};
23397     float                               depthBiasClamp          = {};
23398     float                               depthBiasSlopeFactor    = {};
23399   };
23400 
23401   template <>
23402   struct CppType<StructureType, StructureType::eDepthBiasInfoEXT>
23403   {
23404     using Type = DepthBiasInfoEXT;
23405   };
23406 
23407   struct DepthBiasRepresentationInfoEXT
23408   {
23409     using NativeType = VkDepthBiasRepresentationInfoEXT;
23410 
23411     static const bool                                  allowDuplicate = false;
23412     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDepthBiasRepresentationInfoEXT;
23413 
23414 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DepthBiasRepresentationInfoEXTVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23415     VULKAN_HPP_CONSTEXPR DepthBiasRepresentationInfoEXT( VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT depthBiasRepresentation_ =
23416                                                            VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT::eLeastRepresentableValueFormat,
23417                                                          VULKAN_HPP_NAMESPACE::Bool32 depthBiasExact_ = {},
23418                                                          const void *                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
23419       : pNext{ pNext_ }
23420       , depthBiasRepresentation{ depthBiasRepresentation_ }
23421       , depthBiasExact{ depthBiasExact_ }
23422     {
23423     }
23424 
23425     VULKAN_HPP_CONSTEXPR DepthBiasRepresentationInfoEXT( DepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23426 
DepthBiasRepresentationInfoEXTVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23427     DepthBiasRepresentationInfoEXT( VkDepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23428       : DepthBiasRepresentationInfoEXT( *reinterpret_cast<DepthBiasRepresentationInfoEXT const *>( &rhs ) )
23429     {
23430     }
23431 
23432     DepthBiasRepresentationInfoEXT & operator=( DepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23433 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23434 
operator =VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23435     DepthBiasRepresentationInfoEXT & operator=( VkDepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23436     {
23437       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT const *>( &rhs );
23438       return *this;
23439     }
23440 
23441 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23442     VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23443     {
23444       pNext = pNext_;
23445       return *this;
23446     }
23447 
23448     VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT &
setDepthBiasRepresentationVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23449       setDepthBiasRepresentation( VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT depthBiasRepresentation_ ) VULKAN_HPP_NOEXCEPT
23450     {
23451       depthBiasRepresentation = depthBiasRepresentation_;
23452       return *this;
23453     }
23454 
setDepthBiasExactVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23455     VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT & setDepthBiasExact( VULKAN_HPP_NAMESPACE::Bool32 depthBiasExact_ ) VULKAN_HPP_NOEXCEPT
23456     {
23457       depthBiasExact = depthBiasExact_;
23458       return *this;
23459     }
23460 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23461 
operator VkDepthBiasRepresentationInfoEXT const&VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23462     operator VkDepthBiasRepresentationInfoEXT const &() const VULKAN_HPP_NOEXCEPT
23463     {
23464       return *reinterpret_cast<const VkDepthBiasRepresentationInfoEXT *>( this );
23465     }
23466 
operator VkDepthBiasRepresentationInfoEXT&VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23467     operator VkDepthBiasRepresentationInfoEXT &() VULKAN_HPP_NOEXCEPT
23468     {
23469       return *reinterpret_cast<VkDepthBiasRepresentationInfoEXT *>( this );
23470     }
23471 
23472 #if defined( VULKAN_HPP_USE_REFLECT )
23473 #  if 14 <= VULKAN_HPP_CPP_VERSION
23474     auto
23475 #  else
23476     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23477                const void * const &,
23478                VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT const &,
23479                VULKAN_HPP_NAMESPACE::Bool32 const &>
23480 #  endif
reflectVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23481       reflect() const VULKAN_HPP_NOEXCEPT
23482     {
23483       return std::tie( sType, pNext, depthBiasRepresentation, depthBiasExact );
23484     }
23485 #endif
23486 
23487 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23488     auto operator<=>( DepthBiasRepresentationInfoEXT const & ) const = default;
23489 #else
operator ==VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23490     bool operator==( DepthBiasRepresentationInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23491     {
23492 #  if defined( VULKAN_HPP_USE_REFLECT )
23493       return this->reflect() == rhs.reflect();
23494 #  else
23495       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthBiasRepresentation == rhs.depthBiasRepresentation ) &&
23496              ( depthBiasExact == rhs.depthBiasExact );
23497 #  endif
23498     }
23499 
operator !=VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23500     bool operator!=( DepthBiasRepresentationInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23501     {
23502       return !operator==( rhs );
23503     }
23504 #endif
23505 
23506   public:
23507     VULKAN_HPP_NAMESPACE::StructureType              sType                   = StructureType::eDepthBiasRepresentationInfoEXT;
23508     const void *                                     pNext                   = {};
23509     VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT depthBiasRepresentation = VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT::eLeastRepresentableValueFormat;
23510     VULKAN_HPP_NAMESPACE::Bool32                     depthBiasExact          = {};
23511   };
23512 
23513   template <>
23514   struct CppType<StructureType, StructureType::eDepthBiasRepresentationInfoEXT>
23515   {
23516     using Type = DepthBiasRepresentationInfoEXT;
23517   };
23518 
23519   struct DescriptorAddressInfoEXT
23520   {
23521     using NativeType = VkDescriptorAddressInfoEXT;
23522 
23523     static const bool                                  allowDuplicate = false;
23524     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorAddressInfoEXT;
23525 
23526 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorAddressInfoEXTVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23527     VULKAN_HPP_CONSTEXPR DescriptorAddressInfoEXT( VULKAN_HPP_NAMESPACE::DeviceAddress address_ = {},
23528                                                    VULKAN_HPP_NAMESPACE::DeviceSize    range_   = {},
23529                                                    VULKAN_HPP_NAMESPACE::Format        format_  = VULKAN_HPP_NAMESPACE::Format::eUndefined,
23530                                                    void *                              pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
23531       : pNext{ pNext_ }
23532       , address{ address_ }
23533       , range{ range_ }
23534       , format{ format_ }
23535     {
23536     }
23537 
23538     VULKAN_HPP_CONSTEXPR DescriptorAddressInfoEXT( DescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23539 
DescriptorAddressInfoEXTVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23540     DescriptorAddressInfoEXT( VkDescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23541       : DescriptorAddressInfoEXT( *reinterpret_cast<DescriptorAddressInfoEXT const *>( &rhs ) )
23542     {
23543     }
23544 
23545     DescriptorAddressInfoEXT & operator=( DescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23546 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23547 
operator =VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23548     DescriptorAddressInfoEXT & operator=( VkDescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23549     {
23550       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT const *>( &rhs );
23551       return *this;
23552     }
23553 
23554 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23555     VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
23556     {
23557       pNext = pNext_;
23558       return *this;
23559     }
23560 
setAddressVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23561     VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setAddress( VULKAN_HPP_NAMESPACE::DeviceAddress address_ ) VULKAN_HPP_NOEXCEPT
23562     {
23563       address = address_;
23564       return *this;
23565     }
23566 
setRangeVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23567     VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT
23568     {
23569       range = range_;
23570       return *this;
23571     }
23572 
setFormatVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23573     VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
23574     {
23575       format = format_;
23576       return *this;
23577     }
23578 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23579 
operator VkDescriptorAddressInfoEXT const&VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23580     operator VkDescriptorAddressInfoEXT const &() const VULKAN_HPP_NOEXCEPT
23581     {
23582       return *reinterpret_cast<const VkDescriptorAddressInfoEXT *>( this );
23583     }
23584 
operator VkDescriptorAddressInfoEXT&VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23585     operator VkDescriptorAddressInfoEXT &() VULKAN_HPP_NOEXCEPT
23586     {
23587       return *reinterpret_cast<VkDescriptorAddressInfoEXT *>( this );
23588     }
23589 
23590 #if defined( VULKAN_HPP_USE_REFLECT )
23591 #  if 14 <= VULKAN_HPP_CPP_VERSION
23592     auto
23593 #  else
23594     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23595                void * const &,
23596                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
23597                VULKAN_HPP_NAMESPACE::DeviceSize const &,
23598                VULKAN_HPP_NAMESPACE::Format const &>
23599 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23600       reflect() const VULKAN_HPP_NOEXCEPT
23601     {
23602       return std::tie( sType, pNext, address, range, format );
23603     }
23604 #endif
23605 
23606 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23607     auto operator<=>( DescriptorAddressInfoEXT const & ) const = default;
23608 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23609     bool operator==( DescriptorAddressInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23610     {
23611 #  if defined( VULKAN_HPP_USE_REFLECT )
23612       return this->reflect() == rhs.reflect();
23613 #  else
23614       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( address == rhs.address ) && ( range == rhs.range ) && ( format == rhs.format );
23615 #  endif
23616     }
23617 
operator !=VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23618     bool operator!=( DescriptorAddressInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23619     {
23620       return !operator==( rhs );
23621     }
23622 #endif
23623 
23624   public:
23625     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::eDescriptorAddressInfoEXT;
23626     void *                              pNext   = {};
23627     VULKAN_HPP_NAMESPACE::DeviceAddress address = {};
23628     VULKAN_HPP_NAMESPACE::DeviceSize    range   = {};
23629     VULKAN_HPP_NAMESPACE::Format        format  = VULKAN_HPP_NAMESPACE::Format::eUndefined;
23630   };
23631 
23632   template <>
23633   struct CppType<StructureType, StructureType::eDescriptorAddressInfoEXT>
23634   {
23635     using Type = DescriptorAddressInfoEXT;
23636   };
23637 
23638   struct DescriptorBufferBindingInfoEXT
23639   {
23640     using NativeType = VkDescriptorBufferBindingInfoEXT;
23641 
23642     static const bool                                  allowDuplicate = false;
23643     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorBufferBindingInfoEXT;
23644 
23645 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorBufferBindingInfoEXTVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23646     VULKAN_HPP_CONSTEXPR DescriptorBufferBindingInfoEXT( VULKAN_HPP_NAMESPACE::DeviceAddress    address_ = {},
23647                                                          VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_   = {},
23648                                                          const void *                           pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
23649       : pNext{ pNext_ }
23650       , address{ address_ }
23651       , usage{ usage_ }
23652     {
23653     }
23654 
23655     VULKAN_HPP_CONSTEXPR DescriptorBufferBindingInfoEXT( DescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23656 
DescriptorBufferBindingInfoEXTVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23657     DescriptorBufferBindingInfoEXT( VkDescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23658       : DescriptorBufferBindingInfoEXT( *reinterpret_cast<DescriptorBufferBindingInfoEXT const *>( &rhs ) )
23659     {
23660     }
23661 
23662     DescriptorBufferBindingInfoEXT & operator=( DescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23663 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23664 
operator =VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23665     DescriptorBufferBindingInfoEXT & operator=( VkDescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23666     {
23667       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT const *>( &rhs );
23668       return *this;
23669     }
23670 
23671 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23672     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23673     {
23674       pNext = pNext_;
23675       return *this;
23676     }
23677 
setAddressVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23678     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT & setAddress( VULKAN_HPP_NAMESPACE::DeviceAddress address_ ) VULKAN_HPP_NOEXCEPT
23679     {
23680       address = address_;
23681       return *this;
23682     }
23683 
setUsageVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23684     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
23685     {
23686       usage = usage_;
23687       return *this;
23688     }
23689 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23690 
operator VkDescriptorBufferBindingInfoEXT const&VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23691     operator VkDescriptorBufferBindingInfoEXT const &() const VULKAN_HPP_NOEXCEPT
23692     {
23693       return *reinterpret_cast<const VkDescriptorBufferBindingInfoEXT *>( this );
23694     }
23695 
operator VkDescriptorBufferBindingInfoEXT&VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23696     operator VkDescriptorBufferBindingInfoEXT &() VULKAN_HPP_NOEXCEPT
23697     {
23698       return *reinterpret_cast<VkDescriptorBufferBindingInfoEXT *>( this );
23699     }
23700 
23701 #if defined( VULKAN_HPP_USE_REFLECT )
23702 #  if 14 <= VULKAN_HPP_CPP_VERSION
23703     auto
23704 #  else
23705     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23706                const void * const &,
23707                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
23708                VULKAN_HPP_NAMESPACE::BufferUsageFlags const &>
23709 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23710       reflect() const VULKAN_HPP_NOEXCEPT
23711     {
23712       return std::tie( sType, pNext, address, usage );
23713     }
23714 #endif
23715 
23716 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23717     auto operator<=>( DescriptorBufferBindingInfoEXT const & ) const = default;
23718 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23719     bool operator==( DescriptorBufferBindingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23720     {
23721 #  if defined( VULKAN_HPP_USE_REFLECT )
23722       return this->reflect() == rhs.reflect();
23723 #  else
23724       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( address == rhs.address ) && ( usage == rhs.usage );
23725 #  endif
23726     }
23727 
operator !=VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23728     bool operator!=( DescriptorBufferBindingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23729     {
23730       return !operator==( rhs );
23731     }
23732 #endif
23733 
23734   public:
23735     VULKAN_HPP_NAMESPACE::StructureType    sType   = StructureType::eDescriptorBufferBindingInfoEXT;
23736     const void *                           pNext   = {};
23737     VULKAN_HPP_NAMESPACE::DeviceAddress    address = {};
23738     VULKAN_HPP_NAMESPACE::BufferUsageFlags usage   = {};
23739   };
23740 
23741   template <>
23742   struct CppType<StructureType, StructureType::eDescriptorBufferBindingInfoEXT>
23743   {
23744     using Type = DescriptorBufferBindingInfoEXT;
23745   };
23746 
23747   struct DescriptorBufferBindingPushDescriptorBufferHandleEXT
23748   {
23749     using NativeType = VkDescriptorBufferBindingPushDescriptorBufferHandleEXT;
23750 
23751     static const bool                                  allowDuplicate = false;
23752     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorBufferBindingPushDescriptorBufferHandleEXT;
23753 
23754 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorBufferBindingPushDescriptorBufferHandleEXTVULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23755     VULKAN_HPP_CONSTEXPR DescriptorBufferBindingPushDescriptorBufferHandleEXT( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {},
23756                                                                                const void *                 pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
23757       : pNext{ pNext_ }
23758       , buffer{ buffer_ }
23759     {
23760     }
23761 
23762     VULKAN_HPP_CONSTEXPR
23763       DescriptorBufferBindingPushDescriptorBufferHandleEXT( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23764 
DescriptorBufferBindingPushDescriptorBufferHandleEXTVULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23765     DescriptorBufferBindingPushDescriptorBufferHandleEXT( VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23766       : DescriptorBufferBindingPushDescriptorBufferHandleEXT( *reinterpret_cast<DescriptorBufferBindingPushDescriptorBufferHandleEXT const *>( &rhs ) )
23767     {
23768     }
23769 
23770     DescriptorBufferBindingPushDescriptorBufferHandleEXT &
23771       operator=( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23772 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23773 
operator =VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23774     DescriptorBufferBindingPushDescriptorBufferHandleEXT & operator=( VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23775     {
23776       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT const *>( &rhs );
23777       return *this;
23778     }
23779 
23780 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23781     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingPushDescriptorBufferHandleEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23782     {
23783       pNext = pNext_;
23784       return *this;
23785     }
23786 
setBufferVULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23787     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingPushDescriptorBufferHandleEXT & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
23788     {
23789       buffer = buffer_;
23790       return *this;
23791     }
23792 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23793 
operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const&VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23794     operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const &() const VULKAN_HPP_NOEXCEPT
23795     {
23796       return *reinterpret_cast<const VkDescriptorBufferBindingPushDescriptorBufferHandleEXT *>( this );
23797     }
23798 
operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT&VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23799     operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT &() VULKAN_HPP_NOEXCEPT
23800     {
23801       return *reinterpret_cast<VkDescriptorBufferBindingPushDescriptorBufferHandleEXT *>( this );
23802     }
23803 
23804 #if defined( VULKAN_HPP_USE_REFLECT )
23805 #  if 14 <= VULKAN_HPP_CPP_VERSION
23806     auto
23807 #  else
23808     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
23809 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23810       reflect() const VULKAN_HPP_NOEXCEPT
23811     {
23812       return std::tie( sType, pNext, buffer );
23813     }
23814 #endif
23815 
23816 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23817     auto operator<=>( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & ) const = default;
23818 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23819     bool operator==( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23820     {
23821 #  if defined( VULKAN_HPP_USE_REFLECT )
23822       return this->reflect() == rhs.reflect();
23823 #  else
23824       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
23825 #  endif
23826     }
23827 
operator !=VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23828     bool operator!=( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23829     {
23830       return !operator==( rhs );
23831     }
23832 #endif
23833 
23834   public:
23835     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eDescriptorBufferBindingPushDescriptorBufferHandleEXT;
23836     const void *                        pNext  = {};
23837     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
23838   };
23839 
23840   template <>
23841   struct CppType<StructureType, StructureType::eDescriptorBufferBindingPushDescriptorBufferHandleEXT>
23842   {
23843     using Type = DescriptorBufferBindingPushDescriptorBufferHandleEXT;
23844   };
23845 
23846   struct DescriptorBufferInfo
23847   {
23848     using NativeType = VkDescriptorBufferInfo;
23849 
23850 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorBufferInfoVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23851     VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( VULKAN_HPP_NAMESPACE::Buffer     buffer_ = {},
23852                                                VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {},
23853                                                VULKAN_HPP_NAMESPACE::DeviceSize range_  = {} ) VULKAN_HPP_NOEXCEPT
23854       : buffer{ buffer_ }
23855       , offset{ offset_ }
23856       , range{ range_ }
23857     {
23858     }
23859 
23860     VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23861 
DescriptorBufferInfoVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23862     DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23863       : DescriptorBufferInfo( *reinterpret_cast<DescriptorBufferInfo const *>( &rhs ) )
23864     {
23865     }
23866 
23867     DescriptorBufferInfo & operator=( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23868 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23869 
operator =VULKAN_HPP_NAMESPACE::DescriptorBufferInfo23870     DescriptorBufferInfo & operator=( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23871     {
23872       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorBufferInfo const *>( &rhs );
23873       return *this;
23874     }
23875 
23876 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23877     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
23878     {
23879       buffer = buffer_;
23880       return *this;
23881     }
23882 
setOffsetVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23883     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
23884     {
23885       offset = offset_;
23886       return *this;
23887     }
23888 
setRangeVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23889     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT
23890     {
23891       range = range_;
23892       return *this;
23893     }
23894 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23895 
operator VkDescriptorBufferInfo const&VULKAN_HPP_NAMESPACE::DescriptorBufferInfo23896     operator VkDescriptorBufferInfo const &() const VULKAN_HPP_NOEXCEPT
23897     {
23898       return *reinterpret_cast<const VkDescriptorBufferInfo *>( this );
23899     }
23900 
operator VkDescriptorBufferInfo&VULKAN_HPP_NAMESPACE::DescriptorBufferInfo23901     operator VkDescriptorBufferInfo &() VULKAN_HPP_NOEXCEPT
23902     {
23903       return *reinterpret_cast<VkDescriptorBufferInfo *>( this );
23904     }
23905 
23906 #if defined( VULKAN_HPP_USE_REFLECT )
23907 #  if 14 <= VULKAN_HPP_CPP_VERSION
23908     auto
23909 #  else
23910     std::tuple<VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
23911 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23912       reflect() const VULKAN_HPP_NOEXCEPT
23913     {
23914       return std::tie( buffer, offset, range );
23915     }
23916 #endif
23917 
23918 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23919     auto operator<=>( DescriptorBufferInfo const & ) const = default;
23920 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorBufferInfo23921     bool operator==( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23922     {
23923 #  if defined( VULKAN_HPP_USE_REFLECT )
23924       return this->reflect() == rhs.reflect();
23925 #  else
23926       return ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( range == rhs.range );
23927 #  endif
23928     }
23929 
operator !=VULKAN_HPP_NAMESPACE::DescriptorBufferInfo23930     bool operator!=( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23931     {
23932       return !operator==( rhs );
23933     }
23934 #endif
23935 
23936   public:
23937     VULKAN_HPP_NAMESPACE::Buffer     buffer = {};
23938     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
23939     VULKAN_HPP_NAMESPACE::DeviceSize range  = {};
23940   };
23941 
23942   struct DescriptorImageInfo
23943   {
23944     using NativeType = VkDescriptorImageInfo;
23945 
23946 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
23947     VULKAN_HPP_CONSTEXPR
DescriptorImageInfoVULKAN_HPP_NAMESPACE::DescriptorImageInfo23948       DescriptorImageInfo( VULKAN_HPP_NAMESPACE::Sampler     sampler_     = {},
23949                            VULKAN_HPP_NAMESPACE::ImageView   imageView_   = {},
23950                            VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT
23951       : sampler{ sampler_ }
23952       , imageView{ imageView_ }
23953       , imageLayout{ imageLayout_ }
23954     {
23955     }
23956 
23957     VULKAN_HPP_CONSTEXPR DescriptorImageInfo( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23958 
DescriptorImageInfoVULKAN_HPP_NAMESPACE::DescriptorImageInfo23959     DescriptorImageInfo( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT : DescriptorImageInfo( *reinterpret_cast<DescriptorImageInfo const *>( &rhs ) )
23960     {
23961     }
23962 
23963     DescriptorImageInfo & operator=( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23964 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23965 
operator =VULKAN_HPP_NAMESPACE::DescriptorImageInfo23966     DescriptorImageInfo & operator=( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23967     {
23968       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorImageInfo const *>( &rhs );
23969       return *this;
23970     }
23971 
23972 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSamplerVULKAN_HPP_NAMESPACE::DescriptorImageInfo23973     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT
23974     {
23975       sampler = sampler_;
23976       return *this;
23977     }
23978 
setImageViewVULKAN_HPP_NAMESPACE::DescriptorImageInfo23979     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
23980     {
23981       imageView = imageView_;
23982       return *this;
23983     }
23984 
setImageLayoutVULKAN_HPP_NAMESPACE::DescriptorImageInfo23985     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
23986     {
23987       imageLayout = imageLayout_;
23988       return *this;
23989     }
23990 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23991 
operator VkDescriptorImageInfo const&VULKAN_HPP_NAMESPACE::DescriptorImageInfo23992     operator VkDescriptorImageInfo const &() const VULKAN_HPP_NOEXCEPT
23993     {
23994       return *reinterpret_cast<const VkDescriptorImageInfo *>( this );
23995     }
23996 
operator VkDescriptorImageInfo&VULKAN_HPP_NAMESPACE::DescriptorImageInfo23997     operator VkDescriptorImageInfo &() VULKAN_HPP_NOEXCEPT
23998     {
23999       return *reinterpret_cast<VkDescriptorImageInfo *>( this );
24000     }
24001 
24002 #if defined( VULKAN_HPP_USE_REFLECT )
24003 #  if 14 <= VULKAN_HPP_CPP_VERSION
24004     auto
24005 #  else
24006     std::tuple<VULKAN_HPP_NAMESPACE::Sampler const &, VULKAN_HPP_NAMESPACE::ImageView const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
24007 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorImageInfo24008       reflect() const VULKAN_HPP_NOEXCEPT
24009     {
24010       return std::tie( sampler, imageView, imageLayout );
24011     }
24012 #endif
24013 
24014 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24015     auto operator<=>( DescriptorImageInfo const & ) const = default;
24016 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorImageInfo24017     bool operator==( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24018     {
24019 #  if defined( VULKAN_HPP_USE_REFLECT )
24020       return this->reflect() == rhs.reflect();
24021 #  else
24022       return ( sampler == rhs.sampler ) && ( imageView == rhs.imageView ) && ( imageLayout == rhs.imageLayout );
24023 #  endif
24024     }
24025 
operator !=VULKAN_HPP_NAMESPACE::DescriptorImageInfo24026     bool operator!=( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24027     {
24028       return !operator==( rhs );
24029     }
24030 #endif
24031 
24032   public:
24033     VULKAN_HPP_NAMESPACE::Sampler     sampler     = {};
24034     VULKAN_HPP_NAMESPACE::ImageView   imageView   = {};
24035     VULKAN_HPP_NAMESPACE::ImageLayout imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
24036   };
24037 
24038   union DescriptorDataEXT
24039   {
24040     using NativeType = VkDescriptorDataEXT;
24041 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
24042 
DescriptorDataEXT(const VULKAN_HPP_NAMESPACE::Sampler * pSampler_={} )24043     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( const VULKAN_HPP_NAMESPACE::Sampler * pSampler_ = {} ) : pSampler( pSampler_ ) {}
24044 
DescriptorDataEXT(const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pDescriptorImageInfo_)24045     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pDescriptorImageInfo_ )
24046       : pCombinedImageSampler( pDescriptorImageInfo_ )
24047     {
24048     }
24049 
DescriptorDataEXT(const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pDescriptorAddressInfoEXT_)24050     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pDescriptorAddressInfoEXT_ )
24051       : pUniformTexelBuffer( pDescriptorAddressInfoEXT_ )
24052     {
24053     }
24054 
DescriptorDataEXT(VULKAN_HPP_NAMESPACE::DeviceAddress accelerationStructure_)24055     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( VULKAN_HPP_NAMESPACE::DeviceAddress accelerationStructure_ ) : accelerationStructure( accelerationStructure_ ) {}
24056 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
24057 
24058 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setPSampler(const VULKAN_HPP_NAMESPACE::Sampler * pSampler_)24059     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPSampler( const VULKAN_HPP_NAMESPACE::Sampler * pSampler_ ) VULKAN_HPP_NOEXCEPT
24060     {
24061       pSampler = pSampler_;
24062       return *this;
24063     }
24064 
24065     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT &
setPCombinedImageSampler(const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pCombinedImageSampler_)24066       setPCombinedImageSampler( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pCombinedImageSampler_ ) VULKAN_HPP_NOEXCEPT
24067     {
24068       pCombinedImageSampler = pCombinedImageSampler_;
24069       return *this;
24070     }
24071 
24072     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT &
setPInputAttachmentImage(const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pInputAttachmentImage_)24073       setPInputAttachmentImage( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pInputAttachmentImage_ ) VULKAN_HPP_NOEXCEPT
24074     {
24075       pInputAttachmentImage = pInputAttachmentImage_;
24076       return *this;
24077     }
24078 
setPSampledImage(const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pSampledImage_)24079     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPSampledImage( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pSampledImage_ ) VULKAN_HPP_NOEXCEPT
24080     {
24081       pSampledImage = pSampledImage_;
24082       return *this;
24083     }
24084 
setPStorageImage(const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pStorageImage_)24085     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPStorageImage( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pStorageImage_ ) VULKAN_HPP_NOEXCEPT
24086     {
24087       pStorageImage = pStorageImage_;
24088       return *this;
24089     }
24090 
24091     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT &
setPUniformTexelBuffer(const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformTexelBuffer_)24092       setPUniformTexelBuffer( const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformTexelBuffer_ ) VULKAN_HPP_NOEXCEPT
24093     {
24094       pUniformTexelBuffer = pUniformTexelBuffer_;
24095       return *this;
24096     }
24097 
24098     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT &
setPStorageTexelBuffer(const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageTexelBuffer_)24099       setPStorageTexelBuffer( const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageTexelBuffer_ ) VULKAN_HPP_NOEXCEPT
24100     {
24101       pStorageTexelBuffer = pStorageTexelBuffer_;
24102       return *this;
24103     }
24104 
setPUniformBuffer(const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformBuffer_)24105     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPUniformBuffer( const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformBuffer_ ) VULKAN_HPP_NOEXCEPT
24106     {
24107       pUniformBuffer = pUniformBuffer_;
24108       return *this;
24109     }
24110 
setPStorageBuffer(const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageBuffer_)24111     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPStorageBuffer( const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageBuffer_ ) VULKAN_HPP_NOEXCEPT
24112     {
24113       pStorageBuffer = pStorageBuffer_;
24114       return *this;
24115     }
24116 
setAccelerationStructure(VULKAN_HPP_NAMESPACE::DeviceAddress accelerationStructure_)24117     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setAccelerationStructure( VULKAN_HPP_NAMESPACE::DeviceAddress accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
24118     {
24119       accelerationStructure = accelerationStructure_;
24120       return *this;
24121     }
24122 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
24123 
operator VkDescriptorDataEXT const&() const24124     operator VkDescriptorDataEXT const &() const
24125     {
24126       return *reinterpret_cast<const VkDescriptorDataEXT *>( this );
24127     }
24128 
operator VkDescriptorDataEXT&()24129     operator VkDescriptorDataEXT &()
24130     {
24131       return *reinterpret_cast<VkDescriptorDataEXT *>( this );
24132     }
24133 
24134 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
24135     const VULKAN_HPP_NAMESPACE::Sampler *                  pSampler;
24136     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *      pCombinedImageSampler;
24137     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *      pInputAttachmentImage;
24138     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *      pSampledImage;
24139     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *      pStorageImage;
24140     const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformTexelBuffer;
24141     const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageTexelBuffer;
24142     const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformBuffer;
24143     const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageBuffer;
24144     VULKAN_HPP_NAMESPACE::DeviceAddress                    accelerationStructure;
24145 #else
24146     const VkSampler *                  pSampler;
24147     const VkDescriptorImageInfo *      pCombinedImageSampler;
24148     const VkDescriptorImageInfo *      pInputAttachmentImage;
24149     const VkDescriptorImageInfo *      pSampledImage;
24150     const VkDescriptorImageInfo *      pStorageImage;
24151     const VkDescriptorAddressInfoEXT * pUniformTexelBuffer;
24152     const VkDescriptorAddressInfoEXT * pStorageTexelBuffer;
24153     const VkDescriptorAddressInfoEXT * pUniformBuffer;
24154     const VkDescriptorAddressInfoEXT * pStorageBuffer;
24155     VkDeviceAddress                    accelerationStructure;
24156 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
24157   };
24158 
24159   struct DescriptorGetInfoEXT
24160   {
24161     using NativeType = VkDescriptorGetInfoEXT;
24162 
24163     static const bool                                  allowDuplicate = false;
24164     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorGetInfoEXT;
24165 
24166 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorGetInfoEXTVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT24167     VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT( VULKAN_HPP_NAMESPACE::DescriptorType    type_  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
24168                                                   VULKAN_HPP_NAMESPACE::DescriptorDataEXT data_  = {},
24169                                                   const void *                            pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
24170       : pNext{ pNext_ }
24171       , type{ type_ }
24172       , data{ data_ }
24173     {
24174     }
24175 
24176     VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT( DescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24177 
DescriptorGetInfoEXTVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT24178     DescriptorGetInfoEXT( VkDescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24179       : DescriptorGetInfoEXT( *reinterpret_cast<DescriptorGetInfoEXT const *>( &rhs ) )
24180     {
24181     }
24182 
24183     DescriptorGetInfoEXT & operator=( DescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24184 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24185 
operator =VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT24186     DescriptorGetInfoEXT & operator=( VkDescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24187     {
24188       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT const *>( &rhs );
24189       return *this;
24190     }
24191 
24192 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT24193     VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24194     {
24195       pNext = pNext_;
24196       return *this;
24197     }
24198 
setTypeVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT24199     VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT & setType( VULKAN_HPP_NAMESPACE::DescriptorType type_ ) VULKAN_HPP_NOEXCEPT
24200     {
24201       type = type_;
24202       return *this;
24203     }
24204 
setDataVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT24205     VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT & setData( VULKAN_HPP_NAMESPACE::DescriptorDataEXT const & data_ ) VULKAN_HPP_NOEXCEPT
24206     {
24207       data = data_;
24208       return *this;
24209     }
24210 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24211 
operator VkDescriptorGetInfoEXT const&VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT24212     operator VkDescriptorGetInfoEXT const &() const VULKAN_HPP_NOEXCEPT
24213     {
24214       return *reinterpret_cast<const VkDescriptorGetInfoEXT *>( this );
24215     }
24216 
operator VkDescriptorGetInfoEXT&VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT24217     operator VkDescriptorGetInfoEXT &() VULKAN_HPP_NOEXCEPT
24218     {
24219       return *reinterpret_cast<VkDescriptorGetInfoEXT *>( this );
24220     }
24221 
24222 #if defined( VULKAN_HPP_USE_REFLECT )
24223 #  if 14 <= VULKAN_HPP_CPP_VERSION
24224     auto
24225 #  else
24226     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24227                const void * const &,
24228                VULKAN_HPP_NAMESPACE::DescriptorType const &,
24229                VULKAN_HPP_NAMESPACE::DescriptorDataEXT const &>
24230 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT24231       reflect() const VULKAN_HPP_NOEXCEPT
24232     {
24233       return std::tie( sType, pNext, type, data );
24234     }
24235 #endif
24236 
24237   public:
24238     VULKAN_HPP_NAMESPACE::StructureType     sType = StructureType::eDescriptorGetInfoEXT;
24239     const void *                            pNext = {};
24240     VULKAN_HPP_NAMESPACE::DescriptorType    type  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
24241     VULKAN_HPP_NAMESPACE::DescriptorDataEXT data  = {};
24242   };
24243 
24244   template <>
24245   struct CppType<StructureType, StructureType::eDescriptorGetInfoEXT>
24246   {
24247     using Type = DescriptorGetInfoEXT;
24248   };
24249 
24250   struct DescriptorPoolSize
24251   {
24252     using NativeType = VkDescriptorPoolSize;
24253 
24254 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorPoolSizeVULKAN_HPP_NAMESPACE::DescriptorPoolSize24255     VULKAN_HPP_CONSTEXPR DescriptorPoolSize( VULKAN_HPP_NAMESPACE::DescriptorType type_            = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
24256                                              uint32_t                             descriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT
24257       : type{ type_ }
24258       , descriptorCount{ descriptorCount_ }
24259     {
24260     }
24261 
24262     VULKAN_HPP_CONSTEXPR DescriptorPoolSize( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24263 
DescriptorPoolSizeVULKAN_HPP_NAMESPACE::DescriptorPoolSize24264     DescriptorPoolSize( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT : DescriptorPoolSize( *reinterpret_cast<DescriptorPoolSize const *>( &rhs ) ) {}
24265 
24266     DescriptorPoolSize & operator=( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24267 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24268 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolSize24269     DescriptorPoolSize & operator=( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
24270     {
24271       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolSize const *>( &rhs );
24272       return *this;
24273     }
24274 
24275 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setTypeVULKAN_HPP_NAMESPACE::DescriptorPoolSize24276     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & setType( VULKAN_HPP_NAMESPACE::DescriptorType type_ ) VULKAN_HPP_NOEXCEPT
24277     {
24278       type = type_;
24279       return *this;
24280     }
24281 
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorPoolSize24282     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
24283     {
24284       descriptorCount = descriptorCount_;
24285       return *this;
24286     }
24287 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24288 
operator VkDescriptorPoolSize const&VULKAN_HPP_NAMESPACE::DescriptorPoolSize24289     operator VkDescriptorPoolSize const &() const VULKAN_HPP_NOEXCEPT
24290     {
24291       return *reinterpret_cast<const VkDescriptorPoolSize *>( this );
24292     }
24293 
operator VkDescriptorPoolSize&VULKAN_HPP_NAMESPACE::DescriptorPoolSize24294     operator VkDescriptorPoolSize &() VULKAN_HPP_NOEXCEPT
24295     {
24296       return *reinterpret_cast<VkDescriptorPoolSize *>( this );
24297     }
24298 
24299 #if defined( VULKAN_HPP_USE_REFLECT )
24300 #  if 14 <= VULKAN_HPP_CPP_VERSION
24301     auto
24302 #  else
24303     std::tuple<VULKAN_HPP_NAMESPACE::DescriptorType const &, uint32_t const &>
24304 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolSize24305       reflect() const VULKAN_HPP_NOEXCEPT
24306     {
24307       return std::tie( type, descriptorCount );
24308     }
24309 #endif
24310 
24311 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24312     auto operator<=>( DescriptorPoolSize const & ) const = default;
24313 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolSize24314     bool                               operator==( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT
24315     {
24316 #  if defined( VULKAN_HPP_USE_REFLECT )
24317       return this->reflect() == rhs.reflect();
24318 #  else
24319       return ( type == rhs.type ) && ( descriptorCount == rhs.descriptorCount );
24320 #  endif
24321     }
24322 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolSize24323     bool operator!=( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT
24324     {
24325       return !operator==( rhs );
24326     }
24327 #endif
24328 
24329   public:
24330     VULKAN_HPP_NAMESPACE::DescriptorType type            = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
24331     uint32_t                             descriptorCount = {};
24332   };
24333 
24334   struct DescriptorPoolCreateInfo
24335   {
24336     using NativeType = VkDescriptorPoolCreateInfo;
24337 
24338     static const bool                                  allowDuplicate = false;
24339     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorPoolCreateInfo;
24340 
24341 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24342     VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags  flags_         = {},
24343                                                    uint32_t                                         maxSets_       = {},
24344                                                    uint32_t                                         poolSizeCount_ = {},
24345                                                    const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes_    = {},
24346                                                    const void *                                     pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
24347       : pNext{ pNext_ }
24348       , flags{ flags_ }
24349       , maxSets{ maxSets_ }
24350       , poolSizeCount{ poolSizeCount_ }
24351       , pPoolSizes{ pPoolSizes_ }
24352     {
24353     }
24354 
24355     VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24356 
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24357     DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24358       : DescriptorPoolCreateInfo( *reinterpret_cast<DescriptorPoolCreateInfo const *>( &rhs ) )
24359     {
24360     }
24361 
24362 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24363     DescriptorPoolCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags                                                       flags_,
24364                               uint32_t                                                                                              maxSets_,
24365                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorPoolSize> const & poolSizes_,
24366                               const void *                                                                                          pNext_ = nullptr )
24367       : pNext( pNext_ ), flags( flags_ ), maxSets( maxSets_ ), poolSizeCount( static_cast<uint32_t>( poolSizes_.size() ) ), pPoolSizes( poolSizes_.data() )
24368     {
24369     }
24370 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24371 
24372     DescriptorPoolCreateInfo & operator=( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24373 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24374 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24375     DescriptorPoolCreateInfo & operator=( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24376     {
24377       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const *>( &rhs );
24378       return *this;
24379     }
24380 
24381 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24382     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24383     {
24384       pNext = pNext_;
24385       return *this;
24386     }
24387 
setFlagsVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24388     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
24389     {
24390       flags = flags_;
24391       return *this;
24392     }
24393 
setMaxSetsVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24394     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setMaxSets( uint32_t maxSets_ ) VULKAN_HPP_NOEXCEPT
24395     {
24396       maxSets = maxSets_;
24397       return *this;
24398     }
24399 
setPoolSizeCountVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24400     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPoolSizeCount( uint32_t poolSizeCount_ ) VULKAN_HPP_NOEXCEPT
24401     {
24402       poolSizeCount = poolSizeCount_;
24403       return *this;
24404     }
24405 
setPPoolSizesVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24406     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPPoolSizes( const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes_ ) VULKAN_HPP_NOEXCEPT
24407     {
24408       pPoolSizes = pPoolSizes_;
24409       return *this;
24410     }
24411 
24412 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
24413     DescriptorPoolCreateInfo &
setPoolSizesVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24414       setPoolSizes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorPoolSize> const & poolSizes_ ) VULKAN_HPP_NOEXCEPT
24415     {
24416       poolSizeCount = static_cast<uint32_t>( poolSizes_.size() );
24417       pPoolSizes    = poolSizes_.data();
24418       return *this;
24419     }
24420 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24421 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24422 
operator VkDescriptorPoolCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24423     operator VkDescriptorPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
24424     {
24425       return *reinterpret_cast<const VkDescriptorPoolCreateInfo *>( this );
24426     }
24427 
operator VkDescriptorPoolCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24428     operator VkDescriptorPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
24429     {
24430       return *reinterpret_cast<VkDescriptorPoolCreateInfo *>( this );
24431     }
24432 
24433 #if defined( VULKAN_HPP_USE_REFLECT )
24434 #  if 14 <= VULKAN_HPP_CPP_VERSION
24435     auto
24436 #  else
24437     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24438                const void * const &,
24439                VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags const &,
24440                uint32_t const &,
24441                uint32_t const &,
24442                const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * const &>
24443 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24444       reflect() const VULKAN_HPP_NOEXCEPT
24445     {
24446       return std::tie( sType, pNext, flags, maxSets, poolSizeCount, pPoolSizes );
24447     }
24448 #endif
24449 
24450 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24451     auto operator<=>( DescriptorPoolCreateInfo const & ) const = default;
24452 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24453     bool operator==( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24454     {
24455 #  if defined( VULKAN_HPP_USE_REFLECT )
24456       return this->reflect() == rhs.reflect();
24457 #  else
24458       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( maxSets == rhs.maxSets ) &&
24459              ( poolSizeCount == rhs.poolSizeCount ) && ( pPoolSizes == rhs.pPoolSizes );
24460 #  endif
24461     }
24462 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24463     bool operator!=( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24464     {
24465       return !operator==( rhs );
24466     }
24467 #endif
24468 
24469   public:
24470     VULKAN_HPP_NAMESPACE::StructureType              sType         = StructureType::eDescriptorPoolCreateInfo;
24471     const void *                                     pNext         = {};
24472     VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags  flags         = {};
24473     uint32_t                                         maxSets       = {};
24474     uint32_t                                         poolSizeCount = {};
24475     const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes    = {};
24476   };
24477 
24478   template <>
24479   struct CppType<StructureType, StructureType::eDescriptorPoolCreateInfo>
24480   {
24481     using Type = DescriptorPoolCreateInfo;
24482   };
24483 
24484   struct DescriptorPoolInlineUniformBlockCreateInfo
24485   {
24486     using NativeType = VkDescriptorPoolInlineUniformBlockCreateInfo;
24487 
24488     static const bool                                  allowDuplicate = false;
24489     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorPoolInlineUniformBlockCreateInfo;
24490 
24491 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorPoolInlineUniformBlockCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24492     VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfo( uint32_t     maxInlineUniformBlockBindings_ = {},
24493                                                                      const void * pNext_                         = nullptr ) VULKAN_HPP_NOEXCEPT
24494       : pNext{ pNext_ }
24495       , maxInlineUniformBlockBindings{ maxInlineUniformBlockBindings_ }
24496     {
24497     }
24498 
24499     VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfo( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24500 
DescriptorPoolInlineUniformBlockCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24501     DescriptorPoolInlineUniformBlockCreateInfo( VkDescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24502       : DescriptorPoolInlineUniformBlockCreateInfo( *reinterpret_cast<DescriptorPoolInlineUniformBlockCreateInfo const *>( &rhs ) )
24503     {
24504     }
24505 
24506     DescriptorPoolInlineUniformBlockCreateInfo & operator=( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24507 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24508 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24509     DescriptorPoolInlineUniformBlockCreateInfo & operator=( VkDescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24510     {
24511       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo const *>( &rhs );
24512       return *this;
24513     }
24514 
24515 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24516     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24517     {
24518       pNext = pNext_;
24519       return *this;
24520     }
24521 
24522     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo &
setMaxInlineUniformBlockBindingsVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24523       setMaxInlineUniformBlockBindings( uint32_t maxInlineUniformBlockBindings_ ) VULKAN_HPP_NOEXCEPT
24524     {
24525       maxInlineUniformBlockBindings = maxInlineUniformBlockBindings_;
24526       return *this;
24527     }
24528 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24529 
operator VkDescriptorPoolInlineUniformBlockCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24530     operator VkDescriptorPoolInlineUniformBlockCreateInfo const &() const VULKAN_HPP_NOEXCEPT
24531     {
24532       return *reinterpret_cast<const VkDescriptorPoolInlineUniformBlockCreateInfo *>( this );
24533     }
24534 
operator VkDescriptorPoolInlineUniformBlockCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24535     operator VkDescriptorPoolInlineUniformBlockCreateInfo &() VULKAN_HPP_NOEXCEPT
24536     {
24537       return *reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfo *>( this );
24538     }
24539 
24540 #if defined( VULKAN_HPP_USE_REFLECT )
24541 #  if 14 <= VULKAN_HPP_CPP_VERSION
24542     auto
24543 #  else
24544     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
24545 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24546       reflect() const VULKAN_HPP_NOEXCEPT
24547     {
24548       return std::tie( sType, pNext, maxInlineUniformBlockBindings );
24549     }
24550 #endif
24551 
24552 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24553     auto operator<=>( DescriptorPoolInlineUniformBlockCreateInfo const & ) const = default;
24554 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24555     bool operator==( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24556     {
24557 #  if defined( VULKAN_HPP_USE_REFLECT )
24558       return this->reflect() == rhs.reflect();
24559 #  else
24560       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxInlineUniformBlockBindings == rhs.maxInlineUniformBlockBindings );
24561 #  endif
24562     }
24563 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24564     bool operator!=( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24565     {
24566       return !operator==( rhs );
24567     }
24568 #endif
24569 
24570   public:
24571     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::eDescriptorPoolInlineUniformBlockCreateInfo;
24572     const void *                        pNext                         = {};
24573     uint32_t                            maxInlineUniformBlockBindings = {};
24574   };
24575 
24576   template <>
24577   struct CppType<StructureType, StructureType::eDescriptorPoolInlineUniformBlockCreateInfo>
24578   {
24579     using Type = DescriptorPoolInlineUniformBlockCreateInfo;
24580   };
24581 
24582   using DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo;
24583 
24584   struct DescriptorSetAllocateInfo
24585   {
24586     using NativeType = VkDescriptorSetAllocateInfo;
24587 
24588     static const bool                                  allowDuplicate = false;
24589     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetAllocateInfo;
24590 
24591 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24592     VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo( VULKAN_HPP_NAMESPACE::DescriptorPool              descriptorPool_     = {},
24593                                                     uint32_t                                          descriptorSetCount_ = {},
24594                                                     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_        = {},
24595                                                     const void *                                      pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
24596       : pNext{ pNext_ }
24597       , descriptorPool{ descriptorPool_ }
24598       , descriptorSetCount{ descriptorSetCount_ }
24599       , pSetLayouts{ pSetLayouts_ }
24600     {
24601     }
24602 
24603     VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24604 
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24605     DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24606       : DescriptorSetAllocateInfo( *reinterpret_cast<DescriptorSetAllocateInfo const *>( &rhs ) )
24607     {
24608     }
24609 
24610 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24611     DescriptorSetAllocateInfo( VULKAN_HPP_NAMESPACE::DescriptorPool                                                                   descriptorPool_,
24612                                VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_,
24613                                const void *                                                                                           pNext_ = nullptr )
24614       : pNext( pNext_ ), descriptorPool( descriptorPool_ ), descriptorSetCount( static_cast<uint32_t>( setLayouts_.size() ) ), pSetLayouts( setLayouts_.data() )
24615     {
24616     }
24617 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24618 
24619     DescriptorSetAllocateInfo & operator=( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24620 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24621 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24622     DescriptorSetAllocateInfo & operator=( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24623     {
24624       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const *>( &rhs );
24625       return *this;
24626     }
24627 
24628 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24629     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24630     {
24631       pNext = pNext_;
24632       return *this;
24633     }
24634 
setDescriptorPoolVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24635     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_ ) VULKAN_HPP_NOEXCEPT
24636     {
24637       descriptorPool = descriptorPool_;
24638       return *this;
24639     }
24640 
setDescriptorSetCountVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24641     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT
24642     {
24643       descriptorSetCount = descriptorSetCount_;
24644       return *this;
24645     }
24646 
setPSetLayoutsVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24647     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT
24648     {
24649       pSetLayouts = pSetLayouts_;
24650       return *this;
24651     }
24652 
24653 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
24654     DescriptorSetAllocateInfo &
setSetLayoutsVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24655       setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_ ) VULKAN_HPP_NOEXCEPT
24656     {
24657       descriptorSetCount = static_cast<uint32_t>( setLayouts_.size() );
24658       pSetLayouts        = setLayouts_.data();
24659       return *this;
24660     }
24661 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24662 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24663 
operator VkDescriptorSetAllocateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24664     operator VkDescriptorSetAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
24665     {
24666       return *reinterpret_cast<const VkDescriptorSetAllocateInfo *>( this );
24667     }
24668 
operator VkDescriptorSetAllocateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24669     operator VkDescriptorSetAllocateInfo &() VULKAN_HPP_NOEXCEPT
24670     {
24671       return *reinterpret_cast<VkDescriptorSetAllocateInfo *>( this );
24672     }
24673 
24674 #if defined( VULKAN_HPP_USE_REFLECT )
24675 #  if 14 <= VULKAN_HPP_CPP_VERSION
24676     auto
24677 #  else
24678     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24679                const void * const &,
24680                VULKAN_HPP_NAMESPACE::DescriptorPool const &,
24681                uint32_t const &,
24682                const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &>
24683 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24684       reflect() const VULKAN_HPP_NOEXCEPT
24685     {
24686       return std::tie( sType, pNext, descriptorPool, descriptorSetCount, pSetLayouts );
24687     }
24688 #endif
24689 
24690 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24691     auto operator<=>( DescriptorSetAllocateInfo const & ) const = default;
24692 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24693     bool operator==( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24694     {
24695 #  if defined( VULKAN_HPP_USE_REFLECT )
24696       return this->reflect() == rhs.reflect();
24697 #  else
24698       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorPool == rhs.descriptorPool ) && ( descriptorSetCount == rhs.descriptorSetCount ) &&
24699              ( pSetLayouts == rhs.pSetLayouts );
24700 #  endif
24701     }
24702 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24703     bool operator!=( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24704     {
24705       return !operator==( rhs );
24706     }
24707 #endif
24708 
24709   public:
24710     VULKAN_HPP_NAMESPACE::StructureType               sType              = StructureType::eDescriptorSetAllocateInfo;
24711     const void *                                      pNext              = {};
24712     VULKAN_HPP_NAMESPACE::DescriptorPool              descriptorPool     = {};
24713     uint32_t                                          descriptorSetCount = {};
24714     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts        = {};
24715   };
24716 
24717   template <>
24718   struct CppType<StructureType, StructureType::eDescriptorSetAllocateInfo>
24719   {
24720     using Type = DescriptorSetAllocateInfo;
24721   };
24722 
24723   struct DescriptorSetBindingReferenceVALVE
24724   {
24725     using NativeType = VkDescriptorSetBindingReferenceVALVE;
24726 
24727     static const bool                                  allowDuplicate = false;
24728     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetBindingReferenceVALVE;
24729 
24730 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetBindingReferenceVALVEVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24731     VULKAN_HPP_CONSTEXPR DescriptorSetBindingReferenceVALVE( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ = {},
24732                                                              uint32_t                                  binding_             = {},
24733                                                              const void *                              pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
24734       : pNext{ pNext_ }
24735       , descriptorSetLayout{ descriptorSetLayout_ }
24736       , binding{ binding_ }
24737     {
24738     }
24739 
24740     VULKAN_HPP_CONSTEXPR DescriptorSetBindingReferenceVALVE( DescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24741 
DescriptorSetBindingReferenceVALVEVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24742     DescriptorSetBindingReferenceVALVE( VkDescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
24743       : DescriptorSetBindingReferenceVALVE( *reinterpret_cast<DescriptorSetBindingReferenceVALVE const *>( &rhs ) )
24744     {
24745     }
24746 
24747     DescriptorSetBindingReferenceVALVE & operator=( DescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24748 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24749 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24750     DescriptorSetBindingReferenceVALVE & operator=( VkDescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
24751     {
24752       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE const *>( &rhs );
24753       return *this;
24754     }
24755 
24756 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24757     VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24758     {
24759       pNext = pNext_;
24760       return *this;
24761     }
24762 
24763     VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE &
setDescriptorSetLayoutVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24764       setDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ ) VULKAN_HPP_NOEXCEPT
24765     {
24766       descriptorSetLayout = descriptorSetLayout_;
24767       return *this;
24768     }
24769 
setBindingVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24770     VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
24771     {
24772       binding = binding_;
24773       return *this;
24774     }
24775 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24776 
operator VkDescriptorSetBindingReferenceVALVE const&VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24777     operator VkDescriptorSetBindingReferenceVALVE const &() const VULKAN_HPP_NOEXCEPT
24778     {
24779       return *reinterpret_cast<const VkDescriptorSetBindingReferenceVALVE *>( this );
24780     }
24781 
operator VkDescriptorSetBindingReferenceVALVE&VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24782     operator VkDescriptorSetBindingReferenceVALVE &() VULKAN_HPP_NOEXCEPT
24783     {
24784       return *reinterpret_cast<VkDescriptorSetBindingReferenceVALVE *>( this );
24785     }
24786 
24787 #if defined( VULKAN_HPP_USE_REFLECT )
24788 #  if 14 <= VULKAN_HPP_CPP_VERSION
24789     auto
24790 #  else
24791     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DescriptorSetLayout const &, uint32_t const &>
24792 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24793       reflect() const VULKAN_HPP_NOEXCEPT
24794     {
24795       return std::tie( sType, pNext, descriptorSetLayout, binding );
24796     }
24797 #endif
24798 
24799 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24800     auto operator<=>( DescriptorSetBindingReferenceVALVE const & ) const = default;
24801 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24802     bool operator==( DescriptorSetBindingReferenceVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
24803     {
24804 #  if defined( VULKAN_HPP_USE_REFLECT )
24805       return this->reflect() == rhs.reflect();
24806 #  else
24807       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSetLayout == rhs.descriptorSetLayout ) && ( binding == rhs.binding );
24808 #  endif
24809     }
24810 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24811     bool operator!=( DescriptorSetBindingReferenceVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
24812     {
24813       return !operator==( rhs );
24814     }
24815 #endif
24816 
24817   public:
24818     VULKAN_HPP_NAMESPACE::StructureType       sType               = StructureType::eDescriptorSetBindingReferenceVALVE;
24819     const void *                              pNext               = {};
24820     VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout = {};
24821     uint32_t                                  binding             = {};
24822   };
24823 
24824   template <>
24825   struct CppType<StructureType, StructureType::eDescriptorSetBindingReferenceVALVE>
24826   {
24827     using Type = DescriptorSetBindingReferenceVALVE;
24828   };
24829 
24830   struct DescriptorSetLayoutBinding
24831   {
24832     using NativeType = VkDescriptorSetLayoutBinding;
24833 
24834 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24835     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding( uint32_t                               binding_         = {},
24836                                                      VULKAN_HPP_NAMESPACE::DescriptorType   descriptorType_  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
24837                                                      uint32_t                               descriptorCount_ = {},
24838                                                      VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_      = {},
24839                                                      const VULKAN_HPP_NAMESPACE::Sampler *  pImmutableSamplers_ = {} ) VULKAN_HPP_NOEXCEPT
24840       : binding{ binding_ }
24841       , descriptorType{ descriptorType_ }
24842       , descriptorCount{ descriptorCount_ }
24843       , stageFlags{ stageFlags_ }
24844       , pImmutableSamplers{ pImmutableSamplers_ }
24845     {
24846     }
24847 
24848     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24849 
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24850     DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
24851       : DescriptorSetLayoutBinding( *reinterpret_cast<DescriptorSetLayoutBinding const *>( &rhs ) )
24852     {
24853     }
24854 
24855 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24856     DescriptorSetLayoutBinding( uint32_t                                                                                   binding_,
24857                                 VULKAN_HPP_NAMESPACE::DescriptorType                                                       descriptorType_,
24858                                 VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                     stageFlags_,
24859                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Sampler> const & immutableSamplers_ )
24860       : binding( binding_ )
24861       , descriptorType( descriptorType_ )
24862       , descriptorCount( static_cast<uint32_t>( immutableSamplers_.size() ) )
24863       , stageFlags( stageFlags_ )
24864       , pImmutableSamplers( immutableSamplers_.data() )
24865     {
24866     }
24867 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24868 
24869     DescriptorSetLayoutBinding & operator=( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24870 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24871 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24872     DescriptorSetLayoutBinding & operator=( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
24873     {
24874       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding const *>( &rhs );
24875       return *this;
24876     }
24877 
24878 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24879     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
24880     {
24881       binding = binding_;
24882       return *this;
24883     }
24884 
setDescriptorTypeVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24885     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
24886     {
24887       descriptorType = descriptorType_;
24888       return *this;
24889     }
24890 
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24891     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
24892     {
24893       descriptorCount = descriptorCount_;
24894       return *this;
24895     }
24896 
setStageFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24897     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
24898     {
24899       stageFlags = stageFlags_;
24900       return *this;
24901     }
24902 
setPImmutableSamplersVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24903     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setPImmutableSamplers( const VULKAN_HPP_NAMESPACE::Sampler * pImmutableSamplers_ ) VULKAN_HPP_NOEXCEPT
24904     {
24905       pImmutableSamplers = pImmutableSamplers_;
24906       return *this;
24907     }
24908 
24909 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
24910     DescriptorSetLayoutBinding &
setImmutableSamplersVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24911       setImmutableSamplers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Sampler> const & immutableSamplers_ ) VULKAN_HPP_NOEXCEPT
24912     {
24913       descriptorCount    = static_cast<uint32_t>( immutableSamplers_.size() );
24914       pImmutableSamplers = immutableSamplers_.data();
24915       return *this;
24916     }
24917 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24918 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24919 
operator VkDescriptorSetLayoutBinding const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24920     operator VkDescriptorSetLayoutBinding const &() const VULKAN_HPP_NOEXCEPT
24921     {
24922       return *reinterpret_cast<const VkDescriptorSetLayoutBinding *>( this );
24923     }
24924 
operator VkDescriptorSetLayoutBinding&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24925     operator VkDescriptorSetLayoutBinding &() VULKAN_HPP_NOEXCEPT
24926     {
24927       return *reinterpret_cast<VkDescriptorSetLayoutBinding *>( this );
24928     }
24929 
24930 #if defined( VULKAN_HPP_USE_REFLECT )
24931 #  if 14 <= VULKAN_HPP_CPP_VERSION
24932     auto
24933 #  else
24934     std::tuple<uint32_t const &,
24935                VULKAN_HPP_NAMESPACE::DescriptorType const &,
24936                uint32_t const &,
24937                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
24938                const VULKAN_HPP_NAMESPACE::Sampler * const &>
24939 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24940       reflect() const VULKAN_HPP_NOEXCEPT
24941     {
24942       return std::tie( binding, descriptorType, descriptorCount, stageFlags, pImmutableSamplers );
24943     }
24944 #endif
24945 
24946 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24947     auto operator<=>( DescriptorSetLayoutBinding const & ) const = default;
24948 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24949     bool operator==( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT
24950     {
24951 #  if defined( VULKAN_HPP_USE_REFLECT )
24952       return this->reflect() == rhs.reflect();
24953 #  else
24954       return ( binding == rhs.binding ) && ( descriptorType == rhs.descriptorType ) && ( descriptorCount == rhs.descriptorCount ) &&
24955              ( stageFlags == rhs.stageFlags ) && ( pImmutableSamplers == rhs.pImmutableSamplers );
24956 #  endif
24957     }
24958 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24959     bool operator!=( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT
24960     {
24961       return !operator==( rhs );
24962     }
24963 #endif
24964 
24965   public:
24966     uint32_t                               binding            = {};
24967     VULKAN_HPP_NAMESPACE::DescriptorType   descriptorType     = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
24968     uint32_t                               descriptorCount    = {};
24969     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags         = {};
24970     const VULKAN_HPP_NAMESPACE::Sampler *  pImmutableSamplers = {};
24971   };
24972 
24973   struct DescriptorSetLayoutBindingFlagsCreateInfo
24974   {
24975     using NativeType = VkDescriptorSetLayoutBindingFlagsCreateInfo;
24976 
24977     static const bool                                  allowDuplicate = false;
24978     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo;
24979 
24980 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24981     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo( uint32_t                                             bindingCount_  = {},
24982                                                                     const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags_ = {},
24983                                                                     const void *                                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
24984       : pNext{ pNext_ }
24985       , bindingCount{ bindingCount_ }
24986       , pBindingFlags{ pBindingFlags_ }
24987     {
24988     }
24989 
24990     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24991 
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24992     DescriptorSetLayoutBindingFlagsCreateInfo( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24993       : DescriptorSetLayoutBindingFlagsCreateInfo( *reinterpret_cast<DescriptorSetLayoutBindingFlagsCreateInfo const *>( &rhs ) )
24994     {
24995     }
24996 
24997 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24998     DescriptorSetLayoutBindingFlagsCreateInfo(
24999       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags> const & bindingFlags_, const void * pNext_ = nullptr )
25000       : pNext( pNext_ ), bindingCount( static_cast<uint32_t>( bindingFlags_.size() ) ), pBindingFlags( bindingFlags_.data() )
25001     {
25002     }
25003 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25004 
25005     DescriptorSetLayoutBindingFlagsCreateInfo & operator=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25006 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25007 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo25008     DescriptorSetLayoutBindingFlagsCreateInfo & operator=( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25009     {
25010       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo const *>( &rhs );
25011       return *this;
25012     }
25013 
25014 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo25015     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25016     {
25017       pNext = pNext_;
25018       return *this;
25019     }
25020 
setBindingCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo25021     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT
25022     {
25023       bindingCount = bindingCount_;
25024       return *this;
25025     }
25026 
25027     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo &
setPBindingFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo25028       setPBindingFlags( const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags_ ) VULKAN_HPP_NOEXCEPT
25029     {
25030       pBindingFlags = pBindingFlags_;
25031       return *this;
25032     }
25033 
25034 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBindingFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo25035     DescriptorSetLayoutBindingFlagsCreateInfo & setBindingFlags(
25036       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags> const & bindingFlags_ ) VULKAN_HPP_NOEXCEPT
25037     {
25038       bindingCount  = static_cast<uint32_t>( bindingFlags_.size() );
25039       pBindingFlags = bindingFlags_.data();
25040       return *this;
25041     }
25042 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25043 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25044 
operator VkDescriptorSetLayoutBindingFlagsCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo25045     operator VkDescriptorSetLayoutBindingFlagsCreateInfo const &() const VULKAN_HPP_NOEXCEPT
25046     {
25047       return *reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfo *>( this );
25048     }
25049 
operator VkDescriptorSetLayoutBindingFlagsCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo25050     operator VkDescriptorSetLayoutBindingFlagsCreateInfo &() VULKAN_HPP_NOEXCEPT
25051     {
25052       return *reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfo *>( this );
25053     }
25054 
25055 #if defined( VULKAN_HPP_USE_REFLECT )
25056 #  if 14 <= VULKAN_HPP_CPP_VERSION
25057     auto
25058 #  else
25059     std::
25060       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * const &>
25061 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo25062       reflect() const VULKAN_HPP_NOEXCEPT
25063     {
25064       return std::tie( sType, pNext, bindingCount, pBindingFlags );
25065     }
25066 #endif
25067 
25068 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25069     auto operator<=>( DescriptorSetLayoutBindingFlagsCreateInfo const & ) const = default;
25070 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo25071     bool operator==( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25072     {
25073 #  if defined( VULKAN_HPP_USE_REFLECT )
25074       return this->reflect() == rhs.reflect();
25075 #  else
25076       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bindingCount == rhs.bindingCount ) && ( pBindingFlags == rhs.pBindingFlags );
25077 #  endif
25078     }
25079 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo25080     bool operator!=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25081     {
25082       return !operator==( rhs );
25083     }
25084 #endif
25085 
25086   public:
25087     VULKAN_HPP_NAMESPACE::StructureType                  sType         = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo;
25088     const void *                                         pNext         = {};
25089     uint32_t                                             bindingCount  = {};
25090     const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags = {};
25091   };
25092 
25093   template <>
25094   struct CppType<StructureType, StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo>
25095   {
25096     using Type = DescriptorSetLayoutBindingFlagsCreateInfo;
25097   };
25098 
25099   using DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
25100 
25101   struct DescriptorSetLayoutCreateInfo
25102   {
25103     using NativeType = VkDescriptorSetLayoutCreateInfo;
25104 
25105     static const bool                                  allowDuplicate = false;
25106     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetLayoutCreateInfo;
25107 
25108 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25109     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags     flags_        = {},
25110                                                         uint32_t                                                 bindingCount_ = {},
25111                                                         const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings_    = {},
25112                                                         const void *                                             pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
25113       : pNext{ pNext_ }
25114       , flags{ flags_ }
25115       , bindingCount{ bindingCount_ }
25116       , pBindings{ pBindings_ }
25117     {
25118     }
25119 
25120     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25121 
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25122     DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25123       : DescriptorSetLayoutCreateInfo( *reinterpret_cast<DescriptorSetLayoutCreateInfo const *>( &rhs ) )
25124     {
25125     }
25126 
25127 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25128     DescriptorSetLayoutCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags                                                          flags_,
25129                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding> const & bindings_,
25130                                    const void * pNext_ = nullptr )
25131       : pNext( pNext_ ), flags( flags_ ), bindingCount( static_cast<uint32_t>( bindings_.size() ) ), pBindings( bindings_.data() )
25132     {
25133     }
25134 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25135 
25136     DescriptorSetLayoutCreateInfo & operator=( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25137 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25138 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25139     DescriptorSetLayoutCreateInfo & operator=( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25140     {
25141       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const *>( &rhs );
25142       return *this;
25143     }
25144 
25145 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25146     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25147     {
25148       pNext = pNext_;
25149       return *this;
25150     }
25151 
setFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25152     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
25153     {
25154       flags = flags_;
25155       return *this;
25156     }
25157 
setBindingCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25158     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT
25159     {
25160       bindingCount = bindingCount_;
25161       return *this;
25162     }
25163 
25164     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo &
setPBindingsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25165       setPBindings( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings_ ) VULKAN_HPP_NOEXCEPT
25166     {
25167       pBindings = pBindings_;
25168       return *this;
25169     }
25170 
25171 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
25172     DescriptorSetLayoutCreateInfo &
setBindingsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25173       setBindings( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding> const & bindings_ ) VULKAN_HPP_NOEXCEPT
25174     {
25175       bindingCount = static_cast<uint32_t>( bindings_.size() );
25176       pBindings    = bindings_.data();
25177       return *this;
25178     }
25179 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25180 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25181 
operator VkDescriptorSetLayoutCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25182     operator VkDescriptorSetLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT
25183     {
25184       return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( this );
25185     }
25186 
operator VkDescriptorSetLayoutCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25187     operator VkDescriptorSetLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT
25188     {
25189       return *reinterpret_cast<VkDescriptorSetLayoutCreateInfo *>( this );
25190     }
25191 
25192 #if defined( VULKAN_HPP_USE_REFLECT )
25193 #  if 14 <= VULKAN_HPP_CPP_VERSION
25194     auto
25195 #  else
25196     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
25197                const void * const &,
25198                VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags const &,
25199                uint32_t const &,
25200                const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * const &>
25201 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25202       reflect() const VULKAN_HPP_NOEXCEPT
25203     {
25204       return std::tie( sType, pNext, flags, bindingCount, pBindings );
25205     }
25206 #endif
25207 
25208 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25209     auto operator<=>( DescriptorSetLayoutCreateInfo const & ) const = default;
25210 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25211     bool operator==( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25212     {
25213 #  if defined( VULKAN_HPP_USE_REFLECT )
25214       return this->reflect() == rhs.reflect();
25215 #  else
25216       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( bindingCount == rhs.bindingCount ) &&
25217              ( pBindings == rhs.pBindings );
25218 #  endif
25219     }
25220 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo25221     bool operator!=( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25222     {
25223       return !operator==( rhs );
25224     }
25225 #endif
25226 
25227   public:
25228     VULKAN_HPP_NAMESPACE::StructureType                      sType        = StructureType::eDescriptorSetLayoutCreateInfo;
25229     const void *                                             pNext        = {};
25230     VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags     flags        = {};
25231     uint32_t                                                 bindingCount = {};
25232     const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings    = {};
25233   };
25234 
25235   template <>
25236   struct CppType<StructureType, StructureType::eDescriptorSetLayoutCreateInfo>
25237   {
25238     using Type = DescriptorSetLayoutCreateInfo;
25239   };
25240 
25241   struct DescriptorSetLayoutHostMappingInfoVALVE
25242   {
25243     using NativeType = VkDescriptorSetLayoutHostMappingInfoVALVE;
25244 
25245     static const bool                                  allowDuplicate = false;
25246     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetLayoutHostMappingInfoVALVE;
25247 
25248 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
25249     VULKAN_HPP_CONSTEXPR
DescriptorSetLayoutHostMappingInfoVALVEVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25250       DescriptorSetLayoutHostMappingInfoVALVE( size_t descriptorOffset_ = {}, uint32_t descriptorSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
25251       : pNext{ pNext_ }
25252       , descriptorOffset{ descriptorOffset_ }
25253       , descriptorSize{ descriptorSize_ }
25254     {
25255     }
25256 
25257     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutHostMappingInfoVALVE( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25258 
DescriptorSetLayoutHostMappingInfoVALVEVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25259     DescriptorSetLayoutHostMappingInfoVALVE( VkDescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
25260       : DescriptorSetLayoutHostMappingInfoVALVE( *reinterpret_cast<DescriptorSetLayoutHostMappingInfoVALVE const *>( &rhs ) )
25261     {
25262     }
25263 
25264     DescriptorSetLayoutHostMappingInfoVALVE & operator=( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25265 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25266 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25267     DescriptorSetLayoutHostMappingInfoVALVE & operator=( VkDescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
25268     {
25269       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE const *>( &rhs );
25270       return *this;
25271     }
25272 
25273 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25274     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
25275     {
25276       pNext = pNext_;
25277       return *this;
25278     }
25279 
setDescriptorOffsetVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25280     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE & setDescriptorOffset( size_t descriptorOffset_ ) VULKAN_HPP_NOEXCEPT
25281     {
25282       descriptorOffset = descriptorOffset_;
25283       return *this;
25284     }
25285 
setDescriptorSizeVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25286     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE & setDescriptorSize( uint32_t descriptorSize_ ) VULKAN_HPP_NOEXCEPT
25287     {
25288       descriptorSize = descriptorSize_;
25289       return *this;
25290     }
25291 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25292 
operator VkDescriptorSetLayoutHostMappingInfoVALVE const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25293     operator VkDescriptorSetLayoutHostMappingInfoVALVE const &() const VULKAN_HPP_NOEXCEPT
25294     {
25295       return *reinterpret_cast<const VkDescriptorSetLayoutHostMappingInfoVALVE *>( this );
25296     }
25297 
operator VkDescriptorSetLayoutHostMappingInfoVALVE&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25298     operator VkDescriptorSetLayoutHostMappingInfoVALVE &() VULKAN_HPP_NOEXCEPT
25299     {
25300       return *reinterpret_cast<VkDescriptorSetLayoutHostMappingInfoVALVE *>( this );
25301     }
25302 
25303 #if defined( VULKAN_HPP_USE_REFLECT )
25304 #  if 14 <= VULKAN_HPP_CPP_VERSION
25305     auto
25306 #  else
25307     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, size_t const &, uint32_t const &>
25308 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25309       reflect() const VULKAN_HPP_NOEXCEPT
25310     {
25311       return std::tie( sType, pNext, descriptorOffset, descriptorSize );
25312     }
25313 #endif
25314 
25315 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25316     auto operator<=>( DescriptorSetLayoutHostMappingInfoVALVE const & ) const = default;
25317 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25318     bool operator==( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
25319     {
25320 #  if defined( VULKAN_HPP_USE_REFLECT )
25321       return this->reflect() == rhs.reflect();
25322 #  else
25323       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorOffset == rhs.descriptorOffset ) && ( descriptorSize == rhs.descriptorSize );
25324 #  endif
25325     }
25326 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25327     bool operator!=( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
25328     {
25329       return !operator==( rhs );
25330     }
25331 #endif
25332 
25333   public:
25334     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eDescriptorSetLayoutHostMappingInfoVALVE;
25335     void *                              pNext            = {};
25336     size_t                              descriptorOffset = {};
25337     uint32_t                            descriptorSize   = {};
25338   };
25339 
25340   template <>
25341   struct CppType<StructureType, StructureType::eDescriptorSetLayoutHostMappingInfoVALVE>
25342   {
25343     using Type = DescriptorSetLayoutHostMappingInfoVALVE;
25344   };
25345 
25346   struct DescriptorSetLayoutSupport
25347   {
25348     using NativeType = VkDescriptorSetLayoutSupport;
25349 
25350     static const bool                                  allowDuplicate = false;
25351     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetLayoutSupport;
25352 
25353 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25354     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( VULKAN_HPP_NAMESPACE::Bool32 supported_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
25355       : pNext{ pNext_ }
25356       , supported{ supported_ }
25357     {
25358     }
25359 
25360     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25361 
DescriptorSetLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25362     DescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
25363       : DescriptorSetLayoutSupport( *reinterpret_cast<DescriptorSetLayoutSupport const *>( &rhs ) )
25364     {
25365     }
25366 
25367     DescriptorSetLayoutSupport & operator=( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25368 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25369 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25370     DescriptorSetLayoutSupport & operator=( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
25371     {
25372       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport const *>( &rhs );
25373       return *this;
25374     }
25375 
operator VkDescriptorSetLayoutSupport const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25376     operator VkDescriptorSetLayoutSupport const &() const VULKAN_HPP_NOEXCEPT
25377     {
25378       return *reinterpret_cast<const VkDescriptorSetLayoutSupport *>( this );
25379     }
25380 
operator VkDescriptorSetLayoutSupport&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25381     operator VkDescriptorSetLayoutSupport &() VULKAN_HPP_NOEXCEPT
25382     {
25383       return *reinterpret_cast<VkDescriptorSetLayoutSupport *>( this );
25384     }
25385 
25386 #if defined( VULKAN_HPP_USE_REFLECT )
25387 #  if 14 <= VULKAN_HPP_CPP_VERSION
25388     auto
25389 #  else
25390     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
25391 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25392       reflect() const VULKAN_HPP_NOEXCEPT
25393     {
25394       return std::tie( sType, pNext, supported );
25395     }
25396 #endif
25397 
25398 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25399     auto operator<=>( DescriptorSetLayoutSupport const & ) const = default;
25400 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25401     bool operator==( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
25402     {
25403 #  if defined( VULKAN_HPP_USE_REFLECT )
25404       return this->reflect() == rhs.reflect();
25405 #  else
25406       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supported == rhs.supported );
25407 #  endif
25408     }
25409 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25410     bool operator!=( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
25411     {
25412       return !operator==( rhs );
25413     }
25414 #endif
25415 
25416   public:
25417     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eDescriptorSetLayoutSupport;
25418     void *                              pNext     = {};
25419     VULKAN_HPP_NAMESPACE::Bool32        supported = {};
25420   };
25421 
25422   template <>
25423   struct CppType<StructureType, StructureType::eDescriptorSetLayoutSupport>
25424   {
25425     using Type = DescriptorSetLayoutSupport;
25426   };
25427 
25428   using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
25429 
25430   struct DescriptorSetVariableDescriptorCountAllocateInfo
25431   {
25432     using NativeType = VkDescriptorSetVariableDescriptorCountAllocateInfo;
25433 
25434     static const bool                                  allowDuplicate = false;
25435     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo;
25436 
25437 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25438     VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountAllocateInfo( uint32_t         descriptorSetCount_ = {},
25439                                                                            const uint32_t * pDescriptorCounts_  = {},
25440                                                                            const void *     pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
25441       : pNext{ pNext_ }
25442       , descriptorSetCount{ descriptorSetCount_ }
25443       , pDescriptorCounts{ pDescriptorCounts_ }
25444     {
25445     }
25446 
25447     VULKAN_HPP_CONSTEXPR
25448       DescriptorSetVariableDescriptorCountAllocateInfo( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25449 
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25450     DescriptorSetVariableDescriptorCountAllocateInfo( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25451       : DescriptorSetVariableDescriptorCountAllocateInfo( *reinterpret_cast<DescriptorSetVariableDescriptorCountAllocateInfo const *>( &rhs ) )
25452     {
25453     }
25454 
25455 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25456     DescriptorSetVariableDescriptorCountAllocateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & descriptorCounts_,
25457                                                       const void *                                                          pNext_ = nullptr )
25458       : pNext( pNext_ ), descriptorSetCount( static_cast<uint32_t>( descriptorCounts_.size() ) ), pDescriptorCounts( descriptorCounts_.data() )
25459     {
25460     }
25461 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25462 
25463     DescriptorSetVariableDescriptorCountAllocateInfo & operator=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25464 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25465 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25466     DescriptorSetVariableDescriptorCountAllocateInfo & operator=( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25467     {
25468       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo const *>( &rhs );
25469       return *this;
25470     }
25471 
25472 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25473     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25474     {
25475       pNext = pNext_;
25476       return *this;
25477     }
25478 
setDescriptorSetCountVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25479     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT
25480     {
25481       descriptorSetCount = descriptorSetCount_;
25482       return *this;
25483     }
25484 
setPDescriptorCountsVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25485     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setPDescriptorCounts( const uint32_t * pDescriptorCounts_ ) VULKAN_HPP_NOEXCEPT
25486     {
25487       pDescriptorCounts = pDescriptorCounts_;
25488       return *this;
25489     }
25490 
25491 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
25492     DescriptorSetVariableDescriptorCountAllocateInfo &
setDescriptorCountsVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25493       setDescriptorCounts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & descriptorCounts_ ) VULKAN_HPP_NOEXCEPT
25494     {
25495       descriptorSetCount = static_cast<uint32_t>( descriptorCounts_.size() );
25496       pDescriptorCounts  = descriptorCounts_.data();
25497       return *this;
25498     }
25499 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25500 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25501 
operator VkDescriptorSetVariableDescriptorCountAllocateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25502     operator VkDescriptorSetVariableDescriptorCountAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
25503     {
25504       return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfo *>( this );
25505     }
25506 
operator VkDescriptorSetVariableDescriptorCountAllocateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25507     operator VkDescriptorSetVariableDescriptorCountAllocateInfo &() VULKAN_HPP_NOEXCEPT
25508     {
25509       return *reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfo *>( this );
25510     }
25511 
25512 #if defined( VULKAN_HPP_USE_REFLECT )
25513 #  if 14 <= VULKAN_HPP_CPP_VERSION
25514     auto
25515 #  else
25516     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &>
25517 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25518       reflect() const VULKAN_HPP_NOEXCEPT
25519     {
25520       return std::tie( sType, pNext, descriptorSetCount, pDescriptorCounts );
25521     }
25522 #endif
25523 
25524 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25525     auto operator<=>( DescriptorSetVariableDescriptorCountAllocateInfo const & ) const = default;
25526 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25527     bool operator==( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25528     {
25529 #  if defined( VULKAN_HPP_USE_REFLECT )
25530       return this->reflect() == rhs.reflect();
25531 #  else
25532       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSetCount == rhs.descriptorSetCount ) &&
25533              ( pDescriptorCounts == rhs.pDescriptorCounts );
25534 #  endif
25535     }
25536 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25537     bool operator!=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25538     {
25539       return !operator==( rhs );
25540     }
25541 #endif
25542 
25543   public:
25544     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo;
25545     const void *                        pNext              = {};
25546     uint32_t                            descriptorSetCount = {};
25547     const uint32_t *                    pDescriptorCounts  = {};
25548   };
25549 
25550   template <>
25551   struct CppType<StructureType, StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo>
25552   {
25553     using Type = DescriptorSetVariableDescriptorCountAllocateInfo;
25554   };
25555 
25556   using DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo;
25557 
25558   struct DescriptorSetVariableDescriptorCountLayoutSupport
25559   {
25560     using NativeType = VkDescriptorSetVariableDescriptorCountLayoutSupport;
25561 
25562     static const bool                                  allowDuplicate = false;
25563     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport;
25564 
25565 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetVariableDescriptorCountLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25566     VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountLayoutSupport( uint32_t maxVariableDescriptorCount_ = {},
25567                                                                             void *   pNext_                      = nullptr ) VULKAN_HPP_NOEXCEPT
25568       : pNext{ pNext_ }
25569       , maxVariableDescriptorCount{ maxVariableDescriptorCount_ }
25570     {
25571     }
25572 
25573     VULKAN_HPP_CONSTEXPR
25574       DescriptorSetVariableDescriptorCountLayoutSupport( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25575 
DescriptorSetVariableDescriptorCountLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25576     DescriptorSetVariableDescriptorCountLayoutSupport( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
25577       : DescriptorSetVariableDescriptorCountLayoutSupport( *reinterpret_cast<DescriptorSetVariableDescriptorCountLayoutSupport const *>( &rhs ) )
25578     {
25579     }
25580 
25581     DescriptorSetVariableDescriptorCountLayoutSupport &
25582       operator=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25583 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25584 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25585     DescriptorSetVariableDescriptorCountLayoutSupport & operator=( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
25586     {
25587       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport const *>( &rhs );
25588       return *this;
25589     }
25590 
operator VkDescriptorSetVariableDescriptorCountLayoutSupport const&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25591     operator VkDescriptorSetVariableDescriptorCountLayoutSupport const &() const VULKAN_HPP_NOEXCEPT
25592     {
25593       return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupport *>( this );
25594     }
25595 
operator VkDescriptorSetVariableDescriptorCountLayoutSupport&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25596     operator VkDescriptorSetVariableDescriptorCountLayoutSupport &() VULKAN_HPP_NOEXCEPT
25597     {
25598       return *reinterpret_cast<VkDescriptorSetVariableDescriptorCountLayoutSupport *>( this );
25599     }
25600 
25601 #if defined( VULKAN_HPP_USE_REFLECT )
25602 #  if 14 <= VULKAN_HPP_CPP_VERSION
25603     auto
25604 #  else
25605     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
25606 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25607       reflect() const VULKAN_HPP_NOEXCEPT
25608     {
25609       return std::tie( sType, pNext, maxVariableDescriptorCount );
25610     }
25611 #endif
25612 
25613 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25614     auto operator<=>( DescriptorSetVariableDescriptorCountLayoutSupport const & ) const = default;
25615 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25616     bool operator==( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
25617     {
25618 #  if defined( VULKAN_HPP_USE_REFLECT )
25619       return this->reflect() == rhs.reflect();
25620 #  else
25621       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVariableDescriptorCount == rhs.maxVariableDescriptorCount );
25622 #  endif
25623     }
25624 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25625     bool operator!=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
25626     {
25627       return !operator==( rhs );
25628     }
25629 #endif
25630 
25631   public:
25632     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport;
25633     void *                              pNext                      = {};
25634     uint32_t                            maxVariableDescriptorCount = {};
25635   };
25636 
25637   template <>
25638   struct CppType<StructureType, StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport>
25639   {
25640     using Type = DescriptorSetVariableDescriptorCountLayoutSupport;
25641   };
25642 
25643   using DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport;
25644 
25645   struct DescriptorUpdateTemplateEntry
25646   {
25647     using NativeType = VkDescriptorUpdateTemplateEntry;
25648 
25649 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorUpdateTemplateEntryVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25650     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateEntry( uint32_t                             dstBinding_      = {},
25651                                                         uint32_t                             dstArrayElement_ = {},
25652                                                         uint32_t                             descriptorCount_ = {},
25653                                                         VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
25654                                                         size_t                               offset_          = {},
25655                                                         size_t                               stride_          = {} ) VULKAN_HPP_NOEXCEPT
25656       : dstBinding{ dstBinding_ }
25657       , dstArrayElement{ dstArrayElement_ }
25658       , descriptorCount{ descriptorCount_ }
25659       , descriptorType{ descriptorType_ }
25660       , offset{ offset_ }
25661       , stride{ stride_ }
25662     {
25663     }
25664 
25665     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateEntry( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25666 
DescriptorUpdateTemplateEntryVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25667     DescriptorUpdateTemplateEntry( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT
25668       : DescriptorUpdateTemplateEntry( *reinterpret_cast<DescriptorUpdateTemplateEntry const *>( &rhs ) )
25669     {
25670     }
25671 
25672     DescriptorUpdateTemplateEntry & operator=( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25673 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25674 
operator =VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25675     DescriptorUpdateTemplateEntry & operator=( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT
25676     {
25677       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry const *>( &rhs );
25678       return *this;
25679     }
25680 
25681 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDstBindingVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25682     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
25683     {
25684       dstBinding = dstBinding_;
25685       return *this;
25686     }
25687 
setDstArrayElementVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25688     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
25689     {
25690       dstArrayElement = dstArrayElement_;
25691       return *this;
25692     }
25693 
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25694     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
25695     {
25696       descriptorCount = descriptorCount_;
25697       return *this;
25698     }
25699 
setDescriptorTypeVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25700     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
25701     {
25702       descriptorType = descriptorType_;
25703       return *this;
25704     }
25705 
setOffsetVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25706     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setOffset( size_t offset_ ) VULKAN_HPP_NOEXCEPT
25707     {
25708       offset = offset_;
25709       return *this;
25710     }
25711 
setStrideVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25712     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setStride( size_t stride_ ) VULKAN_HPP_NOEXCEPT
25713     {
25714       stride = stride_;
25715       return *this;
25716     }
25717 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25718 
operator VkDescriptorUpdateTemplateEntry const&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25719     operator VkDescriptorUpdateTemplateEntry const &() const VULKAN_HPP_NOEXCEPT
25720     {
25721       return *reinterpret_cast<const VkDescriptorUpdateTemplateEntry *>( this );
25722     }
25723 
operator VkDescriptorUpdateTemplateEntry&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25724     operator VkDescriptorUpdateTemplateEntry &() VULKAN_HPP_NOEXCEPT
25725     {
25726       return *reinterpret_cast<VkDescriptorUpdateTemplateEntry *>( this );
25727     }
25728 
25729 #if defined( VULKAN_HPP_USE_REFLECT )
25730 #  if 14 <= VULKAN_HPP_CPP_VERSION
25731     auto
25732 #  else
25733     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DescriptorType const &, size_t const &, size_t const &>
25734 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25735       reflect() const VULKAN_HPP_NOEXCEPT
25736     {
25737       return std::tie( dstBinding, dstArrayElement, descriptorCount, descriptorType, offset, stride );
25738     }
25739 #endif
25740 
25741 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25742     auto operator<=>( DescriptorUpdateTemplateEntry const & ) const = default;
25743 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25744     bool operator==( DescriptorUpdateTemplateEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
25745     {
25746 #  if defined( VULKAN_HPP_USE_REFLECT )
25747       return this->reflect() == rhs.reflect();
25748 #  else
25749       return ( dstBinding == rhs.dstBinding ) && ( dstArrayElement == rhs.dstArrayElement ) && ( descriptorCount == rhs.descriptorCount ) &&
25750              ( descriptorType == rhs.descriptorType ) && ( offset == rhs.offset ) && ( stride == rhs.stride );
25751 #  endif
25752     }
25753 
operator !=VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25754     bool operator!=( DescriptorUpdateTemplateEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
25755     {
25756       return !operator==( rhs );
25757     }
25758 #endif
25759 
25760   public:
25761     uint32_t                             dstBinding      = {};
25762     uint32_t                             dstArrayElement = {};
25763     uint32_t                             descriptorCount = {};
25764     VULKAN_HPP_NAMESPACE::DescriptorType descriptorType  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
25765     size_t                               offset          = {};
25766     size_t                               stride          = {};
25767   };
25768 
25769   using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
25770 
25771   struct DescriptorUpdateTemplateCreateInfo
25772   {
25773     using NativeType = VkDescriptorUpdateTemplateCreateInfo;
25774 
25775     static const bool                                  allowDuplicate = false;
25776     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorUpdateTemplateCreateInfo;
25777 
25778 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorUpdateTemplateCreateInfoVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25779     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo(
25780       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags   flags_                      = {},
25781       uint32_t                                                    descriptorUpdateEntryCount_ = {},
25782       const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries_   = {},
25783       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType          templateType_        = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet,
25784       VULKAN_HPP_NAMESPACE::DescriptorSetLayout                   descriptorSetLayout_ = {},
25785       VULKAN_HPP_NAMESPACE::PipelineBindPoint                     pipelineBindPoint_   = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
25786       VULKAN_HPP_NAMESPACE::PipelineLayout                        pipelineLayout_      = {},
25787       uint32_t                                                    set_                 = {},
25788       const void *                                                pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
25789       : pNext{ pNext_ }
25790       , flags{ flags_ }
25791       , descriptorUpdateEntryCount{ descriptorUpdateEntryCount_ }
25792       , pDescriptorUpdateEntries{ pDescriptorUpdateEntries_ }
25793       , templateType{ templateType_ }
25794       , descriptorSetLayout{ descriptorSetLayout_ }
25795       , pipelineBindPoint{ pipelineBindPoint_ }
25796       , pipelineLayout{ pipelineLayout_ }
25797       , set{ set_ }
25798     {
25799     }
25800 
25801     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25802 
DescriptorUpdateTemplateCreateInfoVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25803     DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25804       : DescriptorUpdateTemplateCreateInfo( *reinterpret_cast<DescriptorUpdateTemplateCreateInfo const *>( &rhs ) )
25805     {
25806     }
25807 
25808 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorUpdateTemplateCreateInfoVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25809     DescriptorUpdateTemplateCreateInfo(
25810       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags                                                        flags_,
25811       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry> const & descriptorUpdateEntries_,
25812       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_        = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet,
25813       VULKAN_HPP_NAMESPACE::DescriptorSetLayout          descriptorSetLayout_ = {},
25814       VULKAN_HPP_NAMESPACE::PipelineBindPoint            pipelineBindPoint_   = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
25815       VULKAN_HPP_NAMESPACE::PipelineLayout               pipelineLayout_      = {},
25816       uint32_t                                           set_                 = {},
25817       const void *                                       pNext_               = nullptr )
25818       : pNext( pNext_ )
25819       , flags( flags_ )
25820       , descriptorUpdateEntryCount( static_cast<uint32_t>( descriptorUpdateEntries_.size() ) )
25821       , pDescriptorUpdateEntries( descriptorUpdateEntries_.data() )
25822       , templateType( templateType_ )
25823       , descriptorSetLayout( descriptorSetLayout_ )
25824       , pipelineBindPoint( pipelineBindPoint_ )
25825       , pipelineLayout( pipelineLayout_ )
25826       , set( set_ )
25827     {
25828     }
25829 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25830 
25831     DescriptorUpdateTemplateCreateInfo & operator=( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25832 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25833 
operator =VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25834     DescriptorUpdateTemplateCreateInfo & operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25835     {
25836       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const *>( &rhs );
25837       return *this;
25838     }
25839 
25840 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25841     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25842     {
25843       pNext = pNext_;
25844       return *this;
25845     }
25846 
25847     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25848       setFlags( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
25849     {
25850       flags = flags_;
25851       return *this;
25852     }
25853 
setDescriptorUpdateEntryCountVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25854     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ ) VULKAN_HPP_NOEXCEPT
25855     {
25856       descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
25857       return *this;
25858     }
25859 
25860     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setPDescriptorUpdateEntriesVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25861       setPDescriptorUpdateEntries( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries_ ) VULKAN_HPP_NOEXCEPT
25862     {
25863       pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
25864       return *this;
25865     }
25866 
25867 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptorUpdateEntriesVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25868     DescriptorUpdateTemplateCreateInfo & setDescriptorUpdateEntries(
25869       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry> const & descriptorUpdateEntries_ )
25870       VULKAN_HPP_NOEXCEPT
25871     {
25872       descriptorUpdateEntryCount = static_cast<uint32_t>( descriptorUpdateEntries_.size() );
25873       pDescriptorUpdateEntries   = descriptorUpdateEntries_.data();
25874       return *this;
25875     }
25876 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25877 
25878     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setTemplateTypeVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25879       setTemplateType( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ ) VULKAN_HPP_NOEXCEPT
25880     {
25881       templateType = templateType_;
25882       return *this;
25883     }
25884 
25885     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setDescriptorSetLayoutVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25886       setDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ ) VULKAN_HPP_NOEXCEPT
25887     {
25888       descriptorSetLayout = descriptorSetLayout_;
25889       return *this;
25890     }
25891 
25892     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setPipelineBindPointVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25893       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
25894     {
25895       pipelineBindPoint = pipelineBindPoint_;
25896       return *this;
25897     }
25898 
setPipelineLayoutVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25899     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ ) VULKAN_HPP_NOEXCEPT
25900     {
25901       pipelineLayout = pipelineLayout_;
25902       return *this;
25903     }
25904 
setSetVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25905     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT
25906     {
25907       set = set_;
25908       return *this;
25909     }
25910 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25911 
operator VkDescriptorUpdateTemplateCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25912     operator VkDescriptorUpdateTemplateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
25913     {
25914       return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo *>( this );
25915     }
25916 
operator VkDescriptorUpdateTemplateCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25917     operator VkDescriptorUpdateTemplateCreateInfo &() VULKAN_HPP_NOEXCEPT
25918     {
25919       return *reinterpret_cast<VkDescriptorUpdateTemplateCreateInfo *>( this );
25920     }
25921 
25922 #if defined( VULKAN_HPP_USE_REFLECT )
25923 #  if 14 <= VULKAN_HPP_CPP_VERSION
25924     auto
25925 #  else
25926     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
25927                const void * const &,
25928                VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags const &,
25929                uint32_t const &,
25930                const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * const &,
25931                VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType const &,
25932                VULKAN_HPP_NAMESPACE::DescriptorSetLayout const &,
25933                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
25934                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
25935                uint32_t const &>
25936 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25937       reflect() const VULKAN_HPP_NOEXCEPT
25938     {
25939       return std::tie(
25940         sType, pNext, flags, descriptorUpdateEntryCount, pDescriptorUpdateEntries, templateType, descriptorSetLayout, pipelineBindPoint, pipelineLayout, set );
25941     }
25942 #endif
25943 
25944 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25945     auto operator<=>( DescriptorUpdateTemplateCreateInfo const & ) const = default;
25946 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25947     bool operator==( DescriptorUpdateTemplateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25948     {
25949 #  if defined( VULKAN_HPP_USE_REFLECT )
25950       return this->reflect() == rhs.reflect();
25951 #  else
25952       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount ) &&
25953              ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries ) && ( templateType == rhs.templateType ) &&
25954              ( descriptorSetLayout == rhs.descriptorSetLayout ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipelineLayout == rhs.pipelineLayout ) &&
25955              ( set == rhs.set );
25956 #  endif
25957     }
25958 
operator !=VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25959     bool operator!=( DescriptorUpdateTemplateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25960     {
25961       return !operator==( rhs );
25962     }
25963 #endif
25964 
25965   public:
25966     VULKAN_HPP_NAMESPACE::StructureType                         sType                      = StructureType::eDescriptorUpdateTemplateCreateInfo;
25967     const void *                                                pNext                      = {};
25968     VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags   flags                      = {};
25969     uint32_t                                                    descriptorUpdateEntryCount = {};
25970     const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries   = {};
25971     VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType          templateType               = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet;
25972     VULKAN_HPP_NAMESPACE::DescriptorSetLayout                   descriptorSetLayout        = {};
25973     VULKAN_HPP_NAMESPACE::PipelineBindPoint                     pipelineBindPoint          = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
25974     VULKAN_HPP_NAMESPACE::PipelineLayout                        pipelineLayout             = {};
25975     uint32_t                                                    set                        = {};
25976   };
25977 
25978   template <>
25979   struct CppType<StructureType, StructureType::eDescriptorUpdateTemplateCreateInfo>
25980   {
25981     using Type = DescriptorUpdateTemplateCreateInfo;
25982   };
25983 
25984   using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
25985 
25986   struct DeviceAddressBindingCallbackDataEXT
25987   {
25988     using NativeType = VkDeviceAddressBindingCallbackDataEXT;
25989 
25990     static const bool                                  allowDuplicate = false;
25991     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceAddressBindingCallbackDataEXT;
25992 
25993 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceAddressBindingCallbackDataEXTVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25994     VULKAN_HPP_CONSTEXPR DeviceAddressBindingCallbackDataEXT(
25995       VULKAN_HPP_NAMESPACE::DeviceAddressBindingFlagsEXT flags_       = {},
25996       VULKAN_HPP_NAMESPACE::DeviceAddress                baseAddress_ = {},
25997       VULKAN_HPP_NAMESPACE::DeviceSize                   size_        = {},
25998       VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT  bindingType_ = VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT::eBind,
25999       void *                                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
26000       : pNext{ pNext_ }
26001       , flags{ flags_ }
26002       , baseAddress{ baseAddress_ }
26003       , size{ size_ }
26004       , bindingType{ bindingType_ }
26005     {
26006     }
26007 
26008     VULKAN_HPP_CONSTEXPR DeviceAddressBindingCallbackDataEXT( DeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26009 
DeviceAddressBindingCallbackDataEXTVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26010     DeviceAddressBindingCallbackDataEXT( VkDeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
26011       : DeviceAddressBindingCallbackDataEXT( *reinterpret_cast<DeviceAddressBindingCallbackDataEXT const *>( &rhs ) )
26012     {
26013     }
26014 
26015     DeviceAddressBindingCallbackDataEXT & operator=( DeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26016 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26017 
operator =VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26018     DeviceAddressBindingCallbackDataEXT & operator=( VkDeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
26019     {
26020       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT const *>( &rhs );
26021       return *this;
26022     }
26023 
26024 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26025     VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
26026     {
26027       pNext = pNext_;
26028       return *this;
26029     }
26030 
setFlagsVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26031     VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setFlags( VULKAN_HPP_NAMESPACE::DeviceAddressBindingFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
26032     {
26033       flags = flags_;
26034       return *this;
26035     }
26036 
setBaseAddressVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26037     VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setBaseAddress( VULKAN_HPP_NAMESPACE::DeviceAddress baseAddress_ ) VULKAN_HPP_NOEXCEPT
26038     {
26039       baseAddress = baseAddress_;
26040       return *this;
26041     }
26042 
setSizeVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26043     VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
26044     {
26045       size = size_;
26046       return *this;
26047     }
26048 
26049     VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT &
setBindingTypeVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26050       setBindingType( VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT bindingType_ ) VULKAN_HPP_NOEXCEPT
26051     {
26052       bindingType = bindingType_;
26053       return *this;
26054     }
26055 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26056 
operator VkDeviceAddressBindingCallbackDataEXT const&VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26057     operator VkDeviceAddressBindingCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT
26058     {
26059       return *reinterpret_cast<const VkDeviceAddressBindingCallbackDataEXT *>( this );
26060     }
26061 
operator VkDeviceAddressBindingCallbackDataEXT&VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26062     operator VkDeviceAddressBindingCallbackDataEXT &() VULKAN_HPP_NOEXCEPT
26063     {
26064       return *reinterpret_cast<VkDeviceAddressBindingCallbackDataEXT *>( this );
26065     }
26066 
26067 #if defined( VULKAN_HPP_USE_REFLECT )
26068 #  if 14 <= VULKAN_HPP_CPP_VERSION
26069     auto
26070 #  else
26071     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
26072                void * const &,
26073                VULKAN_HPP_NAMESPACE::DeviceAddressBindingFlagsEXT const &,
26074                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
26075                VULKAN_HPP_NAMESPACE::DeviceSize const &,
26076                VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT const &>
26077 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26078       reflect() const VULKAN_HPP_NOEXCEPT
26079     {
26080       return std::tie( sType, pNext, flags, baseAddress, size, bindingType );
26081     }
26082 #endif
26083 
26084 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26085     auto operator<=>( DeviceAddressBindingCallbackDataEXT const & ) const = default;
26086 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26087     bool operator==( DeviceAddressBindingCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26088     {
26089 #  if defined( VULKAN_HPP_USE_REFLECT )
26090       return this->reflect() == rhs.reflect();
26091 #  else
26092       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( baseAddress == rhs.baseAddress ) && ( size == rhs.size ) &&
26093              ( bindingType == rhs.bindingType );
26094 #  endif
26095     }
26096 
operator !=VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT26097     bool operator!=( DeviceAddressBindingCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26098     {
26099       return !operator==( rhs );
26100     }
26101 #endif
26102 
26103   public:
26104     VULKAN_HPP_NAMESPACE::StructureType                sType       = StructureType::eDeviceAddressBindingCallbackDataEXT;
26105     void *                                             pNext       = {};
26106     VULKAN_HPP_NAMESPACE::DeviceAddressBindingFlagsEXT flags       = {};
26107     VULKAN_HPP_NAMESPACE::DeviceAddress                baseAddress = {};
26108     VULKAN_HPP_NAMESPACE::DeviceSize                   size        = {};
26109     VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT  bindingType = VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT::eBind;
26110   };
26111 
26112   template <>
26113   struct CppType<StructureType, StructureType::eDeviceAddressBindingCallbackDataEXT>
26114   {
26115     using Type = DeviceAddressBindingCallbackDataEXT;
26116   };
26117 
26118   struct DeviceBufferMemoryRequirements
26119   {
26120     using NativeType = VkDeviceBufferMemoryRequirements;
26121 
26122     static const bool                                  allowDuplicate = false;
26123     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceBufferMemoryRequirements;
26124 
26125 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceBufferMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements26126     VULKAN_HPP_CONSTEXPR DeviceBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo_ = {},
26127                                                          const void *                                   pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
26128       : pNext{ pNext_ }
26129       , pCreateInfo{ pCreateInfo_ }
26130     {
26131     }
26132 
26133     VULKAN_HPP_CONSTEXPR DeviceBufferMemoryRequirements( DeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26134 
DeviceBufferMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements26135     DeviceBufferMemoryRequirements( VkDeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
26136       : DeviceBufferMemoryRequirements( *reinterpret_cast<DeviceBufferMemoryRequirements const *>( &rhs ) )
26137     {
26138     }
26139 
26140     DeviceBufferMemoryRequirements & operator=( DeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26141 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26142 
operator =VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements26143     DeviceBufferMemoryRequirements & operator=( VkDeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
26144     {
26145       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements const *>( &rhs );
26146       return *this;
26147     }
26148 
26149 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements26150     VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
26151     {
26152       pNext = pNext_;
26153       return *this;
26154     }
26155 
setPCreateInfoVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements26156     VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements & setPCreateInfo( const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT
26157     {
26158       pCreateInfo = pCreateInfo_;
26159       return *this;
26160     }
26161 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26162 
operator VkDeviceBufferMemoryRequirements const&VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements26163     operator VkDeviceBufferMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
26164     {
26165       return *reinterpret_cast<const VkDeviceBufferMemoryRequirements *>( this );
26166     }
26167 
operator VkDeviceBufferMemoryRequirements&VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements26168     operator VkDeviceBufferMemoryRequirements &() VULKAN_HPP_NOEXCEPT
26169     {
26170       return *reinterpret_cast<VkDeviceBufferMemoryRequirements *>( this );
26171     }
26172 
26173 #if defined( VULKAN_HPP_USE_REFLECT )
26174 #  if 14 <= VULKAN_HPP_CPP_VERSION
26175     auto
26176 #  else
26177     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const VULKAN_HPP_NAMESPACE::BufferCreateInfo * const &>
26178 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements26179       reflect() const VULKAN_HPP_NOEXCEPT
26180     {
26181       return std::tie( sType, pNext, pCreateInfo );
26182     }
26183 #endif
26184 
26185 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26186     auto operator<=>( DeviceBufferMemoryRequirements const & ) const = default;
26187 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements26188     bool operator==( DeviceBufferMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
26189     {
26190 #  if defined( VULKAN_HPP_USE_REFLECT )
26191       return this->reflect() == rhs.reflect();
26192 #  else
26193       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo );
26194 #  endif
26195     }
26196 
operator !=VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements26197     bool operator!=( DeviceBufferMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
26198     {
26199       return !operator==( rhs );
26200     }
26201 #endif
26202 
26203   public:
26204     VULKAN_HPP_NAMESPACE::StructureType            sType       = StructureType::eDeviceBufferMemoryRequirements;
26205     const void *                                   pNext       = {};
26206     const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo = {};
26207   };
26208 
26209   template <>
26210   struct CppType<StructureType, StructureType::eDeviceBufferMemoryRequirements>
26211   {
26212     using Type = DeviceBufferMemoryRequirements;
26213   };
26214 
26215   using DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements;
26216 
26217   struct DeviceQueueCreateInfo
26218   {
26219     using NativeType = VkDeviceQueueCreateInfo;
26220 
26221     static const bool                                  allowDuplicate = false;
26222     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceQueueCreateInfo;
26223 
26224 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26225     VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_            = {},
26226                                                 uint32_t                                     queueFamilyIndex_ = {},
26227                                                 uint32_t                                     queueCount_       = {},
26228                                                 const float *                                pQueuePriorities_ = {},
26229                                                 const void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
26230       : pNext{ pNext_ }
26231       , flags{ flags_ }
26232       , queueFamilyIndex{ queueFamilyIndex_ }
26233       , queueCount{ queueCount_ }
26234       , pQueuePriorities{ pQueuePriorities_ }
26235     {
26236     }
26237 
26238     VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26239 
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26240     DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
26241       : DeviceQueueCreateInfo( *reinterpret_cast<DeviceQueueCreateInfo const *>( &rhs ) )
26242     {
26243     }
26244 
26245 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26246     DeviceQueueCreateInfo( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags                       flags_,
26247                            uint32_t                                                           queueFamilyIndex_,
26248                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & queuePriorities_,
26249                            const void *                                                       pNext_ = nullptr )
26250       : pNext( pNext_ )
26251       , flags( flags_ )
26252       , queueFamilyIndex( queueFamilyIndex_ )
26253       , queueCount( static_cast<uint32_t>( queuePriorities_.size() ) )
26254       , pQueuePriorities( queuePriorities_.data() )
26255     {
26256     }
26257 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26258 
26259     DeviceQueueCreateInfo & operator=( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26260 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26261 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26262     DeviceQueueCreateInfo & operator=( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
26263     {
26264       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo const *>( &rhs );
26265       return *this;
26266     }
26267 
26268 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26269     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
26270     {
26271       pNext = pNext_;
26272       return *this;
26273     }
26274 
setFlagsVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26275     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
26276     {
26277       flags = flags_;
26278       return *this;
26279     }
26280 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26281     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
26282     {
26283       queueFamilyIndex = queueFamilyIndex_;
26284       return *this;
26285     }
26286 
setQueueCountVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26287     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setQueueCount( uint32_t queueCount_ ) VULKAN_HPP_NOEXCEPT
26288     {
26289       queueCount = queueCount_;
26290       return *this;
26291     }
26292 
setPQueuePrioritiesVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26293     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setPQueuePriorities( const float * pQueuePriorities_ ) VULKAN_HPP_NOEXCEPT
26294     {
26295       pQueuePriorities = pQueuePriorities_;
26296       return *this;
26297     }
26298 
26299 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueuePrioritiesVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26300     DeviceQueueCreateInfo & setQueuePriorities( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & queuePriorities_ ) VULKAN_HPP_NOEXCEPT
26301     {
26302       queueCount       = static_cast<uint32_t>( queuePriorities_.size() );
26303       pQueuePriorities = queuePriorities_.data();
26304       return *this;
26305     }
26306 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26307 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26308 
operator VkDeviceQueueCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26309     operator VkDeviceQueueCreateInfo const &() const VULKAN_HPP_NOEXCEPT
26310     {
26311       return *reinterpret_cast<const VkDeviceQueueCreateInfo *>( this );
26312     }
26313 
operator VkDeviceQueueCreateInfo&VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26314     operator VkDeviceQueueCreateInfo &() VULKAN_HPP_NOEXCEPT
26315     {
26316       return *reinterpret_cast<VkDeviceQueueCreateInfo *>( this );
26317     }
26318 
26319 #if defined( VULKAN_HPP_USE_REFLECT )
26320 #  if 14 <= VULKAN_HPP_CPP_VERSION
26321     auto
26322 #  else
26323     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
26324                const void * const &,
26325                VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags const &,
26326                uint32_t const &,
26327                uint32_t const &,
26328                const float * const &>
26329 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26330       reflect() const VULKAN_HPP_NOEXCEPT
26331     {
26332       return std::tie( sType, pNext, flags, queueFamilyIndex, queueCount, pQueuePriorities );
26333     }
26334 #endif
26335 
26336 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26337     auto operator<=>( DeviceQueueCreateInfo const & ) const = default;
26338 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26339     bool operator==( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
26340     {
26341 #  if defined( VULKAN_HPP_USE_REFLECT )
26342       return this->reflect() == rhs.reflect();
26343 #  else
26344       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) &&
26345              ( queueCount == rhs.queueCount ) && ( pQueuePriorities == rhs.pQueuePriorities );
26346 #  endif
26347     }
26348 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26349     bool operator!=( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
26350     {
26351       return !operator==( rhs );
26352     }
26353 #endif
26354 
26355   public:
26356     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eDeviceQueueCreateInfo;
26357     const void *                                 pNext            = {};
26358     VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags            = {};
26359     uint32_t                                     queueFamilyIndex = {};
26360     uint32_t                                     queueCount       = {};
26361     const float *                                pQueuePriorities = {};
26362   };
26363 
26364   template <>
26365   struct CppType<StructureType, StructureType::eDeviceQueueCreateInfo>
26366   {
26367     using Type = DeviceQueueCreateInfo;
26368   };
26369 
26370   struct PhysicalDeviceFeatures
26371   {
26372     using NativeType = VkPhysicalDeviceFeatures;
26373 
26374 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26375     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_                      = {},
26376                                                  VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_                     = {},
26377                                                  VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_                          = {},
26378                                                  VULKAN_HPP_NAMESPACE::Bool32 independentBlend_                        = {},
26379                                                  VULKAN_HPP_NAMESPACE::Bool32 geometryShader_                          = {},
26380                                                  VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_                      = {},
26381                                                  VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_                       = {},
26382                                                  VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_                            = {},
26383                                                  VULKAN_HPP_NAMESPACE::Bool32 logicOp_                                 = {},
26384                                                  VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_                       = {},
26385                                                  VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_               = {},
26386                                                  VULKAN_HPP_NAMESPACE::Bool32 depthClamp_                              = {},
26387                                                  VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_                          = {},
26388                                                  VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_                        = {},
26389                                                  VULKAN_HPP_NAMESPACE::Bool32 depthBounds_                             = {},
26390                                                  VULKAN_HPP_NAMESPACE::Bool32 wideLines_                               = {},
26391                                                  VULKAN_HPP_NAMESPACE::Bool32 largePoints_                             = {},
26392                                                  VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_                              = {},
26393                                                  VULKAN_HPP_NAMESPACE::Bool32 multiViewport_                           = {},
26394                                                  VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_                       = {},
26395                                                  VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_                  = {},
26396                                                  VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_              = {},
26397                                                  VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_                    = {},
26398                                                  VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_                   = {},
26399                                                  VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_                 = {},
26400                                                  VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_          = {},
26401                                                  VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_                = {},
26402                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_  = {},
26403                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_               = {},
26404                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_       = {},
26405                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_           = {},
26406                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_     = {},
26407                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_    = {},
26408                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ = {},
26409                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_  = {},
26410                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ = {},
26411                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_  = {},
26412                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_                      = {},
26413                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_                      = {},
26414                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_                           = {},
26415                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_                             = {},
26416                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_                             = {},
26417                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_                 = {},
26418                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_                    = {},
26419                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_                           = {},
26420                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_                   = {},
26421                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_                  = {},
26422                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_                  = {},
26423                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_                 = {},
26424                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_                 = {},
26425                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_                 = {},
26426                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_                = {},
26427                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_                  = {},
26428                                                  VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_                 = {},
26429                                                  VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_                        = {} ) VULKAN_HPP_NOEXCEPT
26430       : robustBufferAccess{ robustBufferAccess_ }
26431       , fullDrawIndexUint32{ fullDrawIndexUint32_ }
26432       , imageCubeArray{ imageCubeArray_ }
26433       , independentBlend{ independentBlend_ }
26434       , geometryShader{ geometryShader_ }
26435       , tessellationShader{ tessellationShader_ }
26436       , sampleRateShading{ sampleRateShading_ }
26437       , dualSrcBlend{ dualSrcBlend_ }
26438       , logicOp{ logicOp_ }
26439       , multiDrawIndirect{ multiDrawIndirect_ }
26440       , drawIndirectFirstInstance{ drawIndirectFirstInstance_ }
26441       , depthClamp{ depthClamp_ }
26442       , depthBiasClamp{ depthBiasClamp_ }
26443       , fillModeNonSolid{ fillModeNonSolid_ }
26444       , depthBounds{ depthBounds_ }
26445       , wideLines{ wideLines_ }
26446       , largePoints{ largePoints_ }
26447       , alphaToOne{ alphaToOne_ }
26448       , multiViewport{ multiViewport_ }
26449       , samplerAnisotropy{ samplerAnisotropy_ }
26450       , textureCompressionETC2{ textureCompressionETC2_ }
26451       , textureCompressionASTC_LDR{ textureCompressionASTC_LDR_ }
26452       , textureCompressionBC{ textureCompressionBC_ }
26453       , occlusionQueryPrecise{ occlusionQueryPrecise_ }
26454       , pipelineStatisticsQuery{ pipelineStatisticsQuery_ }
26455       , vertexPipelineStoresAndAtomics{ vertexPipelineStoresAndAtomics_ }
26456       , fragmentStoresAndAtomics{ fragmentStoresAndAtomics_ }
26457       , shaderTessellationAndGeometryPointSize{ shaderTessellationAndGeometryPointSize_ }
26458       , shaderImageGatherExtended{ shaderImageGatherExtended_ }
26459       , shaderStorageImageExtendedFormats{ shaderStorageImageExtendedFormats_ }
26460       , shaderStorageImageMultisample{ shaderStorageImageMultisample_ }
26461       , shaderStorageImageReadWithoutFormat{ shaderStorageImageReadWithoutFormat_ }
26462       , shaderStorageImageWriteWithoutFormat{ shaderStorageImageWriteWithoutFormat_ }
26463       , shaderUniformBufferArrayDynamicIndexing{ shaderUniformBufferArrayDynamicIndexing_ }
26464       , shaderSampledImageArrayDynamicIndexing{ shaderSampledImageArrayDynamicIndexing_ }
26465       , shaderStorageBufferArrayDynamicIndexing{ shaderStorageBufferArrayDynamicIndexing_ }
26466       , shaderStorageImageArrayDynamicIndexing{ shaderStorageImageArrayDynamicIndexing_ }
26467       , shaderClipDistance{ shaderClipDistance_ }
26468       , shaderCullDistance{ shaderCullDistance_ }
26469       , shaderFloat64{ shaderFloat64_ }
26470       , shaderInt64{ shaderInt64_ }
26471       , shaderInt16{ shaderInt16_ }
26472       , shaderResourceResidency{ shaderResourceResidency_ }
26473       , shaderResourceMinLod{ shaderResourceMinLod_ }
26474       , sparseBinding{ sparseBinding_ }
26475       , sparseResidencyBuffer{ sparseResidencyBuffer_ }
26476       , sparseResidencyImage2D{ sparseResidencyImage2D_ }
26477       , sparseResidencyImage3D{ sparseResidencyImage3D_ }
26478       , sparseResidency2Samples{ sparseResidency2Samples_ }
26479       , sparseResidency4Samples{ sparseResidency4Samples_ }
26480       , sparseResidency8Samples{ sparseResidency8Samples_ }
26481       , sparseResidency16Samples{ sparseResidency16Samples_ }
26482       , sparseResidencyAliased{ sparseResidencyAliased_ }
26483       , variableMultisampleRate{ variableMultisampleRate_ }
26484       , inheritedQueries{ inheritedQueries_ }
26485     {
26486     }
26487 
26488     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26489 
PhysicalDeviceFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26490     PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
26491       : PhysicalDeviceFeatures( *reinterpret_cast<PhysicalDeviceFeatures const *>( &rhs ) )
26492     {
26493     }
26494 
26495     PhysicalDeviceFeatures & operator=( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26496 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26497 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26498     PhysicalDeviceFeatures & operator=( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
26499     {
26500       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const *>( &rhs );
26501       return *this;
26502     }
26503 
26504 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRobustBufferAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26505     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_ ) VULKAN_HPP_NOEXCEPT
26506     {
26507       robustBufferAccess = robustBufferAccess_;
26508       return *this;
26509     }
26510 
setFullDrawIndexUint32VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26511     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFullDrawIndexUint32( VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_ ) VULKAN_HPP_NOEXCEPT
26512     {
26513       fullDrawIndexUint32 = fullDrawIndexUint32_;
26514       return *this;
26515     }
26516 
setImageCubeArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26517     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setImageCubeArray( VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_ ) VULKAN_HPP_NOEXCEPT
26518     {
26519       imageCubeArray = imageCubeArray_;
26520       return *this;
26521     }
26522 
setIndependentBlendVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26523     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setIndependentBlend( VULKAN_HPP_NAMESPACE::Bool32 independentBlend_ ) VULKAN_HPP_NOEXCEPT
26524     {
26525       independentBlend = independentBlend_;
26526       return *this;
26527     }
26528 
setGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26529     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 geometryShader_ ) VULKAN_HPP_NOEXCEPT
26530     {
26531       geometryShader = geometryShader_;
26532       return *this;
26533     }
26534 
setTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26535     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_ ) VULKAN_HPP_NOEXCEPT
26536     {
26537       tessellationShader = tessellationShader_;
26538       return *this;
26539     }
26540 
setSampleRateShadingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26541     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSampleRateShading( VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_ ) VULKAN_HPP_NOEXCEPT
26542     {
26543       sampleRateShading = sampleRateShading_;
26544       return *this;
26545     }
26546 
setDualSrcBlendVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26547     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDualSrcBlend( VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_ ) VULKAN_HPP_NOEXCEPT
26548     {
26549       dualSrcBlend = dualSrcBlend_;
26550       return *this;
26551     }
26552 
setLogicOpVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26553     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setLogicOp( VULKAN_HPP_NAMESPACE::Bool32 logicOp_ ) VULKAN_HPP_NOEXCEPT
26554     {
26555       logicOp = logicOp_;
26556       return *this;
26557     }
26558 
setMultiDrawIndirectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26559     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setMultiDrawIndirect( VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_ ) VULKAN_HPP_NOEXCEPT
26560     {
26561       multiDrawIndirect = multiDrawIndirect_;
26562       return *this;
26563     }
26564 
setDrawIndirectFirstInstanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26565     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDrawIndirectFirstInstance( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_ ) VULKAN_HPP_NOEXCEPT
26566     {
26567       drawIndirectFirstInstance = drawIndirectFirstInstance_;
26568       return *this;
26569     }
26570 
setDepthClampVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26571     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthClamp( VULKAN_HPP_NAMESPACE::Bool32 depthClamp_ ) VULKAN_HPP_NOEXCEPT
26572     {
26573       depthClamp = depthClamp_;
26574       return *this;
26575     }
26576 
setDepthBiasClampVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26577     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthBiasClamp( VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT
26578     {
26579       depthBiasClamp = depthBiasClamp_;
26580       return *this;
26581     }
26582 
setFillModeNonSolidVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26583     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFillModeNonSolid( VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_ ) VULKAN_HPP_NOEXCEPT
26584     {
26585       fillModeNonSolid = fillModeNonSolid_;
26586       return *this;
26587     }
26588 
setDepthBoundsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26589     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthBounds( VULKAN_HPP_NAMESPACE::Bool32 depthBounds_ ) VULKAN_HPP_NOEXCEPT
26590     {
26591       depthBounds = depthBounds_;
26592       return *this;
26593     }
26594 
setWideLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26595     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setWideLines( VULKAN_HPP_NAMESPACE::Bool32 wideLines_ ) VULKAN_HPP_NOEXCEPT
26596     {
26597       wideLines = wideLines_;
26598       return *this;
26599     }
26600 
setLargePointsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26601     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setLargePoints( VULKAN_HPP_NAMESPACE::Bool32 largePoints_ ) VULKAN_HPP_NOEXCEPT
26602     {
26603       largePoints = largePoints_;
26604       return *this;
26605     }
26606 
setAlphaToOneVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26607     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setAlphaToOne( VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_ ) VULKAN_HPP_NOEXCEPT
26608     {
26609       alphaToOne = alphaToOne_;
26610       return *this;
26611     }
26612 
setMultiViewportVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26613     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setMultiViewport( VULKAN_HPP_NAMESPACE::Bool32 multiViewport_ ) VULKAN_HPP_NOEXCEPT
26614     {
26615       multiViewport = multiViewport_;
26616       return *this;
26617     }
26618 
setSamplerAnisotropyVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26619     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSamplerAnisotropy( VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_ ) VULKAN_HPP_NOEXCEPT
26620     {
26621       samplerAnisotropy = samplerAnisotropy_;
26622       return *this;
26623     }
26624 
setTextureCompressionETC2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26625     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTextureCompressionETC2( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_ ) VULKAN_HPP_NOEXCEPT
26626     {
26627       textureCompressionETC2 = textureCompressionETC2_;
26628       return *this;
26629     }
26630 
26631     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setTextureCompressionASTC_LDRVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26632       setTextureCompressionASTC_LDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_ ) VULKAN_HPP_NOEXCEPT
26633     {
26634       textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
26635       return *this;
26636     }
26637 
setTextureCompressionBCVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26638     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTextureCompressionBC( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_ ) VULKAN_HPP_NOEXCEPT
26639     {
26640       textureCompressionBC = textureCompressionBC_;
26641       return *this;
26642     }
26643 
setOcclusionQueryPreciseVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26644     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setOcclusionQueryPrecise( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_ ) VULKAN_HPP_NOEXCEPT
26645     {
26646       occlusionQueryPrecise = occlusionQueryPrecise_;
26647       return *this;
26648     }
26649 
setPipelineStatisticsQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26650     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setPipelineStatisticsQuery( VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_ ) VULKAN_HPP_NOEXCEPT
26651     {
26652       pipelineStatisticsQuery = pipelineStatisticsQuery_;
26653       return *this;
26654     }
26655 
26656     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setVertexPipelineStoresAndAtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26657       setVertexPipelineStoresAndAtomics( VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT
26658     {
26659       vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
26660       return *this;
26661     }
26662 
setFragmentStoresAndAtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26663     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFragmentStoresAndAtomics( VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT
26664     {
26665       fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
26666       return *this;
26667     }
26668 
26669     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderTessellationAndGeometryPointSizeVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26670       setShaderTessellationAndGeometryPointSize( VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_ ) VULKAN_HPP_NOEXCEPT
26671     {
26672       shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
26673       return *this;
26674     }
26675 
setShaderImageGatherExtendedVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26676     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderImageGatherExtended( VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_ ) VULKAN_HPP_NOEXCEPT
26677     {
26678       shaderImageGatherExtended = shaderImageGatherExtended_;
26679       return *this;
26680     }
26681 
26682     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageImageExtendedFormatsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26683       setShaderStorageImageExtendedFormats( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_ ) VULKAN_HPP_NOEXCEPT
26684     {
26685       shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
26686       return *this;
26687     }
26688 
26689     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageImageMultisampleVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26690       setShaderStorageImageMultisample( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_ ) VULKAN_HPP_NOEXCEPT
26691     {
26692       shaderStorageImageMultisample = shaderStorageImageMultisample_;
26693       return *this;
26694     }
26695 
26696     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageImageReadWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26697       setShaderStorageImageReadWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
26698     {
26699       shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
26700       return *this;
26701     }
26702 
26703     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageImageWriteWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26704       setShaderStorageImageWriteWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
26705     {
26706       shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
26707       return *this;
26708     }
26709 
26710     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderUniformBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26711       setShaderUniformBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
26712     {
26713       shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
26714       return *this;
26715     }
26716 
26717     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderSampledImageArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26718       setShaderSampledImageArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
26719     {
26720       shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
26721       return *this;
26722     }
26723 
26724     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26725       setShaderStorageBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
26726     {
26727       shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
26728       return *this;
26729     }
26730 
26731     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageImageArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26732       setShaderStorageImageArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
26733     {
26734       shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
26735       return *this;
26736     }
26737 
setShaderClipDistanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26738     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderClipDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_ ) VULKAN_HPP_NOEXCEPT
26739     {
26740       shaderClipDistance = shaderClipDistance_;
26741       return *this;
26742     }
26743 
setShaderCullDistanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26744     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderCullDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_ ) VULKAN_HPP_NOEXCEPT
26745     {
26746       shaderCullDistance = shaderCullDistance_;
26747       return *this;
26748     }
26749 
setShaderFloat64VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26750     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderFloat64( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_ ) VULKAN_HPP_NOEXCEPT
26751     {
26752       shaderFloat64 = shaderFloat64_;
26753       return *this;
26754     }
26755 
setShaderInt64VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26756     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderInt64( VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_ ) VULKAN_HPP_NOEXCEPT
26757     {
26758       shaderInt64 = shaderInt64_;
26759       return *this;
26760     }
26761 
setShaderInt16VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26762     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderInt16( VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_ ) VULKAN_HPP_NOEXCEPT
26763     {
26764       shaderInt16 = shaderInt16_;
26765       return *this;
26766     }
26767 
setShaderResourceResidencyVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26768     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderResourceResidency( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_ ) VULKAN_HPP_NOEXCEPT
26769     {
26770       shaderResourceResidency = shaderResourceResidency_;
26771       return *this;
26772     }
26773 
setShaderResourceMinLodVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26774     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderResourceMinLod( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_ ) VULKAN_HPP_NOEXCEPT
26775     {
26776       shaderResourceMinLod = shaderResourceMinLod_;
26777       return *this;
26778     }
26779 
setSparseBindingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26780     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseBinding( VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_ ) VULKAN_HPP_NOEXCEPT
26781     {
26782       sparseBinding = sparseBinding_;
26783       return *this;
26784     }
26785 
setSparseResidencyBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26786     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyBuffer( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_ ) VULKAN_HPP_NOEXCEPT
26787     {
26788       sparseResidencyBuffer = sparseResidencyBuffer_;
26789       return *this;
26790     }
26791 
setSparseResidencyImage2DVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26792     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyImage2D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_ ) VULKAN_HPP_NOEXCEPT
26793     {
26794       sparseResidencyImage2D = sparseResidencyImage2D_;
26795       return *this;
26796     }
26797 
setSparseResidencyImage3DVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26798     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyImage3D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_ ) VULKAN_HPP_NOEXCEPT
26799     {
26800       sparseResidencyImage3D = sparseResidencyImage3D_;
26801       return *this;
26802     }
26803 
setSparseResidency2SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26804     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency2Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_ ) VULKAN_HPP_NOEXCEPT
26805     {
26806       sparseResidency2Samples = sparseResidency2Samples_;
26807       return *this;
26808     }
26809 
setSparseResidency4SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26810     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency4Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_ ) VULKAN_HPP_NOEXCEPT
26811     {
26812       sparseResidency4Samples = sparseResidency4Samples_;
26813       return *this;
26814     }
26815 
setSparseResidency8SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26816     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency8Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_ ) VULKAN_HPP_NOEXCEPT
26817     {
26818       sparseResidency8Samples = sparseResidency8Samples_;
26819       return *this;
26820     }
26821 
setSparseResidency16SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26822     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency16Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_ ) VULKAN_HPP_NOEXCEPT
26823     {
26824       sparseResidency16Samples = sparseResidency16Samples_;
26825       return *this;
26826     }
26827 
setSparseResidencyAliasedVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26828     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyAliased( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_ ) VULKAN_HPP_NOEXCEPT
26829     {
26830       sparseResidencyAliased = sparseResidencyAliased_;
26831       return *this;
26832     }
26833 
setVariableMultisampleRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26834     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setVariableMultisampleRate( VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_ ) VULKAN_HPP_NOEXCEPT
26835     {
26836       variableMultisampleRate = variableMultisampleRate_;
26837       return *this;
26838     }
26839 
setInheritedQueriesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26840     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setInheritedQueries( VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_ ) VULKAN_HPP_NOEXCEPT
26841     {
26842       inheritedQueries = inheritedQueries_;
26843       return *this;
26844     }
26845 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26846 
operator VkPhysicalDeviceFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26847     operator VkPhysicalDeviceFeatures const &() const VULKAN_HPP_NOEXCEPT
26848     {
26849       return *reinterpret_cast<const VkPhysicalDeviceFeatures *>( this );
26850     }
26851 
operator VkPhysicalDeviceFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26852     operator VkPhysicalDeviceFeatures &() VULKAN_HPP_NOEXCEPT
26853     {
26854       return *reinterpret_cast<VkPhysicalDeviceFeatures *>( this );
26855     }
26856 
26857 #if defined( VULKAN_HPP_USE_REFLECT )
26858 #  if 14 <= VULKAN_HPP_CPP_VERSION
26859     auto
26860 #  else
26861     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &,
26862                VULKAN_HPP_NAMESPACE::Bool32 const &,
26863                VULKAN_HPP_NAMESPACE::Bool32 const &,
26864                VULKAN_HPP_NAMESPACE::Bool32 const &,
26865                VULKAN_HPP_NAMESPACE::Bool32 const &,
26866                VULKAN_HPP_NAMESPACE::Bool32 const &,
26867                VULKAN_HPP_NAMESPACE::Bool32 const &,
26868                VULKAN_HPP_NAMESPACE::Bool32 const &,
26869                VULKAN_HPP_NAMESPACE::Bool32 const &,
26870                VULKAN_HPP_NAMESPACE::Bool32 const &,
26871                VULKAN_HPP_NAMESPACE::Bool32 const &,
26872                VULKAN_HPP_NAMESPACE::Bool32 const &,
26873                VULKAN_HPP_NAMESPACE::Bool32 const &,
26874                VULKAN_HPP_NAMESPACE::Bool32 const &,
26875                VULKAN_HPP_NAMESPACE::Bool32 const &,
26876                VULKAN_HPP_NAMESPACE::Bool32 const &,
26877                VULKAN_HPP_NAMESPACE::Bool32 const &,
26878                VULKAN_HPP_NAMESPACE::Bool32 const &,
26879                VULKAN_HPP_NAMESPACE::Bool32 const &,
26880                VULKAN_HPP_NAMESPACE::Bool32 const &,
26881                VULKAN_HPP_NAMESPACE::Bool32 const &,
26882                VULKAN_HPP_NAMESPACE::Bool32 const &,
26883                VULKAN_HPP_NAMESPACE::Bool32 const &,
26884                VULKAN_HPP_NAMESPACE::Bool32 const &,
26885                VULKAN_HPP_NAMESPACE::Bool32 const &,
26886                VULKAN_HPP_NAMESPACE::Bool32 const &,
26887                VULKAN_HPP_NAMESPACE::Bool32 const &,
26888                VULKAN_HPP_NAMESPACE::Bool32 const &,
26889                VULKAN_HPP_NAMESPACE::Bool32 const &,
26890                VULKAN_HPP_NAMESPACE::Bool32 const &,
26891                VULKAN_HPP_NAMESPACE::Bool32 const &,
26892                VULKAN_HPP_NAMESPACE::Bool32 const &,
26893                VULKAN_HPP_NAMESPACE::Bool32 const &,
26894                VULKAN_HPP_NAMESPACE::Bool32 const &,
26895                VULKAN_HPP_NAMESPACE::Bool32 const &,
26896                VULKAN_HPP_NAMESPACE::Bool32 const &,
26897                VULKAN_HPP_NAMESPACE::Bool32 const &,
26898                VULKAN_HPP_NAMESPACE::Bool32 const &,
26899                VULKAN_HPP_NAMESPACE::Bool32 const &,
26900                VULKAN_HPP_NAMESPACE::Bool32 const &,
26901                VULKAN_HPP_NAMESPACE::Bool32 const &,
26902                VULKAN_HPP_NAMESPACE::Bool32 const &,
26903                VULKAN_HPP_NAMESPACE::Bool32 const &,
26904                VULKAN_HPP_NAMESPACE::Bool32 const &,
26905                VULKAN_HPP_NAMESPACE::Bool32 const &,
26906                VULKAN_HPP_NAMESPACE::Bool32 const &,
26907                VULKAN_HPP_NAMESPACE::Bool32 const &,
26908                VULKAN_HPP_NAMESPACE::Bool32 const &,
26909                VULKAN_HPP_NAMESPACE::Bool32 const &,
26910                VULKAN_HPP_NAMESPACE::Bool32 const &,
26911                VULKAN_HPP_NAMESPACE::Bool32 const &,
26912                VULKAN_HPP_NAMESPACE::Bool32 const &,
26913                VULKAN_HPP_NAMESPACE::Bool32 const &,
26914                VULKAN_HPP_NAMESPACE::Bool32 const &,
26915                VULKAN_HPP_NAMESPACE::Bool32 const &>
26916 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26917       reflect() const VULKAN_HPP_NOEXCEPT
26918     {
26919       return std::tie( robustBufferAccess,
26920                        fullDrawIndexUint32,
26921                        imageCubeArray,
26922                        independentBlend,
26923                        geometryShader,
26924                        tessellationShader,
26925                        sampleRateShading,
26926                        dualSrcBlend,
26927                        logicOp,
26928                        multiDrawIndirect,
26929                        drawIndirectFirstInstance,
26930                        depthClamp,
26931                        depthBiasClamp,
26932                        fillModeNonSolid,
26933                        depthBounds,
26934                        wideLines,
26935                        largePoints,
26936                        alphaToOne,
26937                        multiViewport,
26938                        samplerAnisotropy,
26939                        textureCompressionETC2,
26940                        textureCompressionASTC_LDR,
26941                        textureCompressionBC,
26942                        occlusionQueryPrecise,
26943                        pipelineStatisticsQuery,
26944                        vertexPipelineStoresAndAtomics,
26945                        fragmentStoresAndAtomics,
26946                        shaderTessellationAndGeometryPointSize,
26947                        shaderImageGatherExtended,
26948                        shaderStorageImageExtendedFormats,
26949                        shaderStorageImageMultisample,
26950                        shaderStorageImageReadWithoutFormat,
26951                        shaderStorageImageWriteWithoutFormat,
26952                        shaderUniformBufferArrayDynamicIndexing,
26953                        shaderSampledImageArrayDynamicIndexing,
26954                        shaderStorageBufferArrayDynamicIndexing,
26955                        shaderStorageImageArrayDynamicIndexing,
26956                        shaderClipDistance,
26957                        shaderCullDistance,
26958                        shaderFloat64,
26959                        shaderInt64,
26960                        shaderInt16,
26961                        shaderResourceResidency,
26962                        shaderResourceMinLod,
26963                        sparseBinding,
26964                        sparseResidencyBuffer,
26965                        sparseResidencyImage2D,
26966                        sparseResidencyImage3D,
26967                        sparseResidency2Samples,
26968                        sparseResidency4Samples,
26969                        sparseResidency8Samples,
26970                        sparseResidency16Samples,
26971                        sparseResidencyAliased,
26972                        variableMultisampleRate,
26973                        inheritedQueries );
26974     }
26975 #endif
26976 
26977 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26978     auto operator<=>( PhysicalDeviceFeatures const & ) const = default;
26979 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26980     bool operator==( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
26981     {
26982 #  if defined( VULKAN_HPP_USE_REFLECT )
26983       return this->reflect() == rhs.reflect();
26984 #  else
26985       return ( robustBufferAccess == rhs.robustBufferAccess ) && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 ) &&
26986              ( imageCubeArray == rhs.imageCubeArray ) && ( independentBlend == rhs.independentBlend ) && ( geometryShader == rhs.geometryShader ) &&
26987              ( tessellationShader == rhs.tessellationShader ) && ( sampleRateShading == rhs.sampleRateShading ) && ( dualSrcBlend == rhs.dualSrcBlend ) &&
26988              ( logicOp == rhs.logicOp ) && ( multiDrawIndirect == rhs.multiDrawIndirect ) && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance ) &&
26989              ( depthClamp == rhs.depthClamp ) && ( depthBiasClamp == rhs.depthBiasClamp ) && ( fillModeNonSolid == rhs.fillModeNonSolid ) &&
26990              ( depthBounds == rhs.depthBounds ) && ( wideLines == rhs.wideLines ) && ( largePoints == rhs.largePoints ) && ( alphaToOne == rhs.alphaToOne ) &&
26991              ( multiViewport == rhs.multiViewport ) && ( samplerAnisotropy == rhs.samplerAnisotropy ) &&
26992              ( textureCompressionETC2 == rhs.textureCompressionETC2 ) && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR ) &&
26993              ( textureCompressionBC == rhs.textureCompressionBC ) && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise ) &&
26994              ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery ) && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics ) &&
26995              ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics ) &&
26996              ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize ) &&
26997              ( shaderImageGatherExtended == rhs.shaderImageGatherExtended ) && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats ) &&
26998              ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample ) &&
26999              ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat ) &&
27000              ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat ) &&
27001              ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing ) &&
27002              ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing ) &&
27003              ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing ) &&
27004              ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing ) && ( shaderClipDistance == rhs.shaderClipDistance ) &&
27005              ( shaderCullDistance == rhs.shaderCullDistance ) && ( shaderFloat64 == rhs.shaderFloat64 ) && ( shaderInt64 == rhs.shaderInt64 ) &&
27006              ( shaderInt16 == rhs.shaderInt16 ) && ( shaderResourceResidency == rhs.shaderResourceResidency ) &&
27007              ( shaderResourceMinLod == rhs.shaderResourceMinLod ) && ( sparseBinding == rhs.sparseBinding ) &&
27008              ( sparseResidencyBuffer == rhs.sparseResidencyBuffer ) && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D ) &&
27009              ( sparseResidencyImage3D == rhs.sparseResidencyImage3D ) && ( sparseResidency2Samples == rhs.sparseResidency2Samples ) &&
27010              ( sparseResidency4Samples == rhs.sparseResidency4Samples ) && ( sparseResidency8Samples == rhs.sparseResidency8Samples ) &&
27011              ( sparseResidency16Samples == rhs.sparseResidency16Samples ) && ( sparseResidencyAliased == rhs.sparseResidencyAliased ) &&
27012              ( variableMultisampleRate == rhs.variableMultisampleRate ) && ( inheritedQueries == rhs.inheritedQueries );
27013 #  endif
27014     }
27015 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures27016     bool operator!=( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
27017     {
27018       return !operator==( rhs );
27019     }
27020 #endif
27021 
27022   public:
27023     VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess                      = {};
27024     VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32                     = {};
27025     VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray                          = {};
27026     VULKAN_HPP_NAMESPACE::Bool32 independentBlend                        = {};
27027     VULKAN_HPP_NAMESPACE::Bool32 geometryShader                          = {};
27028     VULKAN_HPP_NAMESPACE::Bool32 tessellationShader                      = {};
27029     VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading                       = {};
27030     VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend                            = {};
27031     VULKAN_HPP_NAMESPACE::Bool32 logicOp                                 = {};
27032     VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect                       = {};
27033     VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance               = {};
27034     VULKAN_HPP_NAMESPACE::Bool32 depthClamp                              = {};
27035     VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp                          = {};
27036     VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid                        = {};
27037     VULKAN_HPP_NAMESPACE::Bool32 depthBounds                             = {};
27038     VULKAN_HPP_NAMESPACE::Bool32 wideLines                               = {};
27039     VULKAN_HPP_NAMESPACE::Bool32 largePoints                             = {};
27040     VULKAN_HPP_NAMESPACE::Bool32 alphaToOne                              = {};
27041     VULKAN_HPP_NAMESPACE::Bool32 multiViewport                           = {};
27042     VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy                       = {};
27043     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2                  = {};
27044     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR              = {};
27045     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC                    = {};
27046     VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise                   = {};
27047     VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery                 = {};
27048     VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics          = {};
27049     VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics                = {};
27050     VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize  = {};
27051     VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended               = {};
27052     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats       = {};
27053     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample           = {};
27054     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat     = {};
27055     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat    = {};
27056     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing = {};
27057     VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing  = {};
27058     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing = {};
27059     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing  = {};
27060     VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance                      = {};
27061     VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance                      = {};
27062     VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64                           = {};
27063     VULKAN_HPP_NAMESPACE::Bool32 shaderInt64                             = {};
27064     VULKAN_HPP_NAMESPACE::Bool32 shaderInt16                             = {};
27065     VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency                 = {};
27066     VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod                    = {};
27067     VULKAN_HPP_NAMESPACE::Bool32 sparseBinding                           = {};
27068     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer                   = {};
27069     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D                  = {};
27070     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D                  = {};
27071     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples                 = {};
27072     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples                 = {};
27073     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples                 = {};
27074     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples                = {};
27075     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased                  = {};
27076     VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate                 = {};
27077     VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries                        = {};
27078   };
27079 
27080   struct DeviceCreateInfo
27081   {
27082     using NativeType = VkDeviceCreateInfo;
27083 
27084     static const bool                                  allowDuplicate = false;
27085     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceCreateInfo;
27086 
27087 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo27088     VULKAN_HPP_CONSTEXPR DeviceCreateInfo( VULKAN_HPP_NAMESPACE::DeviceCreateFlags              flags_                   = {},
27089                                            uint32_t                                             queueCreateInfoCount_    = {},
27090                                            const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo *  pQueueCreateInfos_       = {},
27091                                            uint32_t                                             enabledLayerCount_       = {},
27092                                            const char * const *                                 ppEnabledLayerNames_     = {},
27093                                            uint32_t                                             enabledExtensionCount_   = {},
27094                                            const char * const *                                 ppEnabledExtensionNames_ = {},
27095                                            const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_        = {},
27096                                            const void *                                         pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
27097       : pNext{ pNext_ }
27098       , flags{ flags_ }
27099       , queueCreateInfoCount{ queueCreateInfoCount_ }
27100       , pQueueCreateInfos{ pQueueCreateInfos_ }
27101       , enabledLayerCount{ enabledLayerCount_ }
27102       , ppEnabledLayerNames{ ppEnabledLayerNames_ }
27103       , enabledExtensionCount{ enabledExtensionCount_ }
27104       , ppEnabledExtensionNames{ ppEnabledExtensionNames_ }
27105       , pEnabledFeatures{ pEnabledFeatures_ }
27106     {
27107     }
27108 
27109     VULKAN_HPP_CONSTEXPR DeviceCreateInfo( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27110 
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo27111     DeviceCreateInfo( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceCreateInfo( *reinterpret_cast<DeviceCreateInfo const *>( &rhs ) ) {}
27112 
27113 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo27114     DeviceCreateInfo( VULKAN_HPP_NAMESPACE::DeviceCreateFlags                                                                  flags_,
27115                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo> const & queueCreateInfos_,
27116                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const &                                pEnabledLayerNames_     = {},
27117                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const &                                pEnabledExtensionNames_ = {},
27118                       const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures *                                                     pEnabledFeatures_       = {},
27119                       const void *                                                                                             pNext_ = nullptr )
27120       : pNext( pNext_ )
27121       , flags( flags_ )
27122       , queueCreateInfoCount( static_cast<uint32_t>( queueCreateInfos_.size() ) )
27123       , pQueueCreateInfos( queueCreateInfos_.data() )
27124       , enabledLayerCount( static_cast<uint32_t>( pEnabledLayerNames_.size() ) )
27125       , ppEnabledLayerNames( pEnabledLayerNames_.data() )
27126       , enabledExtensionCount( static_cast<uint32_t>( pEnabledExtensionNames_.size() ) )
27127       , ppEnabledExtensionNames( pEnabledExtensionNames_.data() )
27128       , pEnabledFeatures( pEnabledFeatures_ )
27129     {
27130     }
27131 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27132 
27133     DeviceCreateInfo & operator=( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27134 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27135 
operator =VULKAN_HPP_NAMESPACE::DeviceCreateInfo27136     DeviceCreateInfo & operator=( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
27137     {
27138       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceCreateInfo const *>( &rhs );
27139       return *this;
27140     }
27141 
27142 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceCreateInfo27143     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27144     {
27145       pNext = pNext_;
27146       return *this;
27147     }
27148 
setFlagsVULKAN_HPP_NAMESPACE::DeviceCreateInfo27149     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
27150     {
27151       flags = flags_;
27152       return *this;
27153     }
27154 
setQueueCreateInfoCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo27155     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ ) VULKAN_HPP_NOEXCEPT
27156     {
27157       queueCreateInfoCount = queueCreateInfoCount_;
27158       return *this;
27159     }
27160 
27161     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo &
setPQueueCreateInfosVULKAN_HPP_NAMESPACE::DeviceCreateInfo27162       setPQueueCreateInfos( const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * pQueueCreateInfos_ ) VULKAN_HPP_NOEXCEPT
27163     {
27164       pQueueCreateInfos = pQueueCreateInfos_;
27165       return *this;
27166     }
27167 
27168 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueCreateInfosVULKAN_HPP_NAMESPACE::DeviceCreateInfo27169     DeviceCreateInfo & setQueueCreateInfos(
27170       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo> const & queueCreateInfos_ ) VULKAN_HPP_NOEXCEPT
27171     {
27172       queueCreateInfoCount = static_cast<uint32_t>( queueCreateInfos_.size() );
27173       pQueueCreateInfos    = queueCreateInfos_.data();
27174       return *this;
27175     }
27176 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27177 
setEnabledLayerCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo27178     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT
27179     {
27180       enabledLayerCount = enabledLayerCount_;
27181       return *this;
27182     }
27183 
setPpEnabledLayerNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo27184     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPpEnabledLayerNames( const char * const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
27185     {
27186       ppEnabledLayerNames = ppEnabledLayerNames_;
27187       return *this;
27188     }
27189 
27190 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
27191     DeviceCreateInfo &
setPEnabledLayerNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo27192       setPEnabledLayerNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
27193     {
27194       enabledLayerCount   = static_cast<uint32_t>( pEnabledLayerNames_.size() );
27195       ppEnabledLayerNames = pEnabledLayerNames_.data();
27196       return *this;
27197     }
27198 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27199 
setEnabledExtensionCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo27200     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT
27201     {
27202       enabledExtensionCount = enabledExtensionCount_;
27203       return *this;
27204     }
27205 
setPpEnabledExtensionNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo27206     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPpEnabledExtensionNames( const char * const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
27207     {
27208       ppEnabledExtensionNames = ppEnabledExtensionNames_;
27209       return *this;
27210     }
27211 
27212 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
27213     DeviceCreateInfo &
setPEnabledExtensionNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo27214       setPEnabledExtensionNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
27215     {
27216       enabledExtensionCount   = static_cast<uint32_t>( pEnabledExtensionNames_.size() );
27217       ppEnabledExtensionNames = pEnabledExtensionNames_.data();
27218       return *this;
27219     }
27220 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27221 
setPEnabledFeaturesVULKAN_HPP_NAMESPACE::DeviceCreateInfo27222     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPEnabledFeatures( const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_ ) VULKAN_HPP_NOEXCEPT
27223     {
27224       pEnabledFeatures = pEnabledFeatures_;
27225       return *this;
27226     }
27227 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27228 
operator VkDeviceCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceCreateInfo27229     operator VkDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
27230     {
27231       return *reinterpret_cast<const VkDeviceCreateInfo *>( this );
27232     }
27233 
operator VkDeviceCreateInfo&VULKAN_HPP_NAMESPACE::DeviceCreateInfo27234     operator VkDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT
27235     {
27236       return *reinterpret_cast<VkDeviceCreateInfo *>( this );
27237     }
27238 
27239 #if defined( VULKAN_HPP_USE_REFLECT )
27240 #  if 14 <= VULKAN_HPP_CPP_VERSION
27241     auto
27242 #  else
27243     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27244                const void * const &,
27245                VULKAN_HPP_NAMESPACE::DeviceCreateFlags const &,
27246                uint32_t const &,
27247                const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * const &,
27248                uint32_t const &,
27249                const char * const * const &,
27250                uint32_t const &,
27251                const char * const * const &,
27252                const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * const &>
27253 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceCreateInfo27254       reflect() const VULKAN_HPP_NOEXCEPT
27255     {
27256       return std::tie( sType,
27257                        pNext,
27258                        flags,
27259                        queueCreateInfoCount,
27260                        pQueueCreateInfos,
27261                        enabledLayerCount,
27262                        ppEnabledLayerNames,
27263                        enabledExtensionCount,
27264                        ppEnabledExtensionNames,
27265                        pEnabledFeatures );
27266     }
27267 #endif
27268 
27269 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DeviceCreateInfo27270     std::strong_ordering operator<=>( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27271     {
27272       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
27273         return cmp;
27274       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
27275         return cmp;
27276       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
27277         return cmp;
27278       if ( auto cmp = queueCreateInfoCount <=> rhs.queueCreateInfoCount; cmp != 0 )
27279         return cmp;
27280       if ( auto cmp = pQueueCreateInfos <=> rhs.pQueueCreateInfos; cmp != 0 )
27281         return cmp;
27282       if ( auto cmp = enabledLayerCount <=> rhs.enabledLayerCount; cmp != 0 )
27283         return cmp;
27284       for ( size_t i = 0; i < enabledLayerCount; ++i )
27285       {
27286         if ( ppEnabledLayerNames[i] != rhs.ppEnabledLayerNames[i] )
27287           if ( auto cmp = strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ); cmp != 0 )
27288             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
27289       }
27290       if ( auto cmp = enabledExtensionCount <=> rhs.enabledExtensionCount; cmp != 0 )
27291         return cmp;
27292       for ( size_t i = 0; i < enabledExtensionCount; ++i )
27293       {
27294         if ( ppEnabledExtensionNames[i] != rhs.ppEnabledExtensionNames[i] )
27295           if ( auto cmp = strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ); cmp != 0 )
27296             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
27297       }
27298       if ( auto cmp = pEnabledFeatures <=> rhs.pEnabledFeatures; cmp != 0 )
27299         return cmp;
27300 
27301       return std::strong_ordering::equivalent;
27302     }
27303 #endif
27304 
operator ==VULKAN_HPP_NAMESPACE::DeviceCreateInfo27305     bool operator==( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27306     {
27307       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueCreateInfoCount == rhs.queueCreateInfoCount ) &&
27308              ( pQueueCreateInfos == rhs.pQueueCreateInfos ) && ( enabledLayerCount == rhs.enabledLayerCount ) &&
27309              std::equal( ppEnabledLayerNames,
27310                          ppEnabledLayerNames + enabledLayerCount,
27311                          rhs.ppEnabledLayerNames,
27312                          []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } ) &&
27313              ( enabledExtensionCount == rhs.enabledExtensionCount ) &&
27314              std::equal( ppEnabledExtensionNames,
27315                          ppEnabledExtensionNames + enabledExtensionCount,
27316                          rhs.ppEnabledExtensionNames,
27317                          []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } ) &&
27318              ( pEnabledFeatures == rhs.pEnabledFeatures );
27319     }
27320 
operator !=VULKAN_HPP_NAMESPACE::DeviceCreateInfo27321     bool operator!=( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27322     {
27323       return !operator==( rhs );
27324     }
27325 
27326   public:
27327     VULKAN_HPP_NAMESPACE::StructureType                  sType                   = StructureType::eDeviceCreateInfo;
27328     const void *                                         pNext                   = {};
27329     VULKAN_HPP_NAMESPACE::DeviceCreateFlags              flags                   = {};
27330     uint32_t                                             queueCreateInfoCount    = {};
27331     const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo *  pQueueCreateInfos       = {};
27332     uint32_t                                             enabledLayerCount       = {};
27333     const char * const *                                 ppEnabledLayerNames     = {};
27334     uint32_t                                             enabledExtensionCount   = {};
27335     const char * const *                                 ppEnabledExtensionNames = {};
27336     const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures        = {};
27337   };
27338 
27339   template <>
27340   struct CppType<StructureType, StructureType::eDeviceCreateInfo>
27341   {
27342     using Type = DeviceCreateInfo;
27343   };
27344 
27345   struct DeviceDeviceMemoryReportCreateInfoEXT
27346   {
27347     using NativeType = VkDeviceDeviceMemoryReportCreateInfoEXT;
27348 
27349     static const bool                                  allowDuplicate = true;
27350     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT;
27351 
27352 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceDeviceMemoryReportCreateInfoEXTVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27353     VULKAN_HPP_CONSTEXPR DeviceDeviceMemoryReportCreateInfoEXT( VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_           = {},
27354                                                                 PFN_vkDeviceMemoryReportCallbackEXT              pfnUserCallback_ = {},
27355                                                                 void *                                           pUserData_       = {},
27356                                                                 const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
27357       : pNext{ pNext_ }
27358       , flags{ flags_ }
27359       , pfnUserCallback{ pfnUserCallback_ }
27360       , pUserData{ pUserData_ }
27361     {
27362     }
27363 
27364     VULKAN_HPP_CONSTEXPR DeviceDeviceMemoryReportCreateInfoEXT( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27365 
DeviceDeviceMemoryReportCreateInfoEXTVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27366     DeviceDeviceMemoryReportCreateInfoEXT( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27367       : DeviceDeviceMemoryReportCreateInfoEXT( *reinterpret_cast<DeviceDeviceMemoryReportCreateInfoEXT const *>( &rhs ) )
27368     {
27369     }
27370 
27371     DeviceDeviceMemoryReportCreateInfoEXT & operator=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27372 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27373 
operator =VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27374     DeviceDeviceMemoryReportCreateInfoEXT & operator=( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27375     {
27376       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT const *>( &rhs );
27377       return *this;
27378     }
27379 
27380 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27381     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27382     {
27383       pNext = pNext_;
27384       return *this;
27385     }
27386 
setFlagsVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27387     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
27388     {
27389       flags = flags_;
27390       return *this;
27391     }
27392 
27393     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT &
setPfnUserCallbackVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27394       setPfnUserCallback( PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT
27395     {
27396       pfnUserCallback = pfnUserCallback_;
27397       return *this;
27398     }
27399 
setPUserDataVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27400     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
27401     {
27402       pUserData = pUserData_;
27403       return *this;
27404     }
27405 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27406 
operator VkDeviceDeviceMemoryReportCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27407     operator VkDeviceDeviceMemoryReportCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
27408     {
27409       return *reinterpret_cast<const VkDeviceDeviceMemoryReportCreateInfoEXT *>( this );
27410     }
27411 
operator VkDeviceDeviceMemoryReportCreateInfoEXT&VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27412     operator VkDeviceDeviceMemoryReportCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
27413     {
27414       return *reinterpret_cast<VkDeviceDeviceMemoryReportCreateInfoEXT *>( this );
27415     }
27416 
27417 #if defined( VULKAN_HPP_USE_REFLECT )
27418 #  if 14 <= VULKAN_HPP_CPP_VERSION
27419     auto
27420 #  else
27421     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27422                const void * const &,
27423                VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT const &,
27424                PFN_vkDeviceMemoryReportCallbackEXT const &,
27425                void * const &>
27426 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27427       reflect() const VULKAN_HPP_NOEXCEPT
27428     {
27429       return std::tie( sType, pNext, flags, pfnUserCallback, pUserData );
27430     }
27431 #endif
27432 
operator ==VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27433     bool operator==( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27434     {
27435 #if defined( VULKAN_HPP_USE_REFLECT )
27436       return this->reflect() == rhs.reflect();
27437 #else
27438       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pfnUserCallback == rhs.pfnUserCallback ) &&
27439              ( pUserData == rhs.pUserData );
27440 #endif
27441     }
27442 
operator !=VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27443     bool operator!=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27444     {
27445       return !operator==( rhs );
27446     }
27447 
27448   public:
27449     VULKAN_HPP_NAMESPACE::StructureType              sType           = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT;
27450     const void *                                     pNext           = {};
27451     VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags           = {};
27452     PFN_vkDeviceMemoryReportCallbackEXT              pfnUserCallback = {};
27453     void *                                           pUserData       = {};
27454   };
27455 
27456   template <>
27457   struct CppType<StructureType, StructureType::eDeviceDeviceMemoryReportCreateInfoEXT>
27458   {
27459     using Type = DeviceDeviceMemoryReportCreateInfoEXT;
27460   };
27461 
27462   struct DeviceDiagnosticsConfigCreateInfoNV
27463   {
27464     using NativeType = VkDeviceDiagnosticsConfigCreateInfoNV;
27465 
27466     static const bool                                  allowDuplicate = false;
27467     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceDiagnosticsConfigCreateInfoNV;
27468 
27469 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceDiagnosticsConfigCreateInfoNVVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27470     VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags_ = {},
27471                                                               const void *                                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
27472       : pNext{ pNext_ }
27473       , flags{ flags_ }
27474     {
27475     }
27476 
27477     VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27478 
DeviceDiagnosticsConfigCreateInfoNVVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27479     DeviceDiagnosticsConfigCreateInfoNV( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
27480       : DeviceDiagnosticsConfigCreateInfoNV( *reinterpret_cast<DeviceDiagnosticsConfigCreateInfoNV const *>( &rhs ) )
27481     {
27482     }
27483 
27484     DeviceDiagnosticsConfigCreateInfoNV & operator=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27485 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27486 
operator =VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27487     DeviceDiagnosticsConfigCreateInfoNV & operator=( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
27488     {
27489       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV const *>( &rhs );
27490       return *this;
27491     }
27492 
27493 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27494     VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27495     {
27496       pNext = pNext_;
27497       return *this;
27498     }
27499 
setFlagsVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27500     VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
27501     {
27502       flags = flags_;
27503       return *this;
27504     }
27505 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27506 
operator VkDeviceDiagnosticsConfigCreateInfoNV const&VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27507     operator VkDeviceDiagnosticsConfigCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
27508     {
27509       return *reinterpret_cast<const VkDeviceDiagnosticsConfigCreateInfoNV *>( this );
27510     }
27511 
operator VkDeviceDiagnosticsConfigCreateInfoNV&VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27512     operator VkDeviceDiagnosticsConfigCreateInfoNV &() VULKAN_HPP_NOEXCEPT
27513     {
27514       return *reinterpret_cast<VkDeviceDiagnosticsConfigCreateInfoNV *>( this );
27515     }
27516 
27517 #if defined( VULKAN_HPP_USE_REFLECT )
27518 #  if 14 <= VULKAN_HPP_CPP_VERSION
27519     auto
27520 #  else
27521     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV const &>
27522 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27523       reflect() const VULKAN_HPP_NOEXCEPT
27524     {
27525       return std::tie( sType, pNext, flags );
27526     }
27527 #endif
27528 
27529 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27530     auto operator<=>( DeviceDiagnosticsConfigCreateInfoNV const & ) const = default;
27531 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27532     bool operator==( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
27533     {
27534 #  if defined( VULKAN_HPP_USE_REFLECT )
27535       return this->reflect() == rhs.reflect();
27536 #  else
27537       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
27538 #  endif
27539     }
27540 
operator !=VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27541     bool operator!=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
27542     {
27543       return !operator==( rhs );
27544     }
27545 #endif
27546 
27547   public:
27548     VULKAN_HPP_NAMESPACE::StructureType                  sType = StructureType::eDeviceDiagnosticsConfigCreateInfoNV;
27549     const void *                                         pNext = {};
27550     VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags = {};
27551   };
27552 
27553   template <>
27554   struct CppType<StructureType, StructureType::eDeviceDiagnosticsConfigCreateInfoNV>
27555   {
27556     using Type = DeviceDiagnosticsConfigCreateInfoNV;
27557   };
27558 
27559   struct DeviceEventInfoEXT
27560   {
27561     using NativeType = VkDeviceEventInfoEXT;
27562 
27563     static const bool                                  allowDuplicate = false;
27564     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceEventInfoEXT;
27565 
27566 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceEventInfoEXTVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27567     VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug,
27568                                              const void *                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
27569       : pNext{ pNext_ }
27570       , deviceEvent{ deviceEvent_ }
27571     {
27572     }
27573 
27574     VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27575 
DeviceEventInfoEXTVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27576     DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceEventInfoEXT( *reinterpret_cast<DeviceEventInfoEXT const *>( &rhs ) ) {}
27577 
27578     DeviceEventInfoEXT & operator=( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27579 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27580 
operator =VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27581     DeviceEventInfoEXT & operator=( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27582     {
27583       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const *>( &rhs );
27584       return *this;
27585     }
27586 
27587 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27588     VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27589     {
27590       pNext = pNext_;
27591       return *this;
27592     }
27593 
setDeviceEventVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27594     VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & setDeviceEvent( VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ ) VULKAN_HPP_NOEXCEPT
27595     {
27596       deviceEvent = deviceEvent_;
27597       return *this;
27598     }
27599 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27600 
operator VkDeviceEventInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27601     operator VkDeviceEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
27602     {
27603       return *reinterpret_cast<const VkDeviceEventInfoEXT *>( this );
27604     }
27605 
operator VkDeviceEventInfoEXT&VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27606     operator VkDeviceEventInfoEXT &() VULKAN_HPP_NOEXCEPT
27607     {
27608       return *reinterpret_cast<VkDeviceEventInfoEXT *>( this );
27609     }
27610 
27611 #if defined( VULKAN_HPP_USE_REFLECT )
27612 #  if 14 <= VULKAN_HPP_CPP_VERSION
27613     auto
27614 #  else
27615     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT const &>
27616 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27617       reflect() const VULKAN_HPP_NOEXCEPT
27618     {
27619       return std::tie( sType, pNext, deviceEvent );
27620     }
27621 #endif
27622 
27623 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27624     auto operator<=>( DeviceEventInfoEXT const & ) const = default;
27625 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27626     bool operator==( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27627     {
27628 #  if defined( VULKAN_HPP_USE_REFLECT )
27629       return this->reflect() == rhs.reflect();
27630 #  else
27631       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceEvent == rhs.deviceEvent );
27632 #  endif
27633     }
27634 
operator !=VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27635     bool operator!=( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27636     {
27637       return !operator==( rhs );
27638     }
27639 #endif
27640 
27641   public:
27642     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eDeviceEventInfoEXT;
27643     const void *                             pNext       = {};
27644     VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug;
27645   };
27646 
27647   template <>
27648   struct CppType<StructureType, StructureType::eDeviceEventInfoEXT>
27649   {
27650     using Type = DeviceEventInfoEXT;
27651   };
27652 
27653   struct DeviceFaultAddressInfoEXT
27654   {
27655     using NativeType = VkDeviceFaultAddressInfoEXT;
27656 
27657 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
27658     VULKAN_HPP_CONSTEXPR
DeviceFaultAddressInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27659       DeviceFaultAddressInfoEXT( VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT addressType_      = VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT::eNone,
27660                                  VULKAN_HPP_NAMESPACE::DeviceAddress             reportedAddress_  = {},
27661                                  VULKAN_HPP_NAMESPACE::DeviceSize                addressPrecision_ = {} ) VULKAN_HPP_NOEXCEPT
27662       : addressType{ addressType_ }
27663       , reportedAddress{ reportedAddress_ }
27664       , addressPrecision{ addressPrecision_ }
27665     {
27666     }
27667 
27668     VULKAN_HPP_CONSTEXPR DeviceFaultAddressInfoEXT( DeviceFaultAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27669 
DeviceFaultAddressInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27670     DeviceFaultAddressInfoEXT( VkDeviceFaultAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27671       : DeviceFaultAddressInfoEXT( *reinterpret_cast<DeviceFaultAddressInfoEXT const *>( &rhs ) )
27672     {
27673     }
27674 
27675     DeviceFaultAddressInfoEXT & operator=( DeviceFaultAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27676 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27677 
operator =VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27678     DeviceFaultAddressInfoEXT & operator=( VkDeviceFaultAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27679     {
27680       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT const *>( &rhs );
27681       return *this;
27682     }
27683 
27684 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAddressTypeVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27685     VULKAN_HPP_CONSTEXPR_14 DeviceFaultAddressInfoEXT & setAddressType( VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT addressType_ ) VULKAN_HPP_NOEXCEPT
27686     {
27687       addressType = addressType_;
27688       return *this;
27689     }
27690 
setReportedAddressVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27691     VULKAN_HPP_CONSTEXPR_14 DeviceFaultAddressInfoEXT & setReportedAddress( VULKAN_HPP_NAMESPACE::DeviceAddress reportedAddress_ ) VULKAN_HPP_NOEXCEPT
27692     {
27693       reportedAddress = reportedAddress_;
27694       return *this;
27695     }
27696 
setAddressPrecisionVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27697     VULKAN_HPP_CONSTEXPR_14 DeviceFaultAddressInfoEXT & setAddressPrecision( VULKAN_HPP_NAMESPACE::DeviceSize addressPrecision_ ) VULKAN_HPP_NOEXCEPT
27698     {
27699       addressPrecision = addressPrecision_;
27700       return *this;
27701     }
27702 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27703 
operator VkDeviceFaultAddressInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27704     operator VkDeviceFaultAddressInfoEXT const &() const VULKAN_HPP_NOEXCEPT
27705     {
27706       return *reinterpret_cast<const VkDeviceFaultAddressInfoEXT *>( this );
27707     }
27708 
operator VkDeviceFaultAddressInfoEXT&VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27709     operator VkDeviceFaultAddressInfoEXT &() VULKAN_HPP_NOEXCEPT
27710     {
27711       return *reinterpret_cast<VkDeviceFaultAddressInfoEXT *>( this );
27712     }
27713 
27714 #if defined( VULKAN_HPP_USE_REFLECT )
27715 #  if 14 <= VULKAN_HPP_CPP_VERSION
27716     auto
27717 #  else
27718     std::tuple<VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT const &, VULKAN_HPP_NAMESPACE::DeviceAddress const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
27719 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27720       reflect() const VULKAN_HPP_NOEXCEPT
27721     {
27722       return std::tie( addressType, reportedAddress, addressPrecision );
27723     }
27724 #endif
27725 
27726 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27727     auto operator<=>( DeviceFaultAddressInfoEXT const & ) const = default;
27728 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27729     bool operator==( DeviceFaultAddressInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27730     {
27731 #  if defined( VULKAN_HPP_USE_REFLECT )
27732       return this->reflect() == rhs.reflect();
27733 #  else
27734       return ( addressType == rhs.addressType ) && ( reportedAddress == rhs.reportedAddress ) && ( addressPrecision == rhs.addressPrecision );
27735 #  endif
27736     }
27737 
operator !=VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27738     bool operator!=( DeviceFaultAddressInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27739     {
27740       return !operator==( rhs );
27741     }
27742 #endif
27743 
27744   public:
27745     VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT addressType      = VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT::eNone;
27746     VULKAN_HPP_NAMESPACE::DeviceAddress             reportedAddress  = {};
27747     VULKAN_HPP_NAMESPACE::DeviceSize                addressPrecision = {};
27748   };
27749 
27750   struct DeviceFaultCountsEXT
27751   {
27752     using NativeType = VkDeviceFaultCountsEXT;
27753 
27754     static const bool                                  allowDuplicate = false;
27755     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceFaultCountsEXT;
27756 
27757 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceFaultCountsEXTVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27758     VULKAN_HPP_CONSTEXPR DeviceFaultCountsEXT( uint32_t                         addressInfoCount_ = {},
27759                                                uint32_t                         vendorInfoCount_  = {},
27760                                                VULKAN_HPP_NAMESPACE::DeviceSize vendorBinarySize_ = {},
27761                                                void *                           pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
27762       : pNext{ pNext_ }
27763       , addressInfoCount{ addressInfoCount_ }
27764       , vendorInfoCount{ vendorInfoCount_ }
27765       , vendorBinarySize{ vendorBinarySize_ }
27766     {
27767     }
27768 
27769     VULKAN_HPP_CONSTEXPR DeviceFaultCountsEXT( DeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27770 
DeviceFaultCountsEXTVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27771     DeviceFaultCountsEXT( VkDeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27772       : DeviceFaultCountsEXT( *reinterpret_cast<DeviceFaultCountsEXT const *>( &rhs ) )
27773     {
27774     }
27775 
27776     DeviceFaultCountsEXT & operator=( DeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27777 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27778 
operator =VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27779     DeviceFaultCountsEXT & operator=( VkDeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27780     {
27781       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT const *>( &rhs );
27782       return *this;
27783     }
27784 
27785 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27786     VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
27787     {
27788       pNext = pNext_;
27789       return *this;
27790     }
27791 
setAddressInfoCountVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27792     VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setAddressInfoCount( uint32_t addressInfoCount_ ) VULKAN_HPP_NOEXCEPT
27793     {
27794       addressInfoCount = addressInfoCount_;
27795       return *this;
27796     }
27797 
setVendorInfoCountVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27798     VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setVendorInfoCount( uint32_t vendorInfoCount_ ) VULKAN_HPP_NOEXCEPT
27799     {
27800       vendorInfoCount = vendorInfoCount_;
27801       return *this;
27802     }
27803 
setVendorBinarySizeVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27804     VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setVendorBinarySize( VULKAN_HPP_NAMESPACE::DeviceSize vendorBinarySize_ ) VULKAN_HPP_NOEXCEPT
27805     {
27806       vendorBinarySize = vendorBinarySize_;
27807       return *this;
27808     }
27809 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27810 
operator VkDeviceFaultCountsEXT const&VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27811     operator VkDeviceFaultCountsEXT const &() const VULKAN_HPP_NOEXCEPT
27812     {
27813       return *reinterpret_cast<const VkDeviceFaultCountsEXT *>( this );
27814     }
27815 
operator VkDeviceFaultCountsEXT&VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27816     operator VkDeviceFaultCountsEXT &() VULKAN_HPP_NOEXCEPT
27817     {
27818       return *reinterpret_cast<VkDeviceFaultCountsEXT *>( this );
27819     }
27820 
27821 #if defined( VULKAN_HPP_USE_REFLECT )
27822 #  if 14 <= VULKAN_HPP_CPP_VERSION
27823     auto
27824 #  else
27825     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
27826 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27827       reflect() const VULKAN_HPP_NOEXCEPT
27828     {
27829       return std::tie( sType, pNext, addressInfoCount, vendorInfoCount, vendorBinarySize );
27830     }
27831 #endif
27832 
27833 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27834     auto operator<=>( DeviceFaultCountsEXT const & ) const = default;
27835 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27836     bool operator==( DeviceFaultCountsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27837     {
27838 #  if defined( VULKAN_HPP_USE_REFLECT )
27839       return this->reflect() == rhs.reflect();
27840 #  else
27841       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( addressInfoCount == rhs.addressInfoCount ) && ( vendorInfoCount == rhs.vendorInfoCount ) &&
27842              ( vendorBinarySize == rhs.vendorBinarySize );
27843 #  endif
27844     }
27845 
operator !=VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27846     bool operator!=( DeviceFaultCountsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27847     {
27848       return !operator==( rhs );
27849     }
27850 #endif
27851 
27852   public:
27853     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eDeviceFaultCountsEXT;
27854     void *                              pNext            = {};
27855     uint32_t                            addressInfoCount = {};
27856     uint32_t                            vendorInfoCount  = {};
27857     VULKAN_HPP_NAMESPACE::DeviceSize    vendorBinarySize = {};
27858   };
27859 
27860   template <>
27861   struct CppType<StructureType, StructureType::eDeviceFaultCountsEXT>
27862   {
27863     using Type = DeviceFaultCountsEXT;
27864   };
27865 
27866   struct DeviceFaultVendorInfoEXT
27867   {
27868     using NativeType = VkDeviceFaultVendorInfoEXT;
27869 
27870 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceFaultVendorInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27871     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoEXT( std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_     = {},
27872                                                       uint64_t                                          vendorFaultCode_ = {},
27873                                                       uint64_t                                          vendorFaultData_ = {} ) VULKAN_HPP_NOEXCEPT
27874       : description{ description_ }
27875       , vendorFaultCode{ vendorFaultCode_ }
27876       , vendorFaultData{ vendorFaultData_ }
27877     {
27878     }
27879 
27880     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoEXT( DeviceFaultVendorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27881 
DeviceFaultVendorInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27882     DeviceFaultVendorInfoEXT( VkDeviceFaultVendorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27883       : DeviceFaultVendorInfoEXT( *reinterpret_cast<DeviceFaultVendorInfoEXT const *>( &rhs ) )
27884     {
27885     }
27886 
27887 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceFaultVendorInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27888     DeviceFaultVendorInfoEXT( std::string const & description_, uint64_t vendorFaultCode_ = {}, uint64_t vendorFaultData_ = {} )
27889       : vendorFaultCode( vendorFaultCode_ ), vendorFaultData( vendorFaultData_ )
27890     {
27891       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
27892 #    if defined( WIN32 )
27893       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
27894 #    else
27895       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
27896 #    endif
27897     }
27898 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27899 
27900     DeviceFaultVendorInfoEXT & operator=( DeviceFaultVendorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27901 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27902 
operator =VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27903     DeviceFaultVendorInfoEXT & operator=( VkDeviceFaultVendorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27904     {
27905       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT const *>( &rhs );
27906       return *this;
27907     }
27908 
27909 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDescriptionVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27910     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoEXT & setDescription( std::array<char, VK_MAX_DESCRIPTION_SIZE> description_ ) VULKAN_HPP_NOEXCEPT
27911     {
27912       description = description_;
27913       return *this;
27914     }
27915 
27916 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptionVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27917     DeviceFaultVendorInfoEXT & setDescription( std::string const & description_ ) VULKAN_HPP_NOEXCEPT
27918     {
27919       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
27920 #    if defined( WIN32 )
27921       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
27922 #    else
27923       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
27924 #    endif
27925       return *this;
27926     }
27927 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27928 
setVendorFaultCodeVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27929     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoEXT & setVendorFaultCode( uint64_t vendorFaultCode_ ) VULKAN_HPP_NOEXCEPT
27930     {
27931       vendorFaultCode = vendorFaultCode_;
27932       return *this;
27933     }
27934 
setVendorFaultDataVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27935     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoEXT & setVendorFaultData( uint64_t vendorFaultData_ ) VULKAN_HPP_NOEXCEPT
27936     {
27937       vendorFaultData = vendorFaultData_;
27938       return *this;
27939     }
27940 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27941 
operator VkDeviceFaultVendorInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27942     operator VkDeviceFaultVendorInfoEXT const &() const VULKAN_HPP_NOEXCEPT
27943     {
27944       return *reinterpret_cast<const VkDeviceFaultVendorInfoEXT *>( this );
27945     }
27946 
operator VkDeviceFaultVendorInfoEXT&VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27947     operator VkDeviceFaultVendorInfoEXT &() VULKAN_HPP_NOEXCEPT
27948     {
27949       return *reinterpret_cast<VkDeviceFaultVendorInfoEXT *>( this );
27950     }
27951 
27952 #if defined( VULKAN_HPP_USE_REFLECT )
27953 #  if 14 <= VULKAN_HPP_CPP_VERSION
27954     auto
27955 #  else
27956     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &, uint64_t const &, uint64_t const &>
27957 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27958       reflect() const VULKAN_HPP_NOEXCEPT
27959     {
27960       return std::tie( description, vendorFaultCode, vendorFaultData );
27961     }
27962 #endif
27963 
27964 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27965     std::strong_ordering operator<=>( DeviceFaultVendorInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27966     {
27967       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
27968         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
27969       if ( auto cmp = vendorFaultCode <=> rhs.vendorFaultCode; cmp != 0 )
27970         return cmp;
27971       if ( auto cmp = vendorFaultData <=> rhs.vendorFaultData; cmp != 0 )
27972         return cmp;
27973 
27974       return std::strong_ordering::equivalent;
27975     }
27976 #endif
27977 
operator ==VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27978     bool operator==( DeviceFaultVendorInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27979     {
27980       return ( strcmp( description, rhs.description ) == 0 ) && ( vendorFaultCode == rhs.vendorFaultCode ) && ( vendorFaultData == rhs.vendorFaultData );
27981     }
27982 
operator !=VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27983     bool operator!=( DeviceFaultVendorInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27984     {
27985       return !operator==( rhs );
27986     }
27987 
27988   public:
27989     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description     = {};
27990     uint64_t                                                            vendorFaultCode = {};
27991     uint64_t                                                            vendorFaultData = {};
27992   };
27993 
27994   struct DeviceFaultInfoEXT
27995   {
27996     using NativeType = VkDeviceFaultInfoEXT;
27997 
27998     static const bool                                  allowDuplicate = false;
27999     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceFaultInfoEXT;
28000 
28001 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceFaultInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28002     VULKAN_HPP_CONSTEXPR_14 DeviceFaultInfoEXT( std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_       = {},
28003                                                 VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT * pAddressInfos_     = {},
28004                                                 VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT *  pVendorInfos_      = {},
28005                                                 void *                                            pVendorBinaryData_ = {},
28006                                                 void *                                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
28007       : pNext{ pNext_ }
28008       , description{ description_ }
28009       , pAddressInfos{ pAddressInfos_ }
28010       , pVendorInfos{ pVendorInfos_ }
28011       , pVendorBinaryData{ pVendorBinaryData_ }
28012     {
28013     }
28014 
28015 #  ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28016     VULKAN_HPP_CONSTEXPR_14 DeviceFaultInfoEXT( DeviceFaultInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28017 
DeviceFaultInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28018     DeviceFaultInfoEXT( VkDeviceFaultInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceFaultInfoEXT( *reinterpret_cast<DeviceFaultInfoEXT const *>( &rhs ) ) {}
28019 
28020     DeviceFaultInfoEXT & operator=( DeviceFaultInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28021 #  else
28022     DeviceFaultInfoEXT( DeviceFaultInfoEXT const & )             = delete;
28023     DeviceFaultInfoEXT & operator=( DeviceFaultInfoEXT const & ) = delete;
28024 
DeviceFaultInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28025     DeviceFaultInfoEXT( DeviceFaultInfoEXT && rhs ) VULKAN_HPP_NOEXCEPT
28026       : pNext{ rhs.pNext }
28027       , pAddressInfos{ rhs.pAddressInfos }
28028       , pVendorInfos{ rhs.pVendorInfos }
28029       , pVendorBinaryData{ rhs.pVendorBinaryData }
28030     {
28031       memcpy( description, rhs.description, VK_MAX_DESCRIPTION_SIZE );
28032 
28033       rhs.pNext = nullptr;
28034       memset( rhs.description, 0, VK_MAX_DESCRIPTION_SIZE );
28035       rhs.pAddressInfos     = nullptr;
28036       rhs.pVendorInfos      = nullptr;
28037       rhs.pVendorBinaryData = nullptr;
28038     }
28039 
operator =VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28040     DeviceFaultInfoEXT & operator=( DeviceFaultInfoEXT && rhs ) VULKAN_HPP_NOEXCEPT
28041     {
28042       free( pAddressInfos );
28043       free( pVendorInfos );
28044       free( pVendorBinaryData );
28045 
28046       pNext = rhs.pNext;
28047       memcpy( description, rhs.description, VK_MAX_DESCRIPTION_SIZE );
28048       pAddressInfos     = rhs.pAddressInfos;
28049       pVendorInfos      = rhs.pVendorInfos;
28050       pVendorBinaryData = rhs.pVendorBinaryData;
28051 
28052       rhs.pNext = nullptr;
28053       memset( rhs.description, 0, VK_MAX_DESCRIPTION_SIZE );
28054       rhs.pAddressInfos     = nullptr;
28055       rhs.pVendorInfos      = nullptr;
28056       rhs.pVendorBinaryData = nullptr;
28057 
28058       return *this;
28059     }
28060 
~DeviceFaultInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28061     ~DeviceFaultInfoEXT() VULKAN_HPP_NOEXCEPT
28062     {
28063       free( pAddressInfos );
28064       free( pVendorInfos );
28065       free( pVendorBinaryData );
28066     }
28067 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28068 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28069 
operator VkDeviceFaultInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28070     operator VkDeviceFaultInfoEXT const &() const VULKAN_HPP_NOEXCEPT
28071     {
28072       return *reinterpret_cast<const VkDeviceFaultInfoEXT *>( this );
28073     }
28074 
operator VkDeviceFaultInfoEXT&VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28075     operator VkDeviceFaultInfoEXT &() VULKAN_HPP_NOEXCEPT
28076     {
28077       return *reinterpret_cast<VkDeviceFaultInfoEXT *>( this );
28078     }
28079 
28080 #if defined( VULKAN_HPP_USE_REFLECT )
28081 #  if 14 <= VULKAN_HPP_CPP_VERSION
28082     auto
28083 #  else
28084     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28085                void * const &,
28086                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
28087                VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT * const &,
28088                VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT * const &,
28089                void * const &>
28090 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28091       reflect() const VULKAN_HPP_NOEXCEPT
28092     {
28093       return std::tie( sType, pNext, description, pAddressInfos, pVendorInfos, pVendorBinaryData );
28094     }
28095 #endif
28096 
28097 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28098     std::strong_ordering operator<=>( DeviceFaultInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28099     {
28100       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
28101         return cmp;
28102       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
28103         return cmp;
28104       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
28105         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
28106       if ( auto cmp = pAddressInfos <=> rhs.pAddressInfos; cmp != 0 )
28107         return cmp;
28108       if ( auto cmp = pVendorInfos <=> rhs.pVendorInfos; cmp != 0 )
28109         return cmp;
28110       if ( auto cmp = pVendorBinaryData <=> rhs.pVendorBinaryData; cmp != 0 )
28111         return cmp;
28112 
28113       return std::strong_ordering::equivalent;
28114     }
28115 #endif
28116 
operator ==VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28117     bool operator==( DeviceFaultInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28118     {
28119       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( strcmp( description, rhs.description ) == 0 ) && ( pAddressInfos == rhs.pAddressInfos ) &&
28120              ( pVendorInfos == rhs.pVendorInfos ) && ( pVendorBinaryData == rhs.pVendorBinaryData );
28121     }
28122 
operator !=VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT28123     bool operator!=( DeviceFaultInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28124     {
28125       return !operator==( rhs );
28126     }
28127 
28128   public:
28129     VULKAN_HPP_NAMESPACE::StructureType                                 sType             = StructureType::eDeviceFaultInfoEXT;
28130     void *                                                              pNext             = {};
28131     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description       = {};
28132     VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT *                   pAddressInfos     = {};
28133     VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT *                    pVendorInfos      = {};
28134     void *                                                              pVendorBinaryData = {};
28135   };
28136 
28137   template <>
28138   struct CppType<StructureType, StructureType::eDeviceFaultInfoEXT>
28139   {
28140     using Type = DeviceFaultInfoEXT;
28141   };
28142 
28143   struct DeviceFaultVendorBinaryHeaderVersionOneEXT
28144   {
28145     using NativeType = VkDeviceFaultVendorBinaryHeaderVersionOneEXT;
28146 
28147 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceFaultVendorBinaryHeaderVersionOneEXTVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28148     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT(
28149       uint32_t                                                      headerSize_        = {},
28150       VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT headerVersion_     = VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT::eOne,
28151       uint32_t                                                      vendorID_          = {},
28152       uint32_t                                                      deviceID_          = {},
28153       uint32_t                                                      driverVersion_     = {},
28154       std::array<uint8_t, VK_UUID_SIZE> const &                     pipelineCacheUUID_ = {},
28155       uint32_t                                                      applicationNameOffset_ = {},
28156       uint32_t                                                      applicationVersion_    = {},
28157       uint32_t                                                      engineNameOffset_      = {},
28158       uint32_t                                                      engineVersion_         = {},
28159       uint32_t                                                      apiVersion_            = {} ) VULKAN_HPP_NOEXCEPT
28160       : headerSize{ headerSize_ }
28161       , headerVersion{ headerVersion_ }
28162       , vendorID{ vendorID_ }
28163       , deviceID{ deviceID_ }
28164       , driverVersion{ driverVersion_ }
28165       , pipelineCacheUUID{ pipelineCacheUUID_ }
28166       , applicationNameOffset{ applicationNameOffset_ }
28167       , applicationVersion{ applicationVersion_ }
28168       , engineNameOffset{ engineNameOffset_ }
28169       , engineVersion{ engineVersion_ }
28170       , apiVersion{ apiVersion_ }
28171     {
28172     }
28173 
28174     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT( DeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28175 
DeviceFaultVendorBinaryHeaderVersionOneEXTVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28176     DeviceFaultVendorBinaryHeaderVersionOneEXT( VkDeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28177       : DeviceFaultVendorBinaryHeaderVersionOneEXT( *reinterpret_cast<DeviceFaultVendorBinaryHeaderVersionOneEXT const *>( &rhs ) )
28178     {
28179     }
28180 
28181     DeviceFaultVendorBinaryHeaderVersionOneEXT & operator=( DeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28182 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28183 
operator =VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28184     DeviceFaultVendorBinaryHeaderVersionOneEXT & operator=( VkDeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28185     {
28186       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT const *>( &rhs );
28187       return *this;
28188     }
28189 
28190 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setHeaderSizeVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28191     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setHeaderSize( uint32_t headerSize_ ) VULKAN_HPP_NOEXCEPT
28192     {
28193       headerSize = headerSize_;
28194       return *this;
28195     }
28196 
28197     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT &
setHeaderVersionVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28198       setHeaderVersion( VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT headerVersion_ ) VULKAN_HPP_NOEXCEPT
28199     {
28200       headerVersion = headerVersion_;
28201       return *this;
28202     }
28203 
setVendorIDVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28204     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setVendorID( uint32_t vendorID_ ) VULKAN_HPP_NOEXCEPT
28205     {
28206       vendorID = vendorID_;
28207       return *this;
28208     }
28209 
setDeviceIDVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28210     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setDeviceID( uint32_t deviceID_ ) VULKAN_HPP_NOEXCEPT
28211     {
28212       deviceID = deviceID_;
28213       return *this;
28214     }
28215 
setDriverVersionVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28216     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setDriverVersion( uint32_t driverVersion_ ) VULKAN_HPP_NOEXCEPT
28217     {
28218       driverVersion = driverVersion_;
28219       return *this;
28220     }
28221 
28222     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT &
setPipelineCacheUUIDVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28223       setPipelineCacheUUID( std::array<uint8_t, VK_UUID_SIZE> pipelineCacheUUID_ ) VULKAN_HPP_NOEXCEPT
28224     {
28225       pipelineCacheUUID = pipelineCacheUUID_;
28226       return *this;
28227     }
28228 
setApplicationNameOffsetVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28229     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setApplicationNameOffset( uint32_t applicationNameOffset_ ) VULKAN_HPP_NOEXCEPT
28230     {
28231       applicationNameOffset = applicationNameOffset_;
28232       return *this;
28233     }
28234 
setApplicationVersionVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28235     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setApplicationVersion( uint32_t applicationVersion_ ) VULKAN_HPP_NOEXCEPT
28236     {
28237       applicationVersion = applicationVersion_;
28238       return *this;
28239     }
28240 
setEngineNameOffsetVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28241     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setEngineNameOffset( uint32_t engineNameOffset_ ) VULKAN_HPP_NOEXCEPT
28242     {
28243       engineNameOffset = engineNameOffset_;
28244       return *this;
28245     }
28246 
setEngineVersionVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28247     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setEngineVersion( uint32_t engineVersion_ ) VULKAN_HPP_NOEXCEPT
28248     {
28249       engineVersion = engineVersion_;
28250       return *this;
28251     }
28252 
setApiVersionVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28253     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setApiVersion( uint32_t apiVersion_ ) VULKAN_HPP_NOEXCEPT
28254     {
28255       apiVersion = apiVersion_;
28256       return *this;
28257     }
28258 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28259 
operator VkDeviceFaultVendorBinaryHeaderVersionOneEXT const&VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28260     operator VkDeviceFaultVendorBinaryHeaderVersionOneEXT const &() const VULKAN_HPP_NOEXCEPT
28261     {
28262       return *reinterpret_cast<const VkDeviceFaultVendorBinaryHeaderVersionOneEXT *>( this );
28263     }
28264 
operator VkDeviceFaultVendorBinaryHeaderVersionOneEXT&VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28265     operator VkDeviceFaultVendorBinaryHeaderVersionOneEXT &() VULKAN_HPP_NOEXCEPT
28266     {
28267       return *reinterpret_cast<VkDeviceFaultVendorBinaryHeaderVersionOneEXT *>( this );
28268     }
28269 
28270 #if defined( VULKAN_HPP_USE_REFLECT )
28271 #  if 14 <= VULKAN_HPP_CPP_VERSION
28272     auto
28273 #  else
28274     std::tuple<uint32_t const &,
28275                VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT const &,
28276                uint32_t const &,
28277                uint32_t const &,
28278                uint32_t const &,
28279                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
28280                uint32_t const &,
28281                uint32_t const &,
28282                uint32_t const &,
28283                uint32_t const &,
28284                uint32_t const &>
28285 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28286       reflect() const VULKAN_HPP_NOEXCEPT
28287     {
28288       return std::tie( headerSize,
28289                        headerVersion,
28290                        vendorID,
28291                        deviceID,
28292                        driverVersion,
28293                        pipelineCacheUUID,
28294                        applicationNameOffset,
28295                        applicationVersion,
28296                        engineNameOffset,
28297                        engineVersion,
28298                        apiVersion );
28299     }
28300 #endif
28301 
28302 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28303     auto operator<=>( DeviceFaultVendorBinaryHeaderVersionOneEXT const & ) const = default;
28304 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28305     bool operator==( DeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28306     {
28307 #  if defined( VULKAN_HPP_USE_REFLECT )
28308       return this->reflect() == rhs.reflect();
28309 #  else
28310       return ( headerSize == rhs.headerSize ) && ( headerVersion == rhs.headerVersion ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) &&
28311              ( driverVersion == rhs.driverVersion ) && ( pipelineCacheUUID == rhs.pipelineCacheUUID ) &&
28312              ( applicationNameOffset == rhs.applicationNameOffset ) && ( applicationVersion == rhs.applicationVersion ) &&
28313              ( engineNameOffset == rhs.engineNameOffset ) && ( engineVersion == rhs.engineVersion ) && ( apiVersion == rhs.apiVersion );
28314 #  endif
28315     }
28316 
operator !=VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28317     bool operator!=( DeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28318     {
28319       return !operator==( rhs );
28320     }
28321 #endif
28322 
28323   public:
28324     uint32_t                                                      headerSize            = {};
28325     VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT headerVersion         = VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT::eOne;
28326     uint32_t                                                      vendorID              = {};
28327     uint32_t                                                      deviceID              = {};
28328     uint32_t                                                      driverVersion         = {};
28329     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE>   pipelineCacheUUID     = {};
28330     uint32_t                                                      applicationNameOffset = {};
28331     uint32_t                                                      applicationVersion    = {};
28332     uint32_t                                                      engineNameOffset      = {};
28333     uint32_t                                                      engineVersion         = {};
28334     uint32_t                                                      apiVersion            = {};
28335   };
28336 
28337   struct DeviceGroupBindSparseInfo
28338   {
28339     using NativeType = VkDeviceGroupBindSparseInfo;
28340 
28341     static const bool                                  allowDuplicate = false;
28342     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupBindSparseInfo;
28343 
28344 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
28345     VULKAN_HPP_CONSTEXPR
DeviceGroupBindSparseInfoVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28346       DeviceGroupBindSparseInfo( uint32_t resourceDeviceIndex_ = {}, uint32_t memoryDeviceIndex_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
28347       : pNext{ pNext_ }
28348       , resourceDeviceIndex{ resourceDeviceIndex_ }
28349       , memoryDeviceIndex{ memoryDeviceIndex_ }
28350     {
28351     }
28352 
28353     VULKAN_HPP_CONSTEXPR DeviceGroupBindSparseInfo( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28354 
DeviceGroupBindSparseInfoVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28355     DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28356       : DeviceGroupBindSparseInfo( *reinterpret_cast<DeviceGroupBindSparseInfo const *>( &rhs ) )
28357     {
28358     }
28359 
28360     DeviceGroupBindSparseInfo & operator=( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28361 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28362 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28363     DeviceGroupBindSparseInfo & operator=( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28364     {
28365       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo const *>( &rhs );
28366       return *this;
28367     }
28368 
28369 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28370     VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28371     {
28372       pNext = pNext_;
28373       return *this;
28374     }
28375 
setResourceDeviceIndexVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28376     VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setResourceDeviceIndex( uint32_t resourceDeviceIndex_ ) VULKAN_HPP_NOEXCEPT
28377     {
28378       resourceDeviceIndex = resourceDeviceIndex_;
28379       return *this;
28380     }
28381 
setMemoryDeviceIndexVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28382     VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ ) VULKAN_HPP_NOEXCEPT
28383     {
28384       memoryDeviceIndex = memoryDeviceIndex_;
28385       return *this;
28386     }
28387 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28388 
operator VkDeviceGroupBindSparseInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28389     operator VkDeviceGroupBindSparseInfo const &() const VULKAN_HPP_NOEXCEPT
28390     {
28391       return *reinterpret_cast<const VkDeviceGroupBindSparseInfo *>( this );
28392     }
28393 
operator VkDeviceGroupBindSparseInfo&VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28394     operator VkDeviceGroupBindSparseInfo &() VULKAN_HPP_NOEXCEPT
28395     {
28396       return *reinterpret_cast<VkDeviceGroupBindSparseInfo *>( this );
28397     }
28398 
28399 #if defined( VULKAN_HPP_USE_REFLECT )
28400 #  if 14 <= VULKAN_HPP_CPP_VERSION
28401     auto
28402 #  else
28403     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &>
28404 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28405       reflect() const VULKAN_HPP_NOEXCEPT
28406     {
28407       return std::tie( sType, pNext, resourceDeviceIndex, memoryDeviceIndex );
28408     }
28409 #endif
28410 
28411 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28412     auto operator<=>( DeviceGroupBindSparseInfo const & ) const = default;
28413 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28414     bool operator==( DeviceGroupBindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28415     {
28416 #  if defined( VULKAN_HPP_USE_REFLECT )
28417       return this->reflect() == rhs.reflect();
28418 #  else
28419       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( resourceDeviceIndex == rhs.resourceDeviceIndex ) &&
28420              ( memoryDeviceIndex == rhs.memoryDeviceIndex );
28421 #  endif
28422     }
28423 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28424     bool operator!=( DeviceGroupBindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28425     {
28426       return !operator==( rhs );
28427     }
28428 #endif
28429 
28430   public:
28431     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDeviceGroupBindSparseInfo;
28432     const void *                        pNext               = {};
28433     uint32_t                            resourceDeviceIndex = {};
28434     uint32_t                            memoryDeviceIndex   = {};
28435   };
28436 
28437   template <>
28438   struct CppType<StructureType, StructureType::eDeviceGroupBindSparseInfo>
28439   {
28440     using Type = DeviceGroupBindSparseInfo;
28441   };
28442 
28443   using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
28444 
28445   struct DeviceGroupCommandBufferBeginInfo
28446   {
28447     using NativeType = VkDeviceGroupCommandBufferBeginInfo;
28448 
28449     static const bool                                  allowDuplicate = false;
28450     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupCommandBufferBeginInfo;
28451 
28452 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupCommandBufferBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28453     VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( uint32_t deviceMask_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
28454       : pNext{ pNext_ }
28455       , deviceMask{ deviceMask_ }
28456     {
28457     }
28458 
28459     VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28460 
DeviceGroupCommandBufferBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28461     DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28462       : DeviceGroupCommandBufferBeginInfo( *reinterpret_cast<DeviceGroupCommandBufferBeginInfo const *>( &rhs ) )
28463     {
28464     }
28465 
28466     DeviceGroupCommandBufferBeginInfo & operator=( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28467 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28468 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28469     DeviceGroupCommandBufferBeginInfo & operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28470     {
28471       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo const *>( &rhs );
28472       return *this;
28473     }
28474 
28475 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28476     VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28477     {
28478       pNext = pNext_;
28479       return *this;
28480     }
28481 
setDeviceMaskVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28482     VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
28483     {
28484       deviceMask = deviceMask_;
28485       return *this;
28486     }
28487 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28488 
operator VkDeviceGroupCommandBufferBeginInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28489     operator VkDeviceGroupCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT
28490     {
28491       return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo *>( this );
28492     }
28493 
operator VkDeviceGroupCommandBufferBeginInfo&VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28494     operator VkDeviceGroupCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT
28495     {
28496       return *reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo *>( this );
28497     }
28498 
28499 #if defined( VULKAN_HPP_USE_REFLECT )
28500 #  if 14 <= VULKAN_HPP_CPP_VERSION
28501     auto
28502 #  else
28503     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
28504 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28505       reflect() const VULKAN_HPP_NOEXCEPT
28506     {
28507       return std::tie( sType, pNext, deviceMask );
28508     }
28509 #endif
28510 
28511 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28512     auto operator<=>( DeviceGroupCommandBufferBeginInfo const & ) const = default;
28513 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28514     bool operator==( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28515     {
28516 #  if defined( VULKAN_HPP_USE_REFLECT )
28517       return this->reflect() == rhs.reflect();
28518 #  else
28519       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMask == rhs.deviceMask );
28520 #  endif
28521     }
28522 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28523     bool operator!=( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28524     {
28525       return !operator==( rhs );
28526     }
28527 #endif
28528 
28529   public:
28530     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eDeviceGroupCommandBufferBeginInfo;
28531     const void *                        pNext      = {};
28532     uint32_t                            deviceMask = {};
28533   };
28534 
28535   template <>
28536   struct CppType<StructureType, StructureType::eDeviceGroupCommandBufferBeginInfo>
28537   {
28538     using Type = DeviceGroupCommandBufferBeginInfo;
28539   };
28540 
28541   using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
28542 
28543   struct DeviceGroupDeviceCreateInfo
28544   {
28545     using NativeType = VkDeviceGroupDeviceCreateInfo;
28546 
28547     static const bool                                  allowDuplicate = false;
28548     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupDeviceCreateInfo;
28549 
28550 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28551     VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo( uint32_t                                     physicalDeviceCount_ = {},
28552                                                       const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices_    = {},
28553                                                       const void *                                 pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
28554       : pNext{ pNext_ }
28555       , physicalDeviceCount{ physicalDeviceCount_ }
28556       , pPhysicalDevices{ pPhysicalDevices_ }
28557     {
28558     }
28559 
28560     VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28561 
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28562     DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28563       : DeviceGroupDeviceCreateInfo( *reinterpret_cast<DeviceGroupDeviceCreateInfo const *>( &rhs ) )
28564     {
28565     }
28566 
28567 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28568     DeviceGroupDeviceCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PhysicalDevice> const & physicalDevices_,
28569                                  const void *                                                                                      pNext_ = nullptr )
28570       : pNext( pNext_ ), physicalDeviceCount( static_cast<uint32_t>( physicalDevices_.size() ) ), pPhysicalDevices( physicalDevices_.data() )
28571     {
28572     }
28573 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28574 
28575     DeviceGroupDeviceCreateInfo & operator=( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28576 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28577 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28578     DeviceGroupDeviceCreateInfo & operator=( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28579     {
28580       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo const *>( &rhs );
28581       return *this;
28582     }
28583 
28584 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28585     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28586     {
28587       pNext = pNext_;
28588       return *this;
28589     }
28590 
setPhysicalDeviceCountVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28591     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPhysicalDeviceCount( uint32_t physicalDeviceCount_ ) VULKAN_HPP_NOEXCEPT
28592     {
28593       physicalDeviceCount = physicalDeviceCount_;
28594       return *this;
28595     }
28596 
28597     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo &
setPPhysicalDevicesVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28598       setPPhysicalDevices( const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices_ ) VULKAN_HPP_NOEXCEPT
28599     {
28600       pPhysicalDevices = pPhysicalDevices_;
28601       return *this;
28602     }
28603 
28604 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPhysicalDevicesVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28605     DeviceGroupDeviceCreateInfo & setPhysicalDevices(
28606       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PhysicalDevice> const & physicalDevices_ ) VULKAN_HPP_NOEXCEPT
28607     {
28608       physicalDeviceCount = static_cast<uint32_t>( physicalDevices_.size() );
28609       pPhysicalDevices    = physicalDevices_.data();
28610       return *this;
28611     }
28612 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28613 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28614 
operator VkDeviceGroupDeviceCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28615     operator VkDeviceGroupDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
28616     {
28617       return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfo *>( this );
28618     }
28619 
operator VkDeviceGroupDeviceCreateInfo&VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28620     operator VkDeviceGroupDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT
28621     {
28622       return *reinterpret_cast<VkDeviceGroupDeviceCreateInfo *>( this );
28623     }
28624 
28625 #if defined( VULKAN_HPP_USE_REFLECT )
28626 #  if 14 <= VULKAN_HPP_CPP_VERSION
28627     auto
28628 #  else
28629     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PhysicalDevice * const &>
28630 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28631       reflect() const VULKAN_HPP_NOEXCEPT
28632     {
28633       return std::tie( sType, pNext, physicalDeviceCount, pPhysicalDevices );
28634     }
28635 #endif
28636 
28637 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28638     auto operator<=>( DeviceGroupDeviceCreateInfo const & ) const = default;
28639 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28640     bool operator==( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28641     {
28642 #  if defined( VULKAN_HPP_USE_REFLECT )
28643       return this->reflect() == rhs.reflect();
28644 #  else
28645       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( physicalDeviceCount == rhs.physicalDeviceCount ) &&
28646              ( pPhysicalDevices == rhs.pPhysicalDevices );
28647 #  endif
28648     }
28649 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28650     bool operator!=( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28651     {
28652       return !operator==( rhs );
28653     }
28654 #endif
28655 
28656   public:
28657     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::eDeviceGroupDeviceCreateInfo;
28658     const void *                                 pNext               = {};
28659     uint32_t                                     physicalDeviceCount = {};
28660     const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices    = {};
28661   };
28662 
28663   template <>
28664   struct CppType<StructureType, StructureType::eDeviceGroupDeviceCreateInfo>
28665   {
28666     using Type = DeviceGroupDeviceCreateInfo;
28667   };
28668 
28669   using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
28670 
28671   struct DeviceGroupPresentCapabilitiesKHR
28672   {
28673     using NativeType = VkDeviceGroupPresentCapabilitiesKHR;
28674 
28675     static const bool                                  allowDuplicate = false;
28676     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupPresentCapabilitiesKHR;
28677 
28678 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupPresentCapabilitiesKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28679     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR( std::array<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> const & presentMask_ = {},
28680                                                                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR   modes_       = {},
28681                                                                void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
28682       : pNext{ pNext_ }
28683       , presentMask{ presentMask_ }
28684       , modes{ modes_ }
28685     {
28686     }
28687 
28688     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28689 
DeviceGroupPresentCapabilitiesKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28690     DeviceGroupPresentCapabilitiesKHR( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
28691       : DeviceGroupPresentCapabilitiesKHR( *reinterpret_cast<DeviceGroupPresentCapabilitiesKHR const *>( &rhs ) )
28692     {
28693     }
28694 
28695     DeviceGroupPresentCapabilitiesKHR & operator=( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28696 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28697 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28698     DeviceGroupPresentCapabilitiesKHR & operator=( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
28699     {
28700       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR const *>( &rhs );
28701       return *this;
28702     }
28703 
operator VkDeviceGroupPresentCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28704     operator VkDeviceGroupPresentCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
28705     {
28706       return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHR *>( this );
28707     }
28708 
operator VkDeviceGroupPresentCapabilitiesKHR&VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28709     operator VkDeviceGroupPresentCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
28710     {
28711       return *reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR *>( this );
28712     }
28713 
28714 #if defined( VULKAN_HPP_USE_REFLECT )
28715 #  if 14 <= VULKAN_HPP_CPP_VERSION
28716     auto
28717 #  else
28718     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28719                void * const &,
28720                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> const &,
28721                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR const &>
28722 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28723       reflect() const VULKAN_HPP_NOEXCEPT
28724     {
28725       return std::tie( sType, pNext, presentMask, modes );
28726     }
28727 #endif
28728 
28729 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28730     auto operator<=>( DeviceGroupPresentCapabilitiesKHR const & ) const = default;
28731 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28732     bool operator==( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
28733     {
28734 #  if defined( VULKAN_HPP_USE_REFLECT )
28735       return this->reflect() == rhs.reflect();
28736 #  else
28737       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentMask == rhs.presentMask ) && ( modes == rhs.modes );
28738 #  endif
28739     }
28740 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28741     bool operator!=( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
28742     {
28743       return !operator==( rhs );
28744     }
28745 #endif
28746 
28747   public:
28748     VULKAN_HPP_NAMESPACE::StructureType                                      sType       = StructureType::eDeviceGroupPresentCapabilitiesKHR;
28749     void *                                                                   pNext       = {};
28750     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> presentMask = {};
28751     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR                     modes       = {};
28752   };
28753 
28754   template <>
28755   struct CppType<StructureType, StructureType::eDeviceGroupPresentCapabilitiesKHR>
28756   {
28757     using Type = DeviceGroupPresentCapabilitiesKHR;
28758   };
28759 
28760   struct DeviceGroupPresentInfoKHR
28761   {
28762     using NativeType = VkDeviceGroupPresentInfoKHR;
28763 
28764     static const bool                                  allowDuplicate = false;
28765     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupPresentInfoKHR;
28766 
28767 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28768     VULKAN_HPP_CONSTEXPR DeviceGroupPresentInfoKHR(
28769       uint32_t                                                swapchainCount_ = {},
28770       const uint32_t *                                        pDeviceMasks_   = {},
28771       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_           = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal,
28772       const void *                                            pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
28773       : pNext{ pNext_ }
28774       , swapchainCount{ swapchainCount_ }
28775       , pDeviceMasks{ pDeviceMasks_ }
28776       , mode{ mode_ }
28777     {
28778     }
28779 
28780     VULKAN_HPP_CONSTEXPR DeviceGroupPresentInfoKHR( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28781 
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28782     DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
28783       : DeviceGroupPresentInfoKHR( *reinterpret_cast<DeviceGroupPresentInfoKHR const *>( &rhs ) )
28784     {
28785     }
28786 
28787 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28788     DeviceGroupPresentInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceMasks_,
28789                                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_  = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal,
28790                                const void *                                            pNext_ = nullptr )
28791       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( deviceMasks_.size() ) ), pDeviceMasks( deviceMasks_.data() ), mode( mode_ )
28792     {
28793     }
28794 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28795 
28796     DeviceGroupPresentInfoKHR & operator=( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28797 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28798 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28799     DeviceGroupPresentInfoKHR & operator=( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
28800     {
28801       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR const *>( &rhs );
28802       return *this;
28803     }
28804 
28805 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28806     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28807     {
28808       pNext = pNext_;
28809       return *this;
28810     }
28811 
setSwapchainCountVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28812     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
28813     {
28814       swapchainCount = swapchainCount_;
28815       return *this;
28816     }
28817 
setPDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28818     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setPDeviceMasks( const uint32_t * pDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
28819     {
28820       pDeviceMasks = pDeviceMasks_;
28821       return *this;
28822     }
28823 
28824 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28825     DeviceGroupPresentInfoKHR & setDeviceMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceMasks_ ) VULKAN_HPP_NOEXCEPT
28826     {
28827       swapchainCount = static_cast<uint32_t>( deviceMasks_.size() );
28828       pDeviceMasks   = deviceMasks_.data();
28829       return *this;
28830     }
28831 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28832 
setModeVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28833     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setMode( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ ) VULKAN_HPP_NOEXCEPT
28834     {
28835       mode = mode_;
28836       return *this;
28837     }
28838 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28839 
operator VkDeviceGroupPresentInfoKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28840     operator VkDeviceGroupPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
28841     {
28842       return *reinterpret_cast<const VkDeviceGroupPresentInfoKHR *>( this );
28843     }
28844 
operator VkDeviceGroupPresentInfoKHR&VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28845     operator VkDeviceGroupPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
28846     {
28847       return *reinterpret_cast<VkDeviceGroupPresentInfoKHR *>( this );
28848     }
28849 
28850 #if defined( VULKAN_HPP_USE_REFLECT )
28851 #  if 14 <= VULKAN_HPP_CPP_VERSION
28852     auto
28853 #  else
28854     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28855                const void * const &,
28856                uint32_t const &,
28857                const uint32_t * const &,
28858                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR const &>
28859 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28860       reflect() const VULKAN_HPP_NOEXCEPT
28861     {
28862       return std::tie( sType, pNext, swapchainCount, pDeviceMasks, mode );
28863     }
28864 #endif
28865 
28866 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28867     auto operator<=>( DeviceGroupPresentInfoKHR const & ) const = default;
28868 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28869     bool operator==( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
28870     {
28871 #  if defined( VULKAN_HPP_USE_REFLECT )
28872       return this->reflect() == rhs.reflect();
28873 #  else
28874       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pDeviceMasks == rhs.pDeviceMasks ) &&
28875              ( mode == rhs.mode );
28876 #  endif
28877     }
28878 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28879     bool operator!=( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
28880     {
28881       return !operator==( rhs );
28882     }
28883 #endif
28884 
28885   public:
28886     VULKAN_HPP_NAMESPACE::StructureType                     sType          = StructureType::eDeviceGroupPresentInfoKHR;
28887     const void *                                            pNext          = {};
28888     uint32_t                                                swapchainCount = {};
28889     const uint32_t *                                        pDeviceMasks   = {};
28890     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode           = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal;
28891   };
28892 
28893   template <>
28894   struct CppType<StructureType, StructureType::eDeviceGroupPresentInfoKHR>
28895   {
28896     using Type = DeviceGroupPresentInfoKHR;
28897   };
28898 
28899   struct DeviceGroupRenderPassBeginInfo
28900   {
28901     using NativeType = VkDeviceGroupRenderPassBeginInfo;
28902 
28903     static const bool                                  allowDuplicate = false;
28904     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupRenderPassBeginInfo;
28905 
28906 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28907     VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo( uint32_t                             deviceMask_            = {},
28908                                                          uint32_t                             deviceRenderAreaCount_ = {},
28909                                                          const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas_    = {},
28910                                                          const void *                         pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
28911       : pNext{ pNext_ }
28912       , deviceMask{ deviceMask_ }
28913       , deviceRenderAreaCount{ deviceRenderAreaCount_ }
28914       , pDeviceRenderAreas{ pDeviceRenderAreas_ }
28915     {
28916     }
28917 
28918     VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28919 
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28920     DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28921       : DeviceGroupRenderPassBeginInfo( *reinterpret_cast<DeviceGroupRenderPassBeginInfo const *>( &rhs ) )
28922     {
28923     }
28924 
28925 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28926     DeviceGroupRenderPassBeginInfo( uint32_t                                                                                  deviceMask_,
28927                                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & deviceRenderAreas_,
28928                                     const void *                                                                              pNext_ = nullptr )
28929       : pNext( pNext_ )
28930       , deviceMask( deviceMask_ )
28931       , deviceRenderAreaCount( static_cast<uint32_t>( deviceRenderAreas_.size() ) )
28932       , pDeviceRenderAreas( deviceRenderAreas_.data() )
28933     {
28934     }
28935 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28936 
28937     DeviceGroupRenderPassBeginInfo & operator=( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28938 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28939 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28940     DeviceGroupRenderPassBeginInfo & operator=( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28941     {
28942       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo const *>( &rhs );
28943       return *this;
28944     }
28945 
28946 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28947     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28948     {
28949       pNext = pNext_;
28950       return *this;
28951     }
28952 
setDeviceMaskVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28953     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
28954     {
28955       deviceMask = deviceMask_;
28956       return *this;
28957     }
28958 
setDeviceRenderAreaCountVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28959     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ ) VULKAN_HPP_NOEXCEPT
28960     {
28961       deviceRenderAreaCount = deviceRenderAreaCount_;
28962       return *this;
28963     }
28964 
28965     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo &
setPDeviceRenderAreasVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28966       setPDeviceRenderAreas( const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT
28967     {
28968       pDeviceRenderAreas = pDeviceRenderAreas_;
28969       return *this;
28970     }
28971 
28972 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
28973     DeviceGroupRenderPassBeginInfo &
setDeviceRenderAreasVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28974       setDeviceRenderAreas( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & deviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT
28975     {
28976       deviceRenderAreaCount = static_cast<uint32_t>( deviceRenderAreas_.size() );
28977       pDeviceRenderAreas    = deviceRenderAreas_.data();
28978       return *this;
28979     }
28980 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28981 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28982 
operator VkDeviceGroupRenderPassBeginInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28983     operator VkDeviceGroupRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
28984     {
28985       return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo *>( this );
28986     }
28987 
operator VkDeviceGroupRenderPassBeginInfo&VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28988     operator VkDeviceGroupRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT
28989     {
28990       return *reinterpret_cast<VkDeviceGroupRenderPassBeginInfo *>( this );
28991     }
28992 
28993 #if defined( VULKAN_HPP_USE_REFLECT )
28994 #  if 14 <= VULKAN_HPP_CPP_VERSION
28995     auto
28996 #  else
28997     std::
28998       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Rect2D * const &>
28999 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo29000       reflect() const VULKAN_HPP_NOEXCEPT
29001     {
29002       return std::tie( sType, pNext, deviceMask, deviceRenderAreaCount, pDeviceRenderAreas );
29003     }
29004 #endif
29005 
29006 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29007     auto operator<=>( DeviceGroupRenderPassBeginInfo const & ) const = default;
29008 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo29009     bool operator==( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29010     {
29011 #  if defined( VULKAN_HPP_USE_REFLECT )
29012       return this->reflect() == rhs.reflect();
29013 #  else
29014       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMask == rhs.deviceMask ) && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount ) &&
29015              ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
29016 #  endif
29017     }
29018 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo29019     bool operator!=( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29020     {
29021       return !operator==( rhs );
29022     }
29023 #endif
29024 
29025   public:
29026     VULKAN_HPP_NAMESPACE::StructureType  sType                 = StructureType::eDeviceGroupRenderPassBeginInfo;
29027     const void *                         pNext                 = {};
29028     uint32_t                             deviceMask            = {};
29029     uint32_t                             deviceRenderAreaCount = {};
29030     const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas    = {};
29031   };
29032 
29033   template <>
29034   struct CppType<StructureType, StructureType::eDeviceGroupRenderPassBeginInfo>
29035   {
29036     using Type = DeviceGroupRenderPassBeginInfo;
29037   };
29038 
29039   using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
29040 
29041   struct DeviceGroupSubmitInfo
29042   {
29043     using NativeType = VkDeviceGroupSubmitInfo;
29044 
29045     static const bool                                  allowDuplicate = false;
29046     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupSubmitInfo;
29047 
29048 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29049     VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo( uint32_t         waitSemaphoreCount_            = {},
29050                                                 const uint32_t * pWaitSemaphoreDeviceIndices_   = {},
29051                                                 uint32_t         commandBufferCount_            = {},
29052                                                 const uint32_t * pCommandBufferDeviceMasks_     = {},
29053                                                 uint32_t         signalSemaphoreCount_          = {},
29054                                                 const uint32_t * pSignalSemaphoreDeviceIndices_ = {},
29055                                                 const void *     pNext_                         = nullptr ) VULKAN_HPP_NOEXCEPT
29056       : pNext{ pNext_ }
29057       , waitSemaphoreCount{ waitSemaphoreCount_ }
29058       , pWaitSemaphoreDeviceIndices{ pWaitSemaphoreDeviceIndices_ }
29059       , commandBufferCount{ commandBufferCount_ }
29060       , pCommandBufferDeviceMasks{ pCommandBufferDeviceMasks_ }
29061       , signalSemaphoreCount{ signalSemaphoreCount_ }
29062       , pSignalSemaphoreDeviceIndices{ pSignalSemaphoreDeviceIndices_ }
29063     {
29064     }
29065 
29066     VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29067 
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29068     DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29069       : DeviceGroupSubmitInfo( *reinterpret_cast<DeviceGroupSubmitInfo const *>( &rhs ) )
29070     {
29071     }
29072 
29073 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29074     DeviceGroupSubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & waitSemaphoreDeviceIndices_,
29075                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & commandBufferDeviceMasks_     = {},
29076                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & signalSemaphoreDeviceIndices_ = {},
29077                            const void *                                                          pNext_                        = nullptr )
29078       : pNext( pNext_ )
29079       , waitSemaphoreCount( static_cast<uint32_t>( waitSemaphoreDeviceIndices_.size() ) )
29080       , pWaitSemaphoreDeviceIndices( waitSemaphoreDeviceIndices_.data() )
29081       , commandBufferCount( static_cast<uint32_t>( commandBufferDeviceMasks_.size() ) )
29082       , pCommandBufferDeviceMasks( commandBufferDeviceMasks_.data() )
29083       , signalSemaphoreCount( static_cast<uint32_t>( signalSemaphoreDeviceIndices_.size() ) )
29084       , pSignalSemaphoreDeviceIndices( signalSemaphoreDeviceIndices_.data() )
29085     {
29086     }
29087 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29088 
29089     DeviceGroupSubmitInfo & operator=( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29090 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29091 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29092     DeviceGroupSubmitInfo & operator=( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29093     {
29094       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo const *>( &rhs );
29095       return *this;
29096     }
29097 
29098 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29099     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29100     {
29101       pNext = pNext_;
29102       return *this;
29103     }
29104 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29105     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
29106     {
29107       waitSemaphoreCount = waitSemaphoreCount_;
29108       return *this;
29109     }
29110 
setPWaitSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29111     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPWaitSemaphoreDeviceIndices( const uint32_t * pWaitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
29112     {
29113       pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
29114       return *this;
29115     }
29116 
29117 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
29118     DeviceGroupSubmitInfo &
setWaitSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29119       setWaitSemaphoreDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & waitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
29120     {
29121       waitSemaphoreCount          = static_cast<uint32_t>( waitSemaphoreDeviceIndices_.size() );
29122       pWaitSemaphoreDeviceIndices = waitSemaphoreDeviceIndices_.data();
29123       return *this;
29124     }
29125 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29126 
setCommandBufferCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29127     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
29128     {
29129       commandBufferCount = commandBufferCount_;
29130       return *this;
29131     }
29132 
setPCommandBufferDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29133     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPCommandBufferDeviceMasks( const uint32_t * pCommandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
29134     {
29135       pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
29136       return *this;
29137     }
29138 
29139 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
29140     DeviceGroupSubmitInfo &
setCommandBufferDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29141       setCommandBufferDeviceMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & commandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
29142     {
29143       commandBufferCount        = static_cast<uint32_t>( commandBufferDeviceMasks_.size() );
29144       pCommandBufferDeviceMasks = commandBufferDeviceMasks_.data();
29145       return *this;
29146     }
29147 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29148 
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29149     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
29150     {
29151       signalSemaphoreCount = signalSemaphoreCount_;
29152       return *this;
29153     }
29154 
setPSignalSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29155     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPSignalSemaphoreDeviceIndices( const uint32_t * pSignalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
29156     {
29157       pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
29158       return *this;
29159     }
29160 
29161 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
29162     DeviceGroupSubmitInfo &
setSignalSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29163       setSignalSemaphoreDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & signalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
29164     {
29165       signalSemaphoreCount          = static_cast<uint32_t>( signalSemaphoreDeviceIndices_.size() );
29166       pSignalSemaphoreDeviceIndices = signalSemaphoreDeviceIndices_.data();
29167       return *this;
29168     }
29169 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29170 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29171 
operator VkDeviceGroupSubmitInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29172     operator VkDeviceGroupSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
29173     {
29174       return *reinterpret_cast<const VkDeviceGroupSubmitInfo *>( this );
29175     }
29176 
operator VkDeviceGroupSubmitInfo&VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29177     operator VkDeviceGroupSubmitInfo &() VULKAN_HPP_NOEXCEPT
29178     {
29179       return *reinterpret_cast<VkDeviceGroupSubmitInfo *>( this );
29180     }
29181 
29182 #if defined( VULKAN_HPP_USE_REFLECT )
29183 #  if 14 <= VULKAN_HPP_CPP_VERSION
29184     auto
29185 #  else
29186     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29187                const void * const &,
29188                uint32_t const &,
29189                const uint32_t * const &,
29190                uint32_t const &,
29191                const uint32_t * const &,
29192                uint32_t const &,
29193                const uint32_t * const &>
29194 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29195       reflect() const VULKAN_HPP_NOEXCEPT
29196     {
29197       return std::tie( sType,
29198                        pNext,
29199                        waitSemaphoreCount,
29200                        pWaitSemaphoreDeviceIndices,
29201                        commandBufferCount,
29202                        pCommandBufferDeviceMasks,
29203                        signalSemaphoreCount,
29204                        pSignalSemaphoreDeviceIndices );
29205     }
29206 #endif
29207 
29208 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29209     auto operator<=>( DeviceGroupSubmitInfo const & ) const = default;
29210 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29211     bool operator==( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29212     {
29213 #  if defined( VULKAN_HPP_USE_REFLECT )
29214       return this->reflect() == rhs.reflect();
29215 #  else
29216       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) &&
29217              ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices ) && ( commandBufferCount == rhs.commandBufferCount ) &&
29218              ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks ) && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) &&
29219              ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
29220 #  endif
29221     }
29222 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo29223     bool operator!=( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29224     {
29225       return !operator==( rhs );
29226     }
29227 #endif
29228 
29229   public:
29230     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::eDeviceGroupSubmitInfo;
29231     const void *                        pNext                         = {};
29232     uint32_t                            waitSemaphoreCount            = {};
29233     const uint32_t *                    pWaitSemaphoreDeviceIndices   = {};
29234     uint32_t                            commandBufferCount            = {};
29235     const uint32_t *                    pCommandBufferDeviceMasks     = {};
29236     uint32_t                            signalSemaphoreCount          = {};
29237     const uint32_t *                    pSignalSemaphoreDeviceIndices = {};
29238   };
29239 
29240   template <>
29241   struct CppType<StructureType, StructureType::eDeviceGroupSubmitInfo>
29242   {
29243     using Type = DeviceGroupSubmitInfo;
29244   };
29245 
29246   using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
29247 
29248   struct DeviceGroupSwapchainCreateInfoKHR
29249   {
29250     using NativeType = VkDeviceGroupSwapchainCreateInfoKHR;
29251 
29252     static const bool                                  allowDuplicate = false;
29253     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
29254 
29255 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29256     VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ = {},
29257                                                             const void *                                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
29258       : pNext{ pNext_ }
29259       , modes{ modes_ }
29260     {
29261     }
29262 
29263     VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29264 
DeviceGroupSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29265     DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29266       : DeviceGroupSwapchainCreateInfoKHR( *reinterpret_cast<DeviceGroupSwapchainCreateInfoKHR const *>( &rhs ) )
29267     {
29268     }
29269 
29270     DeviceGroupSwapchainCreateInfoKHR & operator=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29271 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29272 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29273     DeviceGroupSwapchainCreateInfoKHR & operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29274     {
29275       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR const *>( &rhs );
29276       return *this;
29277     }
29278 
29279 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29280     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29281     {
29282       pNext = pNext_;
29283       return *this;
29284     }
29285 
setModesVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29286     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & setModes( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ ) VULKAN_HPP_NOEXCEPT
29287     {
29288       modes = modes_;
29289       return *this;
29290     }
29291 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29292 
operator VkDeviceGroupSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29293     operator VkDeviceGroupSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
29294     {
29295       return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR *>( this );
29296     }
29297 
operator VkDeviceGroupSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29298     operator VkDeviceGroupSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
29299     {
29300       return *reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR *>( this );
29301     }
29302 
29303 #if defined( VULKAN_HPP_USE_REFLECT )
29304 #  if 14 <= VULKAN_HPP_CPP_VERSION
29305     auto
29306 #  else
29307     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR const &>
29308 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29309       reflect() const VULKAN_HPP_NOEXCEPT
29310     {
29311       return std::tie( sType, pNext, modes );
29312     }
29313 #endif
29314 
29315 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29316     auto operator<=>( DeviceGroupSwapchainCreateInfoKHR const & ) const = default;
29317 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29318     bool operator==( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29319     {
29320 #  if defined( VULKAN_HPP_USE_REFLECT )
29321       return this->reflect() == rhs.reflect();
29322 #  else
29323       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( modes == rhs.modes );
29324 #  endif
29325     }
29326 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29327     bool operator!=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29328     {
29329       return !operator==( rhs );
29330     }
29331 #endif
29332 
29333   public:
29334     VULKAN_HPP_NAMESPACE::StructureType                  sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
29335     const void *                                         pNext = {};
29336     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {};
29337   };
29338 
29339   template <>
29340   struct CppType<StructureType, StructureType::eDeviceGroupSwapchainCreateInfoKHR>
29341   {
29342     using Type = DeviceGroupSwapchainCreateInfoKHR;
29343   };
29344 
29345   struct ImageCreateInfo
29346   {
29347     using NativeType = VkImageCreateInfo;
29348 
29349     static const bool                                  allowDuplicate = false;
29350     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCreateInfo;
29351 
29352 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo29353     VULKAN_HPP_CONSTEXPR ImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags    flags_                 = {},
29354                                           VULKAN_HPP_NAMESPACE::ImageType           imageType_             = VULKAN_HPP_NAMESPACE::ImageType::e1D,
29355                                           VULKAN_HPP_NAMESPACE::Format              format_                = VULKAN_HPP_NAMESPACE::Format::eUndefined,
29356                                           VULKAN_HPP_NAMESPACE::Extent3D            extent_                = {},
29357                                           uint32_t                                  mipLevels_             = {},
29358                                           uint32_t                                  arrayLayers_           = {},
29359                                           VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_               = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
29360                                           VULKAN_HPP_NAMESPACE::ImageTiling         tiling_                = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal,
29361                                           VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage_                 = {},
29362                                           VULKAN_HPP_NAMESPACE::SharingMode         sharingMode_           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
29363                                           uint32_t                                  queueFamilyIndexCount_ = {},
29364                                           const uint32_t *                          pQueueFamilyIndices_   = {},
29365                                           VULKAN_HPP_NAMESPACE::ImageLayout         initialLayout_         = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
29366                                           const void *                              pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
29367       : pNext{ pNext_ }
29368       , flags{ flags_ }
29369       , imageType{ imageType_ }
29370       , format{ format_ }
29371       , extent{ extent_ }
29372       , mipLevels{ mipLevels_ }
29373       , arrayLayers{ arrayLayers_ }
29374       , samples{ samples_ }
29375       , tiling{ tiling_ }
29376       , usage{ usage_ }
29377       , sharingMode{ sharingMode_ }
29378       , queueFamilyIndexCount{ queueFamilyIndexCount_ }
29379       , pQueueFamilyIndices{ pQueueFamilyIndices_ }
29380       , initialLayout{ initialLayout_ }
29381     {
29382     }
29383 
29384     VULKAN_HPP_CONSTEXPR ImageCreateInfo( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29385 
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo29386     ImageCreateInfo( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCreateInfo( *reinterpret_cast<ImageCreateInfo const *>( &rhs ) ) {}
29387 
29388 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo29389     ImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags                                flags_,
29390                      VULKAN_HPP_NAMESPACE::ImageType                                       imageType_,
29391                      VULKAN_HPP_NAMESPACE::Format                                          format_,
29392                      VULKAN_HPP_NAMESPACE::Extent3D                                        extent_,
29393                      uint32_t                                                              mipLevels_,
29394                      uint32_t                                                              arrayLayers_,
29395                      VULKAN_HPP_NAMESPACE::SampleCountFlagBits                             samples_,
29396                      VULKAN_HPP_NAMESPACE::ImageTiling                                     tiling_,
29397                      VULKAN_HPP_NAMESPACE::ImageUsageFlags                                 usage_,
29398                      VULKAN_HPP_NAMESPACE::SharingMode                                     sharingMode_,
29399                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_,
29400                      VULKAN_HPP_NAMESPACE::ImageLayout                                     initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
29401                      const void *                                                          pNext_         = nullptr )
29402       : pNext( pNext_ )
29403       , flags( flags_ )
29404       , imageType( imageType_ )
29405       , format( format_ )
29406       , extent( extent_ )
29407       , mipLevels( mipLevels_ )
29408       , arrayLayers( arrayLayers_ )
29409       , samples( samples_ )
29410       , tiling( tiling_ )
29411       , usage( usage_ )
29412       , sharingMode( sharingMode_ )
29413       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
29414       , pQueueFamilyIndices( queueFamilyIndices_.data() )
29415       , initialLayout( initialLayout_ )
29416     {
29417     }
29418 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29419 
29420     ImageCreateInfo & operator=( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29421 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29422 
operator =VULKAN_HPP_NAMESPACE::ImageCreateInfo29423     ImageCreateInfo & operator=( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29424     {
29425       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCreateInfo const *>( &rhs );
29426       return *this;
29427     }
29428 
29429 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCreateInfo29430     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29431     {
29432       pNext = pNext_;
29433       return *this;
29434     }
29435 
setFlagsVULKAN_HPP_NAMESPACE::ImageCreateInfo29436     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
29437     {
29438       flags = flags_;
29439       return *this;
29440     }
29441 
setImageTypeVULKAN_HPP_NAMESPACE::ImageCreateInfo29442     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setImageType( VULKAN_HPP_NAMESPACE::ImageType imageType_ ) VULKAN_HPP_NOEXCEPT
29443     {
29444       imageType = imageType_;
29445       return *this;
29446     }
29447 
setFormatVULKAN_HPP_NAMESPACE::ImageCreateInfo29448     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
29449     {
29450       format = format_;
29451       return *this;
29452     }
29453 
setExtentVULKAN_HPP_NAMESPACE::ImageCreateInfo29454     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
29455     {
29456       extent = extent_;
29457       return *this;
29458     }
29459 
setMipLevelsVULKAN_HPP_NAMESPACE::ImageCreateInfo29460     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setMipLevels( uint32_t mipLevels_ ) VULKAN_HPP_NOEXCEPT
29461     {
29462       mipLevels = mipLevels_;
29463       return *this;
29464     }
29465 
setArrayLayersVULKAN_HPP_NAMESPACE::ImageCreateInfo29466     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setArrayLayers( uint32_t arrayLayers_ ) VULKAN_HPP_NOEXCEPT
29467     {
29468       arrayLayers = arrayLayers_;
29469       return *this;
29470     }
29471 
setSamplesVULKAN_HPP_NAMESPACE::ImageCreateInfo29472     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
29473     {
29474       samples = samples_;
29475       return *this;
29476     }
29477 
setTilingVULKAN_HPP_NAMESPACE::ImageCreateInfo29478     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
29479     {
29480       tiling = tiling_;
29481       return *this;
29482     }
29483 
setUsageVULKAN_HPP_NAMESPACE::ImageCreateInfo29484     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
29485     {
29486       usage = usage_;
29487       return *this;
29488     }
29489 
setSharingModeVULKAN_HPP_NAMESPACE::ImageCreateInfo29490     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
29491     {
29492       sharingMode = sharingMode_;
29493       return *this;
29494     }
29495 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::ImageCreateInfo29496     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
29497     {
29498       queueFamilyIndexCount = queueFamilyIndexCount_;
29499       return *this;
29500     }
29501 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::ImageCreateInfo29502     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
29503     {
29504       pQueueFamilyIndices = pQueueFamilyIndices_;
29505       return *this;
29506     }
29507 
29508 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::ImageCreateInfo29509     ImageCreateInfo & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
29510     {
29511       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
29512       pQueueFamilyIndices   = queueFamilyIndices_.data();
29513       return *this;
29514     }
29515 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29516 
setInitialLayoutVULKAN_HPP_NAMESPACE::ImageCreateInfo29517     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
29518     {
29519       initialLayout = initialLayout_;
29520       return *this;
29521     }
29522 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29523 
operator VkImageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageCreateInfo29524     operator VkImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
29525     {
29526       return *reinterpret_cast<const VkImageCreateInfo *>( this );
29527     }
29528 
operator VkImageCreateInfo&VULKAN_HPP_NAMESPACE::ImageCreateInfo29529     operator VkImageCreateInfo &() VULKAN_HPP_NOEXCEPT
29530     {
29531       return *reinterpret_cast<VkImageCreateInfo *>( this );
29532     }
29533 
29534 #if defined( VULKAN_HPP_USE_REFLECT )
29535 #  if 14 <= VULKAN_HPP_CPP_VERSION
29536     auto
29537 #  else
29538     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29539                const void * const &,
29540                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &,
29541                VULKAN_HPP_NAMESPACE::ImageType const &,
29542                VULKAN_HPP_NAMESPACE::Format const &,
29543                VULKAN_HPP_NAMESPACE::Extent3D const &,
29544                uint32_t const &,
29545                uint32_t const &,
29546                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
29547                VULKAN_HPP_NAMESPACE::ImageTiling const &,
29548                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
29549                VULKAN_HPP_NAMESPACE::SharingMode const &,
29550                uint32_t const &,
29551                const uint32_t * const &,
29552                VULKAN_HPP_NAMESPACE::ImageLayout const &>
29553 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCreateInfo29554       reflect() const VULKAN_HPP_NOEXCEPT
29555     {
29556       return std::tie( sType,
29557                        pNext,
29558                        flags,
29559                        imageType,
29560                        format,
29561                        extent,
29562                        mipLevels,
29563                        arrayLayers,
29564                        samples,
29565                        tiling,
29566                        usage,
29567                        sharingMode,
29568                        queueFamilyIndexCount,
29569                        pQueueFamilyIndices,
29570                        initialLayout );
29571     }
29572 #endif
29573 
29574 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29575     auto operator<=>( ImageCreateInfo const & ) const = default;
29576 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCreateInfo29577     bool operator==( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29578     {
29579 #  if defined( VULKAN_HPP_USE_REFLECT )
29580       return this->reflect() == rhs.reflect();
29581 #  else
29582       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( imageType == rhs.imageType ) && ( format == rhs.format ) &&
29583              ( extent == rhs.extent ) && ( mipLevels == rhs.mipLevels ) && ( arrayLayers == rhs.arrayLayers ) && ( samples == rhs.samples ) &&
29584              ( tiling == rhs.tiling ) && ( usage == rhs.usage ) && ( sharingMode == rhs.sharingMode ) &&
29585              ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ) &&
29586              ( initialLayout == rhs.initialLayout );
29587 #  endif
29588     }
29589 
operator !=VULKAN_HPP_NAMESPACE::ImageCreateInfo29590     bool operator!=( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29591     {
29592       return !operator==( rhs );
29593     }
29594 #endif
29595 
29596   public:
29597     VULKAN_HPP_NAMESPACE::StructureType       sType                 = StructureType::eImageCreateInfo;
29598     const void *                              pNext                 = {};
29599     VULKAN_HPP_NAMESPACE::ImageCreateFlags    flags                 = {};
29600     VULKAN_HPP_NAMESPACE::ImageType           imageType             = VULKAN_HPP_NAMESPACE::ImageType::e1D;
29601     VULKAN_HPP_NAMESPACE::Format              format                = VULKAN_HPP_NAMESPACE::Format::eUndefined;
29602     VULKAN_HPP_NAMESPACE::Extent3D            extent                = {};
29603     uint32_t                                  mipLevels             = {};
29604     uint32_t                                  arrayLayers           = {};
29605     VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples               = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
29606     VULKAN_HPP_NAMESPACE::ImageTiling         tiling                = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
29607     VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage                 = {};
29608     VULKAN_HPP_NAMESPACE::SharingMode         sharingMode           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
29609     uint32_t                                  queueFamilyIndexCount = {};
29610     const uint32_t *                          pQueueFamilyIndices   = {};
29611     VULKAN_HPP_NAMESPACE::ImageLayout         initialLayout         = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
29612   };
29613 
29614   template <>
29615   struct CppType<StructureType, StructureType::eImageCreateInfo>
29616   {
29617     using Type = ImageCreateInfo;
29618   };
29619 
29620   struct DeviceImageMemoryRequirements
29621   {
29622     using NativeType = VkDeviceImageMemoryRequirements;
29623 
29624     static const bool                                  allowDuplicate = false;
29625     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceImageMemoryRequirements;
29626 
29627 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
29628     VULKAN_HPP_CONSTEXPR
DeviceImageMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29629       DeviceImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ = {},
29630                                      VULKAN_HPP_NAMESPACE::ImageAspectFlagBits     planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor,
29631                                      const void *                                  pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
29632       : pNext{ pNext_ }
29633       , pCreateInfo{ pCreateInfo_ }
29634       , planeAspect{ planeAspect_ }
29635     {
29636     }
29637 
29638     VULKAN_HPP_CONSTEXPR DeviceImageMemoryRequirements( DeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29639 
DeviceImageMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29640     DeviceImageMemoryRequirements( VkDeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
29641       : DeviceImageMemoryRequirements( *reinterpret_cast<DeviceImageMemoryRequirements const *>( &rhs ) )
29642     {
29643     }
29644 
29645     DeviceImageMemoryRequirements & operator=( DeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29646 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29647 
operator =VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29648     DeviceImageMemoryRequirements & operator=( VkDeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
29649     {
29650       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements const *>( &rhs );
29651       return *this;
29652     }
29653 
29654 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29655     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29656     {
29657       pNext = pNext_;
29658       return *this;
29659     }
29660 
setPCreateInfoVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29661     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPCreateInfo( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT
29662     {
29663       pCreateInfo = pCreateInfo_;
29664       return *this;
29665     }
29666 
setPlaneAspectVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29667     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
29668     {
29669       planeAspect = planeAspect_;
29670       return *this;
29671     }
29672 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29673 
operator VkDeviceImageMemoryRequirements const&VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29674     operator VkDeviceImageMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
29675     {
29676       return *reinterpret_cast<const VkDeviceImageMemoryRequirements *>( this );
29677     }
29678 
operator VkDeviceImageMemoryRequirements&VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29679     operator VkDeviceImageMemoryRequirements &() VULKAN_HPP_NOEXCEPT
29680     {
29681       return *reinterpret_cast<VkDeviceImageMemoryRequirements *>( this );
29682     }
29683 
29684 #if defined( VULKAN_HPP_USE_REFLECT )
29685 #  if 14 <= VULKAN_HPP_CPP_VERSION
29686     auto
29687 #  else
29688     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29689                const void * const &,
29690                const VULKAN_HPP_NAMESPACE::ImageCreateInfo * const &,
29691                VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
29692 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29693       reflect() const VULKAN_HPP_NOEXCEPT
29694     {
29695       return std::tie( sType, pNext, pCreateInfo, planeAspect );
29696     }
29697 #endif
29698 
29699 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29700     auto operator<=>( DeviceImageMemoryRequirements const & ) const = default;
29701 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29702     bool operator==( DeviceImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
29703     {
29704 #  if defined( VULKAN_HPP_USE_REFLECT )
29705       return this->reflect() == rhs.reflect();
29706 #  else
29707       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo ) && ( planeAspect == rhs.planeAspect );
29708 #  endif
29709     }
29710 
operator !=VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29711     bool operator!=( DeviceImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
29712     {
29713       return !operator==( rhs );
29714     }
29715 #endif
29716 
29717   public:
29718     VULKAN_HPP_NAMESPACE::StructureType           sType       = StructureType::eDeviceImageMemoryRequirements;
29719     const void *                                  pNext       = {};
29720     const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo = {};
29721     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits     planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
29722   };
29723 
29724   template <>
29725   struct CppType<StructureType, StructureType::eDeviceImageMemoryRequirements>
29726   {
29727     using Type = DeviceImageMemoryRequirements;
29728   };
29729 
29730   using DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements;
29731 
29732   struct ImageSubresource2
29733   {
29734     using NativeType = VkImageSubresource2;
29735 
29736     static const bool                                  allowDuplicate = false;
29737     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageSubresource2;
29738 
29739 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresource2VULKAN_HPP_NAMESPACE::ImageSubresource229740     VULKAN_HPP_CONSTEXPR ImageSubresource2( VULKAN_HPP_NAMESPACE::ImageSubresource imageSubresource_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
29741       : pNext{ pNext_ }
29742       , imageSubresource{ imageSubresource_ }
29743     {
29744     }
29745 
29746     VULKAN_HPP_CONSTEXPR ImageSubresource2( ImageSubresource2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29747 
ImageSubresource2VULKAN_HPP_NAMESPACE::ImageSubresource229748     ImageSubresource2( VkImageSubresource2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageSubresource2( *reinterpret_cast<ImageSubresource2 const *>( &rhs ) ) {}
29749 
29750     ImageSubresource2 & operator=( ImageSubresource2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29751 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29752 
operator =VULKAN_HPP_NAMESPACE::ImageSubresource229753     ImageSubresource2 & operator=( VkImageSubresource2 const & rhs ) VULKAN_HPP_NOEXCEPT
29754     {
29755       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresource2 const *>( &rhs );
29756       return *this;
29757     }
29758 
29759 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageSubresource229760     VULKAN_HPP_CONSTEXPR_14 ImageSubresource2 & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
29761     {
29762       pNext = pNext_;
29763       return *this;
29764     }
29765 
setImageSubresourceVULKAN_HPP_NAMESPACE::ImageSubresource229766     VULKAN_HPP_CONSTEXPR_14 ImageSubresource2 & setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresource const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
29767     {
29768       imageSubresource = imageSubresource_;
29769       return *this;
29770     }
29771 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29772 
operator VkImageSubresource2 const&VULKAN_HPP_NAMESPACE::ImageSubresource229773     operator VkImageSubresource2 const &() const VULKAN_HPP_NOEXCEPT
29774     {
29775       return *reinterpret_cast<const VkImageSubresource2 *>( this );
29776     }
29777 
operator VkImageSubresource2&VULKAN_HPP_NAMESPACE::ImageSubresource229778     operator VkImageSubresource2 &() VULKAN_HPP_NOEXCEPT
29779     {
29780       return *reinterpret_cast<VkImageSubresource2 *>( this );
29781     }
29782 
29783 #if defined( VULKAN_HPP_USE_REFLECT )
29784 #  if 14 <= VULKAN_HPP_CPP_VERSION
29785     auto
29786 #  else
29787     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageSubresource const &>
29788 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresource229789       reflect() const VULKAN_HPP_NOEXCEPT
29790     {
29791       return std::tie( sType, pNext, imageSubresource );
29792     }
29793 #endif
29794 
29795 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29796     auto operator<=>( ImageSubresource2 const & ) const = default;
29797 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresource229798     bool operator==( ImageSubresource2 const & rhs ) const VULKAN_HPP_NOEXCEPT
29799     {
29800 #  if defined( VULKAN_HPP_USE_REFLECT )
29801       return this->reflect() == rhs.reflect();
29802 #  else
29803       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageSubresource == rhs.imageSubresource );
29804 #  endif
29805     }
29806 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresource229807     bool operator!=( ImageSubresource2 const & rhs ) const VULKAN_HPP_NOEXCEPT
29808     {
29809       return !operator==( rhs );
29810     }
29811 #endif
29812 
29813   public:
29814     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eImageSubresource2;
29815     void *                                 pNext            = {};
29816     VULKAN_HPP_NAMESPACE::ImageSubresource imageSubresource = {};
29817   };
29818 
29819   template <>
29820   struct CppType<StructureType, StructureType::eImageSubresource2>
29821   {
29822     using Type = ImageSubresource2;
29823   };
29824 
29825   using ImageSubresource2EXT = ImageSubresource2;
29826   using ImageSubresource2KHR = ImageSubresource2;
29827 
29828   struct DeviceImageSubresourceInfo
29829   {
29830     using NativeType = VkDeviceImageSubresourceInfo;
29831 
29832     static const bool                                  allowDuplicate = false;
29833     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceImageSubresourceInfo;
29834 
29835 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceImageSubresourceInfoVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29836     VULKAN_HPP_CONSTEXPR DeviceImageSubresourceInfo( const VULKAN_HPP_NAMESPACE::ImageCreateInfo *   pCreateInfo_  = {},
29837                                                      const VULKAN_HPP_NAMESPACE::ImageSubresource2 * pSubresource_ = {},
29838                                                      const void *                                    pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
29839       : pNext{ pNext_ }
29840       , pCreateInfo{ pCreateInfo_ }
29841       , pSubresource{ pSubresource_ }
29842     {
29843     }
29844 
29845     VULKAN_HPP_CONSTEXPR DeviceImageSubresourceInfo( DeviceImageSubresourceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29846 
DeviceImageSubresourceInfoVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29847     DeviceImageSubresourceInfo( VkDeviceImageSubresourceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29848       : DeviceImageSubresourceInfo( *reinterpret_cast<DeviceImageSubresourceInfo const *>( &rhs ) )
29849     {
29850     }
29851 
29852     DeviceImageSubresourceInfo & operator=( DeviceImageSubresourceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29853 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29854 
operator =VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29855     DeviceImageSubresourceInfo & operator=( VkDeviceImageSubresourceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29856     {
29857       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo const *>( &rhs );
29858       return *this;
29859     }
29860 
29861 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29862     VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29863     {
29864       pNext = pNext_;
29865       return *this;
29866     }
29867 
setPCreateInfoVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29868     VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfo & setPCreateInfo( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT
29869     {
29870       pCreateInfo = pCreateInfo_;
29871       return *this;
29872     }
29873 
setPSubresourceVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29874     VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfo & setPSubresource( const VULKAN_HPP_NAMESPACE::ImageSubresource2 * pSubresource_ ) VULKAN_HPP_NOEXCEPT
29875     {
29876       pSubresource = pSubresource_;
29877       return *this;
29878     }
29879 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29880 
operator VkDeviceImageSubresourceInfo const&VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29881     operator VkDeviceImageSubresourceInfo const &() const VULKAN_HPP_NOEXCEPT
29882     {
29883       return *reinterpret_cast<const VkDeviceImageSubresourceInfo *>( this );
29884     }
29885 
operator VkDeviceImageSubresourceInfo&VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29886     operator VkDeviceImageSubresourceInfo &() VULKAN_HPP_NOEXCEPT
29887     {
29888       return *reinterpret_cast<VkDeviceImageSubresourceInfo *>( this );
29889     }
29890 
29891 #if defined( VULKAN_HPP_USE_REFLECT )
29892 #  if 14 <= VULKAN_HPP_CPP_VERSION
29893     auto
29894 #  else
29895     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29896                const void * const &,
29897                const VULKAN_HPP_NAMESPACE::ImageCreateInfo * const &,
29898                const VULKAN_HPP_NAMESPACE::ImageSubresource2 * const &>
29899 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29900       reflect() const VULKAN_HPP_NOEXCEPT
29901     {
29902       return std::tie( sType, pNext, pCreateInfo, pSubresource );
29903     }
29904 #endif
29905 
29906 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29907     auto operator<=>( DeviceImageSubresourceInfo const & ) const = default;
29908 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29909     bool operator==( DeviceImageSubresourceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29910     {
29911 #  if defined( VULKAN_HPP_USE_REFLECT )
29912       return this->reflect() == rhs.reflect();
29913 #  else
29914       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo ) && ( pSubresource == rhs.pSubresource );
29915 #  endif
29916     }
29917 
operator !=VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo29918     bool operator!=( DeviceImageSubresourceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29919     {
29920       return !operator==( rhs );
29921     }
29922 #endif
29923 
29924   public:
29925     VULKAN_HPP_NAMESPACE::StructureType             sType        = StructureType::eDeviceImageSubresourceInfo;
29926     const void *                                    pNext        = {};
29927     const VULKAN_HPP_NAMESPACE::ImageCreateInfo *   pCreateInfo  = {};
29928     const VULKAN_HPP_NAMESPACE::ImageSubresource2 * pSubresource = {};
29929   };
29930 
29931   template <>
29932   struct CppType<StructureType, StructureType::eDeviceImageSubresourceInfo>
29933   {
29934     using Type = DeviceImageSubresourceInfo;
29935   };
29936 
29937   using DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo;
29938 
29939   struct DeviceMemoryOpaqueCaptureAddressInfo
29940   {
29941     using NativeType = VkDeviceMemoryOpaqueCaptureAddressInfo;
29942 
29943     static const bool                                  allowDuplicate = false;
29944     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo;
29945 
29946 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceMemoryOpaqueCaptureAddressInfoVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29947     VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {},
29948                                                                const void *                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
29949       : pNext{ pNext_ }
29950       , memory{ memory_ }
29951     {
29952     }
29953 
29954     VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29955 
DeviceMemoryOpaqueCaptureAddressInfoVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29956     DeviceMemoryOpaqueCaptureAddressInfo( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29957       : DeviceMemoryOpaqueCaptureAddressInfo( *reinterpret_cast<DeviceMemoryOpaqueCaptureAddressInfo const *>( &rhs ) )
29958     {
29959     }
29960 
29961     DeviceMemoryOpaqueCaptureAddressInfo & operator=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29962 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29963 
operator =VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29964     DeviceMemoryOpaqueCaptureAddressInfo & operator=( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29965     {
29966       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo const *>( &rhs );
29967       return *this;
29968     }
29969 
29970 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29971     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29972     {
29973       pNext = pNext_;
29974       return *this;
29975     }
29976 
setMemoryVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29977     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
29978     {
29979       memory = memory_;
29980       return *this;
29981     }
29982 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29983 
operator VkDeviceMemoryOpaqueCaptureAddressInfo const&VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29984     operator VkDeviceMemoryOpaqueCaptureAddressInfo const &() const VULKAN_HPP_NOEXCEPT
29985     {
29986       return *reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( this );
29987     }
29988 
operator VkDeviceMemoryOpaqueCaptureAddressInfo&VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29989     operator VkDeviceMemoryOpaqueCaptureAddressInfo &() VULKAN_HPP_NOEXCEPT
29990     {
29991       return *reinterpret_cast<VkDeviceMemoryOpaqueCaptureAddressInfo *>( this );
29992     }
29993 
29994 #if defined( VULKAN_HPP_USE_REFLECT )
29995 #  if 14 <= VULKAN_HPP_CPP_VERSION
29996     auto
29997 #  else
29998     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &>
29999 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo30000       reflect() const VULKAN_HPP_NOEXCEPT
30001     {
30002       return std::tie( sType, pNext, memory );
30003     }
30004 #endif
30005 
30006 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30007     auto operator<=>( DeviceMemoryOpaqueCaptureAddressInfo const & ) const = default;
30008 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo30009     bool operator==( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30010     {
30011 #  if defined( VULKAN_HPP_USE_REFLECT )
30012       return this->reflect() == rhs.reflect();
30013 #  else
30014       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory );
30015 #  endif
30016     }
30017 
operator !=VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo30018     bool operator!=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30019     {
30020       return !operator==( rhs );
30021     }
30022 #endif
30023 
30024   public:
30025     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo;
30026     const void *                        pNext  = {};
30027     VULKAN_HPP_NAMESPACE::DeviceMemory  memory = {};
30028   };
30029 
30030   template <>
30031   struct CppType<StructureType, StructureType::eDeviceMemoryOpaqueCaptureAddressInfo>
30032   {
30033     using Type = DeviceMemoryOpaqueCaptureAddressInfo;
30034   };
30035 
30036   using DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
30037 
30038   struct DeviceMemoryOverallocationCreateInfoAMD
30039   {
30040     using NativeType = VkDeviceMemoryOverallocationCreateInfoAMD;
30041 
30042     static const bool                                  allowDuplicate = false;
30043     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceMemoryOverallocationCreateInfoAMD;
30044 
30045 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceMemoryOverallocationCreateInfoAMDVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD30046     VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD(
30047       VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior_ = VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault,
30048       const void *                                          pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
30049       : pNext{ pNext_ }
30050       , overallocationBehavior{ overallocationBehavior_ }
30051     {
30052     }
30053 
30054     VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30055 
DeviceMemoryOverallocationCreateInfoAMDVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD30056     DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
30057       : DeviceMemoryOverallocationCreateInfoAMD( *reinterpret_cast<DeviceMemoryOverallocationCreateInfoAMD const *>( &rhs ) )
30058     {
30059     }
30060 
30061     DeviceMemoryOverallocationCreateInfoAMD & operator=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30062 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30063 
operator =VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD30064     DeviceMemoryOverallocationCreateInfoAMD & operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
30065     {
30066       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD const *>( &rhs );
30067       return *this;
30068     }
30069 
30070 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD30071     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30072     {
30073       pNext = pNext_;
30074       return *this;
30075     }
30076 
30077     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD &
setOverallocationBehaviorVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD30078       setOverallocationBehavior( VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior_ ) VULKAN_HPP_NOEXCEPT
30079     {
30080       overallocationBehavior = overallocationBehavior_;
30081       return *this;
30082     }
30083 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30084 
operator VkDeviceMemoryOverallocationCreateInfoAMD const&VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD30085     operator VkDeviceMemoryOverallocationCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT
30086     {
30087       return *reinterpret_cast<const VkDeviceMemoryOverallocationCreateInfoAMD *>( this );
30088     }
30089 
operator VkDeviceMemoryOverallocationCreateInfoAMD&VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD30090     operator VkDeviceMemoryOverallocationCreateInfoAMD &() VULKAN_HPP_NOEXCEPT
30091     {
30092       return *reinterpret_cast<VkDeviceMemoryOverallocationCreateInfoAMD *>( this );
30093     }
30094 
30095 #if defined( VULKAN_HPP_USE_REFLECT )
30096 #  if 14 <= VULKAN_HPP_CPP_VERSION
30097     auto
30098 #  else
30099     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD const &>
30100 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD30101       reflect() const VULKAN_HPP_NOEXCEPT
30102     {
30103       return std::tie( sType, pNext, overallocationBehavior );
30104     }
30105 #endif
30106 
30107 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30108     auto operator<=>( DeviceMemoryOverallocationCreateInfoAMD const & ) const = default;
30109 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD30110     bool operator==( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
30111     {
30112 #  if defined( VULKAN_HPP_USE_REFLECT )
30113       return this->reflect() == rhs.reflect();
30114 #  else
30115       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( overallocationBehavior == rhs.overallocationBehavior );
30116 #  endif
30117     }
30118 
operator !=VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD30119     bool operator!=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
30120     {
30121       return !operator==( rhs );
30122     }
30123 #endif
30124 
30125   public:
30126     VULKAN_HPP_NAMESPACE::StructureType                   sType                  = StructureType::eDeviceMemoryOverallocationCreateInfoAMD;
30127     const void *                                          pNext                  = {};
30128     VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior = VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault;
30129   };
30130 
30131   template <>
30132   struct CppType<StructureType, StructureType::eDeviceMemoryOverallocationCreateInfoAMD>
30133   {
30134     using Type = DeviceMemoryOverallocationCreateInfoAMD;
30135   };
30136 
30137   struct DeviceMemoryReportCallbackDataEXT
30138   {
30139     using NativeType = VkDeviceMemoryReportCallbackDataEXT;
30140 
30141     static const bool                                  allowDuplicate = false;
30142     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceMemoryReportCallbackDataEXT;
30143 
30144 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceMemoryReportCallbackDataEXTVULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT30145     VULKAN_HPP_CONSTEXPR DeviceMemoryReportCallbackDataEXT(
30146       VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT     flags_          = {},
30147       VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type_           = VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate,
30148       uint64_t                                             memoryObjectId_ = {},
30149       VULKAN_HPP_NAMESPACE::DeviceSize                     size_           = {},
30150       VULKAN_HPP_NAMESPACE::ObjectType                     objectType_     = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown,
30151       uint64_t                                             objectHandle_   = {},
30152       uint32_t                                             heapIndex_      = {},
30153       void *                                               pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
30154       : pNext{ pNext_ }
30155       , flags{ flags_ }
30156       , type{ type_ }
30157       , memoryObjectId{ memoryObjectId_ }
30158       , size{ size_ }
30159       , objectType{ objectType_ }
30160       , objectHandle{ objectHandle_ }
30161       , heapIndex{ heapIndex_ }
30162     {
30163     }
30164 
30165     VULKAN_HPP_CONSTEXPR DeviceMemoryReportCallbackDataEXT( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30166 
DeviceMemoryReportCallbackDataEXTVULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT30167     DeviceMemoryReportCallbackDataEXT( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
30168       : DeviceMemoryReportCallbackDataEXT( *reinterpret_cast<DeviceMemoryReportCallbackDataEXT const *>( &rhs ) )
30169     {
30170     }
30171 
30172     DeviceMemoryReportCallbackDataEXT & operator=( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30173 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30174 
operator =VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT30175     DeviceMemoryReportCallbackDataEXT & operator=( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
30176     {
30177       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT const *>( &rhs );
30178       return *this;
30179     }
30180 
operator VkDeviceMemoryReportCallbackDataEXT const&VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT30181     operator VkDeviceMemoryReportCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT
30182     {
30183       return *reinterpret_cast<const VkDeviceMemoryReportCallbackDataEXT *>( this );
30184     }
30185 
operator VkDeviceMemoryReportCallbackDataEXT&VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT30186     operator VkDeviceMemoryReportCallbackDataEXT &() VULKAN_HPP_NOEXCEPT
30187     {
30188       return *reinterpret_cast<VkDeviceMemoryReportCallbackDataEXT *>( this );
30189     }
30190 
30191 #if defined( VULKAN_HPP_USE_REFLECT )
30192 #  if 14 <= VULKAN_HPP_CPP_VERSION
30193     auto
30194 #  else
30195     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30196                void * const &,
30197                VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT const &,
30198                VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT const &,
30199                uint64_t const &,
30200                VULKAN_HPP_NAMESPACE::DeviceSize const &,
30201                VULKAN_HPP_NAMESPACE::ObjectType const &,
30202                uint64_t const &,
30203                uint32_t const &>
30204 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT30205       reflect() const VULKAN_HPP_NOEXCEPT
30206     {
30207       return std::tie( sType, pNext, flags, type, memoryObjectId, size, objectType, objectHandle, heapIndex );
30208     }
30209 #endif
30210 
30211 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30212     auto operator<=>( DeviceMemoryReportCallbackDataEXT const & ) const = default;
30213 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT30214     bool operator==( DeviceMemoryReportCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
30215     {
30216 #  if defined( VULKAN_HPP_USE_REFLECT )
30217       return this->reflect() == rhs.reflect();
30218 #  else
30219       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( type == rhs.type ) && ( memoryObjectId == rhs.memoryObjectId ) &&
30220              ( size == rhs.size ) && ( objectType == rhs.objectType ) && ( objectHandle == rhs.objectHandle ) && ( heapIndex == rhs.heapIndex );
30221 #  endif
30222     }
30223 
operator !=VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT30224     bool operator!=( DeviceMemoryReportCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
30225     {
30226       return !operator==( rhs );
30227     }
30228 #endif
30229 
30230   public:
30231     VULKAN_HPP_NAMESPACE::StructureType                  sType          = StructureType::eDeviceMemoryReportCallbackDataEXT;
30232     void *                                               pNext          = {};
30233     VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT     flags          = {};
30234     VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type           = VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate;
30235     uint64_t                                             memoryObjectId = {};
30236     VULKAN_HPP_NAMESPACE::DeviceSize                     size           = {};
30237     VULKAN_HPP_NAMESPACE::ObjectType                     objectType     = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
30238     uint64_t                                             objectHandle   = {};
30239     uint32_t                                             heapIndex      = {};
30240   };
30241 
30242   template <>
30243   struct CppType<StructureType, StructureType::eDeviceMemoryReportCallbackDataEXT>
30244   {
30245     using Type = DeviceMemoryReportCallbackDataEXT;
30246   };
30247 
30248 #if defined( VK_ENABLE_BETA_EXTENSIONS )
30249   union DeviceOrHostAddressConstAMDX
30250   {
30251     using NativeType = VkDeviceOrHostAddressConstAMDX;
30252 #  if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
30253 
DeviceOrHostAddressConstAMDX(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_={} )30254     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) : deviceAddress( deviceAddress_ ) {}
30255 
DeviceOrHostAddressConstAMDX(const void * hostAddress_)30256     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX( const void * hostAddress_ ) : hostAddress( hostAddress_ ) {}
30257 #  endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
30258 
30259 #  if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setDeviceAddress(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_)30260     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
30261     {
30262       deviceAddress = deviceAddress_;
30263       return *this;
30264     }
30265 
setHostAddress(const void * hostAddress_)30266     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX & setHostAddress( const void * hostAddress_ ) VULKAN_HPP_NOEXCEPT
30267     {
30268       hostAddress = hostAddress_;
30269       return *this;
30270     }
30271 #  endif /*VULKAN_HPP_NO_UNION_SETTERS*/
30272 
operator VkDeviceOrHostAddressConstAMDX const&() const30273     operator VkDeviceOrHostAddressConstAMDX const &() const
30274     {
30275       return *reinterpret_cast<const VkDeviceOrHostAddressConstAMDX *>( this );
30276     }
30277 
operator VkDeviceOrHostAddressConstAMDX&()30278     operator VkDeviceOrHostAddressConstAMDX &()
30279     {
30280       return *reinterpret_cast<VkDeviceOrHostAddressConstAMDX *>( this );
30281     }
30282 
30283 #  ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
30284     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress;
30285     const void *                        hostAddress;
30286 #  else
30287     VkDeviceAddress deviceAddress;
30288     const void *    hostAddress;
30289 #  endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
30290   };
30291 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
30292 
30293   struct DevicePipelineBinaryInternalCacheControlKHR
30294   {
30295     using NativeType = VkDevicePipelineBinaryInternalCacheControlKHR;
30296 
30297     static const bool                                  allowDuplicate = false;
30298     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDevicePipelineBinaryInternalCacheControlKHR;
30299 
30300 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DevicePipelineBinaryInternalCacheControlKHRVULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR30301     VULKAN_HPP_CONSTEXPR DevicePipelineBinaryInternalCacheControlKHR( VULKAN_HPP_NAMESPACE::Bool32 disableInternalCache_ = {},
30302                                                                       const void *                 pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
30303       : pNext{ pNext_ }
30304       , disableInternalCache{ disableInternalCache_ }
30305     {
30306     }
30307 
30308     VULKAN_HPP_CONSTEXPR DevicePipelineBinaryInternalCacheControlKHR( DevicePipelineBinaryInternalCacheControlKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30309 
DevicePipelineBinaryInternalCacheControlKHRVULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR30310     DevicePipelineBinaryInternalCacheControlKHR( VkDevicePipelineBinaryInternalCacheControlKHR const & rhs ) VULKAN_HPP_NOEXCEPT
30311       : DevicePipelineBinaryInternalCacheControlKHR( *reinterpret_cast<DevicePipelineBinaryInternalCacheControlKHR const *>( &rhs ) )
30312     {
30313     }
30314 
30315     DevicePipelineBinaryInternalCacheControlKHR & operator=( DevicePipelineBinaryInternalCacheControlKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30316 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30317 
operator =VULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR30318     DevicePipelineBinaryInternalCacheControlKHR & operator=( VkDevicePipelineBinaryInternalCacheControlKHR const & rhs ) VULKAN_HPP_NOEXCEPT
30319     {
30320       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR const *>( &rhs );
30321       return *this;
30322     }
30323 
30324 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR30325     VULKAN_HPP_CONSTEXPR_14 DevicePipelineBinaryInternalCacheControlKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30326     {
30327       pNext = pNext_;
30328       return *this;
30329     }
30330 
30331     VULKAN_HPP_CONSTEXPR_14 DevicePipelineBinaryInternalCacheControlKHR &
setDisableInternalCacheVULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR30332       setDisableInternalCache( VULKAN_HPP_NAMESPACE::Bool32 disableInternalCache_ ) VULKAN_HPP_NOEXCEPT
30333     {
30334       disableInternalCache = disableInternalCache_;
30335       return *this;
30336     }
30337 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30338 
operator VkDevicePipelineBinaryInternalCacheControlKHR const&VULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR30339     operator VkDevicePipelineBinaryInternalCacheControlKHR const &() const VULKAN_HPP_NOEXCEPT
30340     {
30341       return *reinterpret_cast<const VkDevicePipelineBinaryInternalCacheControlKHR *>( this );
30342     }
30343 
operator VkDevicePipelineBinaryInternalCacheControlKHR&VULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR30344     operator VkDevicePipelineBinaryInternalCacheControlKHR &() VULKAN_HPP_NOEXCEPT
30345     {
30346       return *reinterpret_cast<VkDevicePipelineBinaryInternalCacheControlKHR *>( this );
30347     }
30348 
30349 #if defined( VULKAN_HPP_USE_REFLECT )
30350 #  if 14 <= VULKAN_HPP_CPP_VERSION
30351     auto
30352 #  else
30353     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
30354 #  endif
reflectVULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR30355       reflect() const VULKAN_HPP_NOEXCEPT
30356     {
30357       return std::tie( sType, pNext, disableInternalCache );
30358     }
30359 #endif
30360 
30361 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30362     auto operator<=>( DevicePipelineBinaryInternalCacheControlKHR const & ) const = default;
30363 #else
operator ==VULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR30364     bool operator==( DevicePipelineBinaryInternalCacheControlKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
30365     {
30366 #  if defined( VULKAN_HPP_USE_REFLECT )
30367       return this->reflect() == rhs.reflect();
30368 #  else
30369       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( disableInternalCache == rhs.disableInternalCache );
30370 #  endif
30371     }
30372 
operator !=VULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR30373     bool operator!=( DevicePipelineBinaryInternalCacheControlKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
30374     {
30375       return !operator==( rhs );
30376     }
30377 #endif
30378 
30379   public:
30380     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eDevicePipelineBinaryInternalCacheControlKHR;
30381     const void *                        pNext                = {};
30382     VULKAN_HPP_NAMESPACE::Bool32        disableInternalCache = {};
30383   };
30384 
30385   template <>
30386   struct CppType<StructureType, StructureType::eDevicePipelineBinaryInternalCacheControlKHR>
30387   {
30388     using Type = DevicePipelineBinaryInternalCacheControlKHR;
30389   };
30390 
30391   struct DevicePrivateDataCreateInfo
30392   {
30393     using NativeType = VkDevicePrivateDataCreateInfo;
30394 
30395     static const bool                                  allowDuplicate = true;
30396     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDevicePrivateDataCreateInfo;
30397 
30398 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DevicePrivateDataCreateInfoVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30399     VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfo( uint32_t privateDataSlotRequestCount_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
30400       : pNext{ pNext_ }
30401       , privateDataSlotRequestCount{ privateDataSlotRequestCount_ }
30402     {
30403     }
30404 
30405     VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfo( DevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30406 
DevicePrivateDataCreateInfoVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30407     DevicePrivateDataCreateInfo( VkDevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30408       : DevicePrivateDataCreateInfo( *reinterpret_cast<DevicePrivateDataCreateInfo const *>( &rhs ) )
30409     {
30410     }
30411 
30412     DevicePrivateDataCreateInfo & operator=( DevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30413 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30414 
operator =VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30415     DevicePrivateDataCreateInfo & operator=( VkDevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30416     {
30417       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo const *>( &rhs );
30418       return *this;
30419     }
30420 
30421 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30422     VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30423     {
30424       pNext = pNext_;
30425       return *this;
30426     }
30427 
setPrivateDataSlotRequestCountVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30428     VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo & setPrivateDataSlotRequestCount( uint32_t privateDataSlotRequestCount_ ) VULKAN_HPP_NOEXCEPT
30429     {
30430       privateDataSlotRequestCount = privateDataSlotRequestCount_;
30431       return *this;
30432     }
30433 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30434 
operator VkDevicePrivateDataCreateInfo const&VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30435     operator VkDevicePrivateDataCreateInfo const &() const VULKAN_HPP_NOEXCEPT
30436     {
30437       return *reinterpret_cast<const VkDevicePrivateDataCreateInfo *>( this );
30438     }
30439 
operator VkDevicePrivateDataCreateInfo&VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30440     operator VkDevicePrivateDataCreateInfo &() VULKAN_HPP_NOEXCEPT
30441     {
30442       return *reinterpret_cast<VkDevicePrivateDataCreateInfo *>( this );
30443     }
30444 
30445 #if defined( VULKAN_HPP_USE_REFLECT )
30446 #  if 14 <= VULKAN_HPP_CPP_VERSION
30447     auto
30448 #  else
30449     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
30450 #  endif
reflectVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30451       reflect() const VULKAN_HPP_NOEXCEPT
30452     {
30453       return std::tie( sType, pNext, privateDataSlotRequestCount );
30454     }
30455 #endif
30456 
30457 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30458     auto operator<=>( DevicePrivateDataCreateInfo const & ) const = default;
30459 #else
operator ==VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30460     bool operator==( DevicePrivateDataCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30461     {
30462 #  if defined( VULKAN_HPP_USE_REFLECT )
30463       return this->reflect() == rhs.reflect();
30464 #  else
30465       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( privateDataSlotRequestCount == rhs.privateDataSlotRequestCount );
30466 #  endif
30467     }
30468 
operator !=VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30469     bool operator!=( DevicePrivateDataCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30470     {
30471       return !operator==( rhs );
30472     }
30473 #endif
30474 
30475   public:
30476     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::eDevicePrivateDataCreateInfo;
30477     const void *                        pNext                       = {};
30478     uint32_t                            privateDataSlotRequestCount = {};
30479   };
30480 
30481   template <>
30482   struct CppType<StructureType, StructureType::eDevicePrivateDataCreateInfo>
30483   {
30484     using Type = DevicePrivateDataCreateInfo;
30485   };
30486 
30487   using DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo;
30488 
30489   struct DeviceQueueGlobalPriorityCreateInfo
30490   {
30491     using NativeType = VkDeviceQueueGlobalPriorityCreateInfo;
30492 
30493     static const bool                                  allowDuplicate = false;
30494     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceQueueGlobalPriorityCreateInfo;
30495 
30496 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
30497     VULKAN_HPP_CONSTEXPR
DeviceQueueGlobalPriorityCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo30498       DeviceQueueGlobalPriorityCreateInfo( VULKAN_HPP_NAMESPACE::QueueGlobalPriority globalPriority_ = VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
30499                                            const void *                              pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
30500       : pNext{ pNext_ }
30501       , globalPriority{ globalPriority_ }
30502     {
30503     }
30504 
30505     VULKAN_HPP_CONSTEXPR DeviceQueueGlobalPriorityCreateInfo( DeviceQueueGlobalPriorityCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30506 
DeviceQueueGlobalPriorityCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo30507     DeviceQueueGlobalPriorityCreateInfo( VkDeviceQueueGlobalPriorityCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30508       : DeviceQueueGlobalPriorityCreateInfo( *reinterpret_cast<DeviceQueueGlobalPriorityCreateInfo const *>( &rhs ) )
30509     {
30510     }
30511 
30512     DeviceQueueGlobalPriorityCreateInfo & operator=( DeviceQueueGlobalPriorityCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30513 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30514 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo30515     DeviceQueueGlobalPriorityCreateInfo & operator=( VkDeviceQueueGlobalPriorityCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30516     {
30517       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo const *>( &rhs );
30518       return *this;
30519     }
30520 
30521 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo30522     VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30523     {
30524       pNext = pNext_;
30525       return *this;
30526     }
30527 
30528     VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfo &
setGlobalPriorityVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo30529       setGlobalPriority( VULKAN_HPP_NAMESPACE::QueueGlobalPriority globalPriority_ ) VULKAN_HPP_NOEXCEPT
30530     {
30531       globalPriority = globalPriority_;
30532       return *this;
30533     }
30534 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30535 
operator VkDeviceQueueGlobalPriorityCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo30536     operator VkDeviceQueueGlobalPriorityCreateInfo const &() const VULKAN_HPP_NOEXCEPT
30537     {
30538       return *reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfo *>( this );
30539     }
30540 
operator VkDeviceQueueGlobalPriorityCreateInfo&VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo30541     operator VkDeviceQueueGlobalPriorityCreateInfo &() VULKAN_HPP_NOEXCEPT
30542     {
30543       return *reinterpret_cast<VkDeviceQueueGlobalPriorityCreateInfo *>( this );
30544     }
30545 
30546 #if defined( VULKAN_HPP_USE_REFLECT )
30547 #  if 14 <= VULKAN_HPP_CPP_VERSION
30548     auto
30549 #  else
30550     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::QueueGlobalPriority const &>
30551 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo30552       reflect() const VULKAN_HPP_NOEXCEPT
30553     {
30554       return std::tie( sType, pNext, globalPriority );
30555     }
30556 #endif
30557 
30558 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30559     auto operator<=>( DeviceQueueGlobalPriorityCreateInfo const & ) const = default;
30560 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo30561     bool operator==( DeviceQueueGlobalPriorityCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30562     {
30563 #  if defined( VULKAN_HPP_USE_REFLECT )
30564       return this->reflect() == rhs.reflect();
30565 #  else
30566       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( globalPriority == rhs.globalPriority );
30567 #  endif
30568     }
30569 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo30570     bool operator!=( DeviceQueueGlobalPriorityCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30571     {
30572       return !operator==( rhs );
30573     }
30574 #endif
30575 
30576   public:
30577     VULKAN_HPP_NAMESPACE::StructureType       sType          = StructureType::eDeviceQueueGlobalPriorityCreateInfo;
30578     const void *                              pNext          = {};
30579     VULKAN_HPP_NAMESPACE::QueueGlobalPriority globalPriority = VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow;
30580   };
30581 
30582   template <>
30583   struct CppType<StructureType, StructureType::eDeviceQueueGlobalPriorityCreateInfo>
30584   {
30585     using Type = DeviceQueueGlobalPriorityCreateInfo;
30586   };
30587 
30588   using DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo;
30589   using DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo;
30590 
30591   struct DeviceQueueInfo2
30592   {
30593     using NativeType = VkDeviceQueueInfo2;
30594 
30595     static const bool                                  allowDuplicate = false;
30596     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceQueueInfo2;
30597 
30598 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceQueueInfo2VULKAN_HPP_NAMESPACE::DeviceQueueInfo230599     VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_            = {},
30600                                            uint32_t                                     queueFamilyIndex_ = {},
30601                                            uint32_t                                     queueIndex_       = {},
30602                                            const void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
30603       : pNext{ pNext_ }
30604       , flags{ flags_ }
30605       , queueFamilyIndex{ queueFamilyIndex_ }
30606       , queueIndex{ queueIndex_ }
30607     {
30608     }
30609 
30610     VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30611 
DeviceQueueInfo2VULKAN_HPP_NAMESPACE::DeviceQueueInfo230612     DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceQueueInfo2( *reinterpret_cast<DeviceQueueInfo2 const *>( &rhs ) ) {}
30613 
30614     DeviceQueueInfo2 & operator=( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30615 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30616 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueInfo230617     DeviceQueueInfo2 & operator=( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
30618     {
30619       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const *>( &rhs );
30620       return *this;
30621     }
30622 
30623 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueInfo230624     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30625     {
30626       pNext = pNext_;
30627       return *this;
30628     }
30629 
setFlagsVULKAN_HPP_NAMESPACE::DeviceQueueInfo230630     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
30631     {
30632       flags = flags_;
30633       return *this;
30634     }
30635 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::DeviceQueueInfo230636     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
30637     {
30638       queueFamilyIndex = queueFamilyIndex_;
30639       return *this;
30640     }
30641 
setQueueIndexVULKAN_HPP_NAMESPACE::DeviceQueueInfo230642     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueIndex( uint32_t queueIndex_ ) VULKAN_HPP_NOEXCEPT
30643     {
30644       queueIndex = queueIndex_;
30645       return *this;
30646     }
30647 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30648 
operator VkDeviceQueueInfo2 const&VULKAN_HPP_NAMESPACE::DeviceQueueInfo230649     operator VkDeviceQueueInfo2 const &() const VULKAN_HPP_NOEXCEPT
30650     {
30651       return *reinterpret_cast<const VkDeviceQueueInfo2 *>( this );
30652     }
30653 
operator VkDeviceQueueInfo2&VULKAN_HPP_NAMESPACE::DeviceQueueInfo230654     operator VkDeviceQueueInfo2 &() VULKAN_HPP_NOEXCEPT
30655     {
30656       return *reinterpret_cast<VkDeviceQueueInfo2 *>( this );
30657     }
30658 
30659 #if defined( VULKAN_HPP_USE_REFLECT )
30660 #  if 14 <= VULKAN_HPP_CPP_VERSION
30661     auto
30662 #  else
30663     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30664                const void * const &,
30665                VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags const &,
30666                uint32_t const &,
30667                uint32_t const &>
30668 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueInfo230669       reflect() const VULKAN_HPP_NOEXCEPT
30670     {
30671       return std::tie( sType, pNext, flags, queueFamilyIndex, queueIndex );
30672     }
30673 #endif
30674 
30675 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30676     auto operator<=>( DeviceQueueInfo2 const & ) const = default;
30677 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueInfo230678     bool operator==( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
30679     {
30680 #  if defined( VULKAN_HPP_USE_REFLECT )
30681       return this->reflect() == rhs.reflect();
30682 #  else
30683       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) &&
30684              ( queueIndex == rhs.queueIndex );
30685 #  endif
30686     }
30687 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueInfo230688     bool operator!=( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
30689     {
30690       return !operator==( rhs );
30691     }
30692 #endif
30693 
30694   public:
30695     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eDeviceQueueInfo2;
30696     const void *                                 pNext            = {};
30697     VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags            = {};
30698     uint32_t                                     queueFamilyIndex = {};
30699     uint32_t                                     queueIndex       = {};
30700   };
30701 
30702   template <>
30703   struct CppType<StructureType, StructureType::eDeviceQueueInfo2>
30704   {
30705     using Type = DeviceQueueInfo2;
30706   };
30707 
30708   struct DeviceQueueShaderCoreControlCreateInfoARM
30709   {
30710     using NativeType = VkDeviceQueueShaderCoreControlCreateInfoARM;
30711 
30712     static const bool                                  allowDuplicate = false;
30713     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceQueueShaderCoreControlCreateInfoARM;
30714 
30715 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceQueueShaderCoreControlCreateInfoARMVULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30716     VULKAN_HPP_CONSTEXPR DeviceQueueShaderCoreControlCreateInfoARM( uint32_t shaderCoreCount_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
30717       : pNext{ pNext_ }
30718       , shaderCoreCount{ shaderCoreCount_ }
30719     {
30720     }
30721 
30722     VULKAN_HPP_CONSTEXPR DeviceQueueShaderCoreControlCreateInfoARM( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30723 
DeviceQueueShaderCoreControlCreateInfoARMVULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30724     DeviceQueueShaderCoreControlCreateInfoARM( VkDeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
30725       : DeviceQueueShaderCoreControlCreateInfoARM( *reinterpret_cast<DeviceQueueShaderCoreControlCreateInfoARM const *>( &rhs ) )
30726     {
30727     }
30728 
30729     DeviceQueueShaderCoreControlCreateInfoARM & operator=( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30730 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30731 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30732     DeviceQueueShaderCoreControlCreateInfoARM & operator=( VkDeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
30733     {
30734       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM const *>( &rhs );
30735       return *this;
30736     }
30737 
30738 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30739     VULKAN_HPP_CONSTEXPR_14 DeviceQueueShaderCoreControlCreateInfoARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
30740     {
30741       pNext = pNext_;
30742       return *this;
30743     }
30744 
setShaderCoreCountVULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30745     VULKAN_HPP_CONSTEXPR_14 DeviceQueueShaderCoreControlCreateInfoARM & setShaderCoreCount( uint32_t shaderCoreCount_ ) VULKAN_HPP_NOEXCEPT
30746     {
30747       shaderCoreCount = shaderCoreCount_;
30748       return *this;
30749     }
30750 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30751 
operator VkDeviceQueueShaderCoreControlCreateInfoARM const&VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30752     operator VkDeviceQueueShaderCoreControlCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT
30753     {
30754       return *reinterpret_cast<const VkDeviceQueueShaderCoreControlCreateInfoARM *>( this );
30755     }
30756 
operator VkDeviceQueueShaderCoreControlCreateInfoARM&VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30757     operator VkDeviceQueueShaderCoreControlCreateInfoARM &() VULKAN_HPP_NOEXCEPT
30758     {
30759       return *reinterpret_cast<VkDeviceQueueShaderCoreControlCreateInfoARM *>( this );
30760     }
30761 
30762 #if defined( VULKAN_HPP_USE_REFLECT )
30763 #  if 14 <= VULKAN_HPP_CPP_VERSION
30764     auto
30765 #  else
30766     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
30767 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30768       reflect() const VULKAN_HPP_NOEXCEPT
30769     {
30770       return std::tie( sType, pNext, shaderCoreCount );
30771     }
30772 #endif
30773 
30774 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30775     auto operator<=>( DeviceQueueShaderCoreControlCreateInfoARM const & ) const = default;
30776 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30777     bool operator==( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
30778     {
30779 #  if defined( VULKAN_HPP_USE_REFLECT )
30780       return this->reflect() == rhs.reflect();
30781 #  else
30782       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreCount == rhs.shaderCoreCount );
30783 #  endif
30784     }
30785 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30786     bool operator!=( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
30787     {
30788       return !operator==( rhs );
30789     }
30790 #endif
30791 
30792   public:
30793     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eDeviceQueueShaderCoreControlCreateInfoARM;
30794     void *                              pNext           = {};
30795     uint32_t                            shaderCoreCount = {};
30796   };
30797 
30798   template <>
30799   struct CppType<StructureType, StructureType::eDeviceQueueShaderCoreControlCreateInfoARM>
30800   {
30801     using Type = DeviceQueueShaderCoreControlCreateInfoARM;
30802   };
30803 
30804   struct DirectDriverLoadingInfoLUNARG
30805   {
30806     using NativeType = VkDirectDriverLoadingInfoLUNARG;
30807 
30808     static const bool                                  allowDuplicate = false;
30809     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDirectDriverLoadingInfoLUNARG;
30810 
30811 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DirectDriverLoadingInfoLUNARGVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30812     VULKAN_HPP_CONSTEXPR DirectDriverLoadingInfoLUNARG( VULKAN_HPP_NAMESPACE::DirectDriverLoadingFlagsLUNARG flags_                  = {},
30813                                                         PFN_vkGetInstanceProcAddrLUNARG                      pfnGetInstanceProcAddr_ = {},
30814                                                         void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
30815       : pNext{ pNext_ }
30816       , flags{ flags_ }
30817       , pfnGetInstanceProcAddr{ pfnGetInstanceProcAddr_ }
30818     {
30819     }
30820 
30821     VULKAN_HPP_CONSTEXPR DirectDriverLoadingInfoLUNARG( DirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30822 
DirectDriverLoadingInfoLUNARGVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30823     DirectDriverLoadingInfoLUNARG( VkDirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT
30824       : DirectDriverLoadingInfoLUNARG( *reinterpret_cast<DirectDriverLoadingInfoLUNARG const *>( &rhs ) )
30825     {
30826     }
30827 
30828     DirectDriverLoadingInfoLUNARG & operator=( DirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30829 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30830 
operator =VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30831     DirectDriverLoadingInfoLUNARG & operator=( VkDirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT
30832     {
30833       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG const *>( &rhs );
30834       return *this;
30835     }
30836 
30837 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30838     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
30839     {
30840       pNext = pNext_;
30841       return *this;
30842     }
30843 
setFlagsVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30844     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG & setFlags( VULKAN_HPP_NAMESPACE::DirectDriverLoadingFlagsLUNARG flags_ ) VULKAN_HPP_NOEXCEPT
30845     {
30846       flags = flags_;
30847       return *this;
30848     }
30849 
30850     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG &
setPfnGetInstanceProcAddrVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30851       setPfnGetInstanceProcAddr( PFN_vkGetInstanceProcAddrLUNARG pfnGetInstanceProcAddr_ ) VULKAN_HPP_NOEXCEPT
30852     {
30853       pfnGetInstanceProcAddr = pfnGetInstanceProcAddr_;
30854       return *this;
30855     }
30856 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30857 
operator VkDirectDriverLoadingInfoLUNARG const&VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30858     operator VkDirectDriverLoadingInfoLUNARG const &() const VULKAN_HPP_NOEXCEPT
30859     {
30860       return *reinterpret_cast<const VkDirectDriverLoadingInfoLUNARG *>( this );
30861     }
30862 
operator VkDirectDriverLoadingInfoLUNARG&VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30863     operator VkDirectDriverLoadingInfoLUNARG &() VULKAN_HPP_NOEXCEPT
30864     {
30865       return *reinterpret_cast<VkDirectDriverLoadingInfoLUNARG *>( this );
30866     }
30867 
30868 #if defined( VULKAN_HPP_USE_REFLECT )
30869 #  if 14 <= VULKAN_HPP_CPP_VERSION
30870     auto
30871 #  else
30872     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30873                void * const &,
30874                VULKAN_HPP_NAMESPACE::DirectDriverLoadingFlagsLUNARG const &,
30875                PFN_vkGetInstanceProcAddrLUNARG const &>
30876 #  endif
reflectVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30877       reflect() const VULKAN_HPP_NOEXCEPT
30878     {
30879       return std::tie( sType, pNext, flags, pfnGetInstanceProcAddr );
30880     }
30881 #endif
30882 
operator ==VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30883     bool operator==( DirectDriverLoadingInfoLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT
30884     {
30885 #if defined( VULKAN_HPP_USE_REFLECT )
30886       return this->reflect() == rhs.reflect();
30887 #else
30888       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pfnGetInstanceProcAddr == rhs.pfnGetInstanceProcAddr );
30889 #endif
30890     }
30891 
operator !=VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30892     bool operator!=( DirectDriverLoadingInfoLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT
30893     {
30894       return !operator==( rhs );
30895     }
30896 
30897   public:
30898     VULKAN_HPP_NAMESPACE::StructureType                  sType                  = StructureType::eDirectDriverLoadingInfoLUNARG;
30899     void *                                               pNext                  = {};
30900     VULKAN_HPP_NAMESPACE::DirectDriverLoadingFlagsLUNARG flags                  = {};
30901     PFN_vkGetInstanceProcAddrLUNARG                      pfnGetInstanceProcAddr = {};
30902   };
30903 
30904   template <>
30905   struct CppType<StructureType, StructureType::eDirectDriverLoadingInfoLUNARG>
30906   {
30907     using Type = DirectDriverLoadingInfoLUNARG;
30908   };
30909 
30910   struct DirectDriverLoadingListLUNARG
30911   {
30912     using NativeType = VkDirectDriverLoadingListLUNARG;
30913 
30914     static const bool                                  allowDuplicate = false;
30915     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDirectDriverLoadingListLUNARG;
30916 
30917 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DirectDriverLoadingListLUNARGVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30918     VULKAN_HPP_CONSTEXPR DirectDriverLoadingListLUNARG(
30919       VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG         mode_        = VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG::eExclusive,
30920       uint32_t                                                    driverCount_ = {},
30921       const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG * pDrivers_    = {},
30922       const void *                                                pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
30923       : pNext{ pNext_ }
30924       , mode{ mode_ }
30925       , driverCount{ driverCount_ }
30926       , pDrivers{ pDrivers_ }
30927     {
30928     }
30929 
30930     VULKAN_HPP_CONSTEXPR DirectDriverLoadingListLUNARG( DirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30931 
DirectDriverLoadingListLUNARGVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30932     DirectDriverLoadingListLUNARG( VkDirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT
30933       : DirectDriverLoadingListLUNARG( *reinterpret_cast<DirectDriverLoadingListLUNARG const *>( &rhs ) )
30934     {
30935     }
30936 
30937 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DirectDriverLoadingListLUNARGVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30938     DirectDriverLoadingListLUNARG( VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG                                                              mode_,
30939                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG> const & drivers_,
30940                                    const void * pNext_ = nullptr )
30941       : pNext( pNext_ ), mode( mode_ ), driverCount( static_cast<uint32_t>( drivers_.size() ) ), pDrivers( drivers_.data() )
30942     {
30943     }
30944 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30945 
30946     DirectDriverLoadingListLUNARG & operator=( DirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30947 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30948 
operator =VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30949     DirectDriverLoadingListLUNARG & operator=( VkDirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT
30950     {
30951       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG const *>( &rhs );
30952       return *this;
30953     }
30954 
30955 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30956     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30957     {
30958       pNext = pNext_;
30959       return *this;
30960     }
30961 
setModeVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30962     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG & setMode( VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG mode_ ) VULKAN_HPP_NOEXCEPT
30963     {
30964       mode = mode_;
30965       return *this;
30966     }
30967 
setDriverCountVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30968     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG & setDriverCount( uint32_t driverCount_ ) VULKAN_HPP_NOEXCEPT
30969     {
30970       driverCount = driverCount_;
30971       return *this;
30972     }
30973 
30974     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG &
setPDriversVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30975       setPDrivers( const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG * pDrivers_ ) VULKAN_HPP_NOEXCEPT
30976     {
30977       pDrivers = pDrivers_;
30978       return *this;
30979     }
30980 
30981 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDriversVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30982     DirectDriverLoadingListLUNARG & setDrivers(
30983       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG> const & drivers_ ) VULKAN_HPP_NOEXCEPT
30984     {
30985       driverCount = static_cast<uint32_t>( drivers_.size() );
30986       pDrivers    = drivers_.data();
30987       return *this;
30988     }
30989 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30990 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30991 
operator VkDirectDriverLoadingListLUNARG const&VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30992     operator VkDirectDriverLoadingListLUNARG const &() const VULKAN_HPP_NOEXCEPT
30993     {
30994       return *reinterpret_cast<const VkDirectDriverLoadingListLUNARG *>( this );
30995     }
30996 
operator VkDirectDriverLoadingListLUNARG&VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30997     operator VkDirectDriverLoadingListLUNARG &() VULKAN_HPP_NOEXCEPT
30998     {
30999       return *reinterpret_cast<VkDirectDriverLoadingListLUNARG *>( this );
31000     }
31001 
31002 #if defined( VULKAN_HPP_USE_REFLECT )
31003 #  if 14 <= VULKAN_HPP_CPP_VERSION
31004     auto
31005 #  else
31006     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
31007                const void * const &,
31008                VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG const &,
31009                uint32_t const &,
31010                const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG * const &>
31011 #  endif
reflectVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG31012       reflect() const VULKAN_HPP_NOEXCEPT
31013     {
31014       return std::tie( sType, pNext, mode, driverCount, pDrivers );
31015     }
31016 #endif
31017 
operator ==VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG31018     bool operator==( DirectDriverLoadingListLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT
31019     {
31020 #if defined( VULKAN_HPP_USE_REFLECT )
31021       return this->reflect() == rhs.reflect();
31022 #else
31023       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mode == rhs.mode ) && ( driverCount == rhs.driverCount ) && ( pDrivers == rhs.pDrivers );
31024 #endif
31025     }
31026 
operator !=VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG31027     bool operator!=( DirectDriverLoadingListLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT
31028     {
31029       return !operator==( rhs );
31030     }
31031 
31032   public:
31033     VULKAN_HPP_NAMESPACE::StructureType                         sType       = StructureType::eDirectDriverLoadingListLUNARG;
31034     const void *                                                pNext       = {};
31035     VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG         mode        = VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG::eExclusive;
31036     uint32_t                                                    driverCount = {};
31037     const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG * pDrivers    = {};
31038   };
31039 
31040   template <>
31041   struct CppType<StructureType, StructureType::eDirectDriverLoadingListLUNARG>
31042   {
31043     using Type = DirectDriverLoadingListLUNARG;
31044   };
31045 
31046 #if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
31047   struct DirectFBSurfaceCreateInfoEXT
31048   {
31049     using NativeType = VkDirectFBSurfaceCreateInfoEXT;
31050 
31051     static const bool                                  allowDuplicate = false;
31052     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDirectfbSurfaceCreateInfoEXT;
31053 
31054 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DirectFBSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31055     VULKAN_HPP_CONSTEXPR DirectFBSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags_   = {},
31056                                                        IDirectFB *                                         dfb_     = {},
31057                                                        IDirectFBSurface *                                  surface_ = {},
31058                                                        const void *                                        pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
31059       : pNext{ pNext_ }
31060       , flags{ flags_ }
31061       , dfb{ dfb_ }
31062       , surface{ surface_ }
31063     {
31064     }
31065 
31066     VULKAN_HPP_CONSTEXPR DirectFBSurfaceCreateInfoEXT( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31067 
DirectFBSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31068     DirectFBSurfaceCreateInfoEXT( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
31069       : DirectFBSurfaceCreateInfoEXT( *reinterpret_cast<DirectFBSurfaceCreateInfoEXT const *>( &rhs ) )
31070     {
31071     }
31072 
31073     DirectFBSurfaceCreateInfoEXT & operator=( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31074 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31075 
operator =VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31076     DirectFBSurfaceCreateInfoEXT & operator=( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
31077     {
31078       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const *>( &rhs );
31079       return *this;
31080     }
31081 
31082 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31083     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31084     {
31085       pNext = pNext_;
31086       return *this;
31087     }
31088 
setFlagsVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31089     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
31090     {
31091       flags = flags_;
31092       return *this;
31093     }
31094 
setDfbVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31095     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setDfb( IDirectFB * dfb_ ) VULKAN_HPP_NOEXCEPT
31096     {
31097       dfb = dfb_;
31098       return *this;
31099     }
31100 
setSurfaceVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31101     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setSurface( IDirectFBSurface * surface_ ) VULKAN_HPP_NOEXCEPT
31102     {
31103       surface = surface_;
31104       return *this;
31105     }
31106 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31107 
operator VkDirectFBSurfaceCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31108     operator VkDirectFBSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
31109     {
31110       return *reinterpret_cast<const VkDirectFBSurfaceCreateInfoEXT *>( this );
31111     }
31112 
operator VkDirectFBSurfaceCreateInfoEXT&VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31113     operator VkDirectFBSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
31114     {
31115       return *reinterpret_cast<VkDirectFBSurfaceCreateInfoEXT *>( this );
31116     }
31117 
31118 #  if defined( VULKAN_HPP_USE_REFLECT )
31119 #    if 14 <= VULKAN_HPP_CPP_VERSION
31120     auto
31121 #    else
31122     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
31123                const void * const &,
31124                VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT const &,
31125                IDirectFB * const &,
31126                IDirectFBSurface * const &>
31127 #    endif
reflectVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31128       reflect() const VULKAN_HPP_NOEXCEPT
31129     {
31130       return std::tie( sType, pNext, flags, dfb, surface );
31131     }
31132 #  endif
31133 
31134 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31135     auto operator<=>( DirectFBSurfaceCreateInfoEXT const & ) const = default;
31136 #  else
operator ==VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31137     bool operator==( DirectFBSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31138     {
31139 #    if defined( VULKAN_HPP_USE_REFLECT )
31140       return this->reflect() == rhs.reflect();
31141 #    else
31142       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dfb == rhs.dfb ) && ( surface == rhs.surface );
31143 #    endif
31144     }
31145 
operator !=VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT31146     bool operator!=( DirectFBSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31147     {
31148       return !operator==( rhs );
31149     }
31150 #  endif
31151 
31152   public:
31153     VULKAN_HPP_NAMESPACE::StructureType                 sType   = StructureType::eDirectfbSurfaceCreateInfoEXT;
31154     const void *                                        pNext   = {};
31155     VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags   = {};
31156     IDirectFB *                                         dfb     = {};
31157     IDirectFBSurface *                                  surface = {};
31158   };
31159 
31160   template <>
31161   struct CppType<StructureType, StructureType::eDirectfbSurfaceCreateInfoEXT>
31162   {
31163     using Type = DirectFBSurfaceCreateInfoEXT;
31164   };
31165 #endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
31166 
31167 #if defined( VK_ENABLE_BETA_EXTENSIONS )
31168   struct DispatchGraphCountInfoAMDX
31169   {
31170     using NativeType = VkDispatchGraphCountInfoAMDX;
31171 
31172 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DispatchGraphCountInfoAMDXVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX31173     VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX( uint32_t                                           count_  = {},
31174                                                         VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX infos_  = {},
31175                                                         uint64_t                                           stride_ = {} ) VULKAN_HPP_NOEXCEPT
31176       : count{ count_ }
31177       , infos{ infos_ }
31178       , stride{ stride_ }
31179     {
31180     }
31181 
31182     VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX( DispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31183 
DispatchGraphCountInfoAMDXVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX31184     DispatchGraphCountInfoAMDX( VkDispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
31185       : DispatchGraphCountInfoAMDX( *reinterpret_cast<DispatchGraphCountInfoAMDX const *>( &rhs ) )
31186     {
31187     }
31188 
31189     DispatchGraphCountInfoAMDX & operator=( DispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31190 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31191 
operator =VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX31192     DispatchGraphCountInfoAMDX & operator=( VkDispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
31193     {
31194       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX const *>( &rhs );
31195       return *this;
31196     }
31197 
31198 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setCountVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX31199     VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX & setCount( uint32_t count_ ) VULKAN_HPP_NOEXCEPT
31200     {
31201       count = count_;
31202       return *this;
31203     }
31204 
setInfosVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX31205     VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX & setInfos( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX const & infos_ ) VULKAN_HPP_NOEXCEPT
31206     {
31207       infos = infos_;
31208       return *this;
31209     }
31210 
setStrideVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX31211     VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX & setStride( uint64_t stride_ ) VULKAN_HPP_NOEXCEPT
31212     {
31213       stride = stride_;
31214       return *this;
31215     }
31216 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31217 
operator VkDispatchGraphCountInfoAMDX const&VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX31218     operator VkDispatchGraphCountInfoAMDX const &() const VULKAN_HPP_NOEXCEPT
31219     {
31220       return *reinterpret_cast<const VkDispatchGraphCountInfoAMDX *>( this );
31221     }
31222 
operator VkDispatchGraphCountInfoAMDX&VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX31223     operator VkDispatchGraphCountInfoAMDX &() VULKAN_HPP_NOEXCEPT
31224     {
31225       return *reinterpret_cast<VkDispatchGraphCountInfoAMDX *>( this );
31226     }
31227 
31228 #  if defined( VULKAN_HPP_USE_REFLECT )
31229 #    if 14 <= VULKAN_HPP_CPP_VERSION
31230     auto
31231 #    else
31232     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX const &, uint64_t const &>
31233 #    endif
reflectVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX31234       reflect() const VULKAN_HPP_NOEXCEPT
31235     {
31236       return std::tie( count, infos, stride );
31237     }
31238 #  endif
31239 
31240   public:
31241     uint32_t                                           count  = {};
31242     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX infos  = {};
31243     uint64_t                                           stride = {};
31244   };
31245 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
31246 
31247 #if defined( VK_ENABLE_BETA_EXTENSIONS )
31248   struct DispatchGraphInfoAMDX
31249   {
31250     using NativeType = VkDispatchGraphInfoAMDX;
31251 
31252 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DispatchGraphInfoAMDXVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX31253     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX( uint32_t                                           nodeIndex_     = {},
31254                                                    uint32_t                                           payloadCount_  = {},
31255                                                    VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX payloads_      = {},
31256                                                    uint64_t                                           payloadStride_ = {} ) VULKAN_HPP_NOEXCEPT
31257       : nodeIndex{ nodeIndex_ }
31258       , payloadCount{ payloadCount_ }
31259       , payloads{ payloads_ }
31260       , payloadStride{ payloadStride_ }
31261     {
31262     }
31263 
31264     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX( DispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31265 
DispatchGraphInfoAMDXVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX31266     DispatchGraphInfoAMDX( VkDispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
31267       : DispatchGraphInfoAMDX( *reinterpret_cast<DispatchGraphInfoAMDX const *>( &rhs ) )
31268     {
31269     }
31270 
31271     DispatchGraphInfoAMDX & operator=( DispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31272 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31273 
operator =VULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX31274     DispatchGraphInfoAMDX & operator=( VkDispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
31275     {
31276       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX const *>( &rhs );
31277       return *this;
31278     }
31279 
31280 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setNodeIndexVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX31281     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setNodeIndex( uint32_t nodeIndex_ ) VULKAN_HPP_NOEXCEPT
31282     {
31283       nodeIndex = nodeIndex_;
31284       return *this;
31285     }
31286 
setPayloadCountVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX31287     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setPayloadCount( uint32_t payloadCount_ ) VULKAN_HPP_NOEXCEPT
31288     {
31289       payloadCount = payloadCount_;
31290       return *this;
31291     }
31292 
setPayloadsVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX31293     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setPayloads( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX const & payloads_ ) VULKAN_HPP_NOEXCEPT
31294     {
31295       payloads = payloads_;
31296       return *this;
31297     }
31298 
setPayloadStrideVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX31299     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setPayloadStride( uint64_t payloadStride_ ) VULKAN_HPP_NOEXCEPT
31300     {
31301       payloadStride = payloadStride_;
31302       return *this;
31303     }
31304 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31305 
operator VkDispatchGraphInfoAMDX const&VULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX31306     operator VkDispatchGraphInfoAMDX const &() const VULKAN_HPP_NOEXCEPT
31307     {
31308       return *reinterpret_cast<const VkDispatchGraphInfoAMDX *>( this );
31309     }
31310 
operator VkDispatchGraphInfoAMDX&VULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX31311     operator VkDispatchGraphInfoAMDX &() VULKAN_HPP_NOEXCEPT
31312     {
31313       return *reinterpret_cast<VkDispatchGraphInfoAMDX *>( this );
31314     }
31315 
31316 #  if defined( VULKAN_HPP_USE_REFLECT )
31317 #    if 14 <= VULKAN_HPP_CPP_VERSION
31318     auto
31319 #    else
31320     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX const &, uint64_t const &>
31321 #    endif
reflectVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX31322       reflect() const VULKAN_HPP_NOEXCEPT
31323     {
31324       return std::tie( nodeIndex, payloadCount, payloads, payloadStride );
31325     }
31326 #  endif
31327 
31328   public:
31329     uint32_t                                           nodeIndex     = {};
31330     uint32_t                                           payloadCount  = {};
31331     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX payloads      = {};
31332     uint64_t                                           payloadStride = {};
31333   };
31334 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
31335 
31336   struct DispatchIndirectCommand
31337   {
31338     using NativeType = VkDispatchIndirectCommand;
31339 
31340 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DispatchIndirectCommandVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31341     VULKAN_HPP_CONSTEXPR DispatchIndirectCommand( uint32_t x_ = {}, uint32_t y_ = {}, uint32_t z_ = {} ) VULKAN_HPP_NOEXCEPT
31342       : x{ x_ }
31343       , y{ y_ }
31344       , z{ z_ }
31345     {
31346     }
31347 
31348     VULKAN_HPP_CONSTEXPR DispatchIndirectCommand( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31349 
DispatchIndirectCommandVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31350     DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
31351       : DispatchIndirectCommand( *reinterpret_cast<DispatchIndirectCommand const *>( &rhs ) )
31352     {
31353     }
31354 
31355     DispatchIndirectCommand & operator=( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31356 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31357 
operator =VULKAN_HPP_NAMESPACE::DispatchIndirectCommand31358     DispatchIndirectCommand & operator=( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
31359     {
31360       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DispatchIndirectCommand const *>( &rhs );
31361       return *this;
31362     }
31363 
31364 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31365     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setX( uint32_t x_ ) VULKAN_HPP_NOEXCEPT
31366     {
31367       x = x_;
31368       return *this;
31369     }
31370 
setYVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31371     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setY( uint32_t y_ ) VULKAN_HPP_NOEXCEPT
31372     {
31373       y = y_;
31374       return *this;
31375     }
31376 
setZVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31377     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setZ( uint32_t z_ ) VULKAN_HPP_NOEXCEPT
31378     {
31379       z = z_;
31380       return *this;
31381     }
31382 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31383 
operator VkDispatchIndirectCommand const&VULKAN_HPP_NAMESPACE::DispatchIndirectCommand31384     operator VkDispatchIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
31385     {
31386       return *reinterpret_cast<const VkDispatchIndirectCommand *>( this );
31387     }
31388 
operator VkDispatchIndirectCommand&VULKAN_HPP_NAMESPACE::DispatchIndirectCommand31389     operator VkDispatchIndirectCommand &() VULKAN_HPP_NOEXCEPT
31390     {
31391       return *reinterpret_cast<VkDispatchIndirectCommand *>( this );
31392     }
31393 
31394 #if defined( VULKAN_HPP_USE_REFLECT )
31395 #  if 14 <= VULKAN_HPP_CPP_VERSION
31396     auto
31397 #  else
31398     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
31399 #  endif
reflectVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31400       reflect() const VULKAN_HPP_NOEXCEPT
31401     {
31402       return std::tie( x, y, z );
31403     }
31404 #endif
31405 
31406 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31407     auto operator<=>( DispatchIndirectCommand const & ) const = default;
31408 #else
operator ==VULKAN_HPP_NAMESPACE::DispatchIndirectCommand31409     bool operator==( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
31410     {
31411 #  if defined( VULKAN_HPP_USE_REFLECT )
31412       return this->reflect() == rhs.reflect();
31413 #  else
31414       return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z );
31415 #  endif
31416     }
31417 
operator !=VULKAN_HPP_NAMESPACE::DispatchIndirectCommand31418     bool operator!=( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
31419     {
31420       return !operator==( rhs );
31421     }
31422 #endif
31423 
31424   public:
31425     uint32_t x = {};
31426     uint32_t y = {};
31427     uint32_t z = {};
31428   };
31429 
31430   struct DisplayEventInfoEXT
31431   {
31432     using NativeType = VkDisplayEventInfoEXT;
31433 
31434     static const bool                                  allowDuplicate = false;
31435     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayEventInfoEXT;
31436 
31437 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
31438     VULKAN_HPP_CONSTEXPR
DisplayEventInfoEXTVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31439       DisplayEventInfoEXT( VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut,
31440                            const void *                              pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
31441       : pNext{ pNext_ }
31442       , displayEvent{ displayEvent_ }
31443     {
31444     }
31445 
31446     VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31447 
DisplayEventInfoEXTVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31448     DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DisplayEventInfoEXT( *reinterpret_cast<DisplayEventInfoEXT const *>( &rhs ) )
31449     {
31450     }
31451 
31452     DisplayEventInfoEXT & operator=( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31453 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31454 
operator =VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31455     DisplayEventInfoEXT & operator=( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
31456     {
31457       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const *>( &rhs );
31458       return *this;
31459     }
31460 
31461 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31462     VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31463     {
31464       pNext = pNext_;
31465       return *this;
31466     }
31467 
setDisplayEventVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31468     VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & setDisplayEvent( VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ ) VULKAN_HPP_NOEXCEPT
31469     {
31470       displayEvent = displayEvent_;
31471       return *this;
31472     }
31473 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31474 
operator VkDisplayEventInfoEXT const&VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31475     operator VkDisplayEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
31476     {
31477       return *reinterpret_cast<const VkDisplayEventInfoEXT *>( this );
31478     }
31479 
operator VkDisplayEventInfoEXT&VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31480     operator VkDisplayEventInfoEXT &() VULKAN_HPP_NOEXCEPT
31481     {
31482       return *reinterpret_cast<VkDisplayEventInfoEXT *>( this );
31483     }
31484 
31485 #if defined( VULKAN_HPP_USE_REFLECT )
31486 #  if 14 <= VULKAN_HPP_CPP_VERSION
31487     auto
31488 #  else
31489     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT const &>
31490 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31491       reflect() const VULKAN_HPP_NOEXCEPT
31492     {
31493       return std::tie( sType, pNext, displayEvent );
31494     }
31495 #endif
31496 
31497 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31498     auto operator<=>( DisplayEventInfoEXT const & ) const = default;
31499 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31500     bool operator==( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31501     {
31502 #  if defined( VULKAN_HPP_USE_REFLECT )
31503       return this->reflect() == rhs.reflect();
31504 #  else
31505       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayEvent == rhs.displayEvent );
31506 #  endif
31507     }
31508 
operator !=VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31509     bool operator!=( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31510     {
31511       return !operator==( rhs );
31512     }
31513 #endif
31514 
31515   public:
31516     VULKAN_HPP_NAMESPACE::StructureType       sType        = StructureType::eDisplayEventInfoEXT;
31517     const void *                              pNext        = {};
31518     VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut;
31519   };
31520 
31521   template <>
31522   struct CppType<StructureType, StructureType::eDisplayEventInfoEXT>
31523   {
31524     using Type = DisplayEventInfoEXT;
31525   };
31526 
31527   struct DisplayModeParametersKHR
31528   {
31529     using NativeType = VkDisplayModeParametersKHR;
31530 
31531 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeParametersKHRVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31532     VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( VULKAN_HPP_NAMESPACE::Extent2D visibleRegion_ = {}, uint32_t refreshRate_ = {} ) VULKAN_HPP_NOEXCEPT
31533       : visibleRegion{ visibleRegion_ }
31534       , refreshRate{ refreshRate_ }
31535     {
31536     }
31537 
31538     VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31539 
DisplayModeParametersKHRVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31540     DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31541       : DisplayModeParametersKHR( *reinterpret_cast<DisplayModeParametersKHR const *>( &rhs ) )
31542     {
31543     }
31544 
31545     DisplayModeParametersKHR & operator=( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31546 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31547 
operator =VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31548     DisplayModeParametersKHR & operator=( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31549     {
31550       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const *>( &rhs );
31551       return *this;
31552     }
31553 
31554 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setVisibleRegionVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31555     VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & setVisibleRegion( VULKAN_HPP_NAMESPACE::Extent2D const & visibleRegion_ ) VULKAN_HPP_NOEXCEPT
31556     {
31557       visibleRegion = visibleRegion_;
31558       return *this;
31559     }
31560 
setRefreshRateVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31561     VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & setRefreshRate( uint32_t refreshRate_ ) VULKAN_HPP_NOEXCEPT
31562     {
31563       refreshRate = refreshRate_;
31564       return *this;
31565     }
31566 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31567 
operator VkDisplayModeParametersKHR const&VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31568     operator VkDisplayModeParametersKHR const &() const VULKAN_HPP_NOEXCEPT
31569     {
31570       return *reinterpret_cast<const VkDisplayModeParametersKHR *>( this );
31571     }
31572 
operator VkDisplayModeParametersKHR&VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31573     operator VkDisplayModeParametersKHR &() VULKAN_HPP_NOEXCEPT
31574     {
31575       return *reinterpret_cast<VkDisplayModeParametersKHR *>( this );
31576     }
31577 
31578 #if defined( VULKAN_HPP_USE_REFLECT )
31579 #  if 14 <= VULKAN_HPP_CPP_VERSION
31580     auto
31581 #  else
31582     std::tuple<VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
31583 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31584       reflect() const VULKAN_HPP_NOEXCEPT
31585     {
31586       return std::tie( visibleRegion, refreshRate );
31587     }
31588 #endif
31589 
31590 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31591     auto operator<=>( DisplayModeParametersKHR const & ) const = default;
31592 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31593     bool operator==( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31594     {
31595 #  if defined( VULKAN_HPP_USE_REFLECT )
31596       return this->reflect() == rhs.reflect();
31597 #  else
31598       return ( visibleRegion == rhs.visibleRegion ) && ( refreshRate == rhs.refreshRate );
31599 #  endif
31600     }
31601 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31602     bool operator!=( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31603     {
31604       return !operator==( rhs );
31605     }
31606 #endif
31607 
31608   public:
31609     VULKAN_HPP_NAMESPACE::Extent2D visibleRegion = {};
31610     uint32_t                       refreshRate   = {};
31611   };
31612 
31613   struct DisplayModeCreateInfoKHR
31614   {
31615     using NativeType = VkDisplayModeCreateInfoKHR;
31616 
31617     static const bool                                  allowDuplicate = false;
31618     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayModeCreateInfoKHR;
31619 
31620 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31621     VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR( VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_      = {},
31622                                                    VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR  parameters_ = {},
31623                                                    const void *                                    pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
31624       : pNext{ pNext_ }
31625       , flags{ flags_ }
31626       , parameters{ parameters_ }
31627     {
31628     }
31629 
31630     VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31631 
DisplayModeCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31632     DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31633       : DisplayModeCreateInfoKHR( *reinterpret_cast<DisplayModeCreateInfoKHR const *>( &rhs ) )
31634     {
31635     }
31636 
31637     DisplayModeCreateInfoKHR & operator=( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31638 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31639 
operator =VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31640     DisplayModeCreateInfoKHR & operator=( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31641     {
31642       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const *>( &rhs );
31643       return *this;
31644     }
31645 
31646 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31647     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31648     {
31649       pNext = pNext_;
31650       return *this;
31651     }
31652 
setFlagsVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31653     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
31654     {
31655       flags = flags_;
31656       return *this;
31657     }
31658 
setParametersVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31659     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setParameters( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const & parameters_ ) VULKAN_HPP_NOEXCEPT
31660     {
31661       parameters = parameters_;
31662       return *this;
31663     }
31664 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31665 
operator VkDisplayModeCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31666     operator VkDisplayModeCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
31667     {
31668       return *reinterpret_cast<const VkDisplayModeCreateInfoKHR *>( this );
31669     }
31670 
operator VkDisplayModeCreateInfoKHR&VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31671     operator VkDisplayModeCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
31672     {
31673       return *reinterpret_cast<VkDisplayModeCreateInfoKHR *>( this );
31674     }
31675 
31676 #if defined( VULKAN_HPP_USE_REFLECT )
31677 #  if 14 <= VULKAN_HPP_CPP_VERSION
31678     auto
31679 #  else
31680     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
31681                const void * const &,
31682                VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR const &,
31683                VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const &>
31684 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31685       reflect() const VULKAN_HPP_NOEXCEPT
31686     {
31687       return std::tie( sType, pNext, flags, parameters );
31688     }
31689 #endif
31690 
31691 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31692     auto operator<=>( DisplayModeCreateInfoKHR const & ) const = default;
31693 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31694     bool operator==( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31695     {
31696 #  if defined( VULKAN_HPP_USE_REFLECT )
31697       return this->reflect() == rhs.reflect();
31698 #  else
31699       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( parameters == rhs.parameters );
31700 #  endif
31701     }
31702 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31703     bool operator!=( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31704     {
31705       return !operator==( rhs );
31706     }
31707 #endif
31708 
31709   public:
31710     VULKAN_HPP_NAMESPACE::StructureType             sType      = StructureType::eDisplayModeCreateInfoKHR;
31711     const void *                                    pNext      = {};
31712     VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags      = {};
31713     VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR  parameters = {};
31714   };
31715 
31716   template <>
31717   struct CppType<StructureType, StructureType::eDisplayModeCreateInfoKHR>
31718   {
31719     using Type = DisplayModeCreateInfoKHR;
31720   };
31721 
31722   struct DisplayModePropertiesKHR
31723   {
31724     using NativeType = VkDisplayModePropertiesKHR;
31725 
31726 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31727     VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR           displayMode_ = {},
31728                                                    VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters_  = {} ) VULKAN_HPP_NOEXCEPT
31729       : displayMode{ displayMode_ }
31730       , parameters{ parameters_ }
31731     {
31732     }
31733 
31734     VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31735 
DisplayModePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31736     DisplayModePropertiesKHR( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31737       : DisplayModePropertiesKHR( *reinterpret_cast<DisplayModePropertiesKHR const *>( &rhs ) )
31738     {
31739     }
31740 
31741     DisplayModePropertiesKHR & operator=( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31742 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31743 
operator =VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31744     DisplayModePropertiesKHR & operator=( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31745     {
31746       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const *>( &rhs );
31747       return *this;
31748     }
31749 
operator VkDisplayModePropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31750     operator VkDisplayModePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
31751     {
31752       return *reinterpret_cast<const VkDisplayModePropertiesKHR *>( this );
31753     }
31754 
operator VkDisplayModePropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31755     operator VkDisplayModePropertiesKHR &() VULKAN_HPP_NOEXCEPT
31756     {
31757       return *reinterpret_cast<VkDisplayModePropertiesKHR *>( this );
31758     }
31759 
31760 #if defined( VULKAN_HPP_USE_REFLECT )
31761 #  if 14 <= VULKAN_HPP_CPP_VERSION
31762     auto
31763 #  else
31764     std::tuple<VULKAN_HPP_NAMESPACE::DisplayModeKHR const &, VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const &>
31765 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31766       reflect() const VULKAN_HPP_NOEXCEPT
31767     {
31768       return std::tie( displayMode, parameters );
31769     }
31770 #endif
31771 
31772 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31773     auto operator<=>( DisplayModePropertiesKHR const & ) const = default;
31774 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31775     bool operator==( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31776     {
31777 #  if defined( VULKAN_HPP_USE_REFLECT )
31778       return this->reflect() == rhs.reflect();
31779 #  else
31780       return ( displayMode == rhs.displayMode ) && ( parameters == rhs.parameters );
31781 #  endif
31782     }
31783 
operator !=VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31784     bool operator!=( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31785     {
31786       return !operator==( rhs );
31787     }
31788 #endif
31789 
31790   public:
31791     VULKAN_HPP_NAMESPACE::DisplayModeKHR           displayMode = {};
31792     VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters  = {};
31793   };
31794 
31795   struct DisplayModeProperties2KHR
31796   {
31797     using NativeType = VkDisplayModeProperties2KHR;
31798 
31799     static const bool                                  allowDuplicate = false;
31800     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayModeProperties2KHR;
31801 
31802 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeProperties2KHRVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31803     VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties_ = {},
31804                                                     void *                                         pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
31805       : pNext{ pNext_ }
31806       , displayModeProperties{ displayModeProperties_ }
31807     {
31808     }
31809 
31810     VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31811 
DisplayModeProperties2KHRVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31812     DisplayModeProperties2KHR( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
31813       : DisplayModeProperties2KHR( *reinterpret_cast<DisplayModeProperties2KHR const *>( &rhs ) )
31814     {
31815     }
31816 
31817     DisplayModeProperties2KHR & operator=( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31818 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31819 
operator =VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31820     DisplayModeProperties2KHR & operator=( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
31821     {
31822       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR const *>( &rhs );
31823       return *this;
31824     }
31825 
operator VkDisplayModeProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31826     operator VkDisplayModeProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
31827     {
31828       return *reinterpret_cast<const VkDisplayModeProperties2KHR *>( this );
31829     }
31830 
operator VkDisplayModeProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31831     operator VkDisplayModeProperties2KHR &() VULKAN_HPP_NOEXCEPT
31832     {
31833       return *reinterpret_cast<VkDisplayModeProperties2KHR *>( this );
31834     }
31835 
31836 #if defined( VULKAN_HPP_USE_REFLECT )
31837 #  if 14 <= VULKAN_HPP_CPP_VERSION
31838     auto
31839 #  else
31840     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const &>
31841 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31842       reflect() const VULKAN_HPP_NOEXCEPT
31843     {
31844       return std::tie( sType, pNext, displayModeProperties );
31845     }
31846 #endif
31847 
31848 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31849     auto operator<=>( DisplayModeProperties2KHR const & ) const = default;
31850 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31851     bool operator==( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31852     {
31853 #  if defined( VULKAN_HPP_USE_REFLECT )
31854       return this->reflect() == rhs.reflect();
31855 #  else
31856       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayModeProperties == rhs.displayModeProperties );
31857 #  endif
31858     }
31859 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31860     bool operator!=( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31861     {
31862       return !operator==( rhs );
31863     }
31864 #endif
31865 
31866   public:
31867     VULKAN_HPP_NAMESPACE::StructureType            sType                 = StructureType::eDisplayModeProperties2KHR;
31868     void *                                         pNext                 = {};
31869     VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties = {};
31870   };
31871 
31872   template <>
31873   struct CppType<StructureType, StructureType::eDisplayModeProperties2KHR>
31874   {
31875     using Type = DisplayModeProperties2KHR;
31876   };
31877 
31878   struct DisplayNativeHdrSurfaceCapabilitiesAMD
31879   {
31880     using NativeType = VkDisplayNativeHdrSurfaceCapabilitiesAMD;
31881 
31882     static const bool                                  allowDuplicate = false;
31883     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD;
31884 
31885 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayNativeHdrSurfaceCapabilitiesAMDVULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31886     VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingSupport_ = {},
31887                                                                  void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
31888       : pNext{ pNext_ }
31889       , localDimmingSupport{ localDimmingSupport_ }
31890     {
31891     }
31892 
31893     VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31894 
DisplayNativeHdrSurfaceCapabilitiesAMDVULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31895     DisplayNativeHdrSurfaceCapabilitiesAMD( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
31896       : DisplayNativeHdrSurfaceCapabilitiesAMD( *reinterpret_cast<DisplayNativeHdrSurfaceCapabilitiesAMD const *>( &rhs ) )
31897     {
31898     }
31899 
31900     DisplayNativeHdrSurfaceCapabilitiesAMD & operator=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31901 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31902 
operator =VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31903     DisplayNativeHdrSurfaceCapabilitiesAMD & operator=( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
31904     {
31905       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD const *>( &rhs );
31906       return *this;
31907     }
31908 
operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const&VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31909     operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const &() const VULKAN_HPP_NOEXCEPT
31910     {
31911       return *reinterpret_cast<const VkDisplayNativeHdrSurfaceCapabilitiesAMD *>( this );
31912     }
31913 
operator VkDisplayNativeHdrSurfaceCapabilitiesAMD&VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31914     operator VkDisplayNativeHdrSurfaceCapabilitiesAMD &() VULKAN_HPP_NOEXCEPT
31915     {
31916       return *reinterpret_cast<VkDisplayNativeHdrSurfaceCapabilitiesAMD *>( this );
31917     }
31918 
31919 #if defined( VULKAN_HPP_USE_REFLECT )
31920 #  if 14 <= VULKAN_HPP_CPP_VERSION
31921     auto
31922 #  else
31923     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
31924 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31925       reflect() const VULKAN_HPP_NOEXCEPT
31926     {
31927       return std::tie( sType, pNext, localDimmingSupport );
31928     }
31929 #endif
31930 
31931 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31932     auto operator<=>( DisplayNativeHdrSurfaceCapabilitiesAMD const & ) const = default;
31933 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31934     bool operator==( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
31935     {
31936 #  if defined( VULKAN_HPP_USE_REFLECT )
31937       return this->reflect() == rhs.reflect();
31938 #  else
31939       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( localDimmingSupport == rhs.localDimmingSupport );
31940 #  endif
31941     }
31942 
operator !=VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31943     bool operator!=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
31944     {
31945       return !operator==( rhs );
31946     }
31947 #endif
31948 
31949   public:
31950     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD;
31951     void *                              pNext               = {};
31952     VULKAN_HPP_NAMESPACE::Bool32        localDimmingSupport = {};
31953   };
31954 
31955   template <>
31956   struct CppType<StructureType, StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD>
31957   {
31958     using Type = DisplayNativeHdrSurfaceCapabilitiesAMD;
31959   };
31960 
31961   struct DisplayPlaneCapabilitiesKHR
31962   {
31963     using NativeType = VkDisplayPlaneCapabilitiesKHR;
31964 
31965 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneCapabilitiesKHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31966     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha_ = {},
31967                                                       VULKAN_HPP_NAMESPACE::Offset2D                  minSrcPosition_ = {},
31968                                                       VULKAN_HPP_NAMESPACE::Offset2D                  maxSrcPosition_ = {},
31969                                                       VULKAN_HPP_NAMESPACE::Extent2D                  minSrcExtent_   = {},
31970                                                       VULKAN_HPP_NAMESPACE::Extent2D                  maxSrcExtent_   = {},
31971                                                       VULKAN_HPP_NAMESPACE::Offset2D                  minDstPosition_ = {},
31972                                                       VULKAN_HPP_NAMESPACE::Offset2D                  maxDstPosition_ = {},
31973                                                       VULKAN_HPP_NAMESPACE::Extent2D                  minDstExtent_   = {},
31974                                                       VULKAN_HPP_NAMESPACE::Extent2D                  maxDstExtent_   = {} ) VULKAN_HPP_NOEXCEPT
31975       : supportedAlpha{ supportedAlpha_ }
31976       , minSrcPosition{ minSrcPosition_ }
31977       , maxSrcPosition{ maxSrcPosition_ }
31978       , minSrcExtent{ minSrcExtent_ }
31979       , maxSrcExtent{ maxSrcExtent_ }
31980       , minDstPosition{ minDstPosition_ }
31981       , maxDstPosition{ maxDstPosition_ }
31982       , minDstExtent{ minDstExtent_ }
31983       , maxDstExtent{ maxDstExtent_ }
31984     {
31985     }
31986 
31987     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilitiesKHR( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31988 
DisplayPlaneCapabilitiesKHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31989     DisplayPlaneCapabilitiesKHR( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31990       : DisplayPlaneCapabilitiesKHR( *reinterpret_cast<DisplayPlaneCapabilitiesKHR const *>( &rhs ) )
31991     {
31992     }
31993 
31994     DisplayPlaneCapabilitiesKHR & operator=( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31995 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31996 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31997     DisplayPlaneCapabilitiesKHR & operator=( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31998     {
31999       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const *>( &rhs );
32000       return *this;
32001     }
32002 
operator VkDisplayPlaneCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR32003     operator VkDisplayPlaneCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
32004     {
32005       return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR *>( this );
32006     }
32007 
operator VkDisplayPlaneCapabilitiesKHR&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR32008     operator VkDisplayPlaneCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
32009     {
32010       return *reinterpret_cast<VkDisplayPlaneCapabilitiesKHR *>( this );
32011     }
32012 
32013 #if defined( VULKAN_HPP_USE_REFLECT )
32014 #  if 14 <= VULKAN_HPP_CPP_VERSION
32015     auto
32016 #  else
32017     std::tuple<VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR const &,
32018                VULKAN_HPP_NAMESPACE::Offset2D const &,
32019                VULKAN_HPP_NAMESPACE::Offset2D const &,
32020                VULKAN_HPP_NAMESPACE::Extent2D const &,
32021                VULKAN_HPP_NAMESPACE::Extent2D const &,
32022                VULKAN_HPP_NAMESPACE::Offset2D const &,
32023                VULKAN_HPP_NAMESPACE::Offset2D const &,
32024                VULKAN_HPP_NAMESPACE::Extent2D const &,
32025                VULKAN_HPP_NAMESPACE::Extent2D const &>
32026 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR32027       reflect() const VULKAN_HPP_NOEXCEPT
32028     {
32029       return std::tie( supportedAlpha, minSrcPosition, maxSrcPosition, minSrcExtent, maxSrcExtent, minDstPosition, maxDstPosition, minDstExtent, maxDstExtent );
32030     }
32031 #endif
32032 
32033 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32034     auto operator<=>( DisplayPlaneCapabilitiesKHR const & ) const = default;
32035 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR32036     bool operator==( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32037     {
32038 #  if defined( VULKAN_HPP_USE_REFLECT )
32039       return this->reflect() == rhs.reflect();
32040 #  else
32041       return ( supportedAlpha == rhs.supportedAlpha ) && ( minSrcPosition == rhs.minSrcPosition ) && ( maxSrcPosition == rhs.maxSrcPosition ) &&
32042              ( minSrcExtent == rhs.minSrcExtent ) && ( maxSrcExtent == rhs.maxSrcExtent ) && ( minDstPosition == rhs.minDstPosition ) &&
32043              ( maxDstPosition == rhs.maxDstPosition ) && ( minDstExtent == rhs.minDstExtent ) && ( maxDstExtent == rhs.maxDstExtent );
32044 #  endif
32045     }
32046 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR32047     bool operator!=( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32048     {
32049       return !operator==( rhs );
32050     }
32051 #endif
32052 
32053   public:
32054     VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha = {};
32055     VULKAN_HPP_NAMESPACE::Offset2D                  minSrcPosition = {};
32056     VULKAN_HPP_NAMESPACE::Offset2D                  maxSrcPosition = {};
32057     VULKAN_HPP_NAMESPACE::Extent2D                  minSrcExtent   = {};
32058     VULKAN_HPP_NAMESPACE::Extent2D                  maxSrcExtent   = {};
32059     VULKAN_HPP_NAMESPACE::Offset2D                  minDstPosition = {};
32060     VULKAN_HPP_NAMESPACE::Offset2D                  maxDstPosition = {};
32061     VULKAN_HPP_NAMESPACE::Extent2D                  minDstExtent   = {};
32062     VULKAN_HPP_NAMESPACE::Extent2D                  maxDstExtent   = {};
32063   };
32064 
32065   struct DisplayPlaneCapabilities2KHR
32066   {
32067     using NativeType = VkDisplayPlaneCapabilities2KHR;
32068 
32069     static const bool                                  allowDuplicate = false;
32070     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPlaneCapabilities2KHR;
32071 
32072 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneCapabilities2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR32073     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities_ = {},
32074                                                        void *                                            pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
32075       : pNext{ pNext_ }
32076       , capabilities{ capabilities_ }
32077     {
32078     }
32079 
32080     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32081 
DisplayPlaneCapabilities2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR32082     DisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32083       : DisplayPlaneCapabilities2KHR( *reinterpret_cast<DisplayPlaneCapabilities2KHR const *>( &rhs ) )
32084     {
32085     }
32086 
32087     DisplayPlaneCapabilities2KHR & operator=( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32088 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32089 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR32090     DisplayPlaneCapabilities2KHR & operator=( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32091     {
32092       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR const *>( &rhs );
32093       return *this;
32094     }
32095 
operator VkDisplayPlaneCapabilities2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR32096     operator VkDisplayPlaneCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT
32097     {
32098       return *reinterpret_cast<const VkDisplayPlaneCapabilities2KHR *>( this );
32099     }
32100 
operator VkDisplayPlaneCapabilities2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR32101     operator VkDisplayPlaneCapabilities2KHR &() VULKAN_HPP_NOEXCEPT
32102     {
32103       return *reinterpret_cast<VkDisplayPlaneCapabilities2KHR *>( this );
32104     }
32105 
32106 #if defined( VULKAN_HPP_USE_REFLECT )
32107 #  if 14 <= VULKAN_HPP_CPP_VERSION
32108     auto
32109 #  else
32110     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const &>
32111 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR32112       reflect() const VULKAN_HPP_NOEXCEPT
32113     {
32114       return std::tie( sType, pNext, capabilities );
32115     }
32116 #endif
32117 
32118 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32119     auto operator<=>( DisplayPlaneCapabilities2KHR const & ) const = default;
32120 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR32121     bool operator==( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32122     {
32123 #  if defined( VULKAN_HPP_USE_REFLECT )
32124       return this->reflect() == rhs.reflect();
32125 #  else
32126       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( capabilities == rhs.capabilities );
32127 #  endif
32128     }
32129 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR32130     bool operator!=( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32131     {
32132       return !operator==( rhs );
32133     }
32134 #endif
32135 
32136   public:
32137     VULKAN_HPP_NAMESPACE::StructureType               sType        = StructureType::eDisplayPlaneCapabilities2KHR;
32138     void *                                            pNext        = {};
32139     VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities = {};
32140   };
32141 
32142   template <>
32143   struct CppType<StructureType, StructureType::eDisplayPlaneCapabilities2KHR>
32144   {
32145     using Type = DisplayPlaneCapabilities2KHR;
32146   };
32147 
32148   struct DisplayPlaneInfo2KHR
32149   {
32150     using NativeType = VkDisplayPlaneInfo2KHR;
32151 
32152     static const bool                                  allowDuplicate = false;
32153     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPlaneInfo2KHR;
32154 
32155 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
32156     VULKAN_HPP_CONSTEXPR
DisplayPlaneInfo2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32157       DisplayPlaneInfo2KHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ = {}, uint32_t planeIndex_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
32158       : pNext{ pNext_ }
32159       , mode{ mode_ }
32160       , planeIndex{ planeIndex_ }
32161     {
32162     }
32163 
32164     VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32165 
DisplayPlaneInfo2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32166     DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32167       : DisplayPlaneInfo2KHR( *reinterpret_cast<DisplayPlaneInfo2KHR const *>( &rhs ) )
32168     {
32169     }
32170 
32171     DisplayPlaneInfo2KHR & operator=( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32172 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32173 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32174     DisplayPlaneInfo2KHR & operator=( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32175     {
32176       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR const *>( &rhs );
32177       return *this;
32178     }
32179 
32180 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32181     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32182     {
32183       pNext = pNext_;
32184       return *this;
32185     }
32186 
setModeVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32187     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
32188     {
32189       mode = mode_;
32190       return *this;
32191     }
32192 
setPlaneIndexVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32193     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT
32194     {
32195       planeIndex = planeIndex_;
32196       return *this;
32197     }
32198 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32199 
operator VkDisplayPlaneInfo2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32200     operator VkDisplayPlaneInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
32201     {
32202       return *reinterpret_cast<const VkDisplayPlaneInfo2KHR *>( this );
32203     }
32204 
operator VkDisplayPlaneInfo2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32205     operator VkDisplayPlaneInfo2KHR &() VULKAN_HPP_NOEXCEPT
32206     {
32207       return *reinterpret_cast<VkDisplayPlaneInfo2KHR *>( this );
32208     }
32209 
32210 #if defined( VULKAN_HPP_USE_REFLECT )
32211 #  if 14 <= VULKAN_HPP_CPP_VERSION
32212     auto
32213 #  else
32214     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplayModeKHR const &, uint32_t const &>
32215 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32216       reflect() const VULKAN_HPP_NOEXCEPT
32217     {
32218       return std::tie( sType, pNext, mode, planeIndex );
32219     }
32220 #endif
32221 
32222 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32223     auto operator<=>( DisplayPlaneInfo2KHR const & ) const = default;
32224 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32225     bool operator==( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32226     {
32227 #  if defined( VULKAN_HPP_USE_REFLECT )
32228       return this->reflect() == rhs.reflect();
32229 #  else
32230       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mode == rhs.mode ) && ( planeIndex == rhs.planeIndex );
32231 #  endif
32232     }
32233 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR32234     bool operator!=( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32235     {
32236       return !operator==( rhs );
32237     }
32238 #endif
32239 
32240   public:
32241     VULKAN_HPP_NAMESPACE::StructureType  sType      = StructureType::eDisplayPlaneInfo2KHR;
32242     const void *                         pNext      = {};
32243     VULKAN_HPP_NAMESPACE::DisplayModeKHR mode       = {};
32244     uint32_t                             planeIndex = {};
32245   };
32246 
32247   template <>
32248   struct CppType<StructureType, StructureType::eDisplayPlaneInfo2KHR>
32249   {
32250     using Type = DisplayPlaneInfo2KHR;
32251   };
32252 
32253   struct DisplayPlanePropertiesKHR
32254   {
32255     using NativeType = VkDisplayPlanePropertiesKHR;
32256 
32257 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlanePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR32258     VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay_    = {},
32259                                                     uint32_t                         currentStackIndex_ = {} ) VULKAN_HPP_NOEXCEPT
32260       : currentDisplay{ currentDisplay_ }
32261       , currentStackIndex{ currentStackIndex_ }
32262     {
32263     }
32264 
32265     VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32266 
DisplayPlanePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR32267     DisplayPlanePropertiesKHR( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32268       : DisplayPlanePropertiesKHR( *reinterpret_cast<DisplayPlanePropertiesKHR const *>( &rhs ) )
32269     {
32270     }
32271 
32272     DisplayPlanePropertiesKHR & operator=( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32273 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32274 
operator =VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR32275     DisplayPlanePropertiesKHR & operator=( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32276     {
32277       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const *>( &rhs );
32278       return *this;
32279     }
32280 
operator VkDisplayPlanePropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR32281     operator VkDisplayPlanePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
32282     {
32283       return *reinterpret_cast<const VkDisplayPlanePropertiesKHR *>( this );
32284     }
32285 
operator VkDisplayPlanePropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR32286     operator VkDisplayPlanePropertiesKHR &() VULKAN_HPP_NOEXCEPT
32287     {
32288       return *reinterpret_cast<VkDisplayPlanePropertiesKHR *>( this );
32289     }
32290 
32291 #if defined( VULKAN_HPP_USE_REFLECT )
32292 #  if 14 <= VULKAN_HPP_CPP_VERSION
32293     auto
32294 #  else
32295     std::tuple<VULKAN_HPP_NAMESPACE::DisplayKHR const &, uint32_t const &>
32296 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR32297       reflect() const VULKAN_HPP_NOEXCEPT
32298     {
32299       return std::tie( currentDisplay, currentStackIndex );
32300     }
32301 #endif
32302 
32303 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32304     auto operator<=>( DisplayPlanePropertiesKHR const & ) const = default;
32305 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR32306     bool operator==( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32307     {
32308 #  if defined( VULKAN_HPP_USE_REFLECT )
32309       return this->reflect() == rhs.reflect();
32310 #  else
32311       return ( currentDisplay == rhs.currentDisplay ) && ( currentStackIndex == rhs.currentStackIndex );
32312 #  endif
32313     }
32314 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR32315     bool operator!=( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32316     {
32317       return !operator==( rhs );
32318     }
32319 #endif
32320 
32321   public:
32322     VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay    = {};
32323     uint32_t                         currentStackIndex = {};
32324   };
32325 
32326   struct DisplayPlaneProperties2KHR
32327   {
32328     using NativeType = VkDisplayPlaneProperties2KHR;
32329 
32330     static const bool                                  allowDuplicate = false;
32331     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPlaneProperties2KHR;
32332 
32333 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneProperties2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32334     VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties_ = {},
32335                                                      void *                                          pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
32336       : pNext{ pNext_ }
32337       , displayPlaneProperties{ displayPlaneProperties_ }
32338     {
32339     }
32340 
32341     VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32342 
DisplayPlaneProperties2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32343     DisplayPlaneProperties2KHR( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32344       : DisplayPlaneProperties2KHR( *reinterpret_cast<DisplayPlaneProperties2KHR const *>( &rhs ) )
32345     {
32346     }
32347 
32348     DisplayPlaneProperties2KHR & operator=( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32349 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32350 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32351     DisplayPlaneProperties2KHR & operator=( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32352     {
32353       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR const *>( &rhs );
32354       return *this;
32355     }
32356 
operator VkDisplayPlaneProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32357     operator VkDisplayPlaneProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
32358     {
32359       return *reinterpret_cast<const VkDisplayPlaneProperties2KHR *>( this );
32360     }
32361 
operator VkDisplayPlaneProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32362     operator VkDisplayPlaneProperties2KHR &() VULKAN_HPP_NOEXCEPT
32363     {
32364       return *reinterpret_cast<VkDisplayPlaneProperties2KHR *>( this );
32365     }
32366 
32367 #if defined( VULKAN_HPP_USE_REFLECT )
32368 #  if 14 <= VULKAN_HPP_CPP_VERSION
32369     auto
32370 #  else
32371     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const &>
32372 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32373       reflect() const VULKAN_HPP_NOEXCEPT
32374     {
32375       return std::tie( sType, pNext, displayPlaneProperties );
32376     }
32377 #endif
32378 
32379 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32380     auto operator<=>( DisplayPlaneProperties2KHR const & ) const = default;
32381 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32382     bool operator==( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32383     {
32384 #  if defined( VULKAN_HPP_USE_REFLECT )
32385       return this->reflect() == rhs.reflect();
32386 #  else
32387       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayPlaneProperties == rhs.displayPlaneProperties );
32388 #  endif
32389     }
32390 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32391     bool operator!=( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32392     {
32393       return !operator==( rhs );
32394     }
32395 #endif
32396 
32397   public:
32398     VULKAN_HPP_NAMESPACE::StructureType             sType                  = StructureType::eDisplayPlaneProperties2KHR;
32399     void *                                          pNext                  = {};
32400     VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties = {};
32401   };
32402 
32403   template <>
32404   struct CppType<StructureType, StructureType::eDisplayPlaneProperties2KHR>
32405   {
32406     using Type = DisplayPlaneProperties2KHR;
32407   };
32408 
32409   struct DisplayPowerInfoEXT
32410   {
32411     using NativeType = VkDisplayPowerInfoEXT;
32412 
32413     static const bool                                  allowDuplicate = false;
32414     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPowerInfoEXT;
32415 
32416 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPowerInfoEXTVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32417     VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff,
32418                                               const void *                               pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
32419       : pNext{ pNext_ }
32420       , powerState{ powerState_ }
32421     {
32422     }
32423 
32424     VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32425 
DisplayPowerInfoEXTVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32426     DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DisplayPowerInfoEXT( *reinterpret_cast<DisplayPowerInfoEXT const *>( &rhs ) )
32427     {
32428     }
32429 
32430     DisplayPowerInfoEXT & operator=( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32431 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32432 
operator =VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32433     DisplayPowerInfoEXT & operator=( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
32434     {
32435       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT const *>( &rhs );
32436       return *this;
32437     }
32438 
32439 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32440     VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32441     {
32442       pNext = pNext_;
32443       return *this;
32444     }
32445 
setPowerStateVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32446     VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & setPowerState( VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ ) VULKAN_HPP_NOEXCEPT
32447     {
32448       powerState = powerState_;
32449       return *this;
32450     }
32451 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32452 
operator VkDisplayPowerInfoEXT const&VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32453     operator VkDisplayPowerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
32454     {
32455       return *reinterpret_cast<const VkDisplayPowerInfoEXT *>( this );
32456     }
32457 
operator VkDisplayPowerInfoEXT&VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32458     operator VkDisplayPowerInfoEXT &() VULKAN_HPP_NOEXCEPT
32459     {
32460       return *reinterpret_cast<VkDisplayPowerInfoEXT *>( this );
32461     }
32462 
32463 #if defined( VULKAN_HPP_USE_REFLECT )
32464 #  if 14 <= VULKAN_HPP_CPP_VERSION
32465     auto
32466 #  else
32467     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT const &>
32468 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32469       reflect() const VULKAN_HPP_NOEXCEPT
32470     {
32471       return std::tie( sType, pNext, powerState );
32472     }
32473 #endif
32474 
32475 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32476     auto operator<=>( DisplayPowerInfoEXT const & ) const = default;
32477 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32478     bool operator==( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32479     {
32480 #  if defined( VULKAN_HPP_USE_REFLECT )
32481       return this->reflect() == rhs.reflect();
32482 #  else
32483       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( powerState == rhs.powerState );
32484 #  endif
32485     }
32486 
operator !=VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32487     bool operator!=( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32488     {
32489       return !operator==( rhs );
32490     }
32491 #endif
32492 
32493   public:
32494     VULKAN_HPP_NAMESPACE::StructureType        sType      = StructureType::eDisplayPowerInfoEXT;
32495     const void *                               pNext      = {};
32496     VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff;
32497   };
32498 
32499   template <>
32500   struct CppType<StructureType, StructureType::eDisplayPowerInfoEXT>
32501   {
32502     using Type = DisplayPowerInfoEXT;
32503   };
32504 
32505   struct DisplayPresentInfoKHR
32506   {
32507     using NativeType = VkDisplayPresentInfoKHR;
32508 
32509     static const bool                                  allowDuplicate = false;
32510     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPresentInfoKHR;
32511 
32512 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPresentInfoKHRVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32513     VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( VULKAN_HPP_NAMESPACE::Rect2D srcRect_    = {},
32514                                                 VULKAN_HPP_NAMESPACE::Rect2D dstRect_    = {},
32515                                                 VULKAN_HPP_NAMESPACE::Bool32 persistent_ = {},
32516                                                 const void *                 pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
32517       : pNext{ pNext_ }
32518       , srcRect{ srcRect_ }
32519       , dstRect{ dstRect_ }
32520       , persistent{ persistent_ }
32521     {
32522     }
32523 
32524     VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32525 
DisplayPresentInfoKHRVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32526     DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32527       : DisplayPresentInfoKHR( *reinterpret_cast<DisplayPresentInfoKHR const *>( &rhs ) )
32528     {
32529     }
32530 
32531     DisplayPresentInfoKHR & operator=( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32532 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32533 
operator =VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32534     DisplayPresentInfoKHR & operator=( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32535     {
32536       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR const *>( &rhs );
32537       return *this;
32538     }
32539 
32540 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32541     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32542     {
32543       pNext = pNext_;
32544       return *this;
32545     }
32546 
setSrcRectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32547     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setSrcRect( VULKAN_HPP_NAMESPACE::Rect2D const & srcRect_ ) VULKAN_HPP_NOEXCEPT
32548     {
32549       srcRect = srcRect_;
32550       return *this;
32551     }
32552 
setDstRectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32553     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setDstRect( VULKAN_HPP_NAMESPACE::Rect2D const & dstRect_ ) VULKAN_HPP_NOEXCEPT
32554     {
32555       dstRect = dstRect_;
32556       return *this;
32557     }
32558 
setPersistentVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32559     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setPersistent( VULKAN_HPP_NAMESPACE::Bool32 persistent_ ) VULKAN_HPP_NOEXCEPT
32560     {
32561       persistent = persistent_;
32562       return *this;
32563     }
32564 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32565 
operator VkDisplayPresentInfoKHR const&VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32566     operator VkDisplayPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
32567     {
32568       return *reinterpret_cast<const VkDisplayPresentInfoKHR *>( this );
32569     }
32570 
operator VkDisplayPresentInfoKHR&VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32571     operator VkDisplayPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
32572     {
32573       return *reinterpret_cast<VkDisplayPresentInfoKHR *>( this );
32574     }
32575 
32576 #if defined( VULKAN_HPP_USE_REFLECT )
32577 #  if 14 <= VULKAN_HPP_CPP_VERSION
32578     auto
32579 #  else
32580     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
32581                const void * const &,
32582                VULKAN_HPP_NAMESPACE::Rect2D const &,
32583                VULKAN_HPP_NAMESPACE::Rect2D const &,
32584                VULKAN_HPP_NAMESPACE::Bool32 const &>
32585 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32586       reflect() const VULKAN_HPP_NOEXCEPT
32587     {
32588       return std::tie( sType, pNext, srcRect, dstRect, persistent );
32589     }
32590 #endif
32591 
32592 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32593     auto operator<=>( DisplayPresentInfoKHR const & ) const = default;
32594 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32595     bool operator==( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32596     {
32597 #  if defined( VULKAN_HPP_USE_REFLECT )
32598       return this->reflect() == rhs.reflect();
32599 #  else
32600       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcRect == rhs.srcRect ) && ( dstRect == rhs.dstRect ) && ( persistent == rhs.persistent );
32601 #  endif
32602     }
32603 
operator !=VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32604     bool operator!=( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32605     {
32606       return !operator==( rhs );
32607     }
32608 #endif
32609 
32610   public:
32611     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eDisplayPresentInfoKHR;
32612     const void *                        pNext      = {};
32613     VULKAN_HPP_NAMESPACE::Rect2D        srcRect    = {};
32614     VULKAN_HPP_NAMESPACE::Rect2D        dstRect    = {};
32615     VULKAN_HPP_NAMESPACE::Bool32        persistent = {};
32616   };
32617 
32618   template <>
32619   struct CppType<StructureType, StructureType::eDisplayPresentInfoKHR>
32620   {
32621     using Type = DisplayPresentInfoKHR;
32622   };
32623 
32624   struct DisplayPropertiesKHR
32625   {
32626     using NativeType = VkDisplayPropertiesKHR;
32627 
32628 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32629     VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR               display_              = {},
32630                                                const char *                                   displayName_          = {},
32631                                                VULKAN_HPP_NAMESPACE::Extent2D                 physicalDimensions_   = {},
32632                                                VULKAN_HPP_NAMESPACE::Extent2D                 physicalResolution_   = {},
32633                                                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_  = {},
32634                                                VULKAN_HPP_NAMESPACE::Bool32                   planeReorderPossible_ = {},
32635                                                VULKAN_HPP_NAMESPACE::Bool32                   persistentContent_    = {} ) VULKAN_HPP_NOEXCEPT
32636       : display{ display_ }
32637       , displayName{ displayName_ }
32638       , physicalDimensions{ physicalDimensions_ }
32639       , physicalResolution{ physicalResolution_ }
32640       , supportedTransforms{ supportedTransforms_ }
32641       , planeReorderPossible{ planeReorderPossible_ }
32642       , persistentContent{ persistentContent_ }
32643     {
32644     }
32645 
32646     VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32647 
DisplayPropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32648     DisplayPropertiesKHR( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32649       : DisplayPropertiesKHR( *reinterpret_cast<DisplayPropertiesKHR const *>( &rhs ) )
32650     {
32651     }
32652 
32653     DisplayPropertiesKHR & operator=( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32654 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32655 
operator =VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32656     DisplayPropertiesKHR & operator=( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32657     {
32658       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const *>( &rhs );
32659       return *this;
32660     }
32661 
operator VkDisplayPropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32662     operator VkDisplayPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
32663     {
32664       return *reinterpret_cast<const VkDisplayPropertiesKHR *>( this );
32665     }
32666 
operator VkDisplayPropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32667     operator VkDisplayPropertiesKHR &() VULKAN_HPP_NOEXCEPT
32668     {
32669       return *reinterpret_cast<VkDisplayPropertiesKHR *>( this );
32670     }
32671 
32672 #if defined( VULKAN_HPP_USE_REFLECT )
32673 #  if 14 <= VULKAN_HPP_CPP_VERSION
32674     auto
32675 #  else
32676     std::tuple<VULKAN_HPP_NAMESPACE::DisplayKHR const &,
32677                const char * const &,
32678                VULKAN_HPP_NAMESPACE::Extent2D const &,
32679                VULKAN_HPP_NAMESPACE::Extent2D const &,
32680                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &,
32681                VULKAN_HPP_NAMESPACE::Bool32 const &,
32682                VULKAN_HPP_NAMESPACE::Bool32 const &>
32683 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32684       reflect() const VULKAN_HPP_NOEXCEPT
32685     {
32686       return std::tie( display, displayName, physicalDimensions, physicalResolution, supportedTransforms, planeReorderPossible, persistentContent );
32687     }
32688 #endif
32689 
32690 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32691     std::strong_ordering operator<=>( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32692     {
32693       if ( auto cmp = display <=> rhs.display; cmp != 0 )
32694         return cmp;
32695       if ( displayName != rhs.displayName )
32696         if ( auto cmp = strcmp( displayName, rhs.displayName ); cmp != 0 )
32697           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
32698       if ( auto cmp = physicalDimensions <=> rhs.physicalDimensions; cmp != 0 )
32699         return cmp;
32700       if ( auto cmp = physicalResolution <=> rhs.physicalResolution; cmp != 0 )
32701         return cmp;
32702       if ( auto cmp = supportedTransforms <=> rhs.supportedTransforms; cmp != 0 )
32703         return cmp;
32704       if ( auto cmp = planeReorderPossible <=> rhs.planeReorderPossible; cmp != 0 )
32705         return cmp;
32706       if ( auto cmp = persistentContent <=> rhs.persistentContent; cmp != 0 )
32707         return cmp;
32708 
32709       return std::strong_ordering::equivalent;
32710     }
32711 #endif
32712 
operator ==VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32713     bool operator==( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32714     {
32715       return ( display == rhs.display ) && ( ( displayName == rhs.displayName ) || ( strcmp( displayName, rhs.displayName ) == 0 ) ) &&
32716              ( physicalDimensions == rhs.physicalDimensions ) && ( physicalResolution == rhs.physicalResolution ) &&
32717              ( supportedTransforms == rhs.supportedTransforms ) && ( planeReorderPossible == rhs.planeReorderPossible ) &&
32718              ( persistentContent == rhs.persistentContent );
32719     }
32720 
operator !=VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32721     bool operator!=( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32722     {
32723       return !operator==( rhs );
32724     }
32725 
32726   public:
32727     VULKAN_HPP_NAMESPACE::DisplayKHR               display              = {};
32728     const char *                                   displayName          = {};
32729     VULKAN_HPP_NAMESPACE::Extent2D                 physicalDimensions   = {};
32730     VULKAN_HPP_NAMESPACE::Extent2D                 physicalResolution   = {};
32731     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms  = {};
32732     VULKAN_HPP_NAMESPACE::Bool32                   planeReorderPossible = {};
32733     VULKAN_HPP_NAMESPACE::Bool32                   persistentContent    = {};
32734   };
32735 
32736   struct DisplayProperties2KHR
32737   {
32738     using NativeType = VkDisplayProperties2KHR;
32739 
32740     static const bool                                  allowDuplicate = false;
32741     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayProperties2KHR;
32742 
32743 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayProperties2KHRVULKAN_HPP_NAMESPACE::DisplayProperties2KHR32744     VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties_ = {},
32745                                                 void *                                     pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
32746       : pNext{ pNext_ }
32747       , displayProperties{ displayProperties_ }
32748     {
32749     }
32750 
32751     VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32752 
DisplayProperties2KHRVULKAN_HPP_NAMESPACE::DisplayProperties2KHR32753     DisplayProperties2KHR( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32754       : DisplayProperties2KHR( *reinterpret_cast<DisplayProperties2KHR const *>( &rhs ) )
32755     {
32756     }
32757 
32758     DisplayProperties2KHR & operator=( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32759 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32760 
operator =VULKAN_HPP_NAMESPACE::DisplayProperties2KHR32761     DisplayProperties2KHR & operator=( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32762     {
32763       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR const *>( &rhs );
32764       return *this;
32765     }
32766 
operator VkDisplayProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayProperties2KHR32767     operator VkDisplayProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
32768     {
32769       return *reinterpret_cast<const VkDisplayProperties2KHR *>( this );
32770     }
32771 
operator VkDisplayProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayProperties2KHR32772     operator VkDisplayProperties2KHR &() VULKAN_HPP_NOEXCEPT
32773     {
32774       return *reinterpret_cast<VkDisplayProperties2KHR *>( this );
32775     }
32776 
32777 #if defined( VULKAN_HPP_USE_REFLECT )
32778 #  if 14 <= VULKAN_HPP_CPP_VERSION
32779     auto
32780 #  else
32781     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const &>
32782 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayProperties2KHR32783       reflect() const VULKAN_HPP_NOEXCEPT
32784     {
32785       return std::tie( sType, pNext, displayProperties );
32786     }
32787 #endif
32788 
32789 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32790     auto operator<=>( DisplayProperties2KHR const & ) const = default;
32791 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayProperties2KHR32792     bool operator==( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32793     {
32794 #  if defined( VULKAN_HPP_USE_REFLECT )
32795       return this->reflect() == rhs.reflect();
32796 #  else
32797       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayProperties == rhs.displayProperties );
32798 #  endif
32799     }
32800 
operator !=VULKAN_HPP_NAMESPACE::DisplayProperties2KHR32801     bool operator!=( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32802     {
32803       return !operator==( rhs );
32804     }
32805 #endif
32806 
32807   public:
32808     VULKAN_HPP_NAMESPACE::StructureType        sType             = StructureType::eDisplayProperties2KHR;
32809     void *                                     pNext             = {};
32810     VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties = {};
32811   };
32812 
32813   template <>
32814   struct CppType<StructureType, StructureType::eDisplayProperties2KHR>
32815   {
32816     using Type = DisplayProperties2KHR;
32817   };
32818 
32819   struct DisplaySurfaceCreateInfoKHR
32820   {
32821     using NativeType = VkDisplaySurfaceCreateInfoKHR;
32822 
32823     static const bool                                  allowDuplicate = false;
32824     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplaySurfaceCreateInfoKHR;
32825 
32826 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
32827     VULKAN_HPP_CONSTEXPR
DisplaySurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32828       DisplaySurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_           = {},
32829                                    VULKAN_HPP_NAMESPACE::DisplayModeKHR               displayMode_     = {},
32830                                    uint32_t                                           planeIndex_      = {},
32831                                    uint32_t                                           planeStackIndex_ = {},
32832                                    VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR  transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
32833                                    float                                              globalAlpha_ = {},
32834                                    VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ = VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque,
32835                                    VULKAN_HPP_NAMESPACE::Extent2D                     imageExtent_ = {},
32836                                    const void *                                       pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
32837       : pNext{ pNext_ }
32838       , flags{ flags_ }
32839       , displayMode{ displayMode_ }
32840       , planeIndex{ planeIndex_ }
32841       , planeStackIndex{ planeStackIndex_ }
32842       , transform{ transform_ }
32843       , globalAlpha{ globalAlpha_ }
32844       , alphaMode{ alphaMode_ }
32845       , imageExtent{ imageExtent_ }
32846     {
32847     }
32848 
32849     VULKAN_HPP_CONSTEXPR DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32850 
DisplaySurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32851     DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32852       : DisplaySurfaceCreateInfoKHR( *reinterpret_cast<DisplaySurfaceCreateInfoKHR const *>( &rhs ) )
32853     {
32854     }
32855 
32856     DisplaySurfaceCreateInfoKHR & operator=( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32857 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32858 
operator =VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32859     DisplaySurfaceCreateInfoKHR & operator=( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32860     {
32861       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const *>( &rhs );
32862       return *this;
32863     }
32864 
32865 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32866     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32867     {
32868       pNext = pNext_;
32869       return *this;
32870     }
32871 
setFlagsVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32872     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
32873     {
32874       flags = flags_;
32875       return *this;
32876     }
32877 
setDisplayModeVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32878     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setDisplayMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ ) VULKAN_HPP_NOEXCEPT
32879     {
32880       displayMode = displayMode_;
32881       return *this;
32882     }
32883 
setPlaneIndexVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32884     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT
32885     {
32886       planeIndex = planeIndex_;
32887       return *this;
32888     }
32889 
setPlaneStackIndexVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32890     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPlaneStackIndex( uint32_t planeStackIndex_ ) VULKAN_HPP_NOEXCEPT
32891     {
32892       planeStackIndex = planeStackIndex_;
32893       return *this;
32894     }
32895 
setTransformVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32896     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
32897     {
32898       transform = transform_;
32899       return *this;
32900     }
32901 
setGlobalAlphaVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32902     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setGlobalAlpha( float globalAlpha_ ) VULKAN_HPP_NOEXCEPT
32903     {
32904       globalAlpha = globalAlpha_;
32905       return *this;
32906     }
32907 
setAlphaModeVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32908     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setAlphaMode( VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ ) VULKAN_HPP_NOEXCEPT
32909     {
32910       alphaMode = alphaMode_;
32911       return *this;
32912     }
32913 
setImageExtentVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32914     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
32915     {
32916       imageExtent = imageExtent_;
32917       return *this;
32918     }
32919 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32920 
operator VkDisplaySurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32921     operator VkDisplaySurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
32922     {
32923       return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR *>( this );
32924     }
32925 
operator VkDisplaySurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32926     operator VkDisplaySurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
32927     {
32928       return *reinterpret_cast<VkDisplaySurfaceCreateInfoKHR *>( this );
32929     }
32930 
32931 #if defined( VULKAN_HPP_USE_REFLECT )
32932 #  if 14 <= VULKAN_HPP_CPP_VERSION
32933     auto
32934 #  else
32935     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
32936                const void * const &,
32937                VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR const &,
32938                VULKAN_HPP_NAMESPACE::DisplayModeKHR const &,
32939                uint32_t const &,
32940                uint32_t const &,
32941                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
32942                float const &,
32943                VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR const &,
32944                VULKAN_HPP_NAMESPACE::Extent2D const &>
32945 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32946       reflect() const VULKAN_HPP_NOEXCEPT
32947     {
32948       return std::tie( sType, pNext, flags, displayMode, planeIndex, planeStackIndex, transform, globalAlpha, alphaMode, imageExtent );
32949     }
32950 #endif
32951 
32952 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32953     auto operator<=>( DisplaySurfaceCreateInfoKHR const & ) const = default;
32954 #else
operator ==VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32955     bool operator==( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32956     {
32957 #  if defined( VULKAN_HPP_USE_REFLECT )
32958       return this->reflect() == rhs.reflect();
32959 #  else
32960       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( displayMode == rhs.displayMode ) &&
32961              ( planeIndex == rhs.planeIndex ) && ( planeStackIndex == rhs.planeStackIndex ) && ( transform == rhs.transform ) &&
32962              ( globalAlpha == rhs.globalAlpha ) && ( alphaMode == rhs.alphaMode ) && ( imageExtent == rhs.imageExtent );
32963 #  endif
32964     }
32965 
operator !=VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32966     bool operator!=( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32967     {
32968       return !operator==( rhs );
32969     }
32970 #endif
32971 
32972   public:
32973     VULKAN_HPP_NAMESPACE::StructureType                sType           = StructureType::eDisplaySurfaceCreateInfoKHR;
32974     const void *                                       pNext           = {};
32975     VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags           = {};
32976     VULKAN_HPP_NAMESPACE::DisplayModeKHR               displayMode     = {};
32977     uint32_t                                           planeIndex      = {};
32978     uint32_t                                           planeStackIndex = {};
32979     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR  transform       = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
32980     float                                              globalAlpha     = {};
32981     VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode       = VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque;
32982     VULKAN_HPP_NAMESPACE::Extent2D                     imageExtent     = {};
32983   };
32984 
32985   template <>
32986   struct CppType<StructureType, StructureType::eDisplaySurfaceCreateInfoKHR>
32987   {
32988     using Type = DisplaySurfaceCreateInfoKHR;
32989   };
32990 
32991   struct DrawIndexedIndirectCommand
32992   {
32993     using NativeType = VkDrawIndexedIndirectCommand;
32994 
32995 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawIndexedIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32996     VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand( uint32_t indexCount_    = {},
32997                                                      uint32_t instanceCount_ = {},
32998                                                      uint32_t firstIndex_    = {},
32999                                                      int32_t  vertexOffset_  = {},
33000                                                      uint32_t firstInstance_ = {} ) VULKAN_HPP_NOEXCEPT
33001       : indexCount{ indexCount_ }
33002       , instanceCount{ instanceCount_ }
33003       , firstIndex{ firstIndex_ }
33004       , vertexOffset{ vertexOffset_ }
33005       , firstInstance{ firstInstance_ }
33006     {
33007     }
33008 
33009     VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33010 
DrawIndexedIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33011     DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
33012       : DrawIndexedIndirectCommand( *reinterpret_cast<DrawIndexedIndirectCommand const *>( &rhs ) )
33013     {
33014     }
33015 
33016     DrawIndexedIndirectCommand & operator=( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33017 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33018 
operator =VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33019     DrawIndexedIndirectCommand & operator=( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
33020     {
33021       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand const *>( &rhs );
33022       return *this;
33023     }
33024 
33025 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setIndexCountVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33026     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
33027     {
33028       indexCount = indexCount_;
33029       return *this;
33030     }
33031 
setInstanceCountVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33032     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
33033     {
33034       instanceCount = instanceCount_;
33035       return *this;
33036     }
33037 
setFirstIndexVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33038     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstIndex( uint32_t firstIndex_ ) VULKAN_HPP_NOEXCEPT
33039     {
33040       firstIndex = firstIndex_;
33041       return *this;
33042     }
33043 
setVertexOffsetVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33044     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setVertexOffset( int32_t vertexOffset_ ) VULKAN_HPP_NOEXCEPT
33045     {
33046       vertexOffset = vertexOffset_;
33047       return *this;
33048     }
33049 
setFirstInstanceVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33050     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT
33051     {
33052       firstInstance = firstInstance_;
33053       return *this;
33054     }
33055 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33056 
operator VkDrawIndexedIndirectCommand const&VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33057     operator VkDrawIndexedIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
33058     {
33059       return *reinterpret_cast<const VkDrawIndexedIndirectCommand *>( this );
33060     }
33061 
operator VkDrawIndexedIndirectCommand&VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33062     operator VkDrawIndexedIndirectCommand &() VULKAN_HPP_NOEXCEPT
33063     {
33064       return *reinterpret_cast<VkDrawIndexedIndirectCommand *>( this );
33065     }
33066 
33067 #if defined( VULKAN_HPP_USE_REFLECT )
33068 #  if 14 <= VULKAN_HPP_CPP_VERSION
33069     auto
33070 #  else
33071     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, int32_t const &, uint32_t const &>
33072 #  endif
reflectVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33073       reflect() const VULKAN_HPP_NOEXCEPT
33074     {
33075       return std::tie( indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
33076     }
33077 #endif
33078 
33079 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33080     auto operator<=>( DrawIndexedIndirectCommand const & ) const = default;
33081 #else
operator ==VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33082     bool operator==( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
33083     {
33084 #  if defined( VULKAN_HPP_USE_REFLECT )
33085       return this->reflect() == rhs.reflect();
33086 #  else
33087       return ( indexCount == rhs.indexCount ) && ( instanceCount == rhs.instanceCount ) && ( firstIndex == rhs.firstIndex ) &&
33088              ( vertexOffset == rhs.vertexOffset ) && ( firstInstance == rhs.firstInstance );
33089 #  endif
33090     }
33091 
operator !=VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand33092     bool operator!=( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
33093     {
33094       return !operator==( rhs );
33095     }
33096 #endif
33097 
33098   public:
33099     uint32_t indexCount    = {};
33100     uint32_t instanceCount = {};
33101     uint32_t firstIndex    = {};
33102     int32_t  vertexOffset  = {};
33103     uint32_t firstInstance = {};
33104   };
33105 
33106   struct DrawIndirectCommand
33107   {
33108     using NativeType = VkDrawIndirectCommand;
33109 
33110 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndirectCommand33111     VULKAN_HPP_CONSTEXPR DrawIndirectCommand( uint32_t vertexCount_   = {},
33112                                               uint32_t instanceCount_ = {},
33113                                               uint32_t firstVertex_   = {},
33114                                               uint32_t firstInstance_ = {} ) VULKAN_HPP_NOEXCEPT
33115       : vertexCount{ vertexCount_ }
33116       , instanceCount{ instanceCount_ }
33117       , firstVertex{ firstVertex_ }
33118       , firstInstance{ firstInstance_ }
33119     {
33120     }
33121 
33122     VULKAN_HPP_CONSTEXPR DrawIndirectCommand( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33123 
DrawIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndirectCommand33124     DrawIndirectCommand( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT : DrawIndirectCommand( *reinterpret_cast<DrawIndirectCommand const *>( &rhs ) )
33125     {
33126     }
33127 
33128     DrawIndirectCommand & operator=( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33129 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33130 
operator =VULKAN_HPP_NAMESPACE::DrawIndirectCommand33131     DrawIndirectCommand & operator=( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
33132     {
33133       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndirectCommand const *>( &rhs );
33134       return *this;
33135     }
33136 
33137 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setVertexCountVULKAN_HPP_NAMESPACE::DrawIndirectCommand33138     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
33139     {
33140       vertexCount = vertexCount_;
33141       return *this;
33142     }
33143 
setInstanceCountVULKAN_HPP_NAMESPACE::DrawIndirectCommand33144     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
33145     {
33146       instanceCount = instanceCount_;
33147       return *this;
33148     }
33149 
setFirstVertexVULKAN_HPP_NAMESPACE::DrawIndirectCommand33150     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT
33151     {
33152       firstVertex = firstVertex_;
33153       return *this;
33154     }
33155 
setFirstInstanceVULKAN_HPP_NAMESPACE::DrawIndirectCommand33156     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT
33157     {
33158       firstInstance = firstInstance_;
33159       return *this;
33160     }
33161 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33162 
operator VkDrawIndirectCommand const&VULKAN_HPP_NAMESPACE::DrawIndirectCommand33163     operator VkDrawIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
33164     {
33165       return *reinterpret_cast<const VkDrawIndirectCommand *>( this );
33166     }
33167 
operator VkDrawIndirectCommand&VULKAN_HPP_NAMESPACE::DrawIndirectCommand33168     operator VkDrawIndirectCommand &() VULKAN_HPP_NOEXCEPT
33169     {
33170       return *reinterpret_cast<VkDrawIndirectCommand *>( this );
33171     }
33172 
33173 #if defined( VULKAN_HPP_USE_REFLECT )
33174 #  if 14 <= VULKAN_HPP_CPP_VERSION
33175     auto
33176 #  else
33177     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
33178 #  endif
reflectVULKAN_HPP_NAMESPACE::DrawIndirectCommand33179       reflect() const VULKAN_HPP_NOEXCEPT
33180     {
33181       return std::tie( vertexCount, instanceCount, firstVertex, firstInstance );
33182     }
33183 #endif
33184 
33185 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33186     auto operator<=>( DrawIndirectCommand const & ) const = default;
33187 #else
operator ==VULKAN_HPP_NAMESPACE::DrawIndirectCommand33188     bool operator==( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
33189     {
33190 #  if defined( VULKAN_HPP_USE_REFLECT )
33191       return this->reflect() == rhs.reflect();
33192 #  else
33193       return ( vertexCount == rhs.vertexCount ) && ( instanceCount == rhs.instanceCount ) && ( firstVertex == rhs.firstVertex ) &&
33194              ( firstInstance == rhs.firstInstance );
33195 #  endif
33196     }
33197 
operator !=VULKAN_HPP_NAMESPACE::DrawIndirectCommand33198     bool operator!=( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
33199     {
33200       return !operator==( rhs );
33201     }
33202 #endif
33203 
33204   public:
33205     uint32_t vertexCount   = {};
33206     uint32_t instanceCount = {};
33207     uint32_t firstVertex   = {};
33208     uint32_t firstInstance = {};
33209   };
33210 
33211   struct DrawMeshTasksIndirectCommandEXT
33212   {
33213     using NativeType = VkDrawMeshTasksIndirectCommandEXT;
33214 
33215 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
33216     VULKAN_HPP_CONSTEXPR
DrawMeshTasksIndirectCommandEXTVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33217       DrawMeshTasksIndirectCommandEXT( uint32_t groupCountX_ = {}, uint32_t groupCountY_ = {}, uint32_t groupCountZ_ = {} ) VULKAN_HPP_NOEXCEPT
33218       : groupCountX{ groupCountX_ }
33219       , groupCountY{ groupCountY_ }
33220       , groupCountZ{ groupCountZ_ }
33221     {
33222     }
33223 
33224     VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandEXT( DrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33225 
DrawMeshTasksIndirectCommandEXTVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33226     DrawMeshTasksIndirectCommandEXT( VkDrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33227       : DrawMeshTasksIndirectCommandEXT( *reinterpret_cast<DrawMeshTasksIndirectCommandEXT const *>( &rhs ) )
33228     {
33229     }
33230 
33231     DrawMeshTasksIndirectCommandEXT & operator=( DrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33232 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33233 
operator =VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33234     DrawMeshTasksIndirectCommandEXT & operator=( VkDrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33235     {
33236       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT const *>( &rhs );
33237       return *this;
33238     }
33239 
33240 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setGroupCountXVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33241     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT & setGroupCountX( uint32_t groupCountX_ ) VULKAN_HPP_NOEXCEPT
33242     {
33243       groupCountX = groupCountX_;
33244       return *this;
33245     }
33246 
setGroupCountYVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33247     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT & setGroupCountY( uint32_t groupCountY_ ) VULKAN_HPP_NOEXCEPT
33248     {
33249       groupCountY = groupCountY_;
33250       return *this;
33251     }
33252 
setGroupCountZVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33253     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT & setGroupCountZ( uint32_t groupCountZ_ ) VULKAN_HPP_NOEXCEPT
33254     {
33255       groupCountZ = groupCountZ_;
33256       return *this;
33257     }
33258 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33259 
operator VkDrawMeshTasksIndirectCommandEXT const&VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33260     operator VkDrawMeshTasksIndirectCommandEXT const &() const VULKAN_HPP_NOEXCEPT
33261     {
33262       return *reinterpret_cast<const VkDrawMeshTasksIndirectCommandEXT *>( this );
33263     }
33264 
operator VkDrawMeshTasksIndirectCommandEXT&VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33265     operator VkDrawMeshTasksIndirectCommandEXT &() VULKAN_HPP_NOEXCEPT
33266     {
33267       return *reinterpret_cast<VkDrawMeshTasksIndirectCommandEXT *>( this );
33268     }
33269 
33270 #if defined( VULKAN_HPP_USE_REFLECT )
33271 #  if 14 <= VULKAN_HPP_CPP_VERSION
33272     auto
33273 #  else
33274     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
33275 #  endif
reflectVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33276       reflect() const VULKAN_HPP_NOEXCEPT
33277     {
33278       return std::tie( groupCountX, groupCountY, groupCountZ );
33279     }
33280 #endif
33281 
33282 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33283     auto operator<=>( DrawMeshTasksIndirectCommandEXT const & ) const = default;
33284 #else
operator ==VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33285     bool operator==( DrawMeshTasksIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33286     {
33287 #  if defined( VULKAN_HPP_USE_REFLECT )
33288       return this->reflect() == rhs.reflect();
33289 #  else
33290       return ( groupCountX == rhs.groupCountX ) && ( groupCountY == rhs.groupCountY ) && ( groupCountZ == rhs.groupCountZ );
33291 #  endif
33292     }
33293 
operator !=VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT33294     bool operator!=( DrawMeshTasksIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33295     {
33296       return !operator==( rhs );
33297     }
33298 #endif
33299 
33300   public:
33301     uint32_t groupCountX = {};
33302     uint32_t groupCountY = {};
33303     uint32_t groupCountZ = {};
33304   };
33305 
33306   struct DrawMeshTasksIndirectCommandNV
33307   {
33308     using NativeType = VkDrawMeshTasksIndirectCommandNV;
33309 
33310 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawMeshTasksIndirectCommandNVVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33311     VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandNV( uint32_t taskCount_ = {}, uint32_t firstTask_ = {} ) VULKAN_HPP_NOEXCEPT
33312       : taskCount{ taskCount_ }
33313       , firstTask{ firstTask_ }
33314     {
33315     }
33316 
33317     VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandNV( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33318 
DrawMeshTasksIndirectCommandNVVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33319     DrawMeshTasksIndirectCommandNV( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
33320       : DrawMeshTasksIndirectCommandNV( *reinterpret_cast<DrawMeshTasksIndirectCommandNV const *>( &rhs ) )
33321     {
33322     }
33323 
33324     DrawMeshTasksIndirectCommandNV & operator=( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33325 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33326 
operator =VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33327     DrawMeshTasksIndirectCommandNV & operator=( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
33328     {
33329       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV const *>( &rhs );
33330       return *this;
33331     }
33332 
33333 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setTaskCountVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33334     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & setTaskCount( uint32_t taskCount_ ) VULKAN_HPP_NOEXCEPT
33335     {
33336       taskCount = taskCount_;
33337       return *this;
33338     }
33339 
setFirstTaskVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33340     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & setFirstTask( uint32_t firstTask_ ) VULKAN_HPP_NOEXCEPT
33341     {
33342       firstTask = firstTask_;
33343       return *this;
33344     }
33345 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33346 
operator VkDrawMeshTasksIndirectCommandNV const&VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33347     operator VkDrawMeshTasksIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
33348     {
33349       return *reinterpret_cast<const VkDrawMeshTasksIndirectCommandNV *>( this );
33350     }
33351 
operator VkDrawMeshTasksIndirectCommandNV&VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33352     operator VkDrawMeshTasksIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
33353     {
33354       return *reinterpret_cast<VkDrawMeshTasksIndirectCommandNV *>( this );
33355     }
33356 
33357 #if defined( VULKAN_HPP_USE_REFLECT )
33358 #  if 14 <= VULKAN_HPP_CPP_VERSION
33359     auto
33360 #  else
33361     std::tuple<uint32_t const &, uint32_t const &>
33362 #  endif
reflectVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33363       reflect() const VULKAN_HPP_NOEXCEPT
33364     {
33365       return std::tie( taskCount, firstTask );
33366     }
33367 #endif
33368 
33369 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33370     auto operator<=>( DrawMeshTasksIndirectCommandNV const & ) const = default;
33371 #else
operator ==VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33372     bool operator==( DrawMeshTasksIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
33373     {
33374 #  if defined( VULKAN_HPP_USE_REFLECT )
33375       return this->reflect() == rhs.reflect();
33376 #  else
33377       return ( taskCount == rhs.taskCount ) && ( firstTask == rhs.firstTask );
33378 #  endif
33379     }
33380 
operator !=VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33381     bool operator!=( DrawMeshTasksIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
33382     {
33383       return !operator==( rhs );
33384     }
33385 #endif
33386 
33387   public:
33388     uint32_t taskCount = {};
33389     uint32_t firstTask = {};
33390   };
33391 
33392   struct DrmFormatModifierProperties2EXT
33393   {
33394     using NativeType = VkDrmFormatModifierProperties2EXT;
33395 
33396 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierProperties2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33397     VULKAN_HPP_CONSTEXPR DrmFormatModifierProperties2EXT( uint64_t                                  drmFormatModifier_               = {},
33398                                                           uint32_t                                  drmFormatModifierPlaneCount_     = {},
33399                                                           VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 drmFormatModifierTilingFeatures_ = {} ) VULKAN_HPP_NOEXCEPT
33400       : drmFormatModifier{ drmFormatModifier_ }
33401       , drmFormatModifierPlaneCount{ drmFormatModifierPlaneCount_ }
33402       , drmFormatModifierTilingFeatures{ drmFormatModifierTilingFeatures_ }
33403     {
33404     }
33405 
33406     VULKAN_HPP_CONSTEXPR DrmFormatModifierProperties2EXT( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33407 
DrmFormatModifierProperties2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33408     DrmFormatModifierProperties2EXT( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
33409       : DrmFormatModifierProperties2EXT( *reinterpret_cast<DrmFormatModifierProperties2EXT const *>( &rhs ) )
33410     {
33411     }
33412 
33413     DrmFormatModifierProperties2EXT & operator=( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33414 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33415 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33416     DrmFormatModifierProperties2EXT & operator=( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
33417     {
33418       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT const *>( &rhs );
33419       return *this;
33420     }
33421 
operator VkDrmFormatModifierProperties2EXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33422     operator VkDrmFormatModifierProperties2EXT const &() const VULKAN_HPP_NOEXCEPT
33423     {
33424       return *reinterpret_cast<const VkDrmFormatModifierProperties2EXT *>( this );
33425     }
33426 
operator VkDrmFormatModifierProperties2EXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33427     operator VkDrmFormatModifierProperties2EXT &() VULKAN_HPP_NOEXCEPT
33428     {
33429       return *reinterpret_cast<VkDrmFormatModifierProperties2EXT *>( this );
33430     }
33431 
33432 #if defined( VULKAN_HPP_USE_REFLECT )
33433 #  if 14 <= VULKAN_HPP_CPP_VERSION
33434     auto
33435 #  else
33436     std::tuple<uint64_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &>
33437 #  endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33438       reflect() const VULKAN_HPP_NOEXCEPT
33439     {
33440       return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures );
33441     }
33442 #endif
33443 
33444 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33445     auto operator<=>( DrmFormatModifierProperties2EXT const & ) const = default;
33446 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33447     bool operator==( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33448     {
33449 #  if defined( VULKAN_HPP_USE_REFLECT )
33450       return this->reflect() == rhs.reflect();
33451 #  else
33452       return ( drmFormatModifier == rhs.drmFormatModifier ) && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) &&
33453              ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures );
33454 #  endif
33455     }
33456 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33457     bool operator!=( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33458     {
33459       return !operator==( rhs );
33460     }
33461 #endif
33462 
33463   public:
33464     uint64_t                                  drmFormatModifier               = {};
33465     uint32_t                                  drmFormatModifierPlaneCount     = {};
33466     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 drmFormatModifierTilingFeatures = {};
33467   };
33468 
33469   struct DrmFormatModifierPropertiesEXT
33470   {
33471     using NativeType = VkDrmFormatModifierPropertiesEXT;
33472 
33473 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33474     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT( uint64_t                                 drmFormatModifier_               = {},
33475                                                          uint32_t                                 drmFormatModifierPlaneCount_     = {},
33476                                                          VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures_ = {} ) VULKAN_HPP_NOEXCEPT
33477       : drmFormatModifier{ drmFormatModifier_ }
33478       , drmFormatModifierPlaneCount{ drmFormatModifierPlaneCount_ }
33479       , drmFormatModifierTilingFeatures{ drmFormatModifierTilingFeatures_ }
33480     {
33481     }
33482 
33483     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33484 
DrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33485     DrmFormatModifierPropertiesEXT( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33486       : DrmFormatModifierPropertiesEXT( *reinterpret_cast<DrmFormatModifierPropertiesEXT const *>( &rhs ) )
33487     {
33488     }
33489 
33490     DrmFormatModifierPropertiesEXT & operator=( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33491 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33492 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33493     DrmFormatModifierPropertiesEXT & operator=( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33494     {
33495       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT const *>( &rhs );
33496       return *this;
33497     }
33498 
operator VkDrmFormatModifierPropertiesEXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33499     operator VkDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
33500     {
33501       return *reinterpret_cast<const VkDrmFormatModifierPropertiesEXT *>( this );
33502     }
33503 
operator VkDrmFormatModifierPropertiesEXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33504     operator VkDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT
33505     {
33506       return *reinterpret_cast<VkDrmFormatModifierPropertiesEXT *>( this );
33507     }
33508 
33509 #if defined( VULKAN_HPP_USE_REFLECT )
33510 #  if 14 <= VULKAN_HPP_CPP_VERSION
33511     auto
33512 #  else
33513     std::tuple<uint64_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &>
33514 #  endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33515       reflect() const VULKAN_HPP_NOEXCEPT
33516     {
33517       return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures );
33518     }
33519 #endif
33520 
33521 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33522     auto operator<=>( DrmFormatModifierPropertiesEXT const & ) const = default;
33523 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33524     bool operator==( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33525     {
33526 #  if defined( VULKAN_HPP_USE_REFLECT )
33527       return this->reflect() == rhs.reflect();
33528 #  else
33529       return ( drmFormatModifier == rhs.drmFormatModifier ) && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) &&
33530              ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures );
33531 #  endif
33532     }
33533 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33534     bool operator!=( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33535     {
33536       return !operator==( rhs );
33537     }
33538 #endif
33539 
33540   public:
33541     uint64_t                                 drmFormatModifier               = {};
33542     uint32_t                                 drmFormatModifierPlaneCount     = {};
33543     VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures = {};
33544   };
33545 
33546   struct DrmFormatModifierPropertiesList2EXT
33547   {
33548     using NativeType = VkDrmFormatModifierPropertiesList2EXT;
33549 
33550     static const bool                                  allowDuplicate = false;
33551     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDrmFormatModifierPropertiesList2EXT;
33552 
33553 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33554     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT( uint32_t                                                drmFormatModifierCount_       = {},
33555                                                               VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties_ = {},
33556                                                               void *                                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
33557       : pNext{ pNext_ }
33558       , drmFormatModifierCount{ drmFormatModifierCount_ }
33559       , pDrmFormatModifierProperties{ pDrmFormatModifierProperties_ }
33560     {
33561     }
33562 
33563     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT( DrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33564 
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33565     DrmFormatModifierPropertiesList2EXT( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
33566       : DrmFormatModifierPropertiesList2EXT( *reinterpret_cast<DrmFormatModifierPropertiesList2EXT const *>( &rhs ) )
33567     {
33568     }
33569 
33570     DrmFormatModifierPropertiesList2EXT & operator=( DrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33571 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33572 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33573     DrmFormatModifierPropertiesList2EXT & operator=( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
33574     {
33575       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT const *>( &rhs );
33576       return *this;
33577     }
33578 
operator VkDrmFormatModifierPropertiesList2EXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33579     operator VkDrmFormatModifierPropertiesList2EXT const &() const VULKAN_HPP_NOEXCEPT
33580     {
33581       return *reinterpret_cast<const VkDrmFormatModifierPropertiesList2EXT *>( this );
33582     }
33583 
operator VkDrmFormatModifierPropertiesList2EXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33584     operator VkDrmFormatModifierPropertiesList2EXT &() VULKAN_HPP_NOEXCEPT
33585     {
33586       return *reinterpret_cast<VkDrmFormatModifierPropertiesList2EXT *>( this );
33587     }
33588 
33589 #if defined( VULKAN_HPP_USE_REFLECT )
33590 #  if 14 <= VULKAN_HPP_CPP_VERSION
33591     auto
33592 #  else
33593     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * const &>
33594 #  endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33595       reflect() const VULKAN_HPP_NOEXCEPT
33596     {
33597       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties );
33598     }
33599 #endif
33600 
33601 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33602     auto operator<=>( DrmFormatModifierPropertiesList2EXT const & ) const = default;
33603 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33604     bool operator==( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33605     {
33606 #  if defined( VULKAN_HPP_USE_REFLECT )
33607       return this->reflect() == rhs.reflect();
33608 #  else
33609       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) &&
33610              ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties );
33611 #  endif
33612     }
33613 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33614     bool operator!=( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33615     {
33616       return !operator==( rhs );
33617     }
33618 #endif
33619 
33620   public:
33621     VULKAN_HPP_NAMESPACE::StructureType                     sType                        = StructureType::eDrmFormatModifierPropertiesList2EXT;
33622     void *                                                  pNext                        = {};
33623     uint32_t                                                drmFormatModifierCount       = {};
33624     VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties = {};
33625   };
33626 
33627   template <>
33628   struct CppType<StructureType, StructureType::eDrmFormatModifierPropertiesList2EXT>
33629   {
33630     using Type = DrmFormatModifierPropertiesList2EXT;
33631   };
33632 
33633   struct DrmFormatModifierPropertiesListEXT
33634   {
33635     using NativeType = VkDrmFormatModifierPropertiesListEXT;
33636 
33637     static const bool                                  allowDuplicate = false;
33638     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDrmFormatModifierPropertiesListEXT;
33639 
33640 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33641     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( uint32_t                                               drmFormatModifierCount_       = {},
33642                                                              VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties_ = {},
33643                                                              void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
33644       : pNext{ pNext_ }
33645       , drmFormatModifierCount{ drmFormatModifierCount_ }
33646       , pDrmFormatModifierProperties{ pDrmFormatModifierProperties_ }
33647     {
33648     }
33649 
33650     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33651 
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33652     DrmFormatModifierPropertiesListEXT( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33653       : DrmFormatModifierPropertiesListEXT( *reinterpret_cast<DrmFormatModifierPropertiesListEXT const *>( &rhs ) )
33654     {
33655     }
33656 
33657     DrmFormatModifierPropertiesListEXT & operator=( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33658 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33659 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33660     DrmFormatModifierPropertiesListEXT & operator=( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33661     {
33662       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT const *>( &rhs );
33663       return *this;
33664     }
33665 
operator VkDrmFormatModifierPropertiesListEXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33666     operator VkDrmFormatModifierPropertiesListEXT const &() const VULKAN_HPP_NOEXCEPT
33667     {
33668       return *reinterpret_cast<const VkDrmFormatModifierPropertiesListEXT *>( this );
33669     }
33670 
operator VkDrmFormatModifierPropertiesListEXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33671     operator VkDrmFormatModifierPropertiesListEXT &() VULKAN_HPP_NOEXCEPT
33672     {
33673       return *reinterpret_cast<VkDrmFormatModifierPropertiesListEXT *>( this );
33674     }
33675 
33676 #if defined( VULKAN_HPP_USE_REFLECT )
33677 #  if 14 <= VULKAN_HPP_CPP_VERSION
33678     auto
33679 #  else
33680     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * const &>
33681 #  endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33682       reflect() const VULKAN_HPP_NOEXCEPT
33683     {
33684       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties );
33685     }
33686 #endif
33687 
33688 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33689     auto operator<=>( DrmFormatModifierPropertiesListEXT const & ) const = default;
33690 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33691     bool operator==( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33692     {
33693 #  if defined( VULKAN_HPP_USE_REFLECT )
33694       return this->reflect() == rhs.reflect();
33695 #  else
33696       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) &&
33697              ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties );
33698 #  endif
33699     }
33700 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33701     bool operator!=( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33702     {
33703       return !operator==( rhs );
33704     }
33705 #endif
33706 
33707   public:
33708     VULKAN_HPP_NAMESPACE::StructureType                    sType                        = StructureType::eDrmFormatModifierPropertiesListEXT;
33709     void *                                                 pNext                        = {};
33710     uint32_t                                               drmFormatModifierCount       = {};
33711     VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties = {};
33712   };
33713 
33714   template <>
33715   struct CppType<StructureType, StructureType::eDrmFormatModifierPropertiesListEXT>
33716   {
33717     using Type = DrmFormatModifierPropertiesListEXT;
33718   };
33719 
33720   struct EventCreateInfo
33721   {
33722     using NativeType = VkEventCreateInfo;
33723 
33724     static const bool                                  allowDuplicate = false;
33725     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eEventCreateInfo;
33726 
33727 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
EventCreateInfoVULKAN_HPP_NAMESPACE::EventCreateInfo33728     VULKAN_HPP_CONSTEXPR EventCreateInfo( VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
33729       : pNext{ pNext_ }
33730       , flags{ flags_ }
33731     {
33732     }
33733 
33734     VULKAN_HPP_CONSTEXPR EventCreateInfo( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33735 
EventCreateInfoVULKAN_HPP_NAMESPACE::EventCreateInfo33736     EventCreateInfo( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : EventCreateInfo( *reinterpret_cast<EventCreateInfo const *>( &rhs ) ) {}
33737 
33738     EventCreateInfo & operator=( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33739 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33740 
operator =VULKAN_HPP_NAMESPACE::EventCreateInfo33741     EventCreateInfo & operator=( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
33742     {
33743       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::EventCreateInfo const *>( &rhs );
33744       return *this;
33745     }
33746 
33747 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::EventCreateInfo33748     VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33749     {
33750       pNext = pNext_;
33751       return *this;
33752     }
33753 
setFlagsVULKAN_HPP_NAMESPACE::EventCreateInfo33754     VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
33755     {
33756       flags = flags_;
33757       return *this;
33758     }
33759 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33760 
operator VkEventCreateInfo const&VULKAN_HPP_NAMESPACE::EventCreateInfo33761     operator VkEventCreateInfo const &() const VULKAN_HPP_NOEXCEPT
33762     {
33763       return *reinterpret_cast<const VkEventCreateInfo *>( this );
33764     }
33765 
operator VkEventCreateInfo&VULKAN_HPP_NAMESPACE::EventCreateInfo33766     operator VkEventCreateInfo &() VULKAN_HPP_NOEXCEPT
33767     {
33768       return *reinterpret_cast<VkEventCreateInfo *>( this );
33769     }
33770 
33771 #if defined( VULKAN_HPP_USE_REFLECT )
33772 #  if 14 <= VULKAN_HPP_CPP_VERSION
33773     auto
33774 #  else
33775     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::EventCreateFlags const &>
33776 #  endif
reflectVULKAN_HPP_NAMESPACE::EventCreateInfo33777       reflect() const VULKAN_HPP_NOEXCEPT
33778     {
33779       return std::tie( sType, pNext, flags );
33780     }
33781 #endif
33782 
33783 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33784     auto operator<=>( EventCreateInfo const & ) const = default;
33785 #else
operator ==VULKAN_HPP_NAMESPACE::EventCreateInfo33786     bool operator==( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33787     {
33788 #  if defined( VULKAN_HPP_USE_REFLECT )
33789       return this->reflect() == rhs.reflect();
33790 #  else
33791       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
33792 #  endif
33793     }
33794 
operator !=VULKAN_HPP_NAMESPACE::EventCreateInfo33795     bool operator!=( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33796     {
33797       return !operator==( rhs );
33798     }
33799 #endif
33800 
33801   public:
33802     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::eEventCreateInfo;
33803     const void *                           pNext = {};
33804     VULKAN_HPP_NAMESPACE::EventCreateFlags flags = {};
33805   };
33806 
33807   template <>
33808   struct CppType<StructureType, StructureType::eEventCreateInfo>
33809   {
33810     using Type = EventCreateInfo;
33811   };
33812 
33813   struct PipelineLibraryCreateInfoKHR
33814   {
33815     using NativeType = VkPipelineLibraryCreateInfoKHR;
33816 
33817     static const bool                                  allowDuplicate = false;
33818     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineLibraryCreateInfoKHR;
33819 
33820 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineLibraryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33821     VULKAN_HPP_CONSTEXPR PipelineLibraryCreateInfoKHR( uint32_t                               libraryCount_ = {},
33822                                                        const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries_   = {},
33823                                                        const void *                           pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
33824       : pNext{ pNext_ }
33825       , libraryCount{ libraryCount_ }
33826       , pLibraries{ pLibraries_ }
33827     {
33828     }
33829 
33830     VULKAN_HPP_CONSTEXPR PipelineLibraryCreateInfoKHR( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33831 
PipelineLibraryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33832     PipelineLibraryCreateInfoKHR( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
33833       : PipelineLibraryCreateInfoKHR( *reinterpret_cast<PipelineLibraryCreateInfoKHR const *>( &rhs ) )
33834     {
33835     }
33836 
33837 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineLibraryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33838     PipelineLibraryCreateInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & libraries_,
33839                                   const void *                                                                                pNext_ = nullptr )
33840       : pNext( pNext_ ), libraryCount( static_cast<uint32_t>( libraries_.size() ) ), pLibraries( libraries_.data() )
33841     {
33842     }
33843 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33844 
33845     PipelineLibraryCreateInfoKHR & operator=( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33846 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33847 
operator =VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33848     PipelineLibraryCreateInfoKHR & operator=( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
33849     {
33850       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR const *>( &rhs );
33851       return *this;
33852     }
33853 
33854 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33855     VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33856     {
33857       pNext = pNext_;
33858       return *this;
33859     }
33860 
setLibraryCountVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33861     VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setLibraryCount( uint32_t libraryCount_ ) VULKAN_HPP_NOEXCEPT
33862     {
33863       libraryCount = libraryCount_;
33864       return *this;
33865     }
33866 
setPLibrariesVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33867     VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setPLibraries( const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries_ ) VULKAN_HPP_NOEXCEPT
33868     {
33869       pLibraries = pLibraries_;
33870       return *this;
33871     }
33872 
33873 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
33874     PipelineLibraryCreateInfoKHR &
setLibrariesVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33875       setLibraries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & libraries_ ) VULKAN_HPP_NOEXCEPT
33876     {
33877       libraryCount = static_cast<uint32_t>( libraries_.size() );
33878       pLibraries   = libraries_.data();
33879       return *this;
33880     }
33881 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33882 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33883 
operator VkPipelineLibraryCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33884     operator VkPipelineLibraryCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
33885     {
33886       return *reinterpret_cast<const VkPipelineLibraryCreateInfoKHR *>( this );
33887     }
33888 
operator VkPipelineLibraryCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33889     operator VkPipelineLibraryCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
33890     {
33891       return *reinterpret_cast<VkPipelineLibraryCreateInfoKHR *>( this );
33892     }
33893 
33894 #if defined( VULKAN_HPP_USE_REFLECT )
33895 #  if 14 <= VULKAN_HPP_CPP_VERSION
33896     auto
33897 #  else
33898     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Pipeline * const &>
33899 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33900       reflect() const VULKAN_HPP_NOEXCEPT
33901     {
33902       return std::tie( sType, pNext, libraryCount, pLibraries );
33903     }
33904 #endif
33905 
33906 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33907     auto operator<=>( PipelineLibraryCreateInfoKHR const & ) const = default;
33908 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33909     bool operator==( PipelineLibraryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
33910     {
33911 #  if defined( VULKAN_HPP_USE_REFLECT )
33912       return this->reflect() == rhs.reflect();
33913 #  else
33914       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( libraryCount == rhs.libraryCount ) && ( pLibraries == rhs.pLibraries );
33915 #  endif
33916     }
33917 
operator !=VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33918     bool operator!=( PipelineLibraryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
33919     {
33920       return !operator==( rhs );
33921     }
33922 #endif
33923 
33924   public:
33925     VULKAN_HPP_NAMESPACE::StructureType    sType        = StructureType::ePipelineLibraryCreateInfoKHR;
33926     const void *                           pNext        = {};
33927     uint32_t                               libraryCount = {};
33928     const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries   = {};
33929   };
33930 
33931   template <>
33932   struct CppType<StructureType, StructureType::ePipelineLibraryCreateInfoKHR>
33933   {
33934     using Type = PipelineLibraryCreateInfoKHR;
33935   };
33936 
33937 #if defined( VK_ENABLE_BETA_EXTENSIONS )
33938   struct ExecutionGraphPipelineCreateInfoAMDX
33939   {
33940     using NativeType = VkExecutionGraphPipelineCreateInfoAMDX;
33941 
33942     static const bool                                  allowDuplicate = false;
33943     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExecutionGraphPipelineCreateInfoAMDX;
33944 
33945 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExecutionGraphPipelineCreateInfoAMDXVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33946     VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineCreateInfoAMDX( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                   flags_              = {},
33947                                                                uint32_t                                                    stageCount_         = {},
33948                                                                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_            = {},
33949                                                                const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *  pLibraryInfo_       = {},
33950                                                                VULKAN_HPP_NAMESPACE::PipelineLayout                        layout_             = {},
33951                                                                VULKAN_HPP_NAMESPACE::Pipeline                              basePipelineHandle_ = {},
33952                                                                int32_t                                                     basePipelineIndex_  = {},
33953                                                                const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
33954       : pNext{ pNext_ }
33955       , flags{ flags_ }
33956       , stageCount{ stageCount_ }
33957       , pStages{ pStages_ }
33958       , pLibraryInfo{ pLibraryInfo_ }
33959       , layout{ layout_ }
33960       , basePipelineHandle{ basePipelineHandle_ }
33961       , basePipelineIndex{ basePipelineIndex_ }
33962     {
33963     }
33964 
33965     VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineCreateInfoAMDX( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33966 
ExecutionGraphPipelineCreateInfoAMDXVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33967     ExecutionGraphPipelineCreateInfoAMDX( VkExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
33968       : ExecutionGraphPipelineCreateInfoAMDX( *reinterpret_cast<ExecutionGraphPipelineCreateInfoAMDX const *>( &rhs ) )
33969     {
33970     }
33971 
33972 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ExecutionGraphPipelineCreateInfoAMDXVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33973     ExecutionGraphPipelineCreateInfoAMDX(
33974       VULKAN_HPP_NAMESPACE::PipelineCreateFlags                                                                        flags_,
33975       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_,
33976       const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *                                                       pLibraryInfo_       = {},
33977       VULKAN_HPP_NAMESPACE::PipelineLayout                                                                             layout_             = {},
33978       VULKAN_HPP_NAMESPACE::Pipeline                                                                                   basePipelineHandle_ = {},
33979       int32_t                                                                                                          basePipelineIndex_  = {},
33980       const void *                                                                                                     pNext_              = nullptr )
33981       : pNext( pNext_ )
33982       , flags( flags_ )
33983       , stageCount( static_cast<uint32_t>( stages_.size() ) )
33984       , pStages( stages_.data() )
33985       , pLibraryInfo( pLibraryInfo_ )
33986       , layout( layout_ )
33987       , basePipelineHandle( basePipelineHandle_ )
33988       , basePipelineIndex( basePipelineIndex_ )
33989     {
33990     }
33991 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33992 
33993     ExecutionGraphPipelineCreateInfoAMDX & operator=( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33994 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33995 
operator =VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33996     ExecutionGraphPipelineCreateInfoAMDX & operator=( VkExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
33997     {
33998       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX const *>( &rhs );
33999       return *this;
34000     }
34001 
34002 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34003     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34004     {
34005       pNext = pNext_;
34006       return *this;
34007     }
34008 
setFlagsVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34009     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
34010     {
34011       flags = flags_;
34012       return *this;
34013     }
34014 
setStageCountVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34015     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
34016     {
34017       stageCount = stageCount_;
34018       return *this;
34019     }
34020 
34021     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX &
setPStagesVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34022       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
34023     {
34024       pStages = pStages_;
34025       return *this;
34026     }
34027 
34028 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
34029     ExecutionGraphPipelineCreateInfoAMDX &
setStagesVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34030       setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
34031     {
34032       stageCount = static_cast<uint32_t>( stages_.size() );
34033       pStages    = stages_.data();
34034       return *this;
34035     }
34036 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34037 
34038     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX &
setPLibraryInfoVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34039       setPLibraryInfo( const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * pLibraryInfo_ ) VULKAN_HPP_NOEXCEPT
34040     {
34041       pLibraryInfo = pLibraryInfo_;
34042       return *this;
34043     }
34044 
setLayoutVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34045     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
34046     {
34047       layout = layout_;
34048       return *this;
34049     }
34050 
34051     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX &
setBasePipelineHandleVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34052       setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
34053     {
34054       basePipelineHandle = basePipelineHandle_;
34055       return *this;
34056     }
34057 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34058     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
34059     {
34060       basePipelineIndex = basePipelineIndex_;
34061       return *this;
34062     }
34063 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34064 
operator VkExecutionGraphPipelineCreateInfoAMDX const&VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34065     operator VkExecutionGraphPipelineCreateInfoAMDX const &() const VULKAN_HPP_NOEXCEPT
34066     {
34067       return *reinterpret_cast<const VkExecutionGraphPipelineCreateInfoAMDX *>( this );
34068     }
34069 
operator VkExecutionGraphPipelineCreateInfoAMDX&VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34070     operator VkExecutionGraphPipelineCreateInfoAMDX &() VULKAN_HPP_NOEXCEPT
34071     {
34072       return *reinterpret_cast<VkExecutionGraphPipelineCreateInfoAMDX *>( this );
34073     }
34074 
34075 #  if defined( VULKAN_HPP_USE_REFLECT )
34076 #    if 14 <= VULKAN_HPP_CPP_VERSION
34077     auto
34078 #    else
34079     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
34080                const void * const &,
34081                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
34082                uint32_t const &,
34083                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
34084                const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * const &,
34085                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
34086                VULKAN_HPP_NAMESPACE::Pipeline const &,
34087                int32_t const &>
34088 #    endif
reflectVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34089       reflect() const VULKAN_HPP_NOEXCEPT
34090     {
34091       return std::tie( sType, pNext, flags, stageCount, pStages, pLibraryInfo, layout, basePipelineHandle, basePipelineIndex );
34092     }
34093 #  endif
34094 
34095 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34096     auto operator<=>( ExecutionGraphPipelineCreateInfoAMDX const & ) const = default;
34097 #  else
operator ==VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34098     bool operator==( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
34099     {
34100 #    if defined( VULKAN_HPP_USE_REFLECT )
34101       return this->reflect() == rhs.reflect();
34102 #    else
34103       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) &&
34104              ( pLibraryInfo == rhs.pLibraryInfo ) && ( layout == rhs.layout ) && ( basePipelineHandle == rhs.basePipelineHandle ) &&
34105              ( basePipelineIndex == rhs.basePipelineIndex );
34106 #    endif
34107     }
34108 
operator !=VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX34109     bool operator!=( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
34110     {
34111       return !operator==( rhs );
34112     }
34113 #  endif
34114 
34115   public:
34116     VULKAN_HPP_NAMESPACE::StructureType                         sType              = StructureType::eExecutionGraphPipelineCreateInfoAMDX;
34117     const void *                                                pNext              = {};
34118     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                   flags              = {};
34119     uint32_t                                                    stageCount         = {};
34120     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages            = {};
34121     const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *  pLibraryInfo       = {};
34122     VULKAN_HPP_NAMESPACE::PipelineLayout                        layout             = {};
34123     VULKAN_HPP_NAMESPACE::Pipeline                              basePipelineHandle = {};
34124     int32_t                                                     basePipelineIndex  = {};
34125   };
34126 
34127   template <>
34128   struct CppType<StructureType, StructureType::eExecutionGraphPipelineCreateInfoAMDX>
34129   {
34130     using Type = ExecutionGraphPipelineCreateInfoAMDX;
34131   };
34132 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
34133 
34134 #if defined( VK_ENABLE_BETA_EXTENSIONS )
34135   struct ExecutionGraphPipelineScratchSizeAMDX
34136   {
34137     using NativeType = VkExecutionGraphPipelineScratchSizeAMDX;
34138 
34139     static const bool                                  allowDuplicate = false;
34140     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExecutionGraphPipelineScratchSizeAMDX;
34141 
34142 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExecutionGraphPipelineScratchSizeAMDXVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX34143     VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineScratchSizeAMDX( VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
34144       : pNext{ pNext_ }
34145       , size{ size_ }
34146     {
34147     }
34148 
34149     VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineScratchSizeAMDX( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34150 
ExecutionGraphPipelineScratchSizeAMDXVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX34151     ExecutionGraphPipelineScratchSizeAMDX( VkExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
34152       : ExecutionGraphPipelineScratchSizeAMDX( *reinterpret_cast<ExecutionGraphPipelineScratchSizeAMDX const *>( &rhs ) )
34153     {
34154     }
34155 
34156     ExecutionGraphPipelineScratchSizeAMDX & operator=( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34157 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34158 
operator =VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX34159     ExecutionGraphPipelineScratchSizeAMDX & operator=( VkExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
34160     {
34161       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX const *>( &rhs );
34162       return *this;
34163     }
34164 
34165 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX34166     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
34167     {
34168       pNext = pNext_;
34169       return *this;
34170     }
34171 
setSizeVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX34172     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
34173     {
34174       size = size_;
34175       return *this;
34176     }
34177 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34178 
operator VkExecutionGraphPipelineScratchSizeAMDX const&VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX34179     operator VkExecutionGraphPipelineScratchSizeAMDX const &() const VULKAN_HPP_NOEXCEPT
34180     {
34181       return *reinterpret_cast<const VkExecutionGraphPipelineScratchSizeAMDX *>( this );
34182     }
34183 
operator VkExecutionGraphPipelineScratchSizeAMDX&VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX34184     operator VkExecutionGraphPipelineScratchSizeAMDX &() VULKAN_HPP_NOEXCEPT
34185     {
34186       return *reinterpret_cast<VkExecutionGraphPipelineScratchSizeAMDX *>( this );
34187     }
34188 
34189 #  if defined( VULKAN_HPP_USE_REFLECT )
34190 #    if 14 <= VULKAN_HPP_CPP_VERSION
34191     auto
34192 #    else
34193     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
34194 #    endif
reflectVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX34195       reflect() const VULKAN_HPP_NOEXCEPT
34196     {
34197       return std::tie( sType, pNext, size );
34198     }
34199 #  endif
34200 
34201 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34202     auto operator<=>( ExecutionGraphPipelineScratchSizeAMDX const & ) const = default;
34203 #  else
operator ==VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX34204     bool operator==( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
34205     {
34206 #    if defined( VULKAN_HPP_USE_REFLECT )
34207       return this->reflect() == rhs.reflect();
34208 #    else
34209       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( size == rhs.size );
34210 #    endif
34211     }
34212 
operator !=VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX34213     bool operator!=( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
34214     {
34215       return !operator==( rhs );
34216     }
34217 #  endif
34218 
34219   public:
34220     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExecutionGraphPipelineScratchSizeAMDX;
34221     void *                              pNext = {};
34222     VULKAN_HPP_NAMESPACE::DeviceSize    size  = {};
34223   };
34224 
34225   template <>
34226   struct CppType<StructureType, StructureType::eExecutionGraphPipelineScratchSizeAMDX>
34227   {
34228     using Type = ExecutionGraphPipelineScratchSizeAMDX;
34229   };
34230 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
34231 
34232   struct ExportFenceCreateInfo
34233   {
34234     using NativeType = VkExportFenceCreateInfo;
34235 
34236     static const bool                                  allowDuplicate = false;
34237     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportFenceCreateInfo;
34238 
34239 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportFenceCreateInfoVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34240     VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ = {},
34241                                                 const void *                                       pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
34242       : pNext{ pNext_ }
34243       , handleTypes{ handleTypes_ }
34244     {
34245     }
34246 
34247     VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34248 
ExportFenceCreateInfoVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34249     ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
34250       : ExportFenceCreateInfo( *reinterpret_cast<ExportFenceCreateInfo const *>( &rhs ) )
34251     {
34252     }
34253 
34254     ExportFenceCreateInfo & operator=( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34255 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34256 
operator =VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34257     ExportFenceCreateInfo & operator=( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
34258     {
34259       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo const *>( &rhs );
34260       return *this;
34261     }
34262 
34263 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34264     VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34265     {
34266       pNext = pNext_;
34267       return *this;
34268     }
34269 
setHandleTypesVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34270     VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
34271     {
34272       handleTypes = handleTypes_;
34273       return *this;
34274     }
34275 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34276 
operator VkExportFenceCreateInfo const&VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34277     operator VkExportFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
34278     {
34279       return *reinterpret_cast<const VkExportFenceCreateInfo *>( this );
34280     }
34281 
operator VkExportFenceCreateInfo&VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34282     operator VkExportFenceCreateInfo &() VULKAN_HPP_NOEXCEPT
34283     {
34284       return *reinterpret_cast<VkExportFenceCreateInfo *>( this );
34285     }
34286 
34287 #if defined( VULKAN_HPP_USE_REFLECT )
34288 #  if 14 <= VULKAN_HPP_CPP_VERSION
34289     auto
34290 #  else
34291     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &>
34292 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34293       reflect() const VULKAN_HPP_NOEXCEPT
34294     {
34295       return std::tie( sType, pNext, handleTypes );
34296     }
34297 #endif
34298 
34299 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34300     auto operator<=>( ExportFenceCreateInfo const & ) const = default;
34301 #else
operator ==VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34302     bool operator==( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
34303     {
34304 #  if defined( VULKAN_HPP_USE_REFLECT )
34305       return this->reflect() == rhs.reflect();
34306 #  else
34307       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
34308 #  endif
34309     }
34310 
operator !=VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34311     bool operator!=( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
34312     {
34313       return !operator==( rhs );
34314     }
34315 #endif
34316 
34317   public:
34318     VULKAN_HPP_NAMESPACE::StructureType                sType       = StructureType::eExportFenceCreateInfo;
34319     const void *                                       pNext       = {};
34320     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes = {};
34321   };
34322 
34323   template <>
34324   struct CppType<StructureType, StructureType::eExportFenceCreateInfo>
34325   {
34326     using Type = ExportFenceCreateInfo;
34327   };
34328 
34329   using ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
34330 
34331 #if defined( VK_USE_PLATFORM_WIN32_KHR )
34332   struct ExportFenceWin32HandleInfoKHR
34333   {
34334     using NativeType = VkExportFenceWin32HandleInfoKHR;
34335 
34336     static const bool                                  allowDuplicate = false;
34337     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportFenceWin32HandleInfoKHR;
34338 
34339 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34340     VULKAN_HPP_CONSTEXPR ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {},
34341                                                         DWORD                       dwAccess_    = {},
34342                                                         LPCWSTR                     name_        = {},
34343                                                         const void *                pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
34344       : pNext{ pNext_ }
34345       , pAttributes{ pAttributes_ }
34346       , dwAccess{ dwAccess_ }
34347       , name{ name_ }
34348     {
34349     }
34350 
34351     VULKAN_HPP_CONSTEXPR ExportFenceWin32HandleInfoKHR( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34352 
ExportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34353     ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
34354       : ExportFenceWin32HandleInfoKHR( *reinterpret_cast<ExportFenceWin32HandleInfoKHR const *>( &rhs ) )
34355     {
34356     }
34357 
34358     ExportFenceWin32HandleInfoKHR & operator=( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34359 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34360 
operator =VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34361     ExportFenceWin32HandleInfoKHR & operator=( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
34362     {
34363       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR const *>( &rhs );
34364       return *this;
34365     }
34366 
34367 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34368     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34369     {
34370       pNext = pNext_;
34371       return *this;
34372     }
34373 
setPAttributesVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34374     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
34375     {
34376       pAttributes = pAttributes_;
34377       return *this;
34378     }
34379 
setDwAccessVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34380     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
34381     {
34382       dwAccess = dwAccess_;
34383       return *this;
34384     }
34385 
setNameVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34386     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
34387     {
34388       name = name_;
34389       return *this;
34390     }
34391 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34392 
operator VkExportFenceWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34393     operator VkExportFenceWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
34394     {
34395       return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR *>( this );
34396     }
34397 
operator VkExportFenceWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34398     operator VkExportFenceWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
34399     {
34400       return *reinterpret_cast<VkExportFenceWin32HandleInfoKHR *>( this );
34401     }
34402 
34403 #  if defined( VULKAN_HPP_USE_REFLECT )
34404 #    if 14 <= VULKAN_HPP_CPP_VERSION
34405     auto
34406 #    else
34407     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const SECURITY_ATTRIBUTES * const &, DWORD const &, LPCWSTR const &>
34408 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34409       reflect() const VULKAN_HPP_NOEXCEPT
34410     {
34411       return std::tie( sType, pNext, pAttributes, dwAccess, name );
34412     }
34413 #  endif
34414 
34415 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34416     auto operator<=>( ExportFenceWin32HandleInfoKHR const & ) const = default;
34417 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34418     bool operator==( ExportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
34419     {
34420 #    if defined( VULKAN_HPP_USE_REFLECT )
34421       return this->reflect() == rhs.reflect();
34422 #    else
34423       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess ) && ( name == rhs.name );
34424 #    endif
34425     }
34426 
operator !=VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34427     bool operator!=( ExportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
34428     {
34429       return !operator==( rhs );
34430     }
34431 #  endif
34432 
34433   public:
34434     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportFenceWin32HandleInfoKHR;
34435     const void *                        pNext       = {};
34436     const SECURITY_ATTRIBUTES *         pAttributes = {};
34437     DWORD                               dwAccess    = {};
34438     LPCWSTR                             name        = {};
34439   };
34440 
34441   template <>
34442   struct CppType<StructureType, StructureType::eExportFenceWin32HandleInfoKHR>
34443   {
34444     using Type = ExportFenceWin32HandleInfoKHR;
34445   };
34446 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
34447 
34448   struct ExportMemoryAllocateInfo
34449   {
34450     using NativeType = VkExportMemoryAllocateInfo;
34451 
34452     static const bool                                  allowDuplicate = false;
34453     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryAllocateInfo;
34454 
34455 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryAllocateInfoVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34456     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {},
34457                                                    const void *                                        pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
34458       : pNext{ pNext_ }
34459       , handleTypes{ handleTypes_ }
34460     {
34461     }
34462 
34463     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34464 
ExportMemoryAllocateInfoVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34465     ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
34466       : ExportMemoryAllocateInfo( *reinterpret_cast<ExportMemoryAllocateInfo const *>( &rhs ) )
34467     {
34468     }
34469 
34470     ExportMemoryAllocateInfo & operator=( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34471 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34472 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34473     ExportMemoryAllocateInfo & operator=( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
34474     {
34475       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo const *>( &rhs );
34476       return *this;
34477     }
34478 
34479 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34480     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34481     {
34482       pNext = pNext_;
34483       return *this;
34484     }
34485 
setHandleTypesVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34486     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
34487     {
34488       handleTypes = handleTypes_;
34489       return *this;
34490     }
34491 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34492 
operator VkExportMemoryAllocateInfo const&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34493     operator VkExportMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
34494     {
34495       return *reinterpret_cast<const VkExportMemoryAllocateInfo *>( this );
34496     }
34497 
operator VkExportMemoryAllocateInfo&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34498     operator VkExportMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT
34499     {
34500       return *reinterpret_cast<VkExportMemoryAllocateInfo *>( this );
34501     }
34502 
34503 #if defined( VULKAN_HPP_USE_REFLECT )
34504 #  if 14 <= VULKAN_HPP_CPP_VERSION
34505     auto
34506 #  else
34507     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
34508 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34509       reflect() const VULKAN_HPP_NOEXCEPT
34510     {
34511       return std::tie( sType, pNext, handleTypes );
34512     }
34513 #endif
34514 
34515 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34516     auto operator<=>( ExportMemoryAllocateInfo const & ) const = default;
34517 #else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34518     bool operator==( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
34519     {
34520 #  if defined( VULKAN_HPP_USE_REFLECT )
34521       return this->reflect() == rhs.reflect();
34522 #  else
34523       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
34524 #  endif
34525     }
34526 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34527     bool operator!=( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
34528     {
34529       return !operator==( rhs );
34530     }
34531 #endif
34532 
34533   public:
34534     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eExportMemoryAllocateInfo;
34535     const void *                                        pNext       = {};
34536     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
34537   };
34538 
34539   template <>
34540   struct CppType<StructureType, StructureType::eExportMemoryAllocateInfo>
34541   {
34542     using Type = ExportMemoryAllocateInfo;
34543   };
34544 
34545   using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
34546 
34547   struct ExportMemoryAllocateInfoNV
34548   {
34549     using NativeType = VkExportMemoryAllocateInfoNV;
34550 
34551     static const bool                                  allowDuplicate = false;
34552     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryAllocateInfoNV;
34553 
34554 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34555     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ = {},
34556                                                      const void *                                          pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
34557       : pNext{ pNext_ }
34558       , handleTypes{ handleTypes_ }
34559     {
34560     }
34561 
34562     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34563 
ExportMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34564     ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
34565       : ExportMemoryAllocateInfoNV( *reinterpret_cast<ExportMemoryAllocateInfoNV const *>( &rhs ) )
34566     {
34567     }
34568 
34569     ExportMemoryAllocateInfoNV & operator=( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34570 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34571 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34572     ExportMemoryAllocateInfoNV & operator=( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
34573     {
34574       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV const *>( &rhs );
34575       return *this;
34576     }
34577 
34578 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34579     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34580     {
34581       pNext = pNext_;
34582       return *this;
34583     }
34584 
34585     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV &
setHandleTypesVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34586       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) VULKAN_HPP_NOEXCEPT
34587     {
34588       handleTypes = handleTypes_;
34589       return *this;
34590     }
34591 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34592 
operator VkExportMemoryAllocateInfoNV const&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34593     operator VkExportMemoryAllocateInfoNV const &() const VULKAN_HPP_NOEXCEPT
34594     {
34595       return *reinterpret_cast<const VkExportMemoryAllocateInfoNV *>( this );
34596     }
34597 
operator VkExportMemoryAllocateInfoNV&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34598     operator VkExportMemoryAllocateInfoNV &() VULKAN_HPP_NOEXCEPT
34599     {
34600       return *reinterpret_cast<VkExportMemoryAllocateInfoNV *>( this );
34601     }
34602 
34603 #if defined( VULKAN_HPP_USE_REFLECT )
34604 #  if 14 <= VULKAN_HPP_CPP_VERSION
34605     auto
34606 #  else
34607     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &>
34608 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34609       reflect() const VULKAN_HPP_NOEXCEPT
34610     {
34611       return std::tie( sType, pNext, handleTypes );
34612     }
34613 #endif
34614 
34615 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34616     auto operator<=>( ExportMemoryAllocateInfoNV const & ) const = default;
34617 #else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34618     bool operator==( ExportMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
34619     {
34620 #  if defined( VULKAN_HPP_USE_REFLECT )
34621       return this->reflect() == rhs.reflect();
34622 #  else
34623       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
34624 #  endif
34625     }
34626 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34627     bool operator!=( ExportMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
34628     {
34629       return !operator==( rhs );
34630     }
34631 #endif
34632 
34633   public:
34634     VULKAN_HPP_NAMESPACE::StructureType                   sType       = StructureType::eExportMemoryAllocateInfoNV;
34635     const void *                                          pNext       = {};
34636     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {};
34637   };
34638 
34639   template <>
34640   struct CppType<StructureType, StructureType::eExportMemoryAllocateInfoNV>
34641   {
34642     using Type = ExportMemoryAllocateInfoNV;
34643   };
34644 
34645 #if defined( VK_USE_PLATFORM_WIN32_KHR )
34646   struct ExportMemoryWin32HandleInfoKHR
34647   {
34648     using NativeType = VkExportMemoryWin32HandleInfoKHR;
34649 
34650     static const bool                                  allowDuplicate = false;
34651     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryWin32HandleInfoKHR;
34652 
34653 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34654     VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {},
34655                                                          DWORD                       dwAccess_    = {},
34656                                                          LPCWSTR                     name_        = {},
34657                                                          const void *                pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
34658       : pNext{ pNext_ }
34659       , pAttributes{ pAttributes_ }
34660       , dwAccess{ dwAccess_ }
34661       , name{ name_ }
34662     {
34663     }
34664 
34665     VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoKHR( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34666 
ExportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34667     ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
34668       : ExportMemoryWin32HandleInfoKHR( *reinterpret_cast<ExportMemoryWin32HandleInfoKHR const *>( &rhs ) )
34669     {
34670     }
34671 
34672     ExportMemoryWin32HandleInfoKHR & operator=( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34673 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34674 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34675     ExportMemoryWin32HandleInfoKHR & operator=( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
34676     {
34677       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR const *>( &rhs );
34678       return *this;
34679     }
34680 
34681 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34682     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34683     {
34684       pNext = pNext_;
34685       return *this;
34686     }
34687 
setPAttributesVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34688     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
34689     {
34690       pAttributes = pAttributes_;
34691       return *this;
34692     }
34693 
setDwAccessVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34694     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
34695     {
34696       dwAccess = dwAccess_;
34697       return *this;
34698     }
34699 
setNameVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34700     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
34701     {
34702       name = name_;
34703       return *this;
34704     }
34705 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34706 
operator VkExportMemoryWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34707     operator VkExportMemoryWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
34708     {
34709       return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR *>( this );
34710     }
34711 
operator VkExportMemoryWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34712     operator VkExportMemoryWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
34713     {
34714       return *reinterpret_cast<VkExportMemoryWin32HandleInfoKHR *>( this );
34715     }
34716 
34717 #  if defined( VULKAN_HPP_USE_REFLECT )
34718 #    if 14 <= VULKAN_HPP_CPP_VERSION
34719     auto
34720 #    else
34721     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const SECURITY_ATTRIBUTES * const &, DWORD const &, LPCWSTR const &>
34722 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34723       reflect() const VULKAN_HPP_NOEXCEPT
34724     {
34725       return std::tie( sType, pNext, pAttributes, dwAccess, name );
34726     }
34727 #  endif
34728 
34729 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34730     auto operator<=>( ExportMemoryWin32HandleInfoKHR const & ) const = default;
34731 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34732     bool operator==( ExportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
34733     {
34734 #    if defined( VULKAN_HPP_USE_REFLECT )
34735       return this->reflect() == rhs.reflect();
34736 #    else
34737       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess ) && ( name == rhs.name );
34738 #    endif
34739     }
34740 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34741     bool operator!=( ExportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
34742     {
34743       return !operator==( rhs );
34744     }
34745 #  endif
34746 
34747   public:
34748     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportMemoryWin32HandleInfoKHR;
34749     const void *                        pNext       = {};
34750     const SECURITY_ATTRIBUTES *         pAttributes = {};
34751     DWORD                               dwAccess    = {};
34752     LPCWSTR                             name        = {};
34753   };
34754 
34755   template <>
34756   struct CppType<StructureType, StructureType::eExportMemoryWin32HandleInfoKHR>
34757   {
34758     using Type = ExportMemoryWin32HandleInfoKHR;
34759   };
34760 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
34761 
34762 #if defined( VK_USE_PLATFORM_WIN32_KHR )
34763   struct ExportMemoryWin32HandleInfoNV
34764   {
34765     using NativeType = VkExportMemoryWin32HandleInfoNV;
34766 
34767     static const bool                                  allowDuplicate = false;
34768     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryWin32HandleInfoNV;
34769 
34770 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
34771     VULKAN_HPP_CONSTEXPR
ExportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34772       ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES * pAttributes_ = {}, DWORD dwAccess_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
34773       : pNext{ pNext_ }
34774       , pAttributes{ pAttributes_ }
34775       , dwAccess{ dwAccess_ }
34776     {
34777     }
34778 
34779     VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoNV( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34780 
ExportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34781     ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
34782       : ExportMemoryWin32HandleInfoNV( *reinterpret_cast<ExportMemoryWin32HandleInfoNV const *>( &rhs ) )
34783     {
34784     }
34785 
34786     ExportMemoryWin32HandleInfoNV & operator=( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34787 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34788 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34789     ExportMemoryWin32HandleInfoNV & operator=( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
34790     {
34791       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV const *>( &rhs );
34792       return *this;
34793     }
34794 
34795 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34796     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34797     {
34798       pNext = pNext_;
34799       return *this;
34800     }
34801 
setPAttributesVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34802     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
34803     {
34804       pAttributes = pAttributes_;
34805       return *this;
34806     }
34807 
setDwAccessVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34808     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
34809     {
34810       dwAccess = dwAccess_;
34811       return *this;
34812     }
34813 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34814 
operator VkExportMemoryWin32HandleInfoNV const&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34815     operator VkExportMemoryWin32HandleInfoNV const &() const VULKAN_HPP_NOEXCEPT
34816     {
34817       return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV *>( this );
34818     }
34819 
operator VkExportMemoryWin32HandleInfoNV&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34820     operator VkExportMemoryWin32HandleInfoNV &() VULKAN_HPP_NOEXCEPT
34821     {
34822       return *reinterpret_cast<VkExportMemoryWin32HandleInfoNV *>( this );
34823     }
34824 
34825 #  if defined( VULKAN_HPP_USE_REFLECT )
34826 #    if 14 <= VULKAN_HPP_CPP_VERSION
34827     auto
34828 #    else
34829     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const SECURITY_ATTRIBUTES * const &, DWORD const &>
34830 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34831       reflect() const VULKAN_HPP_NOEXCEPT
34832     {
34833       return std::tie( sType, pNext, pAttributes, dwAccess );
34834     }
34835 #  endif
34836 
34837 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34838     auto operator<=>( ExportMemoryWin32HandleInfoNV const & ) const = default;
34839 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34840     bool operator==( ExportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
34841     {
34842 #    if defined( VULKAN_HPP_USE_REFLECT )
34843       return this->reflect() == rhs.reflect();
34844 #    else
34845       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess );
34846 #    endif
34847     }
34848 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34849     bool operator!=( ExportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
34850     {
34851       return !operator==( rhs );
34852     }
34853 #  endif
34854 
34855   public:
34856     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportMemoryWin32HandleInfoNV;
34857     const void *                        pNext       = {};
34858     const SECURITY_ATTRIBUTES *         pAttributes = {};
34859     DWORD                               dwAccess    = {};
34860   };
34861 
34862   template <>
34863   struct CppType<StructureType, StructureType::eExportMemoryWin32HandleInfoNV>
34864   {
34865     using Type = ExportMemoryWin32HandleInfoNV;
34866   };
34867 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
34868 
34869 #if defined( VK_USE_PLATFORM_METAL_EXT )
34870   struct ExportMetalBufferInfoEXT
34871   {
34872     using NativeType = VkExportMetalBufferInfoEXT;
34873 
34874     static const bool                                  allowDuplicate = true;
34875     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalBufferInfoEXT;
34876 
34877 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalBufferInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34878     VULKAN_HPP_CONSTEXPR ExportMetalBufferInfoEXT( VULKAN_HPP_NAMESPACE::DeviceMemory memory_    = {},
34879                                                    MTLBuffer_id                       mtlBuffer_ = {},
34880                                                    const void *                       pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
34881       : pNext{ pNext_ }
34882       , memory{ memory_ }
34883       , mtlBuffer{ mtlBuffer_ }
34884     {
34885     }
34886 
34887     VULKAN_HPP_CONSTEXPR ExportMetalBufferInfoEXT( ExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34888 
ExportMetalBufferInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34889     ExportMetalBufferInfoEXT( VkExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34890       : ExportMetalBufferInfoEXT( *reinterpret_cast<ExportMetalBufferInfoEXT const *>( &rhs ) )
34891     {
34892     }
34893 
34894     ExportMetalBufferInfoEXT & operator=( ExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34895 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34896 
operator =VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34897     ExportMetalBufferInfoEXT & operator=( VkExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34898     {
34899       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT const *>( &rhs );
34900       return *this;
34901     }
34902 
34903 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34904     VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34905     {
34906       pNext = pNext_;
34907       return *this;
34908     }
34909 
setMemoryVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34910     VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
34911     {
34912       memory = memory_;
34913       return *this;
34914     }
34915 
setMtlBufferVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34916     VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT & setMtlBuffer( MTLBuffer_id mtlBuffer_ ) VULKAN_HPP_NOEXCEPT
34917     {
34918       mtlBuffer = mtlBuffer_;
34919       return *this;
34920     }
34921 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34922 
operator VkExportMetalBufferInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34923     operator VkExportMetalBufferInfoEXT const &() const VULKAN_HPP_NOEXCEPT
34924     {
34925       return *reinterpret_cast<const VkExportMetalBufferInfoEXT *>( this );
34926     }
34927 
operator VkExportMetalBufferInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34928     operator VkExportMetalBufferInfoEXT &() VULKAN_HPP_NOEXCEPT
34929     {
34930       return *reinterpret_cast<VkExportMetalBufferInfoEXT *>( this );
34931     }
34932 
34933 #  if defined( VULKAN_HPP_USE_REFLECT )
34934 #    if 14 <= VULKAN_HPP_CPP_VERSION
34935     auto
34936 #    else
34937     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &, MTLBuffer_id const &>
34938 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34939       reflect() const VULKAN_HPP_NOEXCEPT
34940     {
34941       return std::tie( sType, pNext, memory, mtlBuffer );
34942     }
34943 #  endif
34944 
34945 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34946     auto operator<=>( ExportMetalBufferInfoEXT const & ) const = default;
34947 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34948     bool operator==( ExportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34949     {
34950 #    if defined( VULKAN_HPP_USE_REFLECT )
34951       return this->reflect() == rhs.reflect();
34952 #    else
34953       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( mtlBuffer == rhs.mtlBuffer );
34954 #    endif
34955     }
34956 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34957     bool operator!=( ExportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34958     {
34959       return !operator==( rhs );
34960     }
34961 #  endif
34962 
34963   public:
34964     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eExportMetalBufferInfoEXT;
34965     const void *                        pNext     = {};
34966     VULKAN_HPP_NAMESPACE::DeviceMemory  memory    = {};
34967     MTLBuffer_id                        mtlBuffer = {};
34968   };
34969 
34970   template <>
34971   struct CppType<StructureType, StructureType::eExportMetalBufferInfoEXT>
34972   {
34973     using Type = ExportMetalBufferInfoEXT;
34974   };
34975 #endif /*VK_USE_PLATFORM_METAL_EXT*/
34976 
34977 #if defined( VK_USE_PLATFORM_METAL_EXT )
34978   struct ExportMetalCommandQueueInfoEXT
34979   {
34980     using NativeType = VkExportMetalCommandQueueInfoEXT;
34981 
34982     static const bool                                  allowDuplicate = true;
34983     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalCommandQueueInfoEXT;
34984 
34985 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalCommandQueueInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34986     VULKAN_HPP_CONSTEXPR ExportMetalCommandQueueInfoEXT( VULKAN_HPP_NAMESPACE::Queue queue_           = {},
34987                                                          MTLCommandQueue_id          mtlCommandQueue_ = {},
34988                                                          const void *                pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
34989       : pNext{ pNext_ }
34990       , queue{ queue_ }
34991       , mtlCommandQueue{ mtlCommandQueue_ }
34992     {
34993     }
34994 
34995     VULKAN_HPP_CONSTEXPR ExportMetalCommandQueueInfoEXT( ExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34996 
ExportMetalCommandQueueInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34997     ExportMetalCommandQueueInfoEXT( VkExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34998       : ExportMetalCommandQueueInfoEXT( *reinterpret_cast<ExportMetalCommandQueueInfoEXT const *>( &rhs ) )
34999     {
35000     }
35001 
35002     ExportMetalCommandQueueInfoEXT & operator=( ExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35003 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35004 
operator =VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT35005     ExportMetalCommandQueueInfoEXT & operator=( VkExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35006     {
35007       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT const *>( &rhs );
35008       return *this;
35009     }
35010 
35011 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT35012     VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35013     {
35014       pNext = pNext_;
35015       return *this;
35016     }
35017 
setQueueVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT35018     VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT & setQueue( VULKAN_HPP_NAMESPACE::Queue queue_ ) VULKAN_HPP_NOEXCEPT
35019     {
35020       queue = queue_;
35021       return *this;
35022     }
35023 
setMtlCommandQueueVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT35024     VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT & setMtlCommandQueue( MTLCommandQueue_id mtlCommandQueue_ ) VULKAN_HPP_NOEXCEPT
35025     {
35026       mtlCommandQueue = mtlCommandQueue_;
35027       return *this;
35028     }
35029 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35030 
operator VkExportMetalCommandQueueInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT35031     operator VkExportMetalCommandQueueInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35032     {
35033       return *reinterpret_cast<const VkExportMetalCommandQueueInfoEXT *>( this );
35034     }
35035 
operator VkExportMetalCommandQueueInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT35036     operator VkExportMetalCommandQueueInfoEXT &() VULKAN_HPP_NOEXCEPT
35037     {
35038       return *reinterpret_cast<VkExportMetalCommandQueueInfoEXT *>( this );
35039     }
35040 
35041 #  if defined( VULKAN_HPP_USE_REFLECT )
35042 #    if 14 <= VULKAN_HPP_CPP_VERSION
35043     auto
35044 #    else
35045     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Queue const &, MTLCommandQueue_id const &>
35046 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT35047       reflect() const VULKAN_HPP_NOEXCEPT
35048     {
35049       return std::tie( sType, pNext, queue, mtlCommandQueue );
35050     }
35051 #  endif
35052 
35053 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35054     auto operator<=>( ExportMetalCommandQueueInfoEXT const & ) const = default;
35055 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT35056     bool operator==( ExportMetalCommandQueueInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35057     {
35058 #    if defined( VULKAN_HPP_USE_REFLECT )
35059       return this->reflect() == rhs.reflect();
35060 #    else
35061       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queue == rhs.queue ) && ( mtlCommandQueue == rhs.mtlCommandQueue );
35062 #    endif
35063     }
35064 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT35065     bool operator!=( ExportMetalCommandQueueInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35066     {
35067       return !operator==( rhs );
35068     }
35069 #  endif
35070 
35071   public:
35072     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eExportMetalCommandQueueInfoEXT;
35073     const void *                        pNext           = {};
35074     VULKAN_HPP_NAMESPACE::Queue         queue           = {};
35075     MTLCommandQueue_id                  mtlCommandQueue = {};
35076   };
35077 
35078   template <>
35079   struct CppType<StructureType, StructureType::eExportMetalCommandQueueInfoEXT>
35080   {
35081     using Type = ExportMetalCommandQueueInfoEXT;
35082   };
35083 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35084 
35085 #if defined( VK_USE_PLATFORM_METAL_EXT )
35086   struct ExportMetalDeviceInfoEXT
35087   {
35088     using NativeType = VkExportMetalDeviceInfoEXT;
35089 
35090     static const bool                                  allowDuplicate = false;
35091     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalDeviceInfoEXT;
35092 
35093 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalDeviceInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT35094     VULKAN_HPP_CONSTEXPR ExportMetalDeviceInfoEXT( MTLDevice_id mtlDevice_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
35095       : pNext{ pNext_ }
35096       , mtlDevice{ mtlDevice_ }
35097     {
35098     }
35099 
35100     VULKAN_HPP_CONSTEXPR ExportMetalDeviceInfoEXT( ExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35101 
ExportMetalDeviceInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT35102     ExportMetalDeviceInfoEXT( VkExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35103       : ExportMetalDeviceInfoEXT( *reinterpret_cast<ExportMetalDeviceInfoEXT const *>( &rhs ) )
35104     {
35105     }
35106 
35107     ExportMetalDeviceInfoEXT & operator=( ExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35108 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35109 
operator =VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT35110     ExportMetalDeviceInfoEXT & operator=( VkExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35111     {
35112       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT const *>( &rhs );
35113       return *this;
35114     }
35115 
35116 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT35117     VULKAN_HPP_CONSTEXPR_14 ExportMetalDeviceInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35118     {
35119       pNext = pNext_;
35120       return *this;
35121     }
35122 
setMtlDeviceVULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT35123     VULKAN_HPP_CONSTEXPR_14 ExportMetalDeviceInfoEXT & setMtlDevice( MTLDevice_id mtlDevice_ ) VULKAN_HPP_NOEXCEPT
35124     {
35125       mtlDevice = mtlDevice_;
35126       return *this;
35127     }
35128 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35129 
operator VkExportMetalDeviceInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT35130     operator VkExportMetalDeviceInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35131     {
35132       return *reinterpret_cast<const VkExportMetalDeviceInfoEXT *>( this );
35133     }
35134 
operator VkExportMetalDeviceInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT35135     operator VkExportMetalDeviceInfoEXT &() VULKAN_HPP_NOEXCEPT
35136     {
35137       return *reinterpret_cast<VkExportMetalDeviceInfoEXT *>( this );
35138     }
35139 
35140 #  if defined( VULKAN_HPP_USE_REFLECT )
35141 #    if 14 <= VULKAN_HPP_CPP_VERSION
35142     auto
35143 #    else
35144     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, MTLDevice_id const &>
35145 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT35146       reflect() const VULKAN_HPP_NOEXCEPT
35147     {
35148       return std::tie( sType, pNext, mtlDevice );
35149     }
35150 #  endif
35151 
35152 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35153     auto operator<=>( ExportMetalDeviceInfoEXT const & ) const = default;
35154 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT35155     bool operator==( ExportMetalDeviceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35156     {
35157 #    if defined( VULKAN_HPP_USE_REFLECT )
35158       return this->reflect() == rhs.reflect();
35159 #    else
35160       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mtlDevice == rhs.mtlDevice );
35161 #    endif
35162     }
35163 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT35164     bool operator!=( ExportMetalDeviceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35165     {
35166       return !operator==( rhs );
35167     }
35168 #  endif
35169 
35170   public:
35171     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eExportMetalDeviceInfoEXT;
35172     const void *                        pNext     = {};
35173     MTLDevice_id                        mtlDevice = {};
35174   };
35175 
35176   template <>
35177   struct CppType<StructureType, StructureType::eExportMetalDeviceInfoEXT>
35178   {
35179     using Type = ExportMetalDeviceInfoEXT;
35180   };
35181 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35182 
35183 #if defined( VK_USE_PLATFORM_METAL_EXT )
35184   struct ExportMetalIOSurfaceInfoEXT
35185   {
35186     using NativeType = VkExportMetalIOSurfaceInfoEXT;
35187 
35188     static const bool                                  allowDuplicate = true;
35189     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalIoSurfaceInfoEXT;
35190 
35191 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
35192     VULKAN_HPP_CONSTEXPR
ExportMetalIOSurfaceInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35193       ExportMetalIOSurfaceInfoEXT( VULKAN_HPP_NAMESPACE::Image image_ = {}, IOSurfaceRef ioSurface_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
35194       : pNext{ pNext_ }
35195       , image{ image_ }
35196       , ioSurface{ ioSurface_ }
35197     {
35198     }
35199 
35200     VULKAN_HPP_CONSTEXPR ExportMetalIOSurfaceInfoEXT( ExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35201 
ExportMetalIOSurfaceInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35202     ExportMetalIOSurfaceInfoEXT( VkExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35203       : ExportMetalIOSurfaceInfoEXT( *reinterpret_cast<ExportMetalIOSurfaceInfoEXT const *>( &rhs ) )
35204     {
35205     }
35206 
35207     ExportMetalIOSurfaceInfoEXT & operator=( ExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35208 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35209 
operator =VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35210     ExportMetalIOSurfaceInfoEXT & operator=( VkExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35211     {
35212       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT const *>( &rhs );
35213       return *this;
35214     }
35215 
35216 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35217     VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35218     {
35219       pNext = pNext_;
35220       return *this;
35221     }
35222 
setImageVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35223     VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
35224     {
35225       image = image_;
35226       return *this;
35227     }
35228 
setIoSurfaceVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35229     VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT & setIoSurface( IOSurfaceRef ioSurface_ ) VULKAN_HPP_NOEXCEPT
35230     {
35231       ioSurface = ioSurface_;
35232       return *this;
35233     }
35234 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35235 
operator VkExportMetalIOSurfaceInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35236     operator VkExportMetalIOSurfaceInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35237     {
35238       return *reinterpret_cast<const VkExportMetalIOSurfaceInfoEXT *>( this );
35239     }
35240 
operator VkExportMetalIOSurfaceInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35241     operator VkExportMetalIOSurfaceInfoEXT &() VULKAN_HPP_NOEXCEPT
35242     {
35243       return *reinterpret_cast<VkExportMetalIOSurfaceInfoEXT *>( this );
35244     }
35245 
35246 #  if defined( VULKAN_HPP_USE_REFLECT )
35247 #    if 14 <= VULKAN_HPP_CPP_VERSION
35248     auto
35249 #    else
35250     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, IOSurfaceRef const &>
35251 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35252       reflect() const VULKAN_HPP_NOEXCEPT
35253     {
35254       return std::tie( sType, pNext, image, ioSurface );
35255     }
35256 #  endif
35257 
35258 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35259     auto operator<=>( ExportMetalIOSurfaceInfoEXT const & ) const = default;
35260 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35261     bool operator==( ExportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35262     {
35263 #    if defined( VULKAN_HPP_USE_REFLECT )
35264       return this->reflect() == rhs.reflect();
35265 #    else
35266       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( ioSurface == rhs.ioSurface );
35267 #    endif
35268     }
35269 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT35270     bool operator!=( ExportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35271     {
35272       return !operator==( rhs );
35273     }
35274 #  endif
35275 
35276   public:
35277     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eExportMetalIoSurfaceInfoEXT;
35278     const void *                        pNext     = {};
35279     VULKAN_HPP_NAMESPACE::Image         image     = {};
35280     IOSurfaceRef                        ioSurface = {};
35281   };
35282 
35283   template <>
35284   struct CppType<StructureType, StructureType::eExportMetalIoSurfaceInfoEXT>
35285   {
35286     using Type = ExportMetalIOSurfaceInfoEXT;
35287   };
35288 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35289 
35290 #if defined( VK_USE_PLATFORM_METAL_EXT )
35291   struct ExportMetalObjectCreateInfoEXT
35292   {
35293     using NativeType = VkExportMetalObjectCreateInfoEXT;
35294 
35295     static const bool                                  allowDuplicate = true;
35296     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalObjectCreateInfoEXT;
35297 
35298 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalObjectCreateInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35299     VULKAN_HPP_CONSTEXPR ExportMetalObjectCreateInfoEXT(
35300       VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT exportObjectType_ = VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT::eMetalDevice,
35301       const void *                                           pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
35302       : pNext{ pNext_ }
35303       , exportObjectType{ exportObjectType_ }
35304     {
35305     }
35306 
35307     VULKAN_HPP_CONSTEXPR ExportMetalObjectCreateInfoEXT( ExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35308 
ExportMetalObjectCreateInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35309     ExportMetalObjectCreateInfoEXT( VkExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35310       : ExportMetalObjectCreateInfoEXT( *reinterpret_cast<ExportMetalObjectCreateInfoEXT const *>( &rhs ) )
35311     {
35312     }
35313 
35314     ExportMetalObjectCreateInfoEXT & operator=( ExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35315 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35316 
operator =VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35317     ExportMetalObjectCreateInfoEXT & operator=( VkExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35318     {
35319       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT const *>( &rhs );
35320       return *this;
35321     }
35322 
35323 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35324     VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35325     {
35326       pNext = pNext_;
35327       return *this;
35328     }
35329 
35330     VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectCreateInfoEXT &
setExportObjectTypeVULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35331       setExportObjectType( VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT exportObjectType_ ) VULKAN_HPP_NOEXCEPT
35332     {
35333       exportObjectType = exportObjectType_;
35334       return *this;
35335     }
35336 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35337 
operator VkExportMetalObjectCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35338     operator VkExportMetalObjectCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35339     {
35340       return *reinterpret_cast<const VkExportMetalObjectCreateInfoEXT *>( this );
35341     }
35342 
operator VkExportMetalObjectCreateInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35343     operator VkExportMetalObjectCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
35344     {
35345       return *reinterpret_cast<VkExportMetalObjectCreateInfoEXT *>( this );
35346     }
35347 
35348 #  if defined( VULKAN_HPP_USE_REFLECT )
35349 #    if 14 <= VULKAN_HPP_CPP_VERSION
35350     auto
35351 #    else
35352     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT const &>
35353 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35354       reflect() const VULKAN_HPP_NOEXCEPT
35355     {
35356       return std::tie( sType, pNext, exportObjectType );
35357     }
35358 #  endif
35359 
35360 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35361     auto operator<=>( ExportMetalObjectCreateInfoEXT const & ) const = default;
35362 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35363     bool operator==( ExportMetalObjectCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35364     {
35365 #    if defined( VULKAN_HPP_USE_REFLECT )
35366       return this->reflect() == rhs.reflect();
35367 #    else
35368       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exportObjectType == rhs.exportObjectType );
35369 #    endif
35370     }
35371 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35372     bool operator!=( ExportMetalObjectCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35373     {
35374       return !operator==( rhs );
35375     }
35376 #  endif
35377 
35378   public:
35379     VULKAN_HPP_NAMESPACE::StructureType                    sType            = StructureType::eExportMetalObjectCreateInfoEXT;
35380     const void *                                           pNext            = {};
35381     VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT exportObjectType = VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT::eMetalDevice;
35382   };
35383 
35384   template <>
35385   struct CppType<StructureType, StructureType::eExportMetalObjectCreateInfoEXT>
35386   {
35387     using Type = ExportMetalObjectCreateInfoEXT;
35388   };
35389 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35390 
35391 #if defined( VK_USE_PLATFORM_METAL_EXT )
35392   struct ExportMetalObjectsInfoEXT
35393   {
35394     using NativeType = VkExportMetalObjectsInfoEXT;
35395 
35396     static const bool                                  allowDuplicate = false;
35397     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalObjectsInfoEXT;
35398 
35399 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalObjectsInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35400     VULKAN_HPP_CONSTEXPR ExportMetalObjectsInfoEXT( const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {}
35401 
35402     VULKAN_HPP_CONSTEXPR ExportMetalObjectsInfoEXT( ExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35403 
ExportMetalObjectsInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35404     ExportMetalObjectsInfoEXT( VkExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35405       : ExportMetalObjectsInfoEXT( *reinterpret_cast<ExportMetalObjectsInfoEXT const *>( &rhs ) )
35406     {
35407     }
35408 
35409     ExportMetalObjectsInfoEXT & operator=( ExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35410 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35411 
operator =VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35412     ExportMetalObjectsInfoEXT & operator=( VkExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35413     {
35414       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT const *>( &rhs );
35415       return *this;
35416     }
35417 
35418 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35419     VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectsInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35420     {
35421       pNext = pNext_;
35422       return *this;
35423     }
35424 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35425 
operator VkExportMetalObjectsInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35426     operator VkExportMetalObjectsInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35427     {
35428       return *reinterpret_cast<const VkExportMetalObjectsInfoEXT *>( this );
35429     }
35430 
operator VkExportMetalObjectsInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35431     operator VkExportMetalObjectsInfoEXT &() VULKAN_HPP_NOEXCEPT
35432     {
35433       return *reinterpret_cast<VkExportMetalObjectsInfoEXT *>( this );
35434     }
35435 
35436 #  if defined( VULKAN_HPP_USE_REFLECT )
35437 #    if 14 <= VULKAN_HPP_CPP_VERSION
35438     auto
35439 #    else
35440     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &>
35441 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35442       reflect() const VULKAN_HPP_NOEXCEPT
35443     {
35444       return std::tie( sType, pNext );
35445     }
35446 #  endif
35447 
35448 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35449     auto operator<=>( ExportMetalObjectsInfoEXT const & ) const = default;
35450 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35451     bool operator==( ExportMetalObjectsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35452     {
35453 #    if defined( VULKAN_HPP_USE_REFLECT )
35454       return this->reflect() == rhs.reflect();
35455 #    else
35456       return ( sType == rhs.sType ) && ( pNext == rhs.pNext );
35457 #    endif
35458     }
35459 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35460     bool operator!=( ExportMetalObjectsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35461     {
35462       return !operator==( rhs );
35463     }
35464 #  endif
35465 
35466   public:
35467     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMetalObjectsInfoEXT;
35468     const void *                        pNext = {};
35469   };
35470 
35471   template <>
35472   struct CppType<StructureType, StructureType::eExportMetalObjectsInfoEXT>
35473   {
35474     using Type = ExportMetalObjectsInfoEXT;
35475   };
35476 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35477 
35478 #if defined( VK_USE_PLATFORM_METAL_EXT )
35479   struct ExportMetalSharedEventInfoEXT
35480   {
35481     using NativeType = VkExportMetalSharedEventInfoEXT;
35482 
35483     static const bool                                  allowDuplicate = true;
35484     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalSharedEventInfoEXT;
35485 
35486 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalSharedEventInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35487     VULKAN_HPP_CONSTEXPR ExportMetalSharedEventInfoEXT( VULKAN_HPP_NAMESPACE::Semaphore semaphore_      = {},
35488                                                         VULKAN_HPP_NAMESPACE::Event     event_          = {},
35489                                                         MTLSharedEvent_id               mtlSharedEvent_ = {},
35490                                                         const void *                    pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
35491       : pNext{ pNext_ }
35492       , semaphore{ semaphore_ }
35493       , event{ event_ }
35494       , mtlSharedEvent{ mtlSharedEvent_ }
35495     {
35496     }
35497 
35498     VULKAN_HPP_CONSTEXPR ExportMetalSharedEventInfoEXT( ExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35499 
ExportMetalSharedEventInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35500     ExportMetalSharedEventInfoEXT( VkExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35501       : ExportMetalSharedEventInfoEXT( *reinterpret_cast<ExportMetalSharedEventInfoEXT const *>( &rhs ) )
35502     {
35503     }
35504 
35505     ExportMetalSharedEventInfoEXT & operator=( ExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35506 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35507 
operator =VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35508     ExportMetalSharedEventInfoEXT & operator=( VkExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35509     {
35510       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT const *>( &rhs );
35511       return *this;
35512     }
35513 
35514 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35515     VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35516     {
35517       pNext = pNext_;
35518       return *this;
35519     }
35520 
setSemaphoreVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35521     VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
35522     {
35523       semaphore = semaphore_;
35524       return *this;
35525     }
35526 
setEventVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35527     VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setEvent( VULKAN_HPP_NAMESPACE::Event event_ ) VULKAN_HPP_NOEXCEPT
35528     {
35529       event = event_;
35530       return *this;
35531     }
35532 
setMtlSharedEventVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35533     VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setMtlSharedEvent( MTLSharedEvent_id mtlSharedEvent_ ) VULKAN_HPP_NOEXCEPT
35534     {
35535       mtlSharedEvent = mtlSharedEvent_;
35536       return *this;
35537     }
35538 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35539 
operator VkExportMetalSharedEventInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35540     operator VkExportMetalSharedEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35541     {
35542       return *reinterpret_cast<const VkExportMetalSharedEventInfoEXT *>( this );
35543     }
35544 
operator VkExportMetalSharedEventInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35545     operator VkExportMetalSharedEventInfoEXT &() VULKAN_HPP_NOEXCEPT
35546     {
35547       return *reinterpret_cast<VkExportMetalSharedEventInfoEXT *>( this );
35548     }
35549 
35550 #  if defined( VULKAN_HPP_USE_REFLECT )
35551 #    if 14 <= VULKAN_HPP_CPP_VERSION
35552     auto
35553 #    else
35554     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35555                const void * const &,
35556                VULKAN_HPP_NAMESPACE::Semaphore const &,
35557                VULKAN_HPP_NAMESPACE::Event const &,
35558                MTLSharedEvent_id const &>
35559 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35560       reflect() const VULKAN_HPP_NOEXCEPT
35561     {
35562       return std::tie( sType, pNext, semaphore, event, mtlSharedEvent );
35563     }
35564 #  endif
35565 
35566 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35567     auto operator<=>( ExportMetalSharedEventInfoEXT const & ) const = default;
35568 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35569     bool operator==( ExportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35570     {
35571 #    if defined( VULKAN_HPP_USE_REFLECT )
35572       return this->reflect() == rhs.reflect();
35573 #    else
35574       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( event == rhs.event ) &&
35575              ( mtlSharedEvent == rhs.mtlSharedEvent );
35576 #    endif
35577     }
35578 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35579     bool operator!=( ExportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35580     {
35581       return !operator==( rhs );
35582     }
35583 #  endif
35584 
35585   public:
35586     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eExportMetalSharedEventInfoEXT;
35587     const void *                        pNext          = {};
35588     VULKAN_HPP_NAMESPACE::Semaphore     semaphore      = {};
35589     VULKAN_HPP_NAMESPACE::Event         event          = {};
35590     MTLSharedEvent_id                   mtlSharedEvent = {};
35591   };
35592 
35593   template <>
35594   struct CppType<StructureType, StructureType::eExportMetalSharedEventInfoEXT>
35595   {
35596     using Type = ExportMetalSharedEventInfoEXT;
35597   };
35598 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35599 
35600 #if defined( VK_USE_PLATFORM_METAL_EXT )
35601   struct ExportMetalTextureInfoEXT
35602   {
35603     using NativeType = VkExportMetalTextureInfoEXT;
35604 
35605     static const bool                                  allowDuplicate = true;
35606     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalTextureInfoEXT;
35607 
35608 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalTextureInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35609     VULKAN_HPP_CONSTEXPR ExportMetalTextureInfoEXT( VULKAN_HPP_NAMESPACE::Image               image_      = {},
35610                                                     VULKAN_HPP_NAMESPACE::ImageView           imageView_  = {},
35611                                                     VULKAN_HPP_NAMESPACE::BufferView          bufferView_ = {},
35612                                                     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane_      = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor,
35613                                                     MTLTexture_id                             mtlTexture_ = {},
35614                                                     const void *                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
35615       : pNext{ pNext_ }
35616       , image{ image_ }
35617       , imageView{ imageView_ }
35618       , bufferView{ bufferView_ }
35619       , plane{ plane_ }
35620       , mtlTexture{ mtlTexture_ }
35621     {
35622     }
35623 
35624     VULKAN_HPP_CONSTEXPR ExportMetalTextureInfoEXT( ExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35625 
ExportMetalTextureInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35626     ExportMetalTextureInfoEXT( VkExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35627       : ExportMetalTextureInfoEXT( *reinterpret_cast<ExportMetalTextureInfoEXT const *>( &rhs ) )
35628     {
35629     }
35630 
35631     ExportMetalTextureInfoEXT & operator=( ExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35632 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35633 
operator =VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35634     ExportMetalTextureInfoEXT & operator=( VkExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35635     {
35636       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT const *>( &rhs );
35637       return *this;
35638     }
35639 
35640 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35641     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35642     {
35643       pNext = pNext_;
35644       return *this;
35645     }
35646 
setImageVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35647     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
35648     {
35649       image = image_;
35650       return *this;
35651     }
35652 
setImageViewVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35653     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
35654     {
35655       imageView = imageView_;
35656       return *this;
35657     }
35658 
setBufferViewVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35659     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setBufferView( VULKAN_HPP_NAMESPACE::BufferView bufferView_ ) VULKAN_HPP_NOEXCEPT
35660     {
35661       bufferView = bufferView_;
35662       return *this;
35663     }
35664 
setPlaneVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35665     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setPlane( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane_ ) VULKAN_HPP_NOEXCEPT
35666     {
35667       plane = plane_;
35668       return *this;
35669     }
35670 
setMtlTextureVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35671     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setMtlTexture( MTLTexture_id mtlTexture_ ) VULKAN_HPP_NOEXCEPT
35672     {
35673       mtlTexture = mtlTexture_;
35674       return *this;
35675     }
35676 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35677 
operator VkExportMetalTextureInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35678     operator VkExportMetalTextureInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35679     {
35680       return *reinterpret_cast<const VkExportMetalTextureInfoEXT *>( this );
35681     }
35682 
operator VkExportMetalTextureInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35683     operator VkExportMetalTextureInfoEXT &() VULKAN_HPP_NOEXCEPT
35684     {
35685       return *reinterpret_cast<VkExportMetalTextureInfoEXT *>( this );
35686     }
35687 
35688 #  if defined( VULKAN_HPP_USE_REFLECT )
35689 #    if 14 <= VULKAN_HPP_CPP_VERSION
35690     auto
35691 #    else
35692     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35693                const void * const &,
35694                VULKAN_HPP_NAMESPACE::Image const &,
35695                VULKAN_HPP_NAMESPACE::ImageView const &,
35696                VULKAN_HPP_NAMESPACE::BufferView const &,
35697                VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &,
35698                MTLTexture_id const &>
35699 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35700       reflect() const VULKAN_HPP_NOEXCEPT
35701     {
35702       return std::tie( sType, pNext, image, imageView, bufferView, plane, mtlTexture );
35703     }
35704 #  endif
35705 
35706 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35707     auto operator<=>( ExportMetalTextureInfoEXT const & ) const = default;
35708 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35709     bool operator==( ExportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35710     {
35711 #    if defined( VULKAN_HPP_USE_REFLECT )
35712       return this->reflect() == rhs.reflect();
35713 #    else
35714       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( imageView == rhs.imageView ) && ( bufferView == rhs.bufferView ) &&
35715              ( plane == rhs.plane ) && ( mtlTexture == rhs.mtlTexture );
35716 #    endif
35717     }
35718 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35719     bool operator!=( ExportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35720     {
35721       return !operator==( rhs );
35722     }
35723 #  endif
35724 
35725   public:
35726     VULKAN_HPP_NAMESPACE::StructureType       sType      = StructureType::eExportMetalTextureInfoEXT;
35727     const void *                              pNext      = {};
35728     VULKAN_HPP_NAMESPACE::Image               image      = {};
35729     VULKAN_HPP_NAMESPACE::ImageView           imageView  = {};
35730     VULKAN_HPP_NAMESPACE::BufferView          bufferView = {};
35731     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane      = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
35732     MTLTexture_id                             mtlTexture = {};
35733   };
35734 
35735   template <>
35736   struct CppType<StructureType, StructureType::eExportMetalTextureInfoEXT>
35737   {
35738     using Type = ExportMetalTextureInfoEXT;
35739   };
35740 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35741 
35742   struct ExportSemaphoreCreateInfo
35743   {
35744     using NativeType = VkExportSemaphoreCreateInfo;
35745 
35746     static const bool                                  allowDuplicate = false;
35747     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportSemaphoreCreateInfo;
35748 
35749 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportSemaphoreCreateInfoVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35750     VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ = {},
35751                                                     const void *                                           pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
35752       : pNext{ pNext_ }
35753       , handleTypes{ handleTypes_ }
35754     {
35755     }
35756 
35757     VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35758 
ExportSemaphoreCreateInfoVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35759     ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
35760       : ExportSemaphoreCreateInfo( *reinterpret_cast<ExportSemaphoreCreateInfo const *>( &rhs ) )
35761     {
35762     }
35763 
35764     ExportSemaphoreCreateInfo & operator=( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35765 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35766 
operator =VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35767     ExportSemaphoreCreateInfo & operator=( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
35768     {
35769       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo const *>( &rhs );
35770       return *this;
35771     }
35772 
35773 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35774     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35775     {
35776       pNext = pNext_;
35777       return *this;
35778     }
35779 
35780     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35781       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
35782     {
35783       handleTypes = handleTypes_;
35784       return *this;
35785     }
35786 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35787 
operator VkExportSemaphoreCreateInfo const&VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35788     operator VkExportSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT
35789     {
35790       return *reinterpret_cast<const VkExportSemaphoreCreateInfo *>( this );
35791     }
35792 
operator VkExportSemaphoreCreateInfo&VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35793     operator VkExportSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT
35794     {
35795       return *reinterpret_cast<VkExportSemaphoreCreateInfo *>( this );
35796     }
35797 
35798 #if defined( VULKAN_HPP_USE_REFLECT )
35799 #  if 14 <= VULKAN_HPP_CPP_VERSION
35800     auto
35801 #  else
35802     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &>
35803 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35804       reflect() const VULKAN_HPP_NOEXCEPT
35805     {
35806       return std::tie( sType, pNext, handleTypes );
35807     }
35808 #endif
35809 
35810 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35811     auto operator<=>( ExportSemaphoreCreateInfo const & ) const = default;
35812 #else
operator ==VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35813     bool operator==( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
35814     {
35815 #  if defined( VULKAN_HPP_USE_REFLECT )
35816       return this->reflect() == rhs.reflect();
35817 #  else
35818       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
35819 #  endif
35820     }
35821 
operator !=VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35822     bool operator!=( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
35823     {
35824       return !operator==( rhs );
35825     }
35826 #endif
35827 
35828   public:
35829     VULKAN_HPP_NAMESPACE::StructureType                    sType       = StructureType::eExportSemaphoreCreateInfo;
35830     const void *                                           pNext       = {};
35831     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes = {};
35832   };
35833 
35834   template <>
35835   struct CppType<StructureType, StructureType::eExportSemaphoreCreateInfo>
35836   {
35837     using Type = ExportSemaphoreCreateInfo;
35838   };
35839 
35840   using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
35841 
35842 #if defined( VK_USE_PLATFORM_WIN32_KHR )
35843   struct ExportSemaphoreWin32HandleInfoKHR
35844   {
35845     using NativeType = VkExportSemaphoreWin32HandleInfoKHR;
35846 
35847     static const bool                                  allowDuplicate = false;
35848     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportSemaphoreWin32HandleInfoKHR;
35849 
35850 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35851     VULKAN_HPP_CONSTEXPR ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {},
35852                                                             DWORD                       dwAccess_    = {},
35853                                                             LPCWSTR                     name_        = {},
35854                                                             const void *                pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
35855       : pNext{ pNext_ }
35856       , pAttributes{ pAttributes_ }
35857       , dwAccess{ dwAccess_ }
35858       , name{ name_ }
35859     {
35860     }
35861 
35862     VULKAN_HPP_CONSTEXPR ExportSemaphoreWin32HandleInfoKHR( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35863 
ExportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35864     ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
35865       : ExportSemaphoreWin32HandleInfoKHR( *reinterpret_cast<ExportSemaphoreWin32HandleInfoKHR const *>( &rhs ) )
35866     {
35867     }
35868 
35869     ExportSemaphoreWin32HandleInfoKHR & operator=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35870 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35871 
operator =VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35872     ExportSemaphoreWin32HandleInfoKHR & operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
35873     {
35874       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR const *>( &rhs );
35875       return *this;
35876     }
35877 
35878 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35879     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35880     {
35881       pNext = pNext_;
35882       return *this;
35883     }
35884 
setPAttributesVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35885     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
35886     {
35887       pAttributes = pAttributes_;
35888       return *this;
35889     }
35890 
setDwAccessVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35891     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
35892     {
35893       dwAccess = dwAccess_;
35894       return *this;
35895     }
35896 
setNameVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35897     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
35898     {
35899       name = name_;
35900       return *this;
35901     }
35902 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35903 
operator VkExportSemaphoreWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35904     operator VkExportSemaphoreWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
35905     {
35906       return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR *>( this );
35907     }
35908 
operator VkExportSemaphoreWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35909     operator VkExportSemaphoreWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
35910     {
35911       return *reinterpret_cast<VkExportSemaphoreWin32HandleInfoKHR *>( this );
35912     }
35913 
35914 #  if defined( VULKAN_HPP_USE_REFLECT )
35915 #    if 14 <= VULKAN_HPP_CPP_VERSION
35916     auto
35917 #    else
35918     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const SECURITY_ATTRIBUTES * const &, DWORD const &, LPCWSTR const &>
35919 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35920       reflect() const VULKAN_HPP_NOEXCEPT
35921     {
35922       return std::tie( sType, pNext, pAttributes, dwAccess, name );
35923     }
35924 #  endif
35925 
35926 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35927     auto operator<=>( ExportSemaphoreWin32HandleInfoKHR const & ) const = default;
35928 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35929     bool operator==( ExportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
35930     {
35931 #    if defined( VULKAN_HPP_USE_REFLECT )
35932       return this->reflect() == rhs.reflect();
35933 #    else
35934       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess ) && ( name == rhs.name );
35935 #    endif
35936     }
35937 
operator !=VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35938     bool operator!=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
35939     {
35940       return !operator==( rhs );
35941     }
35942 #  endif
35943 
35944   public:
35945     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportSemaphoreWin32HandleInfoKHR;
35946     const void *                        pNext       = {};
35947     const SECURITY_ATTRIBUTES *         pAttributes = {};
35948     DWORD                               dwAccess    = {};
35949     LPCWSTR                             name        = {};
35950   };
35951 
35952   template <>
35953   struct CppType<StructureType, StructureType::eExportSemaphoreWin32HandleInfoKHR>
35954   {
35955     using Type = ExportSemaphoreWin32HandleInfoKHR;
35956   };
35957 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
35958 
35959   struct ExtensionProperties
35960   {
35961     using NativeType = VkExtensionProperties;
35962 
35963 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExtensionPropertiesVULKAN_HPP_NAMESPACE::ExtensionProperties35964     VULKAN_HPP_CONSTEXPR_14 ExtensionProperties( std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & extensionName_ = {},
35965                                                  uint32_t                                             specVersion_   = {} ) VULKAN_HPP_NOEXCEPT
35966       : extensionName{ extensionName_ }
35967       , specVersion{ specVersion_ }
35968     {
35969     }
35970 
35971     VULKAN_HPP_CONSTEXPR_14 ExtensionProperties( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35972 
ExtensionPropertiesVULKAN_HPP_NAMESPACE::ExtensionProperties35973     ExtensionProperties( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT : ExtensionProperties( *reinterpret_cast<ExtensionProperties const *>( &rhs ) )
35974     {
35975     }
35976 
35977     ExtensionProperties & operator=( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35978 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35979 
operator =VULKAN_HPP_NAMESPACE::ExtensionProperties35980     ExtensionProperties & operator=( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT
35981     {
35982       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExtensionProperties const *>( &rhs );
35983       return *this;
35984     }
35985 
operator VkExtensionProperties const&VULKAN_HPP_NAMESPACE::ExtensionProperties35986     operator VkExtensionProperties const &() const VULKAN_HPP_NOEXCEPT
35987     {
35988       return *reinterpret_cast<const VkExtensionProperties *>( this );
35989     }
35990 
operator VkExtensionProperties&VULKAN_HPP_NAMESPACE::ExtensionProperties35991     operator VkExtensionProperties &() VULKAN_HPP_NOEXCEPT
35992     {
35993       return *reinterpret_cast<VkExtensionProperties *>( this );
35994     }
35995 
35996 #if defined( VULKAN_HPP_USE_REFLECT )
35997 #  if 14 <= VULKAN_HPP_CPP_VERSION
35998     auto
35999 #  else
36000     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &, uint32_t const &>
36001 #  endif
reflectVULKAN_HPP_NAMESPACE::ExtensionProperties36002       reflect() const VULKAN_HPP_NOEXCEPT
36003     {
36004       return std::tie( extensionName, specVersion );
36005     }
36006 #endif
36007 
36008 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ExtensionProperties36009     std::strong_ordering operator<=>( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36010     {
36011       if ( auto cmp = strcmp( extensionName, rhs.extensionName ); cmp != 0 )
36012         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
36013       if ( auto cmp = specVersion <=> rhs.specVersion; cmp != 0 )
36014         return cmp;
36015 
36016       return std::strong_ordering::equivalent;
36017     }
36018 #endif
36019 
operator ==VULKAN_HPP_NAMESPACE::ExtensionProperties36020     bool operator==( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36021     {
36022       return ( strcmp( extensionName, rhs.extensionName ) == 0 ) && ( specVersion == rhs.specVersion );
36023     }
36024 
operator !=VULKAN_HPP_NAMESPACE::ExtensionProperties36025     bool operator!=( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36026     {
36027       return !operator==( rhs );
36028     }
36029 
36030   public:
36031     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> extensionName = {};
36032     uint32_t                                                               specVersion   = {};
36033   };
36034 
36035   struct ExternalMemoryProperties
36036   {
36037     using NativeType = VkExternalMemoryProperties;
36038 
36039 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryPropertiesVULKAN_HPP_NAMESPACE::ExternalMemoryProperties36040     VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags    externalMemoryFeatures_        = {},
36041                                                    VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes_ = {},
36042                                                    VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes_         = {} ) VULKAN_HPP_NOEXCEPT
36043       : externalMemoryFeatures{ externalMemoryFeatures_ }
36044       , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ }
36045       , compatibleHandleTypes{ compatibleHandleTypes_ }
36046     {
36047     }
36048 
36049     VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36050 
ExternalMemoryPropertiesVULKAN_HPP_NAMESPACE::ExternalMemoryProperties36051     ExternalMemoryProperties( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36052       : ExternalMemoryProperties( *reinterpret_cast<ExternalMemoryProperties const *>( &rhs ) )
36053     {
36054     }
36055 
36056     ExternalMemoryProperties & operator=( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36057 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36058 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryProperties36059     ExternalMemoryProperties & operator=( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36060     {
36061       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const *>( &rhs );
36062       return *this;
36063     }
36064 
operator VkExternalMemoryProperties const&VULKAN_HPP_NAMESPACE::ExternalMemoryProperties36065     operator VkExternalMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
36066     {
36067       return *reinterpret_cast<const VkExternalMemoryProperties *>( this );
36068     }
36069 
operator VkExternalMemoryProperties&VULKAN_HPP_NAMESPACE::ExternalMemoryProperties36070     operator VkExternalMemoryProperties &() VULKAN_HPP_NOEXCEPT
36071     {
36072       return *reinterpret_cast<VkExternalMemoryProperties *>( this );
36073     }
36074 
36075 #if defined( VULKAN_HPP_USE_REFLECT )
36076 #  if 14 <= VULKAN_HPP_CPP_VERSION
36077     auto
36078 #  else
36079     std::tuple<VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags const &,
36080                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &,
36081                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
36082 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryProperties36083       reflect() const VULKAN_HPP_NOEXCEPT
36084     {
36085       return std::tie( externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes );
36086     }
36087 #endif
36088 
36089 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36090     auto operator<=>( ExternalMemoryProperties const & ) const = default;
36091 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryProperties36092     bool operator==( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36093     {
36094 #  if defined( VULKAN_HPP_USE_REFLECT )
36095       return this->reflect() == rhs.reflect();
36096 #  else
36097       return ( externalMemoryFeatures == rhs.externalMemoryFeatures ) && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) &&
36098              ( compatibleHandleTypes == rhs.compatibleHandleTypes );
36099 #  endif
36100     }
36101 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryProperties36102     bool operator!=( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36103     {
36104       return !operator==( rhs );
36105     }
36106 #endif
36107 
36108   public:
36109     VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags    externalMemoryFeatures        = {};
36110     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes = {};
36111     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes         = {};
36112   };
36113 
36114   using ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
36115 
36116   struct ExternalBufferProperties
36117   {
36118     using NativeType = VkExternalBufferProperties;
36119 
36120     static const bool                                  allowDuplicate = false;
36121     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalBufferProperties;
36122 
36123 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalBufferPropertiesVULKAN_HPP_NAMESPACE::ExternalBufferProperties36124     VULKAN_HPP_CONSTEXPR ExternalBufferProperties( VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {},
36125                                                    void *                                         pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
36126       : pNext{ pNext_ }
36127       , externalMemoryProperties{ externalMemoryProperties_ }
36128     {
36129     }
36130 
36131     VULKAN_HPP_CONSTEXPR ExternalBufferProperties( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36132 
ExternalBufferPropertiesVULKAN_HPP_NAMESPACE::ExternalBufferProperties36133     ExternalBufferProperties( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36134       : ExternalBufferProperties( *reinterpret_cast<ExternalBufferProperties const *>( &rhs ) )
36135     {
36136     }
36137 
36138     ExternalBufferProperties & operator=( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36139 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36140 
operator =VULKAN_HPP_NAMESPACE::ExternalBufferProperties36141     ExternalBufferProperties & operator=( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36142     {
36143       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalBufferProperties const *>( &rhs );
36144       return *this;
36145     }
36146 
operator VkExternalBufferProperties const&VULKAN_HPP_NAMESPACE::ExternalBufferProperties36147     operator VkExternalBufferProperties const &() const VULKAN_HPP_NOEXCEPT
36148     {
36149       return *reinterpret_cast<const VkExternalBufferProperties *>( this );
36150     }
36151 
operator VkExternalBufferProperties&VULKAN_HPP_NAMESPACE::ExternalBufferProperties36152     operator VkExternalBufferProperties &() VULKAN_HPP_NOEXCEPT
36153     {
36154       return *reinterpret_cast<VkExternalBufferProperties *>( this );
36155     }
36156 
36157 #if defined( VULKAN_HPP_USE_REFLECT )
36158 #  if 14 <= VULKAN_HPP_CPP_VERSION
36159     auto
36160 #  else
36161     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const &>
36162 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalBufferProperties36163       reflect() const VULKAN_HPP_NOEXCEPT
36164     {
36165       return std::tie( sType, pNext, externalMemoryProperties );
36166     }
36167 #endif
36168 
36169 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36170     auto operator<=>( ExternalBufferProperties const & ) const = default;
36171 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalBufferProperties36172     bool operator==( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36173     {
36174 #  if defined( VULKAN_HPP_USE_REFLECT )
36175       return this->reflect() == rhs.reflect();
36176 #  else
36177       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryProperties == rhs.externalMemoryProperties );
36178 #  endif
36179     }
36180 
operator !=VULKAN_HPP_NAMESPACE::ExternalBufferProperties36181     bool operator!=( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36182     {
36183       return !operator==( rhs );
36184     }
36185 #endif
36186 
36187   public:
36188     VULKAN_HPP_NAMESPACE::StructureType            sType                    = StructureType::eExternalBufferProperties;
36189     void *                                         pNext                    = {};
36190     VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {};
36191   };
36192 
36193   template <>
36194   struct CppType<StructureType, StructureType::eExternalBufferProperties>
36195   {
36196     using Type = ExternalBufferProperties;
36197   };
36198 
36199   using ExternalBufferPropertiesKHR = ExternalBufferProperties;
36200 
36201   struct ExternalFenceProperties
36202   {
36203     using NativeType = VkExternalFenceProperties;
36204 
36205     static const bool                                  allowDuplicate = false;
36206     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalFenceProperties;
36207 
36208 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalFencePropertiesVULKAN_HPP_NAMESPACE::ExternalFenceProperties36209     VULKAN_HPP_CONSTEXPR ExternalFenceProperties( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes_ = {},
36210                                                   VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes_         = {},
36211                                                   VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags    externalFenceFeatures_         = {},
36212                                                   void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
36213       : pNext{ pNext_ }
36214       , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ }
36215       , compatibleHandleTypes{ compatibleHandleTypes_ }
36216       , externalFenceFeatures{ externalFenceFeatures_ }
36217     {
36218     }
36219 
36220     VULKAN_HPP_CONSTEXPR ExternalFenceProperties( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36221 
ExternalFencePropertiesVULKAN_HPP_NAMESPACE::ExternalFenceProperties36222     ExternalFenceProperties( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36223       : ExternalFenceProperties( *reinterpret_cast<ExternalFenceProperties const *>( &rhs ) )
36224     {
36225     }
36226 
36227     ExternalFenceProperties & operator=( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36228 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36229 
operator =VULKAN_HPP_NAMESPACE::ExternalFenceProperties36230     ExternalFenceProperties & operator=( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36231     {
36232       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFenceProperties const *>( &rhs );
36233       return *this;
36234     }
36235 
operator VkExternalFenceProperties const&VULKAN_HPP_NAMESPACE::ExternalFenceProperties36236     operator VkExternalFenceProperties const &() const VULKAN_HPP_NOEXCEPT
36237     {
36238       return *reinterpret_cast<const VkExternalFenceProperties *>( this );
36239     }
36240 
operator VkExternalFenceProperties&VULKAN_HPP_NAMESPACE::ExternalFenceProperties36241     operator VkExternalFenceProperties &() VULKAN_HPP_NOEXCEPT
36242     {
36243       return *reinterpret_cast<VkExternalFenceProperties *>( this );
36244     }
36245 
36246 #if defined( VULKAN_HPP_USE_REFLECT )
36247 #  if 14 <= VULKAN_HPP_CPP_VERSION
36248     auto
36249 #  else
36250     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
36251                void * const &,
36252                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &,
36253                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &,
36254                VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags const &>
36255 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalFenceProperties36256       reflect() const VULKAN_HPP_NOEXCEPT
36257     {
36258       return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalFenceFeatures );
36259     }
36260 #endif
36261 
36262 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36263     auto operator<=>( ExternalFenceProperties const & ) const = default;
36264 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalFenceProperties36265     bool operator==( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36266     {
36267 #  if defined( VULKAN_HPP_USE_REFLECT )
36268       return this->reflect() == rhs.reflect();
36269 #  else
36270       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) &&
36271              ( compatibleHandleTypes == rhs.compatibleHandleTypes ) && ( externalFenceFeatures == rhs.externalFenceFeatures );
36272 #  endif
36273     }
36274 
operator !=VULKAN_HPP_NAMESPACE::ExternalFenceProperties36275     bool operator!=( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36276     {
36277       return !operator==( rhs );
36278     }
36279 #endif
36280 
36281   public:
36282     VULKAN_HPP_NAMESPACE::StructureType                sType                         = StructureType::eExternalFenceProperties;
36283     void *                                             pNext                         = {};
36284     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes = {};
36285     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes         = {};
36286     VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags    externalFenceFeatures         = {};
36287   };
36288 
36289   template <>
36290   struct CppType<StructureType, StructureType::eExternalFenceProperties>
36291   {
36292     using Type = ExternalFenceProperties;
36293   };
36294 
36295   using ExternalFencePropertiesKHR = ExternalFenceProperties;
36296 
36297 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
36298   struct ExternalFormatANDROID
36299   {
36300     using NativeType = VkExternalFormatANDROID;
36301 
36302     static const bool                                  allowDuplicate = false;
36303     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalFormatANDROID;
36304 
36305 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalFormatANDROIDVULKAN_HPP_NAMESPACE::ExternalFormatANDROID36306     VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( uint64_t externalFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
36307       : pNext{ pNext_ }
36308       , externalFormat{ externalFormat_ }
36309     {
36310     }
36311 
36312     VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36313 
ExternalFormatANDROIDVULKAN_HPP_NAMESPACE::ExternalFormatANDROID36314     ExternalFormatANDROID( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
36315       : ExternalFormatANDROID( *reinterpret_cast<ExternalFormatANDROID const *>( &rhs ) )
36316     {
36317     }
36318 
36319     ExternalFormatANDROID & operator=( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36320 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36321 
operator =VULKAN_HPP_NAMESPACE::ExternalFormatANDROID36322     ExternalFormatANDROID & operator=( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
36323     {
36324       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFormatANDROID const *>( &rhs );
36325       return *this;
36326     }
36327 
36328 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalFormatANDROID36329     VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
36330     {
36331       pNext = pNext_;
36332       return *this;
36333     }
36334 
setExternalFormatVULKAN_HPP_NAMESPACE::ExternalFormatANDROID36335     VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & setExternalFormat( uint64_t externalFormat_ ) VULKAN_HPP_NOEXCEPT
36336     {
36337       externalFormat = externalFormat_;
36338       return *this;
36339     }
36340 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36341 
operator VkExternalFormatANDROID const&VULKAN_HPP_NAMESPACE::ExternalFormatANDROID36342     operator VkExternalFormatANDROID const &() const VULKAN_HPP_NOEXCEPT
36343     {
36344       return *reinterpret_cast<const VkExternalFormatANDROID *>( this );
36345     }
36346 
operator VkExternalFormatANDROID&VULKAN_HPP_NAMESPACE::ExternalFormatANDROID36347     operator VkExternalFormatANDROID &() VULKAN_HPP_NOEXCEPT
36348     {
36349       return *reinterpret_cast<VkExternalFormatANDROID *>( this );
36350     }
36351 
36352 #  if defined( VULKAN_HPP_USE_REFLECT )
36353 #    if 14 <= VULKAN_HPP_CPP_VERSION
36354     auto
36355 #    else
36356     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
36357 #    endif
reflectVULKAN_HPP_NAMESPACE::ExternalFormatANDROID36358       reflect() const VULKAN_HPP_NOEXCEPT
36359     {
36360       return std::tie( sType, pNext, externalFormat );
36361     }
36362 #  endif
36363 
36364 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36365     auto operator<=>( ExternalFormatANDROID const & ) const = default;
36366 #  else
operator ==VULKAN_HPP_NAMESPACE::ExternalFormatANDROID36367     bool operator==( ExternalFormatANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
36368     {
36369 #    if defined( VULKAN_HPP_USE_REFLECT )
36370       return this->reflect() == rhs.reflect();
36371 #    else
36372       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormat == rhs.externalFormat );
36373 #    endif
36374     }
36375 
operator !=VULKAN_HPP_NAMESPACE::ExternalFormatANDROID36376     bool operator!=( ExternalFormatANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
36377     {
36378       return !operator==( rhs );
36379     }
36380 #  endif
36381 
36382   public:
36383     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eExternalFormatANDROID;
36384     void *                              pNext          = {};
36385     uint64_t                            externalFormat = {};
36386   };
36387 
36388   template <>
36389   struct CppType<StructureType, StructureType::eExternalFormatANDROID>
36390   {
36391     using Type = ExternalFormatANDROID;
36392   };
36393 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
36394 
36395 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
36396   struct ExternalFormatQNX
36397   {
36398     using NativeType = VkExternalFormatQNX;
36399 
36400     static const bool                                  allowDuplicate = false;
36401     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalFormatQNX;
36402 
36403 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalFormatQNXVULKAN_HPP_NAMESPACE::ExternalFormatQNX36404     VULKAN_HPP_CONSTEXPR ExternalFormatQNX( uint64_t externalFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
36405       : pNext{ pNext_ }
36406       , externalFormat{ externalFormat_ }
36407     {
36408     }
36409 
36410     VULKAN_HPP_CONSTEXPR ExternalFormatQNX( ExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36411 
ExternalFormatQNXVULKAN_HPP_NAMESPACE::ExternalFormatQNX36412     ExternalFormatQNX( VkExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT : ExternalFormatQNX( *reinterpret_cast<ExternalFormatQNX const *>( &rhs ) ) {}
36413 
36414     ExternalFormatQNX & operator=( ExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36415 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36416 
operator =VULKAN_HPP_NAMESPACE::ExternalFormatQNX36417     ExternalFormatQNX & operator=( VkExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT
36418     {
36419       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFormatQNX const *>( &rhs );
36420       return *this;
36421     }
36422 
36423 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalFormatQNX36424     VULKAN_HPP_CONSTEXPR_14 ExternalFormatQNX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
36425     {
36426       pNext = pNext_;
36427       return *this;
36428     }
36429 
setExternalFormatVULKAN_HPP_NAMESPACE::ExternalFormatQNX36430     VULKAN_HPP_CONSTEXPR_14 ExternalFormatQNX & setExternalFormat( uint64_t externalFormat_ ) VULKAN_HPP_NOEXCEPT
36431     {
36432       externalFormat = externalFormat_;
36433       return *this;
36434     }
36435 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36436 
operator VkExternalFormatQNX const&VULKAN_HPP_NAMESPACE::ExternalFormatQNX36437     operator VkExternalFormatQNX const &() const VULKAN_HPP_NOEXCEPT
36438     {
36439       return *reinterpret_cast<const VkExternalFormatQNX *>( this );
36440     }
36441 
operator VkExternalFormatQNX&VULKAN_HPP_NAMESPACE::ExternalFormatQNX36442     operator VkExternalFormatQNX &() VULKAN_HPP_NOEXCEPT
36443     {
36444       return *reinterpret_cast<VkExternalFormatQNX *>( this );
36445     }
36446 
36447 #  if defined( VULKAN_HPP_USE_REFLECT )
36448 #    if 14 <= VULKAN_HPP_CPP_VERSION
36449     auto
36450 #    else
36451     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
36452 #    endif
reflectVULKAN_HPP_NAMESPACE::ExternalFormatQNX36453       reflect() const VULKAN_HPP_NOEXCEPT
36454     {
36455       return std::tie( sType, pNext, externalFormat );
36456     }
36457 #  endif
36458 
36459 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36460     auto operator<=>( ExternalFormatQNX const & ) const = default;
36461 #  else
operator ==VULKAN_HPP_NAMESPACE::ExternalFormatQNX36462     bool operator==( ExternalFormatQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
36463     {
36464 #    if defined( VULKAN_HPP_USE_REFLECT )
36465       return this->reflect() == rhs.reflect();
36466 #    else
36467       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormat == rhs.externalFormat );
36468 #    endif
36469     }
36470 
operator !=VULKAN_HPP_NAMESPACE::ExternalFormatQNX36471     bool operator!=( ExternalFormatQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
36472     {
36473       return !operator==( rhs );
36474     }
36475 #  endif
36476 
36477   public:
36478     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eExternalFormatQNX;
36479     void *                              pNext          = {};
36480     uint64_t                            externalFormat = {};
36481   };
36482 
36483   template <>
36484   struct CppType<StructureType, StructureType::eExternalFormatQNX>
36485   {
36486     using Type = ExternalFormatQNX;
36487   };
36488 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
36489 
36490   struct ExternalImageFormatProperties
36491   {
36492     using NativeType = VkExternalImageFormatProperties;
36493 
36494     static const bool                                  allowDuplicate = false;
36495     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalImageFormatProperties;
36496 
36497 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalImageFormatPropertiesVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36498     VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties( VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {},
36499                                                         void *                                         pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
36500       : pNext{ pNext_ }
36501       , externalMemoryProperties{ externalMemoryProperties_ }
36502     {
36503     }
36504 
36505     VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36506 
ExternalImageFormatPropertiesVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36507     ExternalImageFormatProperties( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36508       : ExternalImageFormatProperties( *reinterpret_cast<ExternalImageFormatProperties const *>( &rhs ) )
36509     {
36510     }
36511 
36512     ExternalImageFormatProperties & operator=( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36513 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36514 
operator =VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36515     ExternalImageFormatProperties & operator=( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36516     {
36517       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties const *>( &rhs );
36518       return *this;
36519     }
36520 
operator VkExternalImageFormatProperties const&VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36521     operator VkExternalImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
36522     {
36523       return *reinterpret_cast<const VkExternalImageFormatProperties *>( this );
36524     }
36525 
operator VkExternalImageFormatProperties&VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36526     operator VkExternalImageFormatProperties &() VULKAN_HPP_NOEXCEPT
36527     {
36528       return *reinterpret_cast<VkExternalImageFormatProperties *>( this );
36529     }
36530 
36531 #if defined( VULKAN_HPP_USE_REFLECT )
36532 #  if 14 <= VULKAN_HPP_CPP_VERSION
36533     auto
36534 #  else
36535     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const &>
36536 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36537       reflect() const VULKAN_HPP_NOEXCEPT
36538     {
36539       return std::tie( sType, pNext, externalMemoryProperties );
36540     }
36541 #endif
36542 
36543 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36544     auto operator<=>( ExternalImageFormatProperties const & ) const = default;
36545 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36546     bool operator==( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36547     {
36548 #  if defined( VULKAN_HPP_USE_REFLECT )
36549       return this->reflect() == rhs.reflect();
36550 #  else
36551       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryProperties == rhs.externalMemoryProperties );
36552 #  endif
36553     }
36554 
operator !=VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36555     bool operator!=( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36556     {
36557       return !operator==( rhs );
36558     }
36559 #endif
36560 
36561   public:
36562     VULKAN_HPP_NAMESPACE::StructureType            sType                    = StructureType::eExternalImageFormatProperties;
36563     void *                                         pNext                    = {};
36564     VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {};
36565   };
36566 
36567   template <>
36568   struct CppType<StructureType, StructureType::eExternalImageFormatProperties>
36569   {
36570     using Type = ExternalImageFormatProperties;
36571   };
36572 
36573   using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
36574 
36575   struct ImageFormatProperties
36576   {
36577     using NativeType = VkImageFormatProperties;
36578 
36579 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatPropertiesVULKAN_HPP_NAMESPACE::ImageFormatProperties36580     VULKAN_HPP_CONSTEXPR ImageFormatProperties( VULKAN_HPP_NAMESPACE::Extent3D         maxExtent_       = {},
36581                                                 uint32_t                               maxMipLevels_    = {},
36582                                                 uint32_t                               maxArrayLayers_  = {},
36583                                                 VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_    = {},
36584                                                 VULKAN_HPP_NAMESPACE::DeviceSize       maxResourceSize_ = {} ) VULKAN_HPP_NOEXCEPT
36585       : maxExtent{ maxExtent_ }
36586       , maxMipLevels{ maxMipLevels_ }
36587       , maxArrayLayers{ maxArrayLayers_ }
36588       , sampleCounts{ sampleCounts_ }
36589       , maxResourceSize{ maxResourceSize_ }
36590     {
36591     }
36592 
36593     VULKAN_HPP_CONSTEXPR ImageFormatProperties( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36594 
ImageFormatPropertiesVULKAN_HPP_NAMESPACE::ImageFormatProperties36595     ImageFormatProperties( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36596       : ImageFormatProperties( *reinterpret_cast<ImageFormatProperties const *>( &rhs ) )
36597     {
36598     }
36599 
36600     ImageFormatProperties & operator=( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36601 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36602 
operator =VULKAN_HPP_NAMESPACE::ImageFormatProperties36603     ImageFormatProperties & operator=( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36604     {
36605       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatProperties const *>( &rhs );
36606       return *this;
36607     }
36608 
operator VkImageFormatProperties const&VULKAN_HPP_NAMESPACE::ImageFormatProperties36609     operator VkImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
36610     {
36611       return *reinterpret_cast<const VkImageFormatProperties *>( this );
36612     }
36613 
operator VkImageFormatProperties&VULKAN_HPP_NAMESPACE::ImageFormatProperties36614     operator VkImageFormatProperties &() VULKAN_HPP_NOEXCEPT
36615     {
36616       return *reinterpret_cast<VkImageFormatProperties *>( this );
36617     }
36618 
36619 #if defined( VULKAN_HPP_USE_REFLECT )
36620 #  if 14 <= VULKAN_HPP_CPP_VERSION
36621     auto
36622 #  else
36623     std::tuple<VULKAN_HPP_NAMESPACE::Extent3D const &,
36624                uint32_t const &,
36625                uint32_t const &,
36626                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
36627                VULKAN_HPP_NAMESPACE::DeviceSize const &>
36628 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatProperties36629       reflect() const VULKAN_HPP_NOEXCEPT
36630     {
36631       return std::tie( maxExtent, maxMipLevels, maxArrayLayers, sampleCounts, maxResourceSize );
36632     }
36633 #endif
36634 
36635 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36636     auto operator<=>( ImageFormatProperties const & ) const = default;
36637 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatProperties36638     bool operator==( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36639     {
36640 #  if defined( VULKAN_HPP_USE_REFLECT )
36641       return this->reflect() == rhs.reflect();
36642 #  else
36643       return ( maxExtent == rhs.maxExtent ) && ( maxMipLevels == rhs.maxMipLevels ) && ( maxArrayLayers == rhs.maxArrayLayers ) &&
36644              ( sampleCounts == rhs.sampleCounts ) && ( maxResourceSize == rhs.maxResourceSize );
36645 #  endif
36646     }
36647 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatProperties36648     bool operator!=( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36649     {
36650       return !operator==( rhs );
36651     }
36652 #endif
36653 
36654   public:
36655     VULKAN_HPP_NAMESPACE::Extent3D         maxExtent       = {};
36656     uint32_t                               maxMipLevels    = {};
36657     uint32_t                               maxArrayLayers  = {};
36658     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts    = {};
36659     VULKAN_HPP_NAMESPACE::DeviceSize       maxResourceSize = {};
36660   };
36661 
36662   struct ExternalImageFormatPropertiesNV
36663   {
36664     using NativeType = VkExternalImageFormatPropertiesNV;
36665 
36666 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
36667     VULKAN_HPP_CONSTEXPR
ExternalImageFormatPropertiesNVVULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36668       ExternalImageFormatPropertiesNV( VULKAN_HPP_NAMESPACE::ImageFormatProperties           imageFormatProperties_         = {},
36669                                        VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV    externalMemoryFeatures_        = {},
36670                                        VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes_ = {},
36671                                        VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes_         = {} ) VULKAN_HPP_NOEXCEPT
36672       : imageFormatProperties{ imageFormatProperties_ }
36673       , externalMemoryFeatures{ externalMemoryFeatures_ }
36674       , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ }
36675       , compatibleHandleTypes{ compatibleHandleTypes_ }
36676     {
36677     }
36678 
36679     VULKAN_HPP_CONSTEXPR ExternalImageFormatPropertiesNV( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36680 
ExternalImageFormatPropertiesNVVULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36681     ExternalImageFormatPropertiesNV( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
36682       : ExternalImageFormatPropertiesNV( *reinterpret_cast<ExternalImageFormatPropertiesNV const *>( &rhs ) )
36683     {
36684     }
36685 
36686     ExternalImageFormatPropertiesNV & operator=( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36687 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36688 
operator =VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36689     ExternalImageFormatPropertiesNV & operator=( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
36690     {
36691       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV const *>( &rhs );
36692       return *this;
36693     }
36694 
operator VkExternalImageFormatPropertiesNV const&VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36695     operator VkExternalImageFormatPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
36696     {
36697       return *reinterpret_cast<const VkExternalImageFormatPropertiesNV *>( this );
36698     }
36699 
operator VkExternalImageFormatPropertiesNV&VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36700     operator VkExternalImageFormatPropertiesNV &() VULKAN_HPP_NOEXCEPT
36701     {
36702       return *reinterpret_cast<VkExternalImageFormatPropertiesNV *>( this );
36703     }
36704 
36705 #if defined( VULKAN_HPP_USE_REFLECT )
36706 #  if 14 <= VULKAN_HPP_CPP_VERSION
36707     auto
36708 #  else
36709     std::tuple<VULKAN_HPP_NAMESPACE::ImageFormatProperties const &,
36710                VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV const &,
36711                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &,
36712                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &>
36713 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36714       reflect() const VULKAN_HPP_NOEXCEPT
36715     {
36716       return std::tie( imageFormatProperties, externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes );
36717     }
36718 #endif
36719 
36720 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36721     auto operator<=>( ExternalImageFormatPropertiesNV const & ) const = default;
36722 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36723     bool operator==( ExternalImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
36724     {
36725 #  if defined( VULKAN_HPP_USE_REFLECT )
36726       return this->reflect() == rhs.reflect();
36727 #  else
36728       return ( imageFormatProperties == rhs.imageFormatProperties ) && ( externalMemoryFeatures == rhs.externalMemoryFeatures ) &&
36729              ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
36730 #  endif
36731     }
36732 
operator !=VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36733     bool operator!=( ExternalImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
36734     {
36735       return !operator==( rhs );
36736     }
36737 #endif
36738 
36739   public:
36740     VULKAN_HPP_NAMESPACE::ImageFormatProperties           imageFormatProperties         = {};
36741     VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV    externalMemoryFeatures        = {};
36742     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes = {};
36743     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes         = {};
36744   };
36745 
36746   struct ExternalMemoryAcquireUnmodifiedEXT
36747   {
36748     using NativeType = VkExternalMemoryAcquireUnmodifiedEXT;
36749 
36750     static const bool                                  allowDuplicate = false;
36751     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryAcquireUnmodifiedEXT;
36752 
36753 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryAcquireUnmodifiedEXTVULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36754     VULKAN_HPP_CONSTEXPR ExternalMemoryAcquireUnmodifiedEXT( VULKAN_HPP_NAMESPACE::Bool32 acquireUnmodifiedMemory_ = {},
36755                                                              const void *                 pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
36756       : pNext{ pNext_ }
36757       , acquireUnmodifiedMemory{ acquireUnmodifiedMemory_ }
36758     {
36759     }
36760 
36761     VULKAN_HPP_CONSTEXPR ExternalMemoryAcquireUnmodifiedEXT( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36762 
ExternalMemoryAcquireUnmodifiedEXTVULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36763     ExternalMemoryAcquireUnmodifiedEXT( VkExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT
36764       : ExternalMemoryAcquireUnmodifiedEXT( *reinterpret_cast<ExternalMemoryAcquireUnmodifiedEXT const *>( &rhs ) )
36765     {
36766     }
36767 
36768     ExternalMemoryAcquireUnmodifiedEXT & operator=( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36769 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36770 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36771     ExternalMemoryAcquireUnmodifiedEXT & operator=( VkExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT
36772     {
36773       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT const *>( &rhs );
36774       return *this;
36775     }
36776 
36777 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36778     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryAcquireUnmodifiedEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36779     {
36780       pNext = pNext_;
36781       return *this;
36782     }
36783 
36784     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryAcquireUnmodifiedEXT &
setAcquireUnmodifiedMemoryVULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36785       setAcquireUnmodifiedMemory( VULKAN_HPP_NAMESPACE::Bool32 acquireUnmodifiedMemory_ ) VULKAN_HPP_NOEXCEPT
36786     {
36787       acquireUnmodifiedMemory = acquireUnmodifiedMemory_;
36788       return *this;
36789     }
36790 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36791 
operator VkExternalMemoryAcquireUnmodifiedEXT const&VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36792     operator VkExternalMemoryAcquireUnmodifiedEXT const &() const VULKAN_HPP_NOEXCEPT
36793     {
36794       return *reinterpret_cast<const VkExternalMemoryAcquireUnmodifiedEXT *>( this );
36795     }
36796 
operator VkExternalMemoryAcquireUnmodifiedEXT&VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36797     operator VkExternalMemoryAcquireUnmodifiedEXT &() VULKAN_HPP_NOEXCEPT
36798     {
36799       return *reinterpret_cast<VkExternalMemoryAcquireUnmodifiedEXT *>( this );
36800     }
36801 
36802 #if defined( VULKAN_HPP_USE_REFLECT )
36803 #  if 14 <= VULKAN_HPP_CPP_VERSION
36804     auto
36805 #  else
36806     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
36807 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36808       reflect() const VULKAN_HPP_NOEXCEPT
36809     {
36810       return std::tie( sType, pNext, acquireUnmodifiedMemory );
36811     }
36812 #endif
36813 
36814 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36815     auto operator<=>( ExternalMemoryAcquireUnmodifiedEXT const & ) const = default;
36816 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36817     bool operator==( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
36818     {
36819 #  if defined( VULKAN_HPP_USE_REFLECT )
36820       return this->reflect() == rhs.reflect();
36821 #  else
36822       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireUnmodifiedMemory == rhs.acquireUnmodifiedMemory );
36823 #  endif
36824     }
36825 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36826     bool operator!=( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
36827     {
36828       return !operator==( rhs );
36829     }
36830 #endif
36831 
36832   public:
36833     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::eExternalMemoryAcquireUnmodifiedEXT;
36834     const void *                        pNext                   = {};
36835     VULKAN_HPP_NAMESPACE::Bool32        acquireUnmodifiedMemory = {};
36836   };
36837 
36838   template <>
36839   struct CppType<StructureType, StructureType::eExternalMemoryAcquireUnmodifiedEXT>
36840   {
36841     using Type = ExternalMemoryAcquireUnmodifiedEXT;
36842   };
36843 
36844   struct ExternalMemoryBufferCreateInfo
36845   {
36846     using NativeType = VkExternalMemoryBufferCreateInfo;
36847 
36848     static const bool                                  allowDuplicate = false;
36849     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryBufferCreateInfo;
36850 
36851 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryBufferCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36852     VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {},
36853                                                          const void *                                        pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
36854       : pNext{ pNext_ }
36855       , handleTypes{ handleTypes_ }
36856     {
36857     }
36858 
36859     VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36860 
ExternalMemoryBufferCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36861     ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36862       : ExternalMemoryBufferCreateInfo( *reinterpret_cast<ExternalMemoryBufferCreateInfo const *>( &rhs ) )
36863     {
36864     }
36865 
36866     ExternalMemoryBufferCreateInfo & operator=( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36867 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36868 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36869     ExternalMemoryBufferCreateInfo & operator=( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36870     {
36871       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo const *>( &rhs );
36872       return *this;
36873     }
36874 
36875 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36876     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36877     {
36878       pNext = pNext_;
36879       return *this;
36880     }
36881 
36882     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36883       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
36884     {
36885       handleTypes = handleTypes_;
36886       return *this;
36887     }
36888 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36889 
operator VkExternalMemoryBufferCreateInfo const&VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36890     operator VkExternalMemoryBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
36891     {
36892       return *reinterpret_cast<const VkExternalMemoryBufferCreateInfo *>( this );
36893     }
36894 
operator VkExternalMemoryBufferCreateInfo&VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36895     operator VkExternalMemoryBufferCreateInfo &() VULKAN_HPP_NOEXCEPT
36896     {
36897       return *reinterpret_cast<VkExternalMemoryBufferCreateInfo *>( this );
36898     }
36899 
36900 #if defined( VULKAN_HPP_USE_REFLECT )
36901 #  if 14 <= VULKAN_HPP_CPP_VERSION
36902     auto
36903 #  else
36904     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
36905 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36906       reflect() const VULKAN_HPP_NOEXCEPT
36907     {
36908       return std::tie( sType, pNext, handleTypes );
36909     }
36910 #endif
36911 
36912 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36913     auto operator<=>( ExternalMemoryBufferCreateInfo const & ) const = default;
36914 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36915     bool operator==( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36916     {
36917 #  if defined( VULKAN_HPP_USE_REFLECT )
36918       return this->reflect() == rhs.reflect();
36919 #  else
36920       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
36921 #  endif
36922     }
36923 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36924     bool operator!=( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36925     {
36926       return !operator==( rhs );
36927     }
36928 #endif
36929 
36930   public:
36931     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eExternalMemoryBufferCreateInfo;
36932     const void *                                        pNext       = {};
36933     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
36934   };
36935 
36936   template <>
36937   struct CppType<StructureType, StructureType::eExternalMemoryBufferCreateInfo>
36938   {
36939     using Type = ExternalMemoryBufferCreateInfo;
36940   };
36941 
36942   using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
36943 
36944   struct ExternalMemoryImageCreateInfo
36945   {
36946     using NativeType = VkExternalMemoryImageCreateInfo;
36947 
36948     static const bool                                  allowDuplicate = false;
36949     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryImageCreateInfo;
36950 
36951 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryImageCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36952     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {},
36953                                                         const void *                                        pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
36954       : pNext{ pNext_ }
36955       , handleTypes{ handleTypes_ }
36956     {
36957     }
36958 
36959     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36960 
ExternalMemoryImageCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36961     ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36962       : ExternalMemoryImageCreateInfo( *reinterpret_cast<ExternalMemoryImageCreateInfo const *>( &rhs ) )
36963     {
36964     }
36965 
36966     ExternalMemoryImageCreateInfo & operator=( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36967 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36968 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36969     ExternalMemoryImageCreateInfo & operator=( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36970     {
36971       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo const *>( &rhs );
36972       return *this;
36973     }
36974 
36975 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36976     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36977     {
36978       pNext = pNext_;
36979       return *this;
36980     }
36981 
36982     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36983       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
36984     {
36985       handleTypes = handleTypes_;
36986       return *this;
36987     }
36988 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36989 
operator VkExternalMemoryImageCreateInfo const&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36990     operator VkExternalMemoryImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
36991     {
36992       return *reinterpret_cast<const VkExternalMemoryImageCreateInfo *>( this );
36993     }
36994 
operator VkExternalMemoryImageCreateInfo&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36995     operator VkExternalMemoryImageCreateInfo &() VULKAN_HPP_NOEXCEPT
36996     {
36997       return *reinterpret_cast<VkExternalMemoryImageCreateInfo *>( this );
36998     }
36999 
37000 #if defined( VULKAN_HPP_USE_REFLECT )
37001 #  if 14 <= VULKAN_HPP_CPP_VERSION
37002     auto
37003 #  else
37004     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
37005 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo37006       reflect() const VULKAN_HPP_NOEXCEPT
37007     {
37008       return std::tie( sType, pNext, handleTypes );
37009     }
37010 #endif
37011 
37012 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37013     auto operator<=>( ExternalMemoryImageCreateInfo const & ) const = default;
37014 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo37015     bool operator==( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
37016     {
37017 #  if defined( VULKAN_HPP_USE_REFLECT )
37018       return this->reflect() == rhs.reflect();
37019 #  else
37020       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
37021 #  endif
37022     }
37023 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo37024     bool operator!=( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
37025     {
37026       return !operator==( rhs );
37027     }
37028 #endif
37029 
37030   public:
37031     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eExternalMemoryImageCreateInfo;
37032     const void *                                        pNext       = {};
37033     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
37034   };
37035 
37036   template <>
37037   struct CppType<StructureType, StructureType::eExternalMemoryImageCreateInfo>
37038   {
37039     using Type = ExternalMemoryImageCreateInfo;
37040   };
37041 
37042   using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
37043 
37044   struct ExternalMemoryImageCreateInfoNV
37045   {
37046     using NativeType = VkExternalMemoryImageCreateInfoNV;
37047 
37048     static const bool                                  allowDuplicate = false;
37049     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryImageCreateInfoNV;
37050 
37051 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryImageCreateInfoNVVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV37052     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ = {},
37053                                                           const void *                                          pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
37054       : pNext{ pNext_ }
37055       , handleTypes{ handleTypes_ }
37056     {
37057     }
37058 
37059     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37060 
ExternalMemoryImageCreateInfoNVVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV37061     ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
37062       : ExternalMemoryImageCreateInfoNV( *reinterpret_cast<ExternalMemoryImageCreateInfoNV const *>( &rhs ) )
37063     {
37064     }
37065 
37066     ExternalMemoryImageCreateInfoNV & operator=( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37067 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37068 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV37069     ExternalMemoryImageCreateInfoNV & operator=( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
37070     {
37071       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV const *>( &rhs );
37072       return *this;
37073     }
37074 
37075 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV37076     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37077     {
37078       pNext = pNext_;
37079       return *this;
37080     }
37081 
37082     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV &
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV37083       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) VULKAN_HPP_NOEXCEPT
37084     {
37085       handleTypes = handleTypes_;
37086       return *this;
37087     }
37088 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37089 
operator VkExternalMemoryImageCreateInfoNV const&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV37090     operator VkExternalMemoryImageCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
37091     {
37092       return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV *>( this );
37093     }
37094 
operator VkExternalMemoryImageCreateInfoNV&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV37095     operator VkExternalMemoryImageCreateInfoNV &() VULKAN_HPP_NOEXCEPT
37096     {
37097       return *reinterpret_cast<VkExternalMemoryImageCreateInfoNV *>( this );
37098     }
37099 
37100 #if defined( VULKAN_HPP_USE_REFLECT )
37101 #  if 14 <= VULKAN_HPP_CPP_VERSION
37102     auto
37103 #  else
37104     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &>
37105 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV37106       reflect() const VULKAN_HPP_NOEXCEPT
37107     {
37108       return std::tie( sType, pNext, handleTypes );
37109     }
37110 #endif
37111 
37112 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37113     auto operator<=>( ExternalMemoryImageCreateInfoNV const & ) const = default;
37114 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV37115     bool operator==( ExternalMemoryImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
37116     {
37117 #  if defined( VULKAN_HPP_USE_REFLECT )
37118       return this->reflect() == rhs.reflect();
37119 #  else
37120       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
37121 #  endif
37122     }
37123 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV37124     bool operator!=( ExternalMemoryImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
37125     {
37126       return !operator==( rhs );
37127     }
37128 #endif
37129 
37130   public:
37131     VULKAN_HPP_NAMESPACE::StructureType                   sType       = StructureType::eExternalMemoryImageCreateInfoNV;
37132     const void *                                          pNext       = {};
37133     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {};
37134   };
37135 
37136   template <>
37137   struct CppType<StructureType, StructureType::eExternalMemoryImageCreateInfoNV>
37138   {
37139     using Type = ExternalMemoryImageCreateInfoNV;
37140   };
37141 
37142   struct ExternalSemaphoreProperties
37143   {
37144     using NativeType = VkExternalSemaphoreProperties;
37145 
37146     static const bool                                  allowDuplicate = false;
37147     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalSemaphoreProperties;
37148 
37149 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalSemaphorePropertiesVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties37150     VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes_ = {},
37151                                                       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes_         = {},
37152                                                       VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags    externalSemaphoreFeatures_     = {},
37153                                                       void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
37154       : pNext{ pNext_ }
37155       , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ }
37156       , compatibleHandleTypes{ compatibleHandleTypes_ }
37157       , externalSemaphoreFeatures{ externalSemaphoreFeatures_ }
37158     {
37159     }
37160 
37161     VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37162 
ExternalSemaphorePropertiesVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties37163     ExternalSemaphoreProperties( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
37164       : ExternalSemaphoreProperties( *reinterpret_cast<ExternalSemaphoreProperties const *>( &rhs ) )
37165     {
37166     }
37167 
37168     ExternalSemaphoreProperties & operator=( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37169 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37170 
operator =VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties37171     ExternalSemaphoreProperties & operator=( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
37172     {
37173       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties const *>( &rhs );
37174       return *this;
37175     }
37176 
operator VkExternalSemaphoreProperties const&VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties37177     operator VkExternalSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT
37178     {
37179       return *reinterpret_cast<const VkExternalSemaphoreProperties *>( this );
37180     }
37181 
operator VkExternalSemaphoreProperties&VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties37182     operator VkExternalSemaphoreProperties &() VULKAN_HPP_NOEXCEPT
37183     {
37184       return *reinterpret_cast<VkExternalSemaphoreProperties *>( this );
37185     }
37186 
37187 #if defined( VULKAN_HPP_USE_REFLECT )
37188 #  if 14 <= VULKAN_HPP_CPP_VERSION
37189     auto
37190 #  else
37191     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37192                void * const &,
37193                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &,
37194                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &,
37195                VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags const &>
37196 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties37197       reflect() const VULKAN_HPP_NOEXCEPT
37198     {
37199       return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalSemaphoreFeatures );
37200     }
37201 #endif
37202 
37203 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37204     auto operator<=>( ExternalSemaphoreProperties const & ) const = default;
37205 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties37206     bool operator==( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37207     {
37208 #  if defined( VULKAN_HPP_USE_REFLECT )
37209       return this->reflect() == rhs.reflect();
37210 #  else
37211       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) &&
37212              ( compatibleHandleTypes == rhs.compatibleHandleTypes ) && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
37213 #  endif
37214     }
37215 
operator !=VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties37216     bool operator!=( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37217     {
37218       return !operator==( rhs );
37219     }
37220 #endif
37221 
37222   public:
37223     VULKAN_HPP_NAMESPACE::StructureType                    sType                         = StructureType::eExternalSemaphoreProperties;
37224     void *                                                 pNext                         = {};
37225     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes = {};
37226     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes         = {};
37227     VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags    externalSemaphoreFeatures     = {};
37228   };
37229 
37230   template <>
37231   struct CppType<StructureType, StructureType::eExternalSemaphoreProperties>
37232   {
37233     using Type = ExternalSemaphoreProperties;
37234   };
37235 
37236   using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
37237 
37238   struct FenceCreateInfo
37239   {
37240     using NativeType = VkFenceCreateInfo;
37241 
37242     static const bool                                  allowDuplicate = false;
37243     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFenceCreateInfo;
37244 
37245 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FenceCreateInfoVULKAN_HPP_NAMESPACE::FenceCreateInfo37246     VULKAN_HPP_CONSTEXPR FenceCreateInfo( VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
37247       : pNext{ pNext_ }
37248       , flags{ flags_ }
37249     {
37250     }
37251 
37252     VULKAN_HPP_CONSTEXPR FenceCreateInfo( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37253 
FenceCreateInfoVULKAN_HPP_NAMESPACE::FenceCreateInfo37254     FenceCreateInfo( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : FenceCreateInfo( *reinterpret_cast<FenceCreateInfo const *>( &rhs ) ) {}
37255 
37256     FenceCreateInfo & operator=( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37257 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37258 
operator =VULKAN_HPP_NAMESPACE::FenceCreateInfo37259     FenceCreateInfo & operator=( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
37260     {
37261       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceCreateInfo const *>( &rhs );
37262       return *this;
37263     }
37264 
37265 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceCreateInfo37266     VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37267     {
37268       pNext = pNext_;
37269       return *this;
37270     }
37271 
setFlagsVULKAN_HPP_NAMESPACE::FenceCreateInfo37272     VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
37273     {
37274       flags = flags_;
37275       return *this;
37276     }
37277 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37278 
operator VkFenceCreateInfo const&VULKAN_HPP_NAMESPACE::FenceCreateInfo37279     operator VkFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
37280     {
37281       return *reinterpret_cast<const VkFenceCreateInfo *>( this );
37282     }
37283 
operator VkFenceCreateInfo&VULKAN_HPP_NAMESPACE::FenceCreateInfo37284     operator VkFenceCreateInfo &() VULKAN_HPP_NOEXCEPT
37285     {
37286       return *reinterpret_cast<VkFenceCreateInfo *>( this );
37287     }
37288 
37289 #if defined( VULKAN_HPP_USE_REFLECT )
37290 #  if 14 <= VULKAN_HPP_CPP_VERSION
37291     auto
37292 #  else
37293     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::FenceCreateFlags const &>
37294 #  endif
reflectVULKAN_HPP_NAMESPACE::FenceCreateInfo37295       reflect() const VULKAN_HPP_NOEXCEPT
37296     {
37297       return std::tie( sType, pNext, flags );
37298     }
37299 #endif
37300 
37301 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37302     auto operator<=>( FenceCreateInfo const & ) const = default;
37303 #else
operator ==VULKAN_HPP_NAMESPACE::FenceCreateInfo37304     bool operator==( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
37305     {
37306 #  if defined( VULKAN_HPP_USE_REFLECT )
37307       return this->reflect() == rhs.reflect();
37308 #  else
37309       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
37310 #  endif
37311     }
37312 
operator !=VULKAN_HPP_NAMESPACE::FenceCreateInfo37313     bool operator!=( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
37314     {
37315       return !operator==( rhs );
37316     }
37317 #endif
37318 
37319   public:
37320     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::eFenceCreateInfo;
37321     const void *                           pNext = {};
37322     VULKAN_HPP_NAMESPACE::FenceCreateFlags flags = {};
37323   };
37324 
37325   template <>
37326   struct CppType<StructureType, StructureType::eFenceCreateInfo>
37327   {
37328     using Type = FenceCreateInfo;
37329   };
37330 
37331   struct FenceGetFdInfoKHR
37332   {
37333     using NativeType = VkFenceGetFdInfoKHR;
37334 
37335     static const bool                                  allowDuplicate = false;
37336     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFenceGetFdInfoKHR;
37337 
37338 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
37339     VULKAN_HPP_CONSTEXPR
FenceGetFdInfoKHRVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37340       FenceGetFdInfoKHR( VULKAN_HPP_NAMESPACE::Fence                           fence_      = {},
37341                          VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
37342                          const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
37343       : pNext{ pNext_ }
37344       , fence{ fence_ }
37345       , handleType{ handleType_ }
37346     {
37347     }
37348 
37349     VULKAN_HPP_CONSTEXPR FenceGetFdInfoKHR( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37350 
FenceGetFdInfoKHRVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37351     FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : FenceGetFdInfoKHR( *reinterpret_cast<FenceGetFdInfoKHR const *>( &rhs ) ) {}
37352 
37353     FenceGetFdInfoKHR & operator=( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37354 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37355 
operator =VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37356     FenceGetFdInfoKHR & operator=( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37357     {
37358       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR const *>( &rhs );
37359       return *this;
37360     }
37361 
37362 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37363     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37364     {
37365       pNext = pNext_;
37366       return *this;
37367     }
37368 
setFenceVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37369     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
37370     {
37371       fence = fence_;
37372       return *this;
37373     }
37374 
setHandleTypeVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37375     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
37376     {
37377       handleType = handleType_;
37378       return *this;
37379     }
37380 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37381 
operator VkFenceGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37382     operator VkFenceGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
37383     {
37384       return *reinterpret_cast<const VkFenceGetFdInfoKHR *>( this );
37385     }
37386 
operator VkFenceGetFdInfoKHR&VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37387     operator VkFenceGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
37388     {
37389       return *reinterpret_cast<VkFenceGetFdInfoKHR *>( this );
37390     }
37391 
37392 #if defined( VULKAN_HPP_USE_REFLECT )
37393 #  if 14 <= VULKAN_HPP_CPP_VERSION
37394     auto
37395 #  else
37396     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37397                const void * const &,
37398                VULKAN_HPP_NAMESPACE::Fence const &,
37399                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
37400 #  endif
reflectVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37401       reflect() const VULKAN_HPP_NOEXCEPT
37402     {
37403       return std::tie( sType, pNext, fence, handleType );
37404     }
37405 #endif
37406 
37407 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37408     auto operator<=>( FenceGetFdInfoKHR const & ) const = default;
37409 #else
operator ==VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37410     bool operator==( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37411     {
37412 #  if defined( VULKAN_HPP_USE_REFLECT )
37413       return this->reflect() == rhs.reflect();
37414 #  else
37415       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( handleType == rhs.handleType );
37416 #  endif
37417     }
37418 
operator !=VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37419     bool operator!=( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37420     {
37421       return !operator==( rhs );
37422     }
37423 #endif
37424 
37425   public:
37426     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eFenceGetFdInfoKHR;
37427     const void *                                          pNext      = {};
37428     VULKAN_HPP_NAMESPACE::Fence                           fence      = {};
37429     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
37430   };
37431 
37432   template <>
37433   struct CppType<StructureType, StructureType::eFenceGetFdInfoKHR>
37434   {
37435     using Type = FenceGetFdInfoKHR;
37436   };
37437 
37438 #if defined( VK_USE_PLATFORM_WIN32_KHR )
37439   struct FenceGetWin32HandleInfoKHR
37440   {
37441     using NativeType = VkFenceGetWin32HandleInfoKHR;
37442 
37443     static const bool                                  allowDuplicate = false;
37444     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFenceGetWin32HandleInfoKHR;
37445 
37446 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FenceGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37447     VULKAN_HPP_CONSTEXPR FenceGetWin32HandleInfoKHR(
37448       VULKAN_HPP_NAMESPACE::Fence                           fence_      = {},
37449       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
37450       const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
37451       : pNext{ pNext_ }
37452       , fence{ fence_ }
37453       , handleType{ handleType_ }
37454     {
37455     }
37456 
37457     VULKAN_HPP_CONSTEXPR FenceGetWin32HandleInfoKHR( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37458 
FenceGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37459     FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37460       : FenceGetWin32HandleInfoKHR( *reinterpret_cast<FenceGetWin32HandleInfoKHR const *>( &rhs ) )
37461     {
37462     }
37463 
37464     FenceGetWin32HandleInfoKHR & operator=( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37465 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37466 
operator =VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37467     FenceGetWin32HandleInfoKHR & operator=( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37468     {
37469       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR const *>( &rhs );
37470       return *this;
37471     }
37472 
37473 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37474     VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37475     {
37476       pNext = pNext_;
37477       return *this;
37478     }
37479 
setFenceVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37480     VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
37481     {
37482       fence = fence_;
37483       return *this;
37484     }
37485 
setHandleTypeVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37486     VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
37487     {
37488       handleType = handleType_;
37489       return *this;
37490     }
37491 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37492 
operator VkFenceGetWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37493     operator VkFenceGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
37494     {
37495       return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR *>( this );
37496     }
37497 
operator VkFenceGetWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37498     operator VkFenceGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
37499     {
37500       return *reinterpret_cast<VkFenceGetWin32HandleInfoKHR *>( this );
37501     }
37502 
37503 #  if defined( VULKAN_HPP_USE_REFLECT )
37504 #    if 14 <= VULKAN_HPP_CPP_VERSION
37505     auto
37506 #    else
37507     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37508                const void * const &,
37509                VULKAN_HPP_NAMESPACE::Fence const &,
37510                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
37511 #    endif
reflectVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37512       reflect() const VULKAN_HPP_NOEXCEPT
37513     {
37514       return std::tie( sType, pNext, fence, handleType );
37515     }
37516 #  endif
37517 
37518 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37519     auto operator<=>( FenceGetWin32HandleInfoKHR const & ) const = default;
37520 #  else
operator ==VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37521     bool operator==( FenceGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37522     {
37523 #    if defined( VULKAN_HPP_USE_REFLECT )
37524       return this->reflect() == rhs.reflect();
37525 #    else
37526       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( handleType == rhs.handleType );
37527 #    endif
37528     }
37529 
operator !=VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37530     bool operator!=( FenceGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37531     {
37532       return !operator==( rhs );
37533     }
37534 #  endif
37535 
37536   public:
37537     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eFenceGetWin32HandleInfoKHR;
37538     const void *                                          pNext      = {};
37539     VULKAN_HPP_NAMESPACE::Fence                           fence      = {};
37540     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
37541   };
37542 
37543   template <>
37544   struct CppType<StructureType, StructureType::eFenceGetWin32HandleInfoKHR>
37545   {
37546     using Type = FenceGetWin32HandleInfoKHR;
37547   };
37548 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
37549 
37550   struct FilterCubicImageViewImageFormatPropertiesEXT
37551   {
37552     using NativeType = VkFilterCubicImageViewImageFormatPropertiesEXT;
37553 
37554     static const bool                                  allowDuplicate = false;
37555     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT;
37556 
37557 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FilterCubicImageViewImageFormatPropertiesEXTVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37558     VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 filterCubic_       = {},
37559                                                                        VULKAN_HPP_NAMESPACE::Bool32 filterCubicMinmax_ = {},
37560                                                                        void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
37561       : pNext{ pNext_ }
37562       , filterCubic{ filterCubic_ }
37563       , filterCubicMinmax{ filterCubicMinmax_ }
37564     {
37565     }
37566 
37567     VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37568 
FilterCubicImageViewImageFormatPropertiesEXTVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37569     FilterCubicImageViewImageFormatPropertiesEXT( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37570       : FilterCubicImageViewImageFormatPropertiesEXT( *reinterpret_cast<FilterCubicImageViewImageFormatPropertiesEXT const *>( &rhs ) )
37571     {
37572     }
37573 
37574     FilterCubicImageViewImageFormatPropertiesEXT & operator=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37575 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37576 
operator =VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37577     FilterCubicImageViewImageFormatPropertiesEXT & operator=( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37578     {
37579       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT const *>( &rhs );
37580       return *this;
37581     }
37582 
operator VkFilterCubicImageViewImageFormatPropertiesEXT const&VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37583     operator VkFilterCubicImageViewImageFormatPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
37584     {
37585       return *reinterpret_cast<const VkFilterCubicImageViewImageFormatPropertiesEXT *>( this );
37586     }
37587 
operator VkFilterCubicImageViewImageFormatPropertiesEXT&VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37588     operator VkFilterCubicImageViewImageFormatPropertiesEXT &() VULKAN_HPP_NOEXCEPT
37589     {
37590       return *reinterpret_cast<VkFilterCubicImageViewImageFormatPropertiesEXT *>( this );
37591     }
37592 
37593 #if defined( VULKAN_HPP_USE_REFLECT )
37594 #  if 14 <= VULKAN_HPP_CPP_VERSION
37595     auto
37596 #  else
37597     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
37598 #  endif
reflectVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37599       reflect() const VULKAN_HPP_NOEXCEPT
37600     {
37601       return std::tie( sType, pNext, filterCubic, filterCubicMinmax );
37602     }
37603 #endif
37604 
37605 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37606     auto operator<=>( FilterCubicImageViewImageFormatPropertiesEXT const & ) const = default;
37607 #else
operator ==VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37608     bool operator==( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37609     {
37610 #  if defined( VULKAN_HPP_USE_REFLECT )
37611       return this->reflect() == rhs.reflect();
37612 #  else
37613       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( filterCubic == rhs.filterCubic ) && ( filterCubicMinmax == rhs.filterCubicMinmax );
37614 #  endif
37615     }
37616 
operator !=VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37617     bool operator!=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37618     {
37619       return !operator==( rhs );
37620     }
37621 #endif
37622 
37623   public:
37624     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT;
37625     void *                              pNext             = {};
37626     VULKAN_HPP_NAMESPACE::Bool32        filterCubic       = {};
37627     VULKAN_HPP_NAMESPACE::Bool32        filterCubicMinmax = {};
37628   };
37629 
37630   template <>
37631   struct CppType<StructureType, StructureType::eFilterCubicImageViewImageFormatPropertiesEXT>
37632   {
37633     using Type = FilterCubicImageViewImageFormatPropertiesEXT;
37634   };
37635 
37636   struct FormatProperties
37637   {
37638     using NativeType = VkFormatProperties;
37639 
37640 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FormatPropertiesVULKAN_HPP_NAMESPACE::FormatProperties37641     VULKAN_HPP_CONSTEXPR FormatProperties( VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures_  = {},
37642                                            VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures_ = {},
37643                                            VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures_        = {} ) VULKAN_HPP_NOEXCEPT
37644       : linearTilingFeatures{ linearTilingFeatures_ }
37645       , optimalTilingFeatures{ optimalTilingFeatures_ }
37646       , bufferFeatures{ bufferFeatures_ }
37647     {
37648     }
37649 
37650     VULKAN_HPP_CONSTEXPR FormatProperties( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37651 
FormatPropertiesVULKAN_HPP_NAMESPACE::FormatProperties37652     FormatProperties( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT : FormatProperties( *reinterpret_cast<FormatProperties const *>( &rhs ) ) {}
37653 
37654     FormatProperties & operator=( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37655 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37656 
operator =VULKAN_HPP_NAMESPACE::FormatProperties37657     FormatProperties & operator=( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
37658     {
37659       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties const *>( &rhs );
37660       return *this;
37661     }
37662 
operator VkFormatProperties const&VULKAN_HPP_NAMESPACE::FormatProperties37663     operator VkFormatProperties const &() const VULKAN_HPP_NOEXCEPT
37664     {
37665       return *reinterpret_cast<const VkFormatProperties *>( this );
37666     }
37667 
operator VkFormatProperties&VULKAN_HPP_NAMESPACE::FormatProperties37668     operator VkFormatProperties &() VULKAN_HPP_NOEXCEPT
37669     {
37670       return *reinterpret_cast<VkFormatProperties *>( this );
37671     }
37672 
37673 #if defined( VULKAN_HPP_USE_REFLECT )
37674 #  if 14 <= VULKAN_HPP_CPP_VERSION
37675     auto
37676 #  else
37677     std::tuple<VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
37678                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
37679                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &>
37680 #  endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties37681       reflect() const VULKAN_HPP_NOEXCEPT
37682     {
37683       return std::tie( linearTilingFeatures, optimalTilingFeatures, bufferFeatures );
37684     }
37685 #endif
37686 
37687 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37688     auto operator<=>( FormatProperties const & ) const = default;
37689 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties37690     bool operator==( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37691     {
37692 #  if defined( VULKAN_HPP_USE_REFLECT )
37693       return this->reflect() == rhs.reflect();
37694 #  else
37695       return ( linearTilingFeatures == rhs.linearTilingFeatures ) && ( optimalTilingFeatures == rhs.optimalTilingFeatures ) &&
37696              ( bufferFeatures == rhs.bufferFeatures );
37697 #  endif
37698     }
37699 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties37700     bool operator!=( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37701     {
37702       return !operator==( rhs );
37703     }
37704 #endif
37705 
37706   public:
37707     VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures  = {};
37708     VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures = {};
37709     VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures        = {};
37710   };
37711 
37712   struct FormatProperties2
37713   {
37714     using NativeType = VkFormatProperties2;
37715 
37716     static const bool                                  allowDuplicate = false;
37717     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFormatProperties2;
37718 
37719 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FormatProperties2VULKAN_HPP_NAMESPACE::FormatProperties237720     VULKAN_HPP_CONSTEXPR FormatProperties2( VULKAN_HPP_NAMESPACE::FormatProperties formatProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
37721       : pNext{ pNext_ }
37722       , formatProperties{ formatProperties_ }
37723     {
37724     }
37725 
37726     VULKAN_HPP_CONSTEXPR FormatProperties2( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37727 
FormatProperties2VULKAN_HPP_NAMESPACE::FormatProperties237728     FormatProperties2( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT : FormatProperties2( *reinterpret_cast<FormatProperties2 const *>( &rhs ) ) {}
37729 
37730     FormatProperties2 & operator=( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37731 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37732 
operator =VULKAN_HPP_NAMESPACE::FormatProperties237733     FormatProperties2 & operator=( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
37734     {
37735       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties2 const *>( &rhs );
37736       return *this;
37737     }
37738 
operator VkFormatProperties2 const&VULKAN_HPP_NAMESPACE::FormatProperties237739     operator VkFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
37740     {
37741       return *reinterpret_cast<const VkFormatProperties2 *>( this );
37742     }
37743 
operator VkFormatProperties2&VULKAN_HPP_NAMESPACE::FormatProperties237744     operator VkFormatProperties2 &() VULKAN_HPP_NOEXCEPT
37745     {
37746       return *reinterpret_cast<VkFormatProperties2 *>( this );
37747     }
37748 
37749 #if defined( VULKAN_HPP_USE_REFLECT )
37750 #  if 14 <= VULKAN_HPP_CPP_VERSION
37751     auto
37752 #  else
37753     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::FormatProperties const &>
37754 #  endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties237755       reflect() const VULKAN_HPP_NOEXCEPT
37756     {
37757       return std::tie( sType, pNext, formatProperties );
37758     }
37759 #endif
37760 
37761 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37762     auto operator<=>( FormatProperties2 const & ) const = default;
37763 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties237764     bool operator==( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
37765     {
37766 #  if defined( VULKAN_HPP_USE_REFLECT )
37767       return this->reflect() == rhs.reflect();
37768 #  else
37769       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatProperties == rhs.formatProperties );
37770 #  endif
37771     }
37772 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties237773     bool operator!=( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
37774     {
37775       return !operator==( rhs );
37776     }
37777 #endif
37778 
37779   public:
37780     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eFormatProperties2;
37781     void *                                 pNext            = {};
37782     VULKAN_HPP_NAMESPACE::FormatProperties formatProperties = {};
37783   };
37784 
37785   template <>
37786   struct CppType<StructureType, StructureType::eFormatProperties2>
37787   {
37788     using Type = FormatProperties2;
37789   };
37790 
37791   using FormatProperties2KHR = FormatProperties2;
37792 
37793   struct FormatProperties3
37794   {
37795     using NativeType = VkFormatProperties3;
37796 
37797     static const bool                                  allowDuplicate = false;
37798     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFormatProperties3;
37799 
37800 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FormatProperties3VULKAN_HPP_NAMESPACE::FormatProperties337801     VULKAN_HPP_CONSTEXPR FormatProperties3( VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 linearTilingFeatures_  = {},
37802                                             VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 optimalTilingFeatures_ = {},
37803                                             VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 bufferFeatures_        = {},
37804                                             void *                                    pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
37805       : pNext{ pNext_ }
37806       , linearTilingFeatures{ linearTilingFeatures_ }
37807       , optimalTilingFeatures{ optimalTilingFeatures_ }
37808       , bufferFeatures{ bufferFeatures_ }
37809     {
37810     }
37811 
37812     VULKAN_HPP_CONSTEXPR FormatProperties3( FormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37813 
FormatProperties3VULKAN_HPP_NAMESPACE::FormatProperties337814     FormatProperties3( VkFormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT : FormatProperties3( *reinterpret_cast<FormatProperties3 const *>( &rhs ) ) {}
37815 
37816     FormatProperties3 & operator=( FormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37817 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37818 
operator =VULKAN_HPP_NAMESPACE::FormatProperties337819     FormatProperties3 & operator=( VkFormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT
37820     {
37821       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties3 const *>( &rhs );
37822       return *this;
37823     }
37824 
operator VkFormatProperties3 const&VULKAN_HPP_NAMESPACE::FormatProperties337825     operator VkFormatProperties3 const &() const VULKAN_HPP_NOEXCEPT
37826     {
37827       return *reinterpret_cast<const VkFormatProperties3 *>( this );
37828     }
37829 
operator VkFormatProperties3&VULKAN_HPP_NAMESPACE::FormatProperties337830     operator VkFormatProperties3 &() VULKAN_HPP_NOEXCEPT
37831     {
37832       return *reinterpret_cast<VkFormatProperties3 *>( this );
37833     }
37834 
37835 #if defined( VULKAN_HPP_USE_REFLECT )
37836 #  if 14 <= VULKAN_HPP_CPP_VERSION
37837     auto
37838 #  else
37839     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37840                void * const &,
37841                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &,
37842                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &,
37843                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &>
37844 #  endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties337845       reflect() const VULKAN_HPP_NOEXCEPT
37846     {
37847       return std::tie( sType, pNext, linearTilingFeatures, optimalTilingFeatures, bufferFeatures );
37848     }
37849 #endif
37850 
37851 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37852     auto operator<=>( FormatProperties3 const & ) const = default;
37853 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties337854     bool operator==( FormatProperties3 const & rhs ) const VULKAN_HPP_NOEXCEPT
37855     {
37856 #  if defined( VULKAN_HPP_USE_REFLECT )
37857       return this->reflect() == rhs.reflect();
37858 #  else
37859       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( linearTilingFeatures == rhs.linearTilingFeatures ) &&
37860              ( optimalTilingFeatures == rhs.optimalTilingFeatures ) && ( bufferFeatures == rhs.bufferFeatures );
37861 #  endif
37862     }
37863 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties337864     bool operator!=( FormatProperties3 const & rhs ) const VULKAN_HPP_NOEXCEPT
37865     {
37866       return !operator==( rhs );
37867     }
37868 #endif
37869 
37870   public:
37871     VULKAN_HPP_NAMESPACE::StructureType       sType                 = StructureType::eFormatProperties3;
37872     void *                                    pNext                 = {};
37873     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 linearTilingFeatures  = {};
37874     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 optimalTilingFeatures = {};
37875     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 bufferFeatures        = {};
37876   };
37877 
37878   template <>
37879   struct CppType<StructureType, StructureType::eFormatProperties3>
37880   {
37881     using Type = FormatProperties3;
37882   };
37883 
37884   using FormatProperties3KHR = FormatProperties3;
37885 
37886   struct FragmentShadingRateAttachmentInfoKHR
37887   {
37888     using NativeType = VkFragmentShadingRateAttachmentInfoKHR;
37889 
37890     static const bool                                  allowDuplicate = false;
37891     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFragmentShadingRateAttachmentInfoKHR;
37892 
37893 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37894     VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment_ = {},
37895                                                                VULKAN_HPP_NAMESPACE::Extent2D                     shadingRateAttachmentTexelSize_ = {},
37896                                                                const void *                                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
37897       : pNext{ pNext_ }
37898       , pFragmentShadingRateAttachment{ pFragmentShadingRateAttachment_ }
37899       , shadingRateAttachmentTexelSize{ shadingRateAttachmentTexelSize_ }
37900     {
37901     }
37902 
37903     VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37904 
FragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37905     FragmentShadingRateAttachmentInfoKHR( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37906       : FragmentShadingRateAttachmentInfoKHR( *reinterpret_cast<FragmentShadingRateAttachmentInfoKHR const *>( &rhs ) )
37907     {
37908     }
37909 
37910     FragmentShadingRateAttachmentInfoKHR & operator=( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37911 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37912 
operator =VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37913     FragmentShadingRateAttachmentInfoKHR & operator=( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37914     {
37915       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR const *>( &rhs );
37916       return *this;
37917     }
37918 
37919 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37920     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37921     {
37922       pNext = pNext_;
37923       return *this;
37924     }
37925 
37926     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR &
setPFragmentShadingRateAttachmentVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37927       setPFragmentShadingRateAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment_ ) VULKAN_HPP_NOEXCEPT
37928     {
37929       pFragmentShadingRateAttachment = pFragmentShadingRateAttachment_;
37930       return *this;
37931     }
37932 
37933     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR &
setShadingRateAttachmentTexelSizeVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37934       setShadingRateAttachmentTexelSize( VULKAN_HPP_NAMESPACE::Extent2D const & shadingRateAttachmentTexelSize_ ) VULKAN_HPP_NOEXCEPT
37935     {
37936       shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_;
37937       return *this;
37938     }
37939 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37940 
operator VkFragmentShadingRateAttachmentInfoKHR const&VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37941     operator VkFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
37942     {
37943       return *reinterpret_cast<const VkFragmentShadingRateAttachmentInfoKHR *>( this );
37944     }
37945 
operator VkFragmentShadingRateAttachmentInfoKHR&VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37946     operator VkFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT
37947     {
37948       return *reinterpret_cast<VkFragmentShadingRateAttachmentInfoKHR *>( this );
37949     }
37950 
37951 #if defined( VULKAN_HPP_USE_REFLECT )
37952 #  if 14 <= VULKAN_HPP_CPP_VERSION
37953     auto
37954 #  else
37955     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37956                const void * const &,
37957                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
37958                VULKAN_HPP_NAMESPACE::Extent2D const &>
37959 #  endif
reflectVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37960       reflect() const VULKAN_HPP_NOEXCEPT
37961     {
37962       return std::tie( sType, pNext, pFragmentShadingRateAttachment, shadingRateAttachmentTexelSize );
37963     }
37964 #endif
37965 
37966 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37967     auto operator<=>( FragmentShadingRateAttachmentInfoKHR const & ) const = default;
37968 #else
operator ==VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37969     bool operator==( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37970     {
37971 #  if defined( VULKAN_HPP_USE_REFLECT )
37972       return this->reflect() == rhs.reflect();
37973 #  else
37974       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pFragmentShadingRateAttachment == rhs.pFragmentShadingRateAttachment ) &&
37975              ( shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize );
37976 #  endif
37977     }
37978 
operator !=VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37979     bool operator!=( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37980     {
37981       return !operator==( rhs );
37982     }
37983 #endif
37984 
37985   public:
37986     VULKAN_HPP_NAMESPACE::StructureType                sType                          = StructureType::eFragmentShadingRateAttachmentInfoKHR;
37987     const void *                                       pNext                          = {};
37988     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment = {};
37989     VULKAN_HPP_NAMESPACE::Extent2D                     shadingRateAttachmentTexelSize = {};
37990   };
37991 
37992   template <>
37993   struct CppType<StructureType, StructureType::eFragmentShadingRateAttachmentInfoKHR>
37994   {
37995     using Type = FragmentShadingRateAttachmentInfoKHR;
37996   };
37997 
37998   struct FrameBoundaryEXT
37999   {
38000     using NativeType = VkFrameBoundaryEXT;
38001 
38002     static const bool                                  allowDuplicate = false;
38003     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFrameBoundaryEXT;
38004 
38005 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FrameBoundaryEXTVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38006     VULKAN_HPP_CONSTEXPR FrameBoundaryEXT( VULKAN_HPP_NAMESPACE::FrameBoundaryFlagsEXT flags_       = {},
38007                                            uint64_t                                    frameID_     = {},
38008                                            uint32_t                                    imageCount_  = {},
38009                                            const VULKAN_HPP_NAMESPACE::Image *         pImages_     = {},
38010                                            uint32_t                                    bufferCount_ = {},
38011                                            const VULKAN_HPP_NAMESPACE::Buffer *        pBuffers_    = {},
38012                                            uint64_t                                    tagName_     = {},
38013                                            size_t                                      tagSize_     = {},
38014                                            const void *                                pTag_        = {},
38015                                            const void *                                pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
38016       : pNext{ pNext_ }
38017       , flags{ flags_ }
38018       , frameID{ frameID_ }
38019       , imageCount{ imageCount_ }
38020       , pImages{ pImages_ }
38021       , bufferCount{ bufferCount_ }
38022       , pBuffers{ pBuffers_ }
38023       , tagName{ tagName_ }
38024       , tagSize{ tagSize_ }
38025       , pTag{ pTag_ }
38026     {
38027     }
38028 
38029     VULKAN_HPP_CONSTEXPR FrameBoundaryEXT( FrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38030 
FrameBoundaryEXTVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38031     FrameBoundaryEXT( VkFrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT : FrameBoundaryEXT( *reinterpret_cast<FrameBoundaryEXT const *>( &rhs ) ) {}
38032 
38033 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
38034     template <typename T>
FrameBoundaryEXTVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38035     FrameBoundaryEXT( VULKAN_HPP_NAMESPACE::FrameBoundaryFlagsEXT                                               flags_,
38036                       uint64_t                                                                                  frameID_,
38037                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Image> const &  images_,
38038                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers_ = {},
38039                       uint64_t                                                                                  tagName_ = {},
38040                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const &                            tag_     = {},
38041                       const void *                                                                              pNext_   = nullptr )
38042       : pNext( pNext_ )
38043       , flags( flags_ )
38044       , frameID( frameID_ )
38045       , imageCount( static_cast<uint32_t>( images_.size() ) )
38046       , pImages( images_.data() )
38047       , bufferCount( static_cast<uint32_t>( buffers_.size() ) )
38048       , pBuffers( buffers_.data() )
38049       , tagName( tagName_ )
38050       , tagSize( tag_.size() * sizeof( T ) )
38051       , pTag( tag_.data() )
38052     {
38053     }
38054 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38055 
38056     FrameBoundaryEXT & operator=( FrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38057 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38058 
operator =VULKAN_HPP_NAMESPACE::FrameBoundaryEXT38059     FrameBoundaryEXT & operator=( VkFrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT
38060     {
38061       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FrameBoundaryEXT const *>( &rhs );
38062       return *this;
38063     }
38064 
38065 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38066     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38067     {
38068       pNext = pNext_;
38069       return *this;
38070     }
38071 
setFlagsVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38072     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setFlags( VULKAN_HPP_NAMESPACE::FrameBoundaryFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
38073     {
38074       flags = flags_;
38075       return *this;
38076     }
38077 
setFrameIDVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38078     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setFrameID( uint64_t frameID_ ) VULKAN_HPP_NOEXCEPT
38079     {
38080       frameID = frameID_;
38081       return *this;
38082     }
38083 
setImageCountVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38084     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setImageCount( uint32_t imageCount_ ) VULKAN_HPP_NOEXCEPT
38085     {
38086       imageCount = imageCount_;
38087       return *this;
38088     }
38089 
setPImagesVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38090     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPImages( const VULKAN_HPP_NAMESPACE::Image * pImages_ ) VULKAN_HPP_NOEXCEPT
38091     {
38092       pImages = pImages_;
38093       return *this;
38094     }
38095 
38096 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImagesVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38097     FrameBoundaryEXT & setImages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Image> const & images_ ) VULKAN_HPP_NOEXCEPT
38098     {
38099       imageCount = static_cast<uint32_t>( images_.size() );
38100       pImages    = images_.data();
38101       return *this;
38102     }
38103 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38104 
setBufferCountVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38105     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setBufferCount( uint32_t bufferCount_ ) VULKAN_HPP_NOEXCEPT
38106     {
38107       bufferCount = bufferCount_;
38108       return *this;
38109     }
38110 
setPBuffersVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38111     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPBuffers( const VULKAN_HPP_NAMESPACE::Buffer * pBuffers_ ) VULKAN_HPP_NOEXCEPT
38112     {
38113       pBuffers = pBuffers_;
38114       return *this;
38115     }
38116 
38117 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBuffersVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38118     FrameBoundaryEXT & setBuffers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers_ ) VULKAN_HPP_NOEXCEPT
38119     {
38120       bufferCount = static_cast<uint32_t>( buffers_.size() );
38121       pBuffers    = buffers_.data();
38122       return *this;
38123     }
38124 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38125 
setTagNameVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38126     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT
38127     {
38128       tagName = tagName_;
38129       return *this;
38130     }
38131 
setTagSizeVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38132     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT
38133     {
38134       tagSize = tagSize_;
38135       return *this;
38136     }
38137 
setPTagVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38138     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT
38139     {
38140       pTag = pTag_;
38141       return *this;
38142     }
38143 
38144 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
38145     template <typename T>
setTagVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38146     FrameBoundaryEXT & setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ ) VULKAN_HPP_NOEXCEPT
38147     {
38148       tagSize = tag_.size() * sizeof( T );
38149       pTag    = tag_.data();
38150       return *this;
38151     }
38152 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38153 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38154 
operator VkFrameBoundaryEXT const&VULKAN_HPP_NAMESPACE::FrameBoundaryEXT38155     operator VkFrameBoundaryEXT const &() const VULKAN_HPP_NOEXCEPT
38156     {
38157       return *reinterpret_cast<const VkFrameBoundaryEXT *>( this );
38158     }
38159 
operator VkFrameBoundaryEXT&VULKAN_HPP_NAMESPACE::FrameBoundaryEXT38160     operator VkFrameBoundaryEXT &() VULKAN_HPP_NOEXCEPT
38161     {
38162       return *reinterpret_cast<VkFrameBoundaryEXT *>( this );
38163     }
38164 
38165 #if defined( VULKAN_HPP_USE_REFLECT )
38166 #  if 14 <= VULKAN_HPP_CPP_VERSION
38167     auto
38168 #  else
38169     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38170                const void * const &,
38171                VULKAN_HPP_NAMESPACE::FrameBoundaryFlagsEXT const &,
38172                uint64_t const &,
38173                uint32_t const &,
38174                const VULKAN_HPP_NAMESPACE::Image * const &,
38175                uint32_t const &,
38176                const VULKAN_HPP_NAMESPACE::Buffer * const &,
38177                uint64_t const &,
38178                size_t const &,
38179                const void * const &>
38180 #  endif
reflectVULKAN_HPP_NAMESPACE::FrameBoundaryEXT38181       reflect() const VULKAN_HPP_NOEXCEPT
38182     {
38183       return std::tie( sType, pNext, flags, frameID, imageCount, pImages, bufferCount, pBuffers, tagName, tagSize, pTag );
38184     }
38185 #endif
38186 
38187 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38188     auto operator<=>( FrameBoundaryEXT const & ) const = default;
38189 #else
operator ==VULKAN_HPP_NAMESPACE::FrameBoundaryEXT38190     bool operator==( FrameBoundaryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
38191     {
38192 #  if defined( VULKAN_HPP_USE_REFLECT )
38193       return this->reflect() == rhs.reflect();
38194 #  else
38195       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( frameID == rhs.frameID ) && ( imageCount == rhs.imageCount ) &&
38196              ( pImages == rhs.pImages ) && ( bufferCount == rhs.bufferCount ) && ( pBuffers == rhs.pBuffers ) && ( tagName == rhs.tagName ) &&
38197              ( tagSize == rhs.tagSize ) && ( pTag == rhs.pTag );
38198 #  endif
38199     }
38200 
operator !=VULKAN_HPP_NAMESPACE::FrameBoundaryEXT38201     bool operator!=( FrameBoundaryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
38202     {
38203       return !operator==( rhs );
38204     }
38205 #endif
38206 
38207   public:
38208     VULKAN_HPP_NAMESPACE::StructureType         sType       = StructureType::eFrameBoundaryEXT;
38209     const void *                                pNext       = {};
38210     VULKAN_HPP_NAMESPACE::FrameBoundaryFlagsEXT flags       = {};
38211     uint64_t                                    frameID     = {};
38212     uint32_t                                    imageCount  = {};
38213     const VULKAN_HPP_NAMESPACE::Image *         pImages     = {};
38214     uint32_t                                    bufferCount = {};
38215     const VULKAN_HPP_NAMESPACE::Buffer *        pBuffers    = {};
38216     uint64_t                                    tagName     = {};
38217     size_t                                      tagSize     = {};
38218     const void *                                pTag        = {};
38219   };
38220 
38221   template <>
38222   struct CppType<StructureType, StructureType::eFrameBoundaryEXT>
38223   {
38224     using Type = FrameBoundaryEXT;
38225   };
38226 
38227   struct FramebufferAttachmentImageInfo
38228   {
38229     using NativeType = VkFramebufferAttachmentImageInfo;
38230 
38231     static const bool                                  allowDuplicate = false;
38232     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFramebufferAttachmentImageInfo;
38233 
38234 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38235     VULKAN_HPP_CONSTEXPR FramebufferAttachmentImageInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_           = {},
38236                                                          VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage_           = {},
38237                                                          uint32_t                               width_           = {},
38238                                                          uint32_t                               height_          = {},
38239                                                          uint32_t                               layerCount_      = {},
38240                                                          uint32_t                               viewFormatCount_ = {},
38241                                                          const VULKAN_HPP_NAMESPACE::Format *   pViewFormats_    = {},
38242                                                          const void *                           pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
38243       : pNext{ pNext_ }
38244       , flags{ flags_ }
38245       , usage{ usage_ }
38246       , width{ width_ }
38247       , height{ height_ }
38248       , layerCount{ layerCount_ }
38249       , viewFormatCount{ viewFormatCount_ }
38250       , pViewFormats{ pViewFormats_ }
38251     {
38252     }
38253 
38254     VULKAN_HPP_CONSTEXPR FramebufferAttachmentImageInfo( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38255 
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38256     FramebufferAttachmentImageInfo( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
38257       : FramebufferAttachmentImageInfo( *reinterpret_cast<FramebufferAttachmentImageInfo const *>( &rhs ) )
38258     {
38259     }
38260 
38261 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38262     FramebufferAttachmentImageInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags                                                    flags_,
38263                                     VULKAN_HPP_NAMESPACE::ImageUsageFlags                                                     usage_,
38264                                     uint32_t                                                                                  width_,
38265                                     uint32_t                                                                                  height_,
38266                                     uint32_t                                                                                  layerCount_,
38267                                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_,
38268                                     const void *                                                                              pNext_ = nullptr )
38269       : pNext( pNext_ )
38270       , flags( flags_ )
38271       , usage( usage_ )
38272       , width( width_ )
38273       , height( height_ )
38274       , layerCount( layerCount_ )
38275       , viewFormatCount( static_cast<uint32_t>( viewFormats_.size() ) )
38276       , pViewFormats( viewFormats_.data() )
38277     {
38278     }
38279 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38280 
38281     FramebufferAttachmentImageInfo & operator=( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38282 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38283 
operator =VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38284     FramebufferAttachmentImageInfo & operator=( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
38285     {
38286       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo const *>( &rhs );
38287       return *this;
38288     }
38289 
38290 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38291     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38292     {
38293       pNext = pNext_;
38294       return *this;
38295     }
38296 
setFlagsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38297     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
38298     {
38299       flags = flags_;
38300       return *this;
38301     }
38302 
setUsageVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38303     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
38304     {
38305       usage = usage_;
38306       return *this;
38307     }
38308 
setWidthVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38309     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
38310     {
38311       width = width_;
38312       return *this;
38313     }
38314 
setHeightVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38315     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
38316     {
38317       height = height_;
38318       return *this;
38319     }
38320 
setLayerCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38321     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
38322     {
38323       layerCount = layerCount_;
38324       return *this;
38325     }
38326 
setViewFormatCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38327     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT
38328     {
38329       viewFormatCount = viewFormatCount_;
38330       return *this;
38331     }
38332 
setPViewFormatsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38333     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setPViewFormats( const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ ) VULKAN_HPP_NOEXCEPT
38334     {
38335       pViewFormats = pViewFormats_;
38336       return *this;
38337     }
38338 
38339 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
38340     FramebufferAttachmentImageInfo &
setViewFormatsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38341       setViewFormats( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ ) VULKAN_HPP_NOEXCEPT
38342     {
38343       viewFormatCount = static_cast<uint32_t>( viewFormats_.size() );
38344       pViewFormats    = viewFormats_.data();
38345       return *this;
38346     }
38347 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38348 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38349 
operator VkFramebufferAttachmentImageInfo const&VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38350     operator VkFramebufferAttachmentImageInfo const &() const VULKAN_HPP_NOEXCEPT
38351     {
38352       return *reinterpret_cast<const VkFramebufferAttachmentImageInfo *>( this );
38353     }
38354 
operator VkFramebufferAttachmentImageInfo&VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38355     operator VkFramebufferAttachmentImageInfo &() VULKAN_HPP_NOEXCEPT
38356     {
38357       return *reinterpret_cast<VkFramebufferAttachmentImageInfo *>( this );
38358     }
38359 
38360 #if defined( VULKAN_HPP_USE_REFLECT )
38361 #  if 14 <= VULKAN_HPP_CPP_VERSION
38362     auto
38363 #  else
38364     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38365                const void * const &,
38366                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &,
38367                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
38368                uint32_t const &,
38369                uint32_t const &,
38370                uint32_t const &,
38371                uint32_t const &,
38372                const VULKAN_HPP_NAMESPACE::Format * const &>
38373 #  endif
reflectVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38374       reflect() const VULKAN_HPP_NOEXCEPT
38375     {
38376       return std::tie( sType, pNext, flags, usage, width, height, layerCount, viewFormatCount, pViewFormats );
38377     }
38378 #endif
38379 
38380 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38381     auto operator<=>( FramebufferAttachmentImageInfo const & ) const = default;
38382 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38383     bool operator==( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38384     {
38385 #  if defined( VULKAN_HPP_USE_REFLECT )
38386       return this->reflect() == rhs.reflect();
38387 #  else
38388       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( usage == rhs.usage ) && ( width == rhs.width ) &&
38389              ( height == rhs.height ) && ( layerCount == rhs.layerCount ) && ( viewFormatCount == rhs.viewFormatCount ) && ( pViewFormats == rhs.pViewFormats );
38390 #  endif
38391     }
38392 
operator !=VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38393     bool operator!=( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38394     {
38395       return !operator==( rhs );
38396     }
38397 #endif
38398 
38399   public:
38400     VULKAN_HPP_NAMESPACE::StructureType    sType           = StructureType::eFramebufferAttachmentImageInfo;
38401     const void *                           pNext           = {};
38402     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags           = {};
38403     VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage           = {};
38404     uint32_t                               width           = {};
38405     uint32_t                               height          = {};
38406     uint32_t                               layerCount      = {};
38407     uint32_t                               viewFormatCount = {};
38408     const VULKAN_HPP_NAMESPACE::Format *   pViewFormats    = {};
38409   };
38410 
38411   template <>
38412   struct CppType<StructureType, StructureType::eFramebufferAttachmentImageInfo>
38413   {
38414     using Type = FramebufferAttachmentImageInfo;
38415   };
38416 
38417   using FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
38418 
38419   struct FramebufferAttachmentsCreateInfo
38420   {
38421     using NativeType = VkFramebufferAttachmentsCreateInfo;
38422 
38423     static const bool                                  allowDuplicate = false;
38424     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFramebufferAttachmentsCreateInfo;
38425 
38426 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38427     VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo( uint32_t                                                     attachmentImageInfoCount_ = {},
38428                                                            const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos_    = {},
38429                                                            const void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
38430       : pNext{ pNext_ }
38431       , attachmentImageInfoCount{ attachmentImageInfoCount_ }
38432       , pAttachmentImageInfos{ pAttachmentImageInfos_ }
38433     {
38434     }
38435 
38436     VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38437 
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38438     FramebufferAttachmentsCreateInfo( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
38439       : FramebufferAttachmentsCreateInfo( *reinterpret_cast<FramebufferAttachmentsCreateInfo const *>( &rhs ) )
38440     {
38441     }
38442 
38443 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38444     FramebufferAttachmentsCreateInfo(
38445       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo> const & attachmentImageInfos_,
38446       const void *                                                                                                      pNext_ = nullptr )
38447       : pNext( pNext_ )
38448       , attachmentImageInfoCount( static_cast<uint32_t>( attachmentImageInfos_.size() ) )
38449       , pAttachmentImageInfos( attachmentImageInfos_.data() )
38450     {
38451     }
38452 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38453 
38454     FramebufferAttachmentsCreateInfo & operator=( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38455 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38456 
operator =VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38457     FramebufferAttachmentsCreateInfo & operator=( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
38458     {
38459       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo const *>( &rhs );
38460       return *this;
38461     }
38462 
38463 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38464     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38465     {
38466       pNext = pNext_;
38467       return *this;
38468     }
38469 
setAttachmentImageInfoCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38470     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setAttachmentImageInfoCount( uint32_t attachmentImageInfoCount_ ) VULKAN_HPP_NOEXCEPT
38471     {
38472       attachmentImageInfoCount = attachmentImageInfoCount_;
38473       return *this;
38474     }
38475 
38476     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo &
setPAttachmentImageInfosVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38477       setPAttachmentImageInfos( const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT
38478     {
38479       pAttachmentImageInfos = pAttachmentImageInfos_;
38480       return *this;
38481     }
38482 
38483 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentImageInfosVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38484     FramebufferAttachmentsCreateInfo & setAttachmentImageInfos(
38485       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo> const & attachmentImageInfos_ )
38486       VULKAN_HPP_NOEXCEPT
38487     {
38488       attachmentImageInfoCount = static_cast<uint32_t>( attachmentImageInfos_.size() );
38489       pAttachmentImageInfos    = attachmentImageInfos_.data();
38490       return *this;
38491     }
38492 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38493 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38494 
operator VkFramebufferAttachmentsCreateInfo const&VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38495     operator VkFramebufferAttachmentsCreateInfo const &() const VULKAN_HPP_NOEXCEPT
38496     {
38497       return *reinterpret_cast<const VkFramebufferAttachmentsCreateInfo *>( this );
38498     }
38499 
operator VkFramebufferAttachmentsCreateInfo&VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38500     operator VkFramebufferAttachmentsCreateInfo &() VULKAN_HPP_NOEXCEPT
38501     {
38502       return *reinterpret_cast<VkFramebufferAttachmentsCreateInfo *>( this );
38503     }
38504 
38505 #if defined( VULKAN_HPP_USE_REFLECT )
38506 #  if 14 <= VULKAN_HPP_CPP_VERSION
38507     auto
38508 #  else
38509     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38510                const void * const &,
38511                uint32_t const &,
38512                const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * const &>
38513 #  endif
reflectVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38514       reflect() const VULKAN_HPP_NOEXCEPT
38515     {
38516       return std::tie( sType, pNext, attachmentImageInfoCount, pAttachmentImageInfos );
38517     }
38518 #endif
38519 
38520 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38521     auto operator<=>( FramebufferAttachmentsCreateInfo const & ) const = default;
38522 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38523     bool operator==( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38524     {
38525 #  if defined( VULKAN_HPP_USE_REFLECT )
38526       return this->reflect() == rhs.reflect();
38527 #  else
38528       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentImageInfoCount == rhs.attachmentImageInfoCount ) &&
38529              ( pAttachmentImageInfos == rhs.pAttachmentImageInfos );
38530 #  endif
38531     }
38532 
operator !=VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38533     bool operator!=( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38534     {
38535       return !operator==( rhs );
38536     }
38537 #endif
38538 
38539   public:
38540     VULKAN_HPP_NAMESPACE::StructureType                          sType                    = StructureType::eFramebufferAttachmentsCreateInfo;
38541     const void *                                                 pNext                    = {};
38542     uint32_t                                                     attachmentImageInfoCount = {};
38543     const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos    = {};
38544   };
38545 
38546   template <>
38547   struct CppType<StructureType, StructureType::eFramebufferAttachmentsCreateInfo>
38548   {
38549     using Type = FramebufferAttachmentsCreateInfo;
38550   };
38551 
38552   using FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
38553 
38554   struct FramebufferCreateInfo
38555   {
38556     using NativeType = VkFramebufferCreateInfo;
38557 
38558     static const bool                                  allowDuplicate = false;
38559     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFramebufferCreateInfo;
38560 
38561 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38562     VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_           = {},
38563                                                 VULKAN_HPP_NAMESPACE::RenderPass             renderPass_      = {},
38564                                                 uint32_t                                     attachmentCount_ = {},
38565                                                 const VULKAN_HPP_NAMESPACE::ImageView *      pAttachments_    = {},
38566                                                 uint32_t                                     width_           = {},
38567                                                 uint32_t                                     height_          = {},
38568                                                 uint32_t                                     layers_          = {},
38569                                                 const void *                                 pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
38570       : pNext{ pNext_ }
38571       , flags{ flags_ }
38572       , renderPass{ renderPass_ }
38573       , attachmentCount{ attachmentCount_ }
38574       , pAttachments{ pAttachments_ }
38575       , width{ width_ }
38576       , height{ height_ }
38577       , layers{ layers_ }
38578     {
38579     }
38580 
38581     VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38582 
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38583     FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
38584       : FramebufferCreateInfo( *reinterpret_cast<FramebufferCreateInfo const *>( &rhs ) )
38585     {
38586     }
38587 
38588 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38589     FramebufferCreateInfo( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags                                                 flags_,
38590                            VULKAN_HPP_NAMESPACE::RenderPass                                                             renderPass_,
38591                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_,
38592                            uint32_t                                                                                     width_  = {},
38593                            uint32_t                                                                                     height_ = {},
38594                            uint32_t                                                                                     layers_ = {},
38595                            const void *                                                                                 pNext_  = nullptr )
38596       : pNext( pNext_ )
38597       , flags( flags_ )
38598       , renderPass( renderPass_ )
38599       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
38600       , pAttachments( attachments_.data() )
38601       , width( width_ )
38602       , height( height_ )
38603       , layers( layers_ )
38604     {
38605     }
38606 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38607 
38608     FramebufferCreateInfo & operator=( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38609 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38610 
operator =VULKAN_HPP_NAMESPACE::FramebufferCreateInfo38611     FramebufferCreateInfo & operator=( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
38612     {
38613       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const *>( &rhs );
38614       return *this;
38615     }
38616 
38617 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38618     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38619     {
38620       pNext = pNext_;
38621       return *this;
38622     }
38623 
setFlagsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38624     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
38625     {
38626       flags = flags_;
38627       return *this;
38628     }
38629 
setRenderPassVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38630     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
38631     {
38632       renderPass = renderPass_;
38633       return *this;
38634     }
38635 
setAttachmentCountVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38636     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
38637     {
38638       attachmentCount = attachmentCount_;
38639       return *this;
38640     }
38641 
setPAttachmentsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38642     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ ) VULKAN_HPP_NOEXCEPT
38643     {
38644       pAttachments = pAttachments_;
38645       return *this;
38646     }
38647 
38648 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
38649     FramebufferCreateInfo &
setAttachmentsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38650       setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_ ) VULKAN_HPP_NOEXCEPT
38651     {
38652       attachmentCount = static_cast<uint32_t>( attachments_.size() );
38653       pAttachments    = attachments_.data();
38654       return *this;
38655     }
38656 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38657 
setWidthVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38658     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
38659     {
38660       width = width_;
38661       return *this;
38662     }
38663 
setHeightVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38664     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
38665     {
38666       height = height_;
38667       return *this;
38668     }
38669 
setLayersVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38670     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setLayers( uint32_t layers_ ) VULKAN_HPP_NOEXCEPT
38671     {
38672       layers = layers_;
38673       return *this;
38674     }
38675 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38676 
operator VkFramebufferCreateInfo const&VULKAN_HPP_NAMESPACE::FramebufferCreateInfo38677     operator VkFramebufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
38678     {
38679       return *reinterpret_cast<const VkFramebufferCreateInfo *>( this );
38680     }
38681 
operator VkFramebufferCreateInfo&VULKAN_HPP_NAMESPACE::FramebufferCreateInfo38682     operator VkFramebufferCreateInfo &() VULKAN_HPP_NOEXCEPT
38683     {
38684       return *reinterpret_cast<VkFramebufferCreateInfo *>( this );
38685     }
38686 
38687 #if defined( VULKAN_HPP_USE_REFLECT )
38688 #  if 14 <= VULKAN_HPP_CPP_VERSION
38689     auto
38690 #  else
38691     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38692                const void * const &,
38693                VULKAN_HPP_NAMESPACE::FramebufferCreateFlags const &,
38694                VULKAN_HPP_NAMESPACE::RenderPass const &,
38695                uint32_t const &,
38696                const VULKAN_HPP_NAMESPACE::ImageView * const &,
38697                uint32_t const &,
38698                uint32_t const &,
38699                uint32_t const &>
38700 #  endif
reflectVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38701       reflect() const VULKAN_HPP_NOEXCEPT
38702     {
38703       return std::tie( sType, pNext, flags, renderPass, attachmentCount, pAttachments, width, height, layers );
38704     }
38705 #endif
38706 
38707 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38708     auto operator<=>( FramebufferCreateInfo const & ) const = default;
38709 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferCreateInfo38710     bool operator==( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38711     {
38712 #  if defined( VULKAN_HPP_USE_REFLECT )
38713       return this->reflect() == rhs.reflect();
38714 #  else
38715       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( renderPass == rhs.renderPass ) &&
38716              ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments ) && ( width == rhs.width ) && ( height == rhs.height ) &&
38717              ( layers == rhs.layers );
38718 #  endif
38719     }
38720 
operator !=VULKAN_HPP_NAMESPACE::FramebufferCreateInfo38721     bool operator!=( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38722     {
38723       return !operator==( rhs );
38724     }
38725 #endif
38726 
38727   public:
38728     VULKAN_HPP_NAMESPACE::StructureType          sType           = StructureType::eFramebufferCreateInfo;
38729     const void *                                 pNext           = {};
38730     VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags           = {};
38731     VULKAN_HPP_NAMESPACE::RenderPass             renderPass      = {};
38732     uint32_t                                     attachmentCount = {};
38733     const VULKAN_HPP_NAMESPACE::ImageView *      pAttachments    = {};
38734     uint32_t                                     width           = {};
38735     uint32_t                                     height          = {};
38736     uint32_t                                     layers          = {};
38737   };
38738 
38739   template <>
38740   struct CppType<StructureType, StructureType::eFramebufferCreateInfo>
38741   {
38742     using Type = FramebufferCreateInfo;
38743   };
38744 
38745   struct FramebufferMixedSamplesCombinationNV
38746   {
38747     using NativeType = VkFramebufferMixedSamplesCombinationNV;
38748 
38749     static const bool                                  allowDuplicate = false;
38750     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFramebufferMixedSamplesCombinationNV;
38751 
38752 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferMixedSamplesCombinationNVVULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38753     VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV(
38754       VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge,
38755       VULKAN_HPP_NAMESPACE::SampleCountFlagBits     rasterizationSamples_  = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
38756       VULKAN_HPP_NAMESPACE::SampleCountFlags        depthStencilSamples_   = {},
38757       VULKAN_HPP_NAMESPACE::SampleCountFlags        colorSamples_          = {},
38758       void *                                        pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
38759       : pNext{ pNext_ }
38760       , coverageReductionMode{ coverageReductionMode_ }
38761       , rasterizationSamples{ rasterizationSamples_ }
38762       , depthStencilSamples{ depthStencilSamples_ }
38763       , colorSamples{ colorSamples_ }
38764     {
38765     }
38766 
38767     VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38768 
FramebufferMixedSamplesCombinationNVVULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38769     FramebufferMixedSamplesCombinationNV( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT
38770       : FramebufferMixedSamplesCombinationNV( *reinterpret_cast<FramebufferMixedSamplesCombinationNV const *>( &rhs ) )
38771     {
38772     }
38773 
38774     FramebufferMixedSamplesCombinationNV & operator=( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38775 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38776 
operator =VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38777     FramebufferMixedSamplesCombinationNV & operator=( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT
38778     {
38779       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV const *>( &rhs );
38780       return *this;
38781     }
38782 
operator VkFramebufferMixedSamplesCombinationNV const&VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38783     operator VkFramebufferMixedSamplesCombinationNV const &() const VULKAN_HPP_NOEXCEPT
38784     {
38785       return *reinterpret_cast<const VkFramebufferMixedSamplesCombinationNV *>( this );
38786     }
38787 
operator VkFramebufferMixedSamplesCombinationNV&VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38788     operator VkFramebufferMixedSamplesCombinationNV &() VULKAN_HPP_NOEXCEPT
38789     {
38790       return *reinterpret_cast<VkFramebufferMixedSamplesCombinationNV *>( this );
38791     }
38792 
38793 #if defined( VULKAN_HPP_USE_REFLECT )
38794 #  if 14 <= VULKAN_HPP_CPP_VERSION
38795     auto
38796 #  else
38797     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38798                void * const &,
38799                VULKAN_HPP_NAMESPACE::CoverageReductionModeNV const &,
38800                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
38801                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
38802                VULKAN_HPP_NAMESPACE::SampleCountFlags const &>
38803 #  endif
reflectVULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38804       reflect() const VULKAN_HPP_NOEXCEPT
38805     {
38806       return std::tie( sType, pNext, coverageReductionMode, rasterizationSamples, depthStencilSamples, colorSamples );
38807     }
38808 #endif
38809 
38810 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38811     auto operator<=>( FramebufferMixedSamplesCombinationNV const & ) const = default;
38812 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38813     bool operator==( FramebufferMixedSamplesCombinationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38814     {
38815 #  if defined( VULKAN_HPP_USE_REFLECT )
38816       return this->reflect() == rhs.reflect();
38817 #  else
38818       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( coverageReductionMode == rhs.coverageReductionMode ) &&
38819              ( rasterizationSamples == rhs.rasterizationSamples ) && ( depthStencilSamples == rhs.depthStencilSamples ) && ( colorSamples == rhs.colorSamples );
38820 #  endif
38821     }
38822 
operator !=VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38823     bool operator!=( FramebufferMixedSamplesCombinationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38824     {
38825       return !operator==( rhs );
38826     }
38827 #endif
38828 
38829   public:
38830     VULKAN_HPP_NAMESPACE::StructureType           sType                 = StructureType::eFramebufferMixedSamplesCombinationNV;
38831     void *                                        pNext                 = {};
38832     VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge;
38833     VULKAN_HPP_NAMESPACE::SampleCountFlagBits     rasterizationSamples  = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
38834     VULKAN_HPP_NAMESPACE::SampleCountFlags        depthStencilSamples   = {};
38835     VULKAN_HPP_NAMESPACE::SampleCountFlags        colorSamples          = {};
38836   };
38837 
38838   template <>
38839   struct CppType<StructureType, StructureType::eFramebufferMixedSamplesCombinationNV>
38840   {
38841     using Type = FramebufferMixedSamplesCombinationNV;
38842   };
38843 
38844   struct IndirectCommandsStreamNV
38845   {
38846     using NativeType = VkIndirectCommandsStreamNV;
38847 
38848 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
IndirectCommandsStreamNVVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38849     VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( VULKAN_HPP_NAMESPACE::Buffer     buffer_ = {},
38850                                                    VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {} ) VULKAN_HPP_NOEXCEPT
38851       : buffer{ buffer_ }
38852       , offset{ offset_ }
38853     {
38854     }
38855 
38856     VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38857 
IndirectCommandsStreamNVVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38858     IndirectCommandsStreamNV( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT
38859       : IndirectCommandsStreamNV( *reinterpret_cast<IndirectCommandsStreamNV const *>( &rhs ) )
38860     {
38861     }
38862 
38863     IndirectCommandsStreamNV & operator=( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38864 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38865 
operator =VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38866     IndirectCommandsStreamNV & operator=( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT
38867     {
38868       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV const *>( &rhs );
38869       return *this;
38870     }
38871 
38872 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38873     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
38874     {
38875       buffer = buffer_;
38876       return *this;
38877     }
38878 
setOffsetVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38879     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
38880     {
38881       offset = offset_;
38882       return *this;
38883     }
38884 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38885 
operator VkIndirectCommandsStreamNV const&VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38886     operator VkIndirectCommandsStreamNV const &() const VULKAN_HPP_NOEXCEPT
38887     {
38888       return *reinterpret_cast<const VkIndirectCommandsStreamNV *>( this );
38889     }
38890 
operator VkIndirectCommandsStreamNV&VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38891     operator VkIndirectCommandsStreamNV &() VULKAN_HPP_NOEXCEPT
38892     {
38893       return *reinterpret_cast<VkIndirectCommandsStreamNV *>( this );
38894     }
38895 
38896 #if defined( VULKAN_HPP_USE_REFLECT )
38897 #  if 14 <= VULKAN_HPP_CPP_VERSION
38898     auto
38899 #  else
38900     std::tuple<VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
38901 #  endif
reflectVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38902       reflect() const VULKAN_HPP_NOEXCEPT
38903     {
38904       return std::tie( buffer, offset );
38905     }
38906 #endif
38907 
38908 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38909     auto operator<=>( IndirectCommandsStreamNV const & ) const = default;
38910 #else
operator ==VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38911     bool operator==( IndirectCommandsStreamNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38912     {
38913 #  if defined( VULKAN_HPP_USE_REFLECT )
38914       return this->reflect() == rhs.reflect();
38915 #  else
38916       return ( buffer == rhs.buffer ) && ( offset == rhs.offset );
38917 #  endif
38918     }
38919 
operator !=VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38920     bool operator!=( IndirectCommandsStreamNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38921     {
38922       return !operator==( rhs );
38923     }
38924 #endif
38925 
38926   public:
38927     VULKAN_HPP_NAMESPACE::Buffer     buffer = {};
38928     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
38929   };
38930 
38931   struct GeneratedCommandsInfoNV
38932   {
38933     using NativeType = VkGeneratedCommandsInfoNV;
38934 
38935     static const bool                                  allowDuplicate = false;
38936     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeneratedCommandsInfoNV;
38937 
38938 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
38939     VULKAN_HPP_CONSTEXPR
GeneratedCommandsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38940       GeneratedCommandsInfoNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint                pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
38941                                VULKAN_HPP_NAMESPACE::Pipeline                         pipeline_          = {},
38942                                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV         indirectCommandsLayout_ = {},
38943                                uint32_t                                               streamCount_            = {},
38944                                const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams_               = {},
38945                                uint32_t                                               sequencesCount_         = {},
38946                                VULKAN_HPP_NAMESPACE::Buffer                           preprocessBuffer_       = {},
38947                                VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessOffset_       = {},
38948                                VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessSize_         = {},
38949                                VULKAN_HPP_NAMESPACE::Buffer                           sequencesCountBuffer_   = {},
38950                                VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesCountOffset_   = {},
38951                                VULKAN_HPP_NAMESPACE::Buffer                           sequencesIndexBuffer_   = {},
38952                                VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesIndexOffset_   = {},
38953                                const void *                                           pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
38954       : pNext{ pNext_ }
38955       , pipelineBindPoint{ pipelineBindPoint_ }
38956       , pipeline{ pipeline_ }
38957       , indirectCommandsLayout{ indirectCommandsLayout_ }
38958       , streamCount{ streamCount_ }
38959       , pStreams{ pStreams_ }
38960       , sequencesCount{ sequencesCount_ }
38961       , preprocessBuffer{ preprocessBuffer_ }
38962       , preprocessOffset{ preprocessOffset_ }
38963       , preprocessSize{ preprocessSize_ }
38964       , sequencesCountBuffer{ sequencesCountBuffer_ }
38965       , sequencesCountOffset{ sequencesCountOffset_ }
38966       , sequencesIndexBuffer{ sequencesIndexBuffer_ }
38967       , sequencesIndexOffset{ sequencesIndexOffset_ }
38968     {
38969     }
38970 
38971     VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoNV( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38972 
GeneratedCommandsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38973     GeneratedCommandsInfoNV( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
38974       : GeneratedCommandsInfoNV( *reinterpret_cast<GeneratedCommandsInfoNV const *>( &rhs ) )
38975     {
38976     }
38977 
38978 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GeneratedCommandsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38979     GeneratedCommandsInfoNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint        pipelineBindPoint_,
38980                              VULKAN_HPP_NAMESPACE::Pipeline                 pipeline_,
38981                              VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_,
38982                              VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV> const & streams_,
38983                              uint32_t                                                                                                    sequencesCount_   = {},
38984                              VULKAN_HPP_NAMESPACE::Buffer                                                                                preprocessBuffer_ = {},
38985                              VULKAN_HPP_NAMESPACE::DeviceSize                                                                            preprocessOffset_ = {},
38986                              VULKAN_HPP_NAMESPACE::DeviceSize                                                                            preprocessSize_   = {},
38987                              VULKAN_HPP_NAMESPACE::Buffer     sequencesCountBuffer_                                                                        = {},
38988                              VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_                                                                        = {},
38989                              VULKAN_HPP_NAMESPACE::Buffer     sequencesIndexBuffer_                                                                        = {},
38990                              VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_                                                                        = {},
38991                              const void *                     pNext_ = nullptr )
38992       : pNext( pNext_ )
38993       , pipelineBindPoint( pipelineBindPoint_ )
38994       , pipeline( pipeline_ )
38995       , indirectCommandsLayout( indirectCommandsLayout_ )
38996       , streamCount( static_cast<uint32_t>( streams_.size() ) )
38997       , pStreams( streams_.data() )
38998       , sequencesCount( sequencesCount_ )
38999       , preprocessBuffer( preprocessBuffer_ )
39000       , preprocessOffset( preprocessOffset_ )
39001       , preprocessSize( preprocessSize_ )
39002       , sequencesCountBuffer( sequencesCountBuffer_ )
39003       , sequencesCountOffset( sequencesCountOffset_ )
39004       , sequencesIndexBuffer( sequencesIndexBuffer_ )
39005       , sequencesIndexOffset( sequencesIndexOffset_ )
39006     {
39007     }
39008 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39009 
39010     GeneratedCommandsInfoNV & operator=( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39011 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39012 
operator =VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39013     GeneratedCommandsInfoNV & operator=( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
39014     {
39015       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV const *>( &rhs );
39016       return *this;
39017     }
39018 
39019 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39020     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39021     {
39022       pNext = pNext_;
39023       return *this;
39024     }
39025 
setPipelineBindPointVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39026     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
39027     {
39028       pipelineBindPoint = pipelineBindPoint_;
39029       return *this;
39030     }
39031 
setPipelineVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39032     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
39033     {
39034       pipeline = pipeline_;
39035       return *this;
39036     }
39037 
39038     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setIndirectCommandsLayoutVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39039       setIndirectCommandsLayout( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT
39040     {
39041       indirectCommandsLayout = indirectCommandsLayout_;
39042       return *this;
39043     }
39044 
setStreamCountVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39045     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setStreamCount( uint32_t streamCount_ ) VULKAN_HPP_NOEXCEPT
39046     {
39047       streamCount = streamCount_;
39048       return *this;
39049     }
39050 
setPStreamsVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39051     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPStreams( const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams_ ) VULKAN_HPP_NOEXCEPT
39052     {
39053       pStreams = pStreams_;
39054       return *this;
39055     }
39056 
39057 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
39058     GeneratedCommandsInfoNV &
setStreamsVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39059       setStreams( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV> const & streams_ ) VULKAN_HPP_NOEXCEPT
39060     {
39061       streamCount = static_cast<uint32_t>( streams_.size() );
39062       pStreams    = streams_.data();
39063       return *this;
39064     }
39065 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39066 
setSequencesCountVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39067     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCount( uint32_t sequencesCount_ ) VULKAN_HPP_NOEXCEPT
39068     {
39069       sequencesCount = sequencesCount_;
39070       return *this;
39071     }
39072 
setPreprocessBufferVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39073     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPreprocessBuffer( VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer_ ) VULKAN_HPP_NOEXCEPT
39074     {
39075       preprocessBuffer = preprocessBuffer_;
39076       return *this;
39077     }
39078 
setPreprocessOffsetVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39079     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPreprocessOffset( VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_ ) VULKAN_HPP_NOEXCEPT
39080     {
39081       preprocessOffset = preprocessOffset_;
39082       return *this;
39083     }
39084 
setPreprocessSizeVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39085     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPreprocessSize( VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ ) VULKAN_HPP_NOEXCEPT
39086     {
39087       preprocessSize = preprocessSize_;
39088       return *this;
39089     }
39090 
setSequencesCountBufferVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39091     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCountBuffer( VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer_ ) VULKAN_HPP_NOEXCEPT
39092     {
39093       sequencesCountBuffer = sequencesCountBuffer_;
39094       return *this;
39095     }
39096 
setSequencesCountOffsetVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39097     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCountOffset( VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ ) VULKAN_HPP_NOEXCEPT
39098     {
39099       sequencesCountOffset = sequencesCountOffset_;
39100       return *this;
39101     }
39102 
setSequencesIndexBufferVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39103     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer_ ) VULKAN_HPP_NOEXCEPT
39104     {
39105       sequencesIndexBuffer = sequencesIndexBuffer_;
39106       return *this;
39107     }
39108 
setSequencesIndexOffsetVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39109     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesIndexOffset( VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ ) VULKAN_HPP_NOEXCEPT
39110     {
39111       sequencesIndexOffset = sequencesIndexOffset_;
39112       return *this;
39113     }
39114 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39115 
operator VkGeneratedCommandsInfoNV const&VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39116     operator VkGeneratedCommandsInfoNV const &() const VULKAN_HPP_NOEXCEPT
39117     {
39118       return *reinterpret_cast<const VkGeneratedCommandsInfoNV *>( this );
39119     }
39120 
operator VkGeneratedCommandsInfoNV&VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39121     operator VkGeneratedCommandsInfoNV &() VULKAN_HPP_NOEXCEPT
39122     {
39123       return *reinterpret_cast<VkGeneratedCommandsInfoNV *>( this );
39124     }
39125 
39126 #if defined( VULKAN_HPP_USE_REFLECT )
39127 #  if 14 <= VULKAN_HPP_CPP_VERSION
39128     auto
39129 #  else
39130     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39131                const void * const &,
39132                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
39133                VULKAN_HPP_NAMESPACE::Pipeline const &,
39134                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const &,
39135                uint32_t const &,
39136                const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * const &,
39137                uint32_t const &,
39138                VULKAN_HPP_NAMESPACE::Buffer const &,
39139                VULKAN_HPP_NAMESPACE::DeviceSize const &,
39140                VULKAN_HPP_NAMESPACE::DeviceSize const &,
39141                VULKAN_HPP_NAMESPACE::Buffer const &,
39142                VULKAN_HPP_NAMESPACE::DeviceSize const &,
39143                VULKAN_HPP_NAMESPACE::Buffer const &,
39144                VULKAN_HPP_NAMESPACE::DeviceSize const &>
39145 #  endif
reflectVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39146       reflect() const VULKAN_HPP_NOEXCEPT
39147     {
39148       return std::tie( sType,
39149                        pNext,
39150                        pipelineBindPoint,
39151                        pipeline,
39152                        indirectCommandsLayout,
39153                        streamCount,
39154                        pStreams,
39155                        sequencesCount,
39156                        preprocessBuffer,
39157                        preprocessOffset,
39158                        preprocessSize,
39159                        sequencesCountBuffer,
39160                        sequencesCountOffset,
39161                        sequencesIndexBuffer,
39162                        sequencesIndexOffset );
39163     }
39164 #endif
39165 
39166 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39167     auto operator<=>( GeneratedCommandsInfoNV const & ) const = default;
39168 #else
operator ==VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39169     bool operator==( GeneratedCommandsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39170     {
39171 #  if defined( VULKAN_HPP_USE_REFLECT )
39172       return this->reflect() == rhs.reflect();
39173 #  else
39174       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipeline == rhs.pipeline ) &&
39175              ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && ( streamCount == rhs.streamCount ) && ( pStreams == rhs.pStreams ) &&
39176              ( sequencesCount == rhs.sequencesCount ) && ( preprocessBuffer == rhs.preprocessBuffer ) && ( preprocessOffset == rhs.preprocessOffset ) &&
39177              ( preprocessSize == rhs.preprocessSize ) && ( sequencesCountBuffer == rhs.sequencesCountBuffer ) &&
39178              ( sequencesCountOffset == rhs.sequencesCountOffset ) && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer ) &&
39179              ( sequencesIndexOffset == rhs.sequencesIndexOffset );
39180 #  endif
39181     }
39182 
operator !=VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV39183     bool operator!=( GeneratedCommandsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39184     {
39185       return !operator==( rhs );
39186     }
39187 #endif
39188 
39189   public:
39190     VULKAN_HPP_NAMESPACE::StructureType                    sType                  = StructureType::eGeneratedCommandsInfoNV;
39191     const void *                                           pNext                  = {};
39192     VULKAN_HPP_NAMESPACE::PipelineBindPoint                pipelineBindPoint      = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
39193     VULKAN_HPP_NAMESPACE::Pipeline                         pipeline               = {};
39194     VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV         indirectCommandsLayout = {};
39195     uint32_t                                               streamCount            = {};
39196     const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams               = {};
39197     uint32_t                                               sequencesCount         = {};
39198     VULKAN_HPP_NAMESPACE::Buffer                           preprocessBuffer       = {};
39199     VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessOffset       = {};
39200     VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessSize         = {};
39201     VULKAN_HPP_NAMESPACE::Buffer                           sequencesCountBuffer   = {};
39202     VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesCountOffset   = {};
39203     VULKAN_HPP_NAMESPACE::Buffer                           sequencesIndexBuffer   = {};
39204     VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesIndexOffset   = {};
39205   };
39206 
39207   template <>
39208   struct CppType<StructureType, StructureType::eGeneratedCommandsInfoNV>
39209   {
39210     using Type = GeneratedCommandsInfoNV;
39211   };
39212 
39213   struct GeneratedCommandsMemoryRequirementsInfoNV
39214   {
39215     using NativeType = VkGeneratedCommandsMemoryRequirementsInfoNV;
39216 
39217     static const bool                                  allowDuplicate = false;
39218     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV;
39219 
39220 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeneratedCommandsMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39221     VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV(
39222       VULKAN_HPP_NAMESPACE::PipelineBindPoint        pipelineBindPoint_      = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
39223       VULKAN_HPP_NAMESPACE::Pipeline                 pipeline_               = {},
39224       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ = {},
39225       uint32_t                                       maxSequencesCount_      = {},
39226       const void *                                   pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
39227       : pNext{ pNext_ }
39228       , pipelineBindPoint{ pipelineBindPoint_ }
39229       , pipeline{ pipeline_ }
39230       , indirectCommandsLayout{ indirectCommandsLayout_ }
39231       , maxSequencesCount{ maxSequencesCount_ }
39232     {
39233     }
39234 
39235     VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39236 
GeneratedCommandsMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39237     GeneratedCommandsMemoryRequirementsInfoNV( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
39238       : GeneratedCommandsMemoryRequirementsInfoNV( *reinterpret_cast<GeneratedCommandsMemoryRequirementsInfoNV const *>( &rhs ) )
39239     {
39240     }
39241 
39242     GeneratedCommandsMemoryRequirementsInfoNV & operator=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39243 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39244 
operator =VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39245     GeneratedCommandsMemoryRequirementsInfoNV & operator=( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
39246     {
39247       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV const *>( &rhs );
39248       return *this;
39249     }
39250 
39251 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39252     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39253     {
39254       pNext = pNext_;
39255       return *this;
39256     }
39257 
39258     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV &
setPipelineBindPointVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39259       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
39260     {
39261       pipelineBindPoint = pipelineBindPoint_;
39262       return *this;
39263     }
39264 
setPipelineVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39265     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
39266     {
39267       pipeline = pipeline_;
39268       return *this;
39269     }
39270 
39271     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV &
setIndirectCommandsLayoutVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39272       setIndirectCommandsLayout( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT
39273     {
39274       indirectCommandsLayout = indirectCommandsLayout_;
39275       return *this;
39276     }
39277 
setMaxSequencesCountVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39278     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setMaxSequencesCount( uint32_t maxSequencesCount_ ) VULKAN_HPP_NOEXCEPT
39279     {
39280       maxSequencesCount = maxSequencesCount_;
39281       return *this;
39282     }
39283 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39284 
operator VkGeneratedCommandsMemoryRequirementsInfoNV const&VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39285     operator VkGeneratedCommandsMemoryRequirementsInfoNV const &() const VULKAN_HPP_NOEXCEPT
39286     {
39287       return *reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( this );
39288     }
39289 
operator VkGeneratedCommandsMemoryRequirementsInfoNV&VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39290     operator VkGeneratedCommandsMemoryRequirementsInfoNV &() VULKAN_HPP_NOEXCEPT
39291     {
39292       return *reinterpret_cast<VkGeneratedCommandsMemoryRequirementsInfoNV *>( this );
39293     }
39294 
39295 #if defined( VULKAN_HPP_USE_REFLECT )
39296 #  if 14 <= VULKAN_HPP_CPP_VERSION
39297     auto
39298 #  else
39299     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39300                const void * const &,
39301                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
39302                VULKAN_HPP_NAMESPACE::Pipeline const &,
39303                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const &,
39304                uint32_t const &>
39305 #  endif
reflectVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39306       reflect() const VULKAN_HPP_NOEXCEPT
39307     {
39308       return std::tie( sType, pNext, pipelineBindPoint, pipeline, indirectCommandsLayout, maxSequencesCount );
39309     }
39310 #endif
39311 
39312 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39313     auto operator<=>( GeneratedCommandsMemoryRequirementsInfoNV const & ) const = default;
39314 #else
operator ==VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39315     bool operator==( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39316     {
39317 #  if defined( VULKAN_HPP_USE_REFLECT )
39318       return this->reflect() == rhs.reflect();
39319 #  else
39320       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipeline == rhs.pipeline ) &&
39321              ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && ( maxSequencesCount == rhs.maxSequencesCount );
39322 #  endif
39323     }
39324 
operator !=VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39325     bool operator!=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39326     {
39327       return !operator==( rhs );
39328     }
39329 #endif
39330 
39331   public:
39332     VULKAN_HPP_NAMESPACE::StructureType            sType                  = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV;
39333     const void *                                   pNext                  = {};
39334     VULKAN_HPP_NAMESPACE::PipelineBindPoint        pipelineBindPoint      = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
39335     VULKAN_HPP_NAMESPACE::Pipeline                 pipeline               = {};
39336     VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout = {};
39337     uint32_t                                       maxSequencesCount      = {};
39338   };
39339 
39340   template <>
39341   struct CppType<StructureType, StructureType::eGeneratedCommandsMemoryRequirementsInfoNV>
39342   {
39343     using Type = GeneratedCommandsMemoryRequirementsInfoNV;
39344   };
39345 
39346   struct LatencyTimingsFrameReportNV
39347   {
39348     using NativeType = VkLatencyTimingsFrameReportNV;
39349 
39350     static const bool                                  allowDuplicate = false;
39351     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLatencyTimingsFrameReportNV;
39352 
39353 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LatencyTimingsFrameReportNVVULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39354     VULKAN_HPP_CONSTEXPR LatencyTimingsFrameReportNV( uint64_t     presentID_                = {},
39355                                                       uint64_t     inputSampleTimeUs_        = {},
39356                                                       uint64_t     simStartTimeUs_           = {},
39357                                                       uint64_t     simEndTimeUs_             = {},
39358                                                       uint64_t     renderSubmitStartTimeUs_  = {},
39359                                                       uint64_t     renderSubmitEndTimeUs_    = {},
39360                                                       uint64_t     presentStartTimeUs_       = {},
39361                                                       uint64_t     presentEndTimeUs_         = {},
39362                                                       uint64_t     driverStartTimeUs_        = {},
39363                                                       uint64_t     driverEndTimeUs_          = {},
39364                                                       uint64_t     osRenderQueueStartTimeUs_ = {},
39365                                                       uint64_t     osRenderQueueEndTimeUs_   = {},
39366                                                       uint64_t     gpuRenderStartTimeUs_     = {},
39367                                                       uint64_t     gpuRenderEndTimeUs_       = {},
39368                                                       const void * pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
39369       : pNext{ pNext_ }
39370       , presentID{ presentID_ }
39371       , inputSampleTimeUs{ inputSampleTimeUs_ }
39372       , simStartTimeUs{ simStartTimeUs_ }
39373       , simEndTimeUs{ simEndTimeUs_ }
39374       , renderSubmitStartTimeUs{ renderSubmitStartTimeUs_ }
39375       , renderSubmitEndTimeUs{ renderSubmitEndTimeUs_ }
39376       , presentStartTimeUs{ presentStartTimeUs_ }
39377       , presentEndTimeUs{ presentEndTimeUs_ }
39378       , driverStartTimeUs{ driverStartTimeUs_ }
39379       , driverEndTimeUs{ driverEndTimeUs_ }
39380       , osRenderQueueStartTimeUs{ osRenderQueueStartTimeUs_ }
39381       , osRenderQueueEndTimeUs{ osRenderQueueEndTimeUs_ }
39382       , gpuRenderStartTimeUs{ gpuRenderStartTimeUs_ }
39383       , gpuRenderEndTimeUs{ gpuRenderEndTimeUs_ }
39384     {
39385     }
39386 
39387     VULKAN_HPP_CONSTEXPR LatencyTimingsFrameReportNV( LatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39388 
LatencyTimingsFrameReportNVVULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39389     LatencyTimingsFrameReportNV( VkLatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT
39390       : LatencyTimingsFrameReportNV( *reinterpret_cast<LatencyTimingsFrameReportNV const *>( &rhs ) )
39391     {
39392     }
39393 
39394     LatencyTimingsFrameReportNV & operator=( LatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39395 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39396 
operator =VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39397     LatencyTimingsFrameReportNV & operator=( VkLatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT
39398     {
39399       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV const *>( &rhs );
39400       return *this;
39401     }
39402 
operator VkLatencyTimingsFrameReportNV const&VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39403     operator VkLatencyTimingsFrameReportNV const &() const VULKAN_HPP_NOEXCEPT
39404     {
39405       return *reinterpret_cast<const VkLatencyTimingsFrameReportNV *>( this );
39406     }
39407 
operator VkLatencyTimingsFrameReportNV&VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39408     operator VkLatencyTimingsFrameReportNV &() VULKAN_HPP_NOEXCEPT
39409     {
39410       return *reinterpret_cast<VkLatencyTimingsFrameReportNV *>( this );
39411     }
39412 
39413 #if defined( VULKAN_HPP_USE_REFLECT )
39414 #  if 14 <= VULKAN_HPP_CPP_VERSION
39415     auto
39416 #  else
39417     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39418                const void * const &,
39419                uint64_t const &,
39420                uint64_t const &,
39421                uint64_t const &,
39422                uint64_t const &,
39423                uint64_t const &,
39424                uint64_t const &,
39425                uint64_t const &,
39426                uint64_t const &,
39427                uint64_t const &,
39428                uint64_t const &,
39429                uint64_t const &,
39430                uint64_t const &,
39431                uint64_t const &,
39432                uint64_t const &>
39433 #  endif
reflectVULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39434       reflect() const VULKAN_HPP_NOEXCEPT
39435     {
39436       return std::tie( sType,
39437                        pNext,
39438                        presentID,
39439                        inputSampleTimeUs,
39440                        simStartTimeUs,
39441                        simEndTimeUs,
39442                        renderSubmitStartTimeUs,
39443                        renderSubmitEndTimeUs,
39444                        presentStartTimeUs,
39445                        presentEndTimeUs,
39446                        driverStartTimeUs,
39447                        driverEndTimeUs,
39448                        osRenderQueueStartTimeUs,
39449                        osRenderQueueEndTimeUs,
39450                        gpuRenderStartTimeUs,
39451                        gpuRenderEndTimeUs );
39452     }
39453 #endif
39454 
39455 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39456     auto operator<=>( LatencyTimingsFrameReportNV const & ) const = default;
39457 #else
operator ==VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39458     bool operator==( LatencyTimingsFrameReportNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39459     {
39460 #  if defined( VULKAN_HPP_USE_REFLECT )
39461       return this->reflect() == rhs.reflect();
39462 #  else
39463       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentID == rhs.presentID ) && ( inputSampleTimeUs == rhs.inputSampleTimeUs ) &&
39464              ( simStartTimeUs == rhs.simStartTimeUs ) && ( simEndTimeUs == rhs.simEndTimeUs ) && ( renderSubmitStartTimeUs == rhs.renderSubmitStartTimeUs ) &&
39465              ( renderSubmitEndTimeUs == rhs.renderSubmitEndTimeUs ) && ( presentStartTimeUs == rhs.presentStartTimeUs ) &&
39466              ( presentEndTimeUs == rhs.presentEndTimeUs ) && ( driverStartTimeUs == rhs.driverStartTimeUs ) && ( driverEndTimeUs == rhs.driverEndTimeUs ) &&
39467              ( osRenderQueueStartTimeUs == rhs.osRenderQueueStartTimeUs ) && ( osRenderQueueEndTimeUs == rhs.osRenderQueueEndTimeUs ) &&
39468              ( gpuRenderStartTimeUs == rhs.gpuRenderStartTimeUs ) && ( gpuRenderEndTimeUs == rhs.gpuRenderEndTimeUs );
39469 #  endif
39470     }
39471 
operator !=VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39472     bool operator!=( LatencyTimingsFrameReportNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39473     {
39474       return !operator==( rhs );
39475     }
39476 #endif
39477 
39478   public:
39479     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::eLatencyTimingsFrameReportNV;
39480     const void *                        pNext                    = {};
39481     uint64_t                            presentID                = {};
39482     uint64_t                            inputSampleTimeUs        = {};
39483     uint64_t                            simStartTimeUs           = {};
39484     uint64_t                            simEndTimeUs             = {};
39485     uint64_t                            renderSubmitStartTimeUs  = {};
39486     uint64_t                            renderSubmitEndTimeUs    = {};
39487     uint64_t                            presentStartTimeUs       = {};
39488     uint64_t                            presentEndTimeUs         = {};
39489     uint64_t                            driverStartTimeUs        = {};
39490     uint64_t                            driverEndTimeUs          = {};
39491     uint64_t                            osRenderQueueStartTimeUs = {};
39492     uint64_t                            osRenderQueueEndTimeUs   = {};
39493     uint64_t                            gpuRenderStartTimeUs     = {};
39494     uint64_t                            gpuRenderEndTimeUs       = {};
39495   };
39496 
39497   template <>
39498   struct CppType<StructureType, StructureType::eLatencyTimingsFrameReportNV>
39499   {
39500     using Type = LatencyTimingsFrameReportNV;
39501   };
39502 
39503   struct GetLatencyMarkerInfoNV
39504   {
39505     using NativeType = VkGetLatencyMarkerInfoNV;
39506 
39507     static const bool                                  allowDuplicate = false;
39508     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGetLatencyMarkerInfoNV;
39509 
39510 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GetLatencyMarkerInfoNVVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39511     VULKAN_HPP_CONSTEXPR GetLatencyMarkerInfoNV( uint32_t                                            timingCount_ = {},
39512                                                  VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV * pTimings_    = {},
39513                                                  const void *                                        pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
39514       : pNext{ pNext_ }
39515       , timingCount{ timingCount_ }
39516       , pTimings{ pTimings_ }
39517     {
39518     }
39519 
39520     VULKAN_HPP_CONSTEXPR GetLatencyMarkerInfoNV( GetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39521 
GetLatencyMarkerInfoNVVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39522     GetLatencyMarkerInfoNV( VkGetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
39523       : GetLatencyMarkerInfoNV( *reinterpret_cast<GetLatencyMarkerInfoNV const *>( &rhs ) )
39524     {
39525     }
39526 
39527 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GetLatencyMarkerInfoNVVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39528     GetLatencyMarkerInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV> const & timings_,
39529                             const void *                                                                                             pNext_ = nullptr )
39530       : pNext( pNext_ ), timingCount( static_cast<uint32_t>( timings_.size() ) ), pTimings( timings_.data() )
39531     {
39532     }
39533 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39534 
39535     GetLatencyMarkerInfoNV & operator=( GetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39536 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39537 
operator =VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39538     GetLatencyMarkerInfoNV & operator=( VkGetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
39539     {
39540       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV const *>( &rhs );
39541       return *this;
39542     }
39543 
39544 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39545     VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39546     {
39547       pNext = pNext_;
39548       return *this;
39549     }
39550 
setTimingCountVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39551     VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV & setTimingCount( uint32_t timingCount_ ) VULKAN_HPP_NOEXCEPT
39552     {
39553       timingCount = timingCount_;
39554       return *this;
39555     }
39556 
setPTimingsVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39557     VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV & setPTimings( VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV * pTimings_ ) VULKAN_HPP_NOEXCEPT
39558     {
39559       pTimings = pTimings_;
39560       return *this;
39561     }
39562 
39563 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
39564     GetLatencyMarkerInfoNV &
setTimingsVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39565       setTimings( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV> const & timings_ ) VULKAN_HPP_NOEXCEPT
39566     {
39567       timingCount = static_cast<uint32_t>( timings_.size() );
39568       pTimings    = timings_.data();
39569       return *this;
39570     }
39571 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39572 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39573 
operator VkGetLatencyMarkerInfoNV const&VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39574     operator VkGetLatencyMarkerInfoNV const &() const VULKAN_HPP_NOEXCEPT
39575     {
39576       return *reinterpret_cast<const VkGetLatencyMarkerInfoNV *>( this );
39577     }
39578 
operator VkGetLatencyMarkerInfoNV&VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39579     operator VkGetLatencyMarkerInfoNV &() VULKAN_HPP_NOEXCEPT
39580     {
39581       return *reinterpret_cast<VkGetLatencyMarkerInfoNV *>( this );
39582     }
39583 
39584 #if defined( VULKAN_HPP_USE_REFLECT )
39585 #  if 14 <= VULKAN_HPP_CPP_VERSION
39586     auto
39587 #  else
39588     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV * const &>
39589 #  endif
reflectVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39590       reflect() const VULKAN_HPP_NOEXCEPT
39591     {
39592       return std::tie( sType, pNext, timingCount, pTimings );
39593     }
39594 #endif
39595 
39596 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39597     auto operator<=>( GetLatencyMarkerInfoNV const & ) const = default;
39598 #else
operator ==VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39599     bool operator==( GetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39600     {
39601 #  if defined( VULKAN_HPP_USE_REFLECT )
39602       return this->reflect() == rhs.reflect();
39603 #  else
39604       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timingCount == rhs.timingCount ) && ( pTimings == rhs.pTimings );
39605 #  endif
39606     }
39607 
operator !=VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39608     bool operator!=( GetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39609     {
39610       return !operator==( rhs );
39611     }
39612 #endif
39613 
39614   public:
39615     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eGetLatencyMarkerInfoNV;
39616     const void *                                        pNext       = {};
39617     uint32_t                                            timingCount = {};
39618     VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV * pTimings    = {};
39619   };
39620 
39621   template <>
39622   struct CppType<StructureType, StructureType::eGetLatencyMarkerInfoNV>
39623   {
39624     using Type = GetLatencyMarkerInfoNV;
39625   };
39626 
39627   struct VertexInputBindingDescription
39628   {
39629     using NativeType = VkVertexInputBindingDescription;
39630 
39631 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
39632     VULKAN_HPP_CONSTEXPR
VertexInputBindingDescriptionVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39633       VertexInputBindingDescription( uint32_t                              binding_   = {},
39634                                      uint32_t                              stride_    = {},
39635                                      VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex ) VULKAN_HPP_NOEXCEPT
39636       : binding{ binding_ }
39637       , stride{ stride_ }
39638       , inputRate{ inputRate_ }
39639     {
39640     }
39641 
39642     VULKAN_HPP_CONSTEXPR VertexInputBindingDescription( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39643 
VertexInputBindingDescriptionVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39644     VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
39645       : VertexInputBindingDescription( *reinterpret_cast<VertexInputBindingDescription const *>( &rhs ) )
39646     {
39647     }
39648 
39649     VertexInputBindingDescription & operator=( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39650 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39651 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDescription39652     VertexInputBindingDescription & operator=( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
39653     {
39654       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription const *>( &rhs );
39655       return *this;
39656     }
39657 
39658 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39659     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
39660     {
39661       binding = binding_;
39662       return *this;
39663     }
39664 
setStrideVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39665     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
39666     {
39667       stride = stride_;
39668       return *this;
39669     }
39670 
setInputRateVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39671     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT
39672     {
39673       inputRate = inputRate_;
39674       return *this;
39675     }
39676 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39677 
operator VkVertexInputBindingDescription const&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription39678     operator VkVertexInputBindingDescription const &() const VULKAN_HPP_NOEXCEPT
39679     {
39680       return *reinterpret_cast<const VkVertexInputBindingDescription *>( this );
39681     }
39682 
operator VkVertexInputBindingDescription&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription39683     operator VkVertexInputBindingDescription &() VULKAN_HPP_NOEXCEPT
39684     {
39685       return *reinterpret_cast<VkVertexInputBindingDescription *>( this );
39686     }
39687 
39688 #if defined( VULKAN_HPP_USE_REFLECT )
39689 #  if 14 <= VULKAN_HPP_CPP_VERSION
39690     auto
39691 #  else
39692     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::VertexInputRate const &>
39693 #  endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39694       reflect() const VULKAN_HPP_NOEXCEPT
39695     {
39696       return std::tie( binding, stride, inputRate );
39697     }
39698 #endif
39699 
39700 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39701     auto operator<=>( VertexInputBindingDescription const & ) const = default;
39702 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDescription39703     bool operator==( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
39704     {
39705 #  if defined( VULKAN_HPP_USE_REFLECT )
39706       return this->reflect() == rhs.reflect();
39707 #  else
39708       return ( binding == rhs.binding ) && ( stride == rhs.stride ) && ( inputRate == rhs.inputRate );
39709 #  endif
39710     }
39711 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDescription39712     bool operator!=( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
39713     {
39714       return !operator==( rhs );
39715     }
39716 #endif
39717 
39718   public:
39719     uint32_t                              binding   = {};
39720     uint32_t                              stride    = {};
39721     VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex;
39722   };
39723 
39724   struct VertexInputAttributeDescription
39725   {
39726     using NativeType = VkVertexInputAttributeDescription;
39727 
39728 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputAttributeDescriptionVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39729     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription( uint32_t                     location_ = {},
39730                                                           uint32_t                     binding_  = {},
39731                                                           VULKAN_HPP_NAMESPACE::Format format_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
39732                                                           uint32_t                     offset_   = {} ) VULKAN_HPP_NOEXCEPT
39733       : location{ location_ }
39734       , binding{ binding_ }
39735       , format{ format_ }
39736       , offset{ offset_ }
39737     {
39738     }
39739 
39740     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39741 
VertexInputAttributeDescriptionVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39742     VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
39743       : VertexInputAttributeDescription( *reinterpret_cast<VertexInputAttributeDescription const *>( &rhs ) )
39744     {
39745     }
39746 
39747     VertexInputAttributeDescription & operator=( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39748 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39749 
operator =VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39750     VertexInputAttributeDescription & operator=( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
39751     {
39752       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription const *>( &rhs );
39753       return *this;
39754     }
39755 
39756 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setLocationVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39757     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT
39758     {
39759       location = location_;
39760       return *this;
39761     }
39762 
setBindingVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39763     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
39764     {
39765       binding = binding_;
39766       return *this;
39767     }
39768 
setFormatVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39769     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
39770     {
39771       format = format_;
39772       return *this;
39773     }
39774 
setOffsetVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39775     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
39776     {
39777       offset = offset_;
39778       return *this;
39779     }
39780 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39781 
operator VkVertexInputAttributeDescription const&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39782     operator VkVertexInputAttributeDescription const &() const VULKAN_HPP_NOEXCEPT
39783     {
39784       return *reinterpret_cast<const VkVertexInputAttributeDescription *>( this );
39785     }
39786 
operator VkVertexInputAttributeDescription&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39787     operator VkVertexInputAttributeDescription &() VULKAN_HPP_NOEXCEPT
39788     {
39789       return *reinterpret_cast<VkVertexInputAttributeDescription *>( this );
39790     }
39791 
39792 #if defined( VULKAN_HPP_USE_REFLECT )
39793 #  if 14 <= VULKAN_HPP_CPP_VERSION
39794     auto
39795 #  else
39796     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Format const &, uint32_t const &>
39797 #  endif
reflectVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39798       reflect() const VULKAN_HPP_NOEXCEPT
39799     {
39800       return std::tie( location, binding, format, offset );
39801     }
39802 #endif
39803 
39804 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39805     auto operator<=>( VertexInputAttributeDescription const & ) const = default;
39806 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39807     bool operator==( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
39808     {
39809 #  if defined( VULKAN_HPP_USE_REFLECT )
39810       return this->reflect() == rhs.reflect();
39811 #  else
39812       return ( location == rhs.location ) && ( binding == rhs.binding ) && ( format == rhs.format ) && ( offset == rhs.offset );
39813 #  endif
39814     }
39815 
operator !=VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39816     bool operator!=( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
39817     {
39818       return !operator==( rhs );
39819     }
39820 #endif
39821 
39822   public:
39823     uint32_t                     location = {};
39824     uint32_t                     binding  = {};
39825     VULKAN_HPP_NAMESPACE::Format format   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
39826     uint32_t                     offset   = {};
39827   };
39828 
39829   struct PipelineVertexInputStateCreateInfo
39830   {
39831     using NativeType = VkPipelineVertexInputStateCreateInfo;
39832 
39833     static const bool                                  allowDuplicate = false;
39834     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineVertexInputStateCreateInfo;
39835 
39836 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39837     VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags   flags_                           = {},
39838                                                              uint32_t                                                    vertexBindingDescriptionCount_   = {},
39839                                                              const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions_      = {},
39840                                                              uint32_t                                                    vertexAttributeDescriptionCount_ = {},
39841                                                              const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions_  = {},
39842                                                              const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
39843       : pNext{ pNext_ }
39844       , flags{ flags_ }
39845       , vertexBindingDescriptionCount{ vertexBindingDescriptionCount_ }
39846       , pVertexBindingDescriptions{ pVertexBindingDescriptions_ }
39847       , vertexAttributeDescriptionCount{ vertexAttributeDescriptionCount_ }
39848       , pVertexAttributeDescriptions{ pVertexAttributeDescriptions_ }
39849     {
39850     }
39851 
39852     VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39853 
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39854     PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39855       : PipelineVertexInputStateCreateInfo( *reinterpret_cast<PipelineVertexInputStateCreateInfo const *>( &rhs ) )
39856     {
39857     }
39858 
39859 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39860     PipelineVertexInputStateCreateInfo(
39861       VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags                                                          flags_,
39862       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription> const &   vertexBindingDescriptions_,
39863       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription> const & vertexAttributeDescriptions_ = {},
39864       const void *                                                                                                       pNext_ = nullptr )
39865       : pNext( pNext_ )
39866       , flags( flags_ )
39867       , vertexBindingDescriptionCount( static_cast<uint32_t>( vertexBindingDescriptions_.size() ) )
39868       , pVertexBindingDescriptions( vertexBindingDescriptions_.data() )
39869       , vertexAttributeDescriptionCount( static_cast<uint32_t>( vertexAttributeDescriptions_.size() ) )
39870       , pVertexAttributeDescriptions( vertexAttributeDescriptions_.data() )
39871     {
39872     }
39873 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39874 
39875     PipelineVertexInputStateCreateInfo & operator=( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39876 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39877 
operator =VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39878     PipelineVertexInputStateCreateInfo & operator=( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39879     {
39880       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo const *>( &rhs );
39881       return *this;
39882     }
39883 
39884 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39885     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39886     {
39887       pNext = pNext_;
39888       return *this;
39889     }
39890 
39891     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39892       setFlags( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
39893     {
39894       flags = flags_;
39895       return *this;
39896     }
39897 
setVertexBindingDescriptionCountVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39898     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ ) VULKAN_HPP_NOEXCEPT
39899     {
39900       vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
39901       return *this;
39902     }
39903 
39904     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setPVertexBindingDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39905       setPVertexBindingDescriptions( const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT
39906     {
39907       pVertexBindingDescriptions = pVertexBindingDescriptions_;
39908       return *this;
39909     }
39910 
39911 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexBindingDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39912     PipelineVertexInputStateCreateInfo & setVertexBindingDescriptions(
39913       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription> const & vertexBindingDescriptions_ )
39914       VULKAN_HPP_NOEXCEPT
39915     {
39916       vertexBindingDescriptionCount = static_cast<uint32_t>( vertexBindingDescriptions_.size() );
39917       pVertexBindingDescriptions    = vertexBindingDescriptions_.data();
39918       return *this;
39919     }
39920 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39921 
39922     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setVertexAttributeDescriptionCountVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39923       setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ ) VULKAN_HPP_NOEXCEPT
39924     {
39925       vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
39926       return *this;
39927     }
39928 
39929     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setPVertexAttributeDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39930       setPVertexAttributeDescriptions( const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT
39931     {
39932       pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
39933       return *this;
39934     }
39935 
39936 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexAttributeDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39937     PipelineVertexInputStateCreateInfo & setVertexAttributeDescriptions(
39938       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription> const & vertexAttributeDescriptions_ )
39939       VULKAN_HPP_NOEXCEPT
39940     {
39941       vertexAttributeDescriptionCount = static_cast<uint32_t>( vertexAttributeDescriptions_.size() );
39942       pVertexAttributeDescriptions    = vertexAttributeDescriptions_.data();
39943       return *this;
39944     }
39945 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39946 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39947 
operator VkPipelineVertexInputStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39948     operator VkPipelineVertexInputStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
39949     {
39950       return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo *>( this );
39951     }
39952 
operator VkPipelineVertexInputStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39953     operator VkPipelineVertexInputStateCreateInfo &() VULKAN_HPP_NOEXCEPT
39954     {
39955       return *reinterpret_cast<VkPipelineVertexInputStateCreateInfo *>( this );
39956     }
39957 
39958 #if defined( VULKAN_HPP_USE_REFLECT )
39959 #  if 14 <= VULKAN_HPP_CPP_VERSION
39960     auto
39961 #  else
39962     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39963                const void * const &,
39964                VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags const &,
39965                uint32_t const &,
39966                const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * const &,
39967                uint32_t const &,
39968                const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * const &>
39969 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39970       reflect() const VULKAN_HPP_NOEXCEPT
39971     {
39972       return std::tie(
39973         sType, pNext, flags, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions );
39974     }
39975 #endif
39976 
39977 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39978     auto operator<=>( PipelineVertexInputStateCreateInfo const & ) const = default;
39979 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39980     bool operator==( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
39981     {
39982 #  if defined( VULKAN_HPP_USE_REFLECT )
39983       return this->reflect() == rhs.reflect();
39984 #  else
39985       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
39986              ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount ) && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions ) &&
39987              ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount ) && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
39988 #  endif
39989     }
39990 
operator !=VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39991     bool operator!=( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
39992     {
39993       return !operator==( rhs );
39994     }
39995 #endif
39996 
39997   public:
39998     VULKAN_HPP_NAMESPACE::StructureType                           sType                           = StructureType::ePipelineVertexInputStateCreateInfo;
39999     const void *                                                  pNext                           = {};
40000     VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags     flags                           = {};
40001     uint32_t                                                      vertexBindingDescriptionCount   = {};
40002     const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription *   pVertexBindingDescriptions      = {};
40003     uint32_t                                                      vertexAttributeDescriptionCount = {};
40004     const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions    = {};
40005   };
40006 
40007   template <>
40008   struct CppType<StructureType, StructureType::ePipelineVertexInputStateCreateInfo>
40009   {
40010     using Type = PipelineVertexInputStateCreateInfo;
40011   };
40012 
40013   struct PipelineInputAssemblyStateCreateInfo
40014   {
40015     using NativeType = VkPipelineInputAssemblyStateCreateInfo;
40016 
40017     static const bool                                  allowDuplicate = false;
40018     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineInputAssemblyStateCreateInfo;
40019 
40020 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
40021     VULKAN_HPP_CONSTEXPR
PipelineInputAssemblyStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40022       PipelineInputAssemblyStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ = {},
40023                                             VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList,
40024                                             VULKAN_HPP_NAMESPACE::Bool32            primitiveRestartEnable_ = {},
40025                                             const void *                            pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
40026       : pNext{ pNext_ }
40027       , flags{ flags_ }
40028       , topology{ topology_ }
40029       , primitiveRestartEnable{ primitiveRestartEnable_ }
40030     {
40031     }
40032 
40033     VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40034 
PipelineInputAssemblyStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40035     PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40036       : PipelineInputAssemblyStateCreateInfo( *reinterpret_cast<PipelineInputAssemblyStateCreateInfo const *>( &rhs ) )
40037     {
40038     }
40039 
40040     PipelineInputAssemblyStateCreateInfo & operator=( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40041 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40042 
operator =VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40043     PipelineInputAssemblyStateCreateInfo & operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40044     {
40045       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo const *>( &rhs );
40046       return *this;
40047     }
40048 
40049 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40050     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40051     {
40052       pNext = pNext_;
40053       return *this;
40054     }
40055 
40056     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40057       setFlags( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40058     {
40059       flags = flags_;
40060       return *this;
40061     }
40062 
setTopologyVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40063     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ ) VULKAN_HPP_NOEXCEPT
40064     {
40065       topology = topology_;
40066       return *this;
40067     }
40068 
40069     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo &
setPrimitiveRestartEnableVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40070       setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable_ ) VULKAN_HPP_NOEXCEPT
40071     {
40072       primitiveRestartEnable = primitiveRestartEnable_;
40073       return *this;
40074     }
40075 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40076 
operator VkPipelineInputAssemblyStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40077     operator VkPipelineInputAssemblyStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
40078     {
40079       return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo *>( this );
40080     }
40081 
operator VkPipelineInputAssemblyStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40082     operator VkPipelineInputAssemblyStateCreateInfo &() VULKAN_HPP_NOEXCEPT
40083     {
40084       return *reinterpret_cast<VkPipelineInputAssemblyStateCreateInfo *>( this );
40085     }
40086 
40087 #if defined( VULKAN_HPP_USE_REFLECT )
40088 #  if 14 <= VULKAN_HPP_CPP_VERSION
40089     auto
40090 #  else
40091     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40092                const void * const &,
40093                VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags const &,
40094                VULKAN_HPP_NAMESPACE::PrimitiveTopology const &,
40095                VULKAN_HPP_NAMESPACE::Bool32 const &>
40096 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40097       reflect() const VULKAN_HPP_NOEXCEPT
40098     {
40099       return std::tie( sType, pNext, flags, topology, primitiveRestartEnable );
40100     }
40101 #endif
40102 
40103 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40104     auto operator<=>( PipelineInputAssemblyStateCreateInfo const & ) const = default;
40105 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40106     bool operator==( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40107     {
40108 #  if defined( VULKAN_HPP_USE_REFLECT )
40109       return this->reflect() == rhs.reflect();
40110 #  else
40111       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( topology == rhs.topology ) &&
40112              ( primitiveRestartEnable == rhs.primitiveRestartEnable );
40113 #  endif
40114     }
40115 
operator !=VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo40116     bool operator!=( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40117     {
40118       return !operator==( rhs );
40119     }
40120 #endif
40121 
40122   public:
40123     VULKAN_HPP_NAMESPACE::StructureType                         sType                  = StructureType::ePipelineInputAssemblyStateCreateInfo;
40124     const void *                                                pNext                  = {};
40125     VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags                  = {};
40126     VULKAN_HPP_NAMESPACE::PrimitiveTopology                     topology               = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList;
40127     VULKAN_HPP_NAMESPACE::Bool32                                primitiveRestartEnable = {};
40128   };
40129 
40130   template <>
40131   struct CppType<StructureType, StructureType::ePipelineInputAssemblyStateCreateInfo>
40132   {
40133     using Type = PipelineInputAssemblyStateCreateInfo;
40134   };
40135 
40136   struct PipelineTessellationStateCreateInfo
40137   {
40138     using NativeType = VkPipelineTessellationStateCreateInfo;
40139 
40140     static const bool                                  allowDuplicate = false;
40141     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineTessellationStateCreateInfo;
40142 
40143 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineTessellationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40144     VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_              = {},
40145                                                               uint32_t                                                   patchControlPoints_ = {},
40146                                                               const void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
40147       : pNext{ pNext_ }
40148       , flags{ flags_ }
40149       , patchControlPoints{ patchControlPoints_ }
40150     {
40151     }
40152 
40153     VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40154 
PipelineTessellationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40155     PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40156       : PipelineTessellationStateCreateInfo( *reinterpret_cast<PipelineTessellationStateCreateInfo const *>( &rhs ) )
40157     {
40158     }
40159 
40160     PipelineTessellationStateCreateInfo & operator=( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40161 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40162 
operator =VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40163     PipelineTessellationStateCreateInfo & operator=( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40164     {
40165       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo const *>( &rhs );
40166       return *this;
40167     }
40168 
40169 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40170     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40171     {
40172       pNext = pNext_;
40173       return *this;
40174     }
40175 
40176     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40177       setFlags( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40178     {
40179       flags = flags_;
40180       return *this;
40181     }
40182 
setPatchControlPointsVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40183     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setPatchControlPoints( uint32_t patchControlPoints_ ) VULKAN_HPP_NOEXCEPT
40184     {
40185       patchControlPoints = patchControlPoints_;
40186       return *this;
40187     }
40188 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40189 
operator VkPipelineTessellationStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40190     operator VkPipelineTessellationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
40191     {
40192       return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo *>( this );
40193     }
40194 
operator VkPipelineTessellationStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40195     operator VkPipelineTessellationStateCreateInfo &() VULKAN_HPP_NOEXCEPT
40196     {
40197       return *reinterpret_cast<VkPipelineTessellationStateCreateInfo *>( this );
40198     }
40199 
40200 #if defined( VULKAN_HPP_USE_REFLECT )
40201 #  if 14 <= VULKAN_HPP_CPP_VERSION
40202     auto
40203 #  else
40204     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40205                const void * const &,
40206                VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags const &,
40207                uint32_t const &>
40208 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40209       reflect() const VULKAN_HPP_NOEXCEPT
40210     {
40211       return std::tie( sType, pNext, flags, patchControlPoints );
40212     }
40213 #endif
40214 
40215 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40216     auto operator<=>( PipelineTessellationStateCreateInfo const & ) const = default;
40217 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40218     bool operator==( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40219     {
40220 #  if defined( VULKAN_HPP_USE_REFLECT )
40221       return this->reflect() == rhs.reflect();
40222 #  else
40223       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( patchControlPoints == rhs.patchControlPoints );
40224 #  endif
40225     }
40226 
operator !=VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo40227     bool operator!=( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40228     {
40229       return !operator==( rhs );
40230     }
40231 #endif
40232 
40233   public:
40234     VULKAN_HPP_NAMESPACE::StructureType                        sType              = StructureType::ePipelineTessellationStateCreateInfo;
40235     const void *                                               pNext              = {};
40236     VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags              = {};
40237     uint32_t                                                   patchControlPoints = {};
40238   };
40239 
40240   template <>
40241   struct CppType<StructureType, StructureType::ePipelineTessellationStateCreateInfo>
40242   {
40243     using Type = PipelineTessellationStateCreateInfo;
40244   };
40245 
40246   struct PipelineViewportStateCreateInfo
40247   {
40248     using NativeType = VkPipelineViewportStateCreateInfo;
40249 
40250     static const bool                                  allowDuplicate = false;
40251     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportStateCreateInfo;
40252 
40253 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40254     VULKAN_HPP_CONSTEXPR PipelineViewportStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_         = {},
40255                                                           uint32_t                                               viewportCount_ = {},
40256                                                           const VULKAN_HPP_NAMESPACE::Viewport *                 pViewports_    = {},
40257                                                           uint32_t                                               scissorCount_  = {},
40258                                                           const VULKAN_HPP_NAMESPACE::Rect2D *                   pScissors_     = {},
40259                                                           const void *                                           pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
40260       : pNext{ pNext_ }
40261       , flags{ flags_ }
40262       , viewportCount{ viewportCount_ }
40263       , pViewports{ pViewports_ }
40264       , scissorCount{ scissorCount_ }
40265       , pScissors{ pScissors_ }
40266     {
40267     }
40268 
40269     VULKAN_HPP_CONSTEXPR PipelineViewportStateCreateInfo( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40270 
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40271     PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40272       : PipelineViewportStateCreateInfo( *reinterpret_cast<PipelineViewportStateCreateInfo const *>( &rhs ) )
40273     {
40274     }
40275 
40276 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40277     PipelineViewportStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags                                      flags_,
40278                                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports_,
40279                                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const &   scissors_ = {},
40280                                      const void *                                                                                pNext_    = nullptr )
40281       : pNext( pNext_ )
40282       , flags( flags_ )
40283       , viewportCount( static_cast<uint32_t>( viewports_.size() ) )
40284       , pViewports( viewports_.data() )
40285       , scissorCount( static_cast<uint32_t>( scissors_.size() ) )
40286       , pScissors( scissors_.data() )
40287     {
40288     }
40289 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40290 
40291     PipelineViewportStateCreateInfo & operator=( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40292 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40293 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40294     PipelineViewportStateCreateInfo & operator=( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40295     {
40296       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo const *>( &rhs );
40297       return *this;
40298     }
40299 
40300 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40301     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40302     {
40303       pNext = pNext_;
40304       return *this;
40305     }
40306 
setFlagsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40307     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40308     {
40309       flags = flags_;
40310       return *this;
40311     }
40312 
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40313     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
40314     {
40315       viewportCount = viewportCount_;
40316       return *this;
40317     }
40318 
setPViewportsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40319     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPViewports( const VULKAN_HPP_NAMESPACE::Viewport * pViewports_ ) VULKAN_HPP_NOEXCEPT
40320     {
40321       pViewports = pViewports_;
40322       return *this;
40323     }
40324 
40325 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
40326     PipelineViewportStateCreateInfo &
setViewportsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40327       setViewports( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports_ ) VULKAN_HPP_NOEXCEPT
40328     {
40329       viewportCount = static_cast<uint32_t>( viewports_.size() );
40330       pViewports    = viewports_.data();
40331       return *this;
40332     }
40333 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40334 
setScissorCountVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40335     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setScissorCount( uint32_t scissorCount_ ) VULKAN_HPP_NOEXCEPT
40336     {
40337       scissorCount = scissorCount_;
40338       return *this;
40339     }
40340 
setPScissorsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40341     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPScissors( const VULKAN_HPP_NAMESPACE::Rect2D * pScissors_ ) VULKAN_HPP_NOEXCEPT
40342     {
40343       pScissors = pScissors_;
40344       return *this;
40345     }
40346 
40347 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
40348     PipelineViewportStateCreateInfo &
setScissorsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40349       setScissors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors_ ) VULKAN_HPP_NOEXCEPT
40350     {
40351       scissorCount = static_cast<uint32_t>( scissors_.size() );
40352       pScissors    = scissors_.data();
40353       return *this;
40354     }
40355 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40356 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40357 
operator VkPipelineViewportStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40358     operator VkPipelineViewportStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
40359     {
40360       return *reinterpret_cast<const VkPipelineViewportStateCreateInfo *>( this );
40361     }
40362 
operator VkPipelineViewportStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40363     operator VkPipelineViewportStateCreateInfo &() VULKAN_HPP_NOEXCEPT
40364     {
40365       return *reinterpret_cast<VkPipelineViewportStateCreateInfo *>( this );
40366     }
40367 
40368 #if defined( VULKAN_HPP_USE_REFLECT )
40369 #  if 14 <= VULKAN_HPP_CPP_VERSION
40370     auto
40371 #  else
40372     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40373                const void * const &,
40374                VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags const &,
40375                uint32_t const &,
40376                const VULKAN_HPP_NAMESPACE::Viewport * const &,
40377                uint32_t const &,
40378                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
40379 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40380       reflect() const VULKAN_HPP_NOEXCEPT
40381     {
40382       return std::tie( sType, pNext, flags, viewportCount, pViewports, scissorCount, pScissors );
40383     }
40384 #endif
40385 
40386 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40387     auto operator<=>( PipelineViewportStateCreateInfo const & ) const = default;
40388 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40389     bool operator==( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40390     {
40391 #  if defined( VULKAN_HPP_USE_REFLECT )
40392       return this->reflect() == rhs.reflect();
40393 #  else
40394       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( viewportCount == rhs.viewportCount ) &&
40395              ( pViewports == rhs.pViewports ) && ( scissorCount == rhs.scissorCount ) && ( pScissors == rhs.pScissors );
40396 #  endif
40397     }
40398 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40399     bool operator!=( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40400     {
40401       return !operator==( rhs );
40402     }
40403 #endif
40404 
40405   public:
40406     VULKAN_HPP_NAMESPACE::StructureType                    sType         = StructureType::ePipelineViewportStateCreateInfo;
40407     const void *                                           pNext         = {};
40408     VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags         = {};
40409     uint32_t                                               viewportCount = {};
40410     const VULKAN_HPP_NAMESPACE::Viewport *                 pViewports    = {};
40411     uint32_t                                               scissorCount  = {};
40412     const VULKAN_HPP_NAMESPACE::Rect2D *                   pScissors     = {};
40413   };
40414 
40415   template <>
40416   struct CppType<StructureType, StructureType::ePipelineViewportStateCreateInfo>
40417   {
40418     using Type = PipelineViewportStateCreateInfo;
40419   };
40420 
40421   struct PipelineRasterizationStateCreateInfo
40422   {
40423     using NativeType = VkPipelineRasterizationStateCreateInfo;
40424 
40425     static const bool                                  allowDuplicate = false;
40426     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationStateCreateInfo;
40427 
40428 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40429     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_                   = {},
40430                                                                VULKAN_HPP_NAMESPACE::Bool32                                depthClampEnable_        = {},
40431                                                                VULKAN_HPP_NAMESPACE::Bool32                                rasterizerDiscardEnable_ = {},
40432                                                                VULKAN_HPP_NAMESPACE::PolygonMode   polygonMode_ = VULKAN_HPP_NAMESPACE::PolygonMode::eFill,
40433                                                                VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_    = {},
40434                                                                VULKAN_HPP_NAMESPACE::FrontFace frontFace_ = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise,
40435                                                                VULKAN_HPP_NAMESPACE::Bool32    depthBiasEnable_         = {},
40436                                                                float                           depthBiasConstantFactor_ = {},
40437                                                                float                           depthBiasClamp_          = {},
40438                                                                float                           depthBiasSlopeFactor_    = {},
40439                                                                float                           lineWidth_               = {},
40440                                                                const void *                    pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
40441       : pNext{ pNext_ }
40442       , flags{ flags_ }
40443       , depthClampEnable{ depthClampEnable_ }
40444       , rasterizerDiscardEnable{ rasterizerDiscardEnable_ }
40445       , polygonMode{ polygonMode_ }
40446       , cullMode{ cullMode_ }
40447       , frontFace{ frontFace_ }
40448       , depthBiasEnable{ depthBiasEnable_ }
40449       , depthBiasConstantFactor{ depthBiasConstantFactor_ }
40450       , depthBiasClamp{ depthBiasClamp_ }
40451       , depthBiasSlopeFactor{ depthBiasSlopeFactor_ }
40452       , lineWidth{ lineWidth_ }
40453     {
40454     }
40455 
40456     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40457 
PipelineRasterizationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40458     PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40459       : PipelineRasterizationStateCreateInfo( *reinterpret_cast<PipelineRasterizationStateCreateInfo const *>( &rhs ) )
40460     {
40461     }
40462 
40463     PipelineRasterizationStateCreateInfo & operator=( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40464 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40465 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40466     PipelineRasterizationStateCreateInfo & operator=( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40467     {
40468       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo const *>( &rhs );
40469       return *this;
40470     }
40471 
40472 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40473     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40474     {
40475       pNext = pNext_;
40476       return *this;
40477     }
40478 
40479     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40480       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40481     {
40482       flags = flags_;
40483       return *this;
40484     }
40485 
setDepthClampEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40486     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthClampEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable_ ) VULKAN_HPP_NOEXCEPT
40487     {
40488       depthClampEnable = depthClampEnable_;
40489       return *this;
40490     }
40491 
40492     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setRasterizerDiscardEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40493       setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable_ ) VULKAN_HPP_NOEXCEPT
40494     {
40495       rasterizerDiscardEnable = rasterizerDiscardEnable_;
40496       return *this;
40497     }
40498 
setPolygonModeVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40499     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setPolygonMode( VULKAN_HPP_NAMESPACE::PolygonMode polygonMode_ ) VULKAN_HPP_NOEXCEPT
40500     {
40501       polygonMode = polygonMode_;
40502       return *this;
40503     }
40504 
setCullModeVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40505     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_ ) VULKAN_HPP_NOEXCEPT
40506     {
40507       cullMode = cullMode_;
40508       return *this;
40509     }
40510 
setFrontFaceVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40511     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace_ ) VULKAN_HPP_NOEXCEPT
40512     {
40513       frontFace = frontFace_;
40514       return *this;
40515     }
40516 
setDepthBiasEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40517     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable_ ) VULKAN_HPP_NOEXCEPT
40518     {
40519       depthBiasEnable = depthBiasEnable_;
40520       return *this;
40521     }
40522 
setDepthBiasConstantFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40523     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) VULKAN_HPP_NOEXCEPT
40524     {
40525       depthBiasConstantFactor = depthBiasConstantFactor_;
40526       return *this;
40527     }
40528 
setDepthBiasClampVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40529     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasClamp( float depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT
40530     {
40531       depthBiasClamp = depthBiasClamp_;
40532       return *this;
40533     }
40534 
setDepthBiasSlopeFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40535     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) VULKAN_HPP_NOEXCEPT
40536     {
40537       depthBiasSlopeFactor = depthBiasSlopeFactor_;
40538       return *this;
40539     }
40540 
setLineWidthVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40541     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setLineWidth( float lineWidth_ ) VULKAN_HPP_NOEXCEPT
40542     {
40543       lineWidth = lineWidth_;
40544       return *this;
40545     }
40546 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40547 
operator VkPipelineRasterizationStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40548     operator VkPipelineRasterizationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
40549     {
40550       return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo *>( this );
40551     }
40552 
operator VkPipelineRasterizationStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40553     operator VkPipelineRasterizationStateCreateInfo &() VULKAN_HPP_NOEXCEPT
40554     {
40555       return *reinterpret_cast<VkPipelineRasterizationStateCreateInfo *>( this );
40556     }
40557 
40558 #if defined( VULKAN_HPP_USE_REFLECT )
40559 #  if 14 <= VULKAN_HPP_CPP_VERSION
40560     auto
40561 #  else
40562     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40563                const void * const &,
40564                VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags const &,
40565                VULKAN_HPP_NAMESPACE::Bool32 const &,
40566                VULKAN_HPP_NAMESPACE::Bool32 const &,
40567                VULKAN_HPP_NAMESPACE::PolygonMode const &,
40568                VULKAN_HPP_NAMESPACE::CullModeFlags const &,
40569                VULKAN_HPP_NAMESPACE::FrontFace const &,
40570                VULKAN_HPP_NAMESPACE::Bool32 const &,
40571                float const &,
40572                float const &,
40573                float const &,
40574                float const &>
40575 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40576       reflect() const VULKAN_HPP_NOEXCEPT
40577     {
40578       return std::tie( sType,
40579                        pNext,
40580                        flags,
40581                        depthClampEnable,
40582                        rasterizerDiscardEnable,
40583                        polygonMode,
40584                        cullMode,
40585                        frontFace,
40586                        depthBiasEnable,
40587                        depthBiasConstantFactor,
40588                        depthBiasClamp,
40589                        depthBiasSlopeFactor,
40590                        lineWidth );
40591     }
40592 #endif
40593 
40594 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40595     auto operator<=>( PipelineRasterizationStateCreateInfo const & ) const = default;
40596 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40597     bool operator==( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40598     {
40599 #  if defined( VULKAN_HPP_USE_REFLECT )
40600       return this->reflect() == rhs.reflect();
40601 #  else
40602       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( depthClampEnable == rhs.depthClampEnable ) &&
40603              ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable ) && ( polygonMode == rhs.polygonMode ) && ( cullMode == rhs.cullMode ) &&
40604              ( frontFace == rhs.frontFace ) && ( depthBiasEnable == rhs.depthBiasEnable ) && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor ) &&
40605              ( depthBiasClamp == rhs.depthBiasClamp ) && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor ) && ( lineWidth == rhs.lineWidth );
40606 #  endif
40607     }
40608 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40609     bool operator!=( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40610     {
40611       return !operator==( rhs );
40612     }
40613 #endif
40614 
40615   public:
40616     VULKAN_HPP_NAMESPACE::StructureType                         sType                   = StructureType::ePipelineRasterizationStateCreateInfo;
40617     const void *                                                pNext                   = {};
40618     VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags                   = {};
40619     VULKAN_HPP_NAMESPACE::Bool32                                depthClampEnable        = {};
40620     VULKAN_HPP_NAMESPACE::Bool32                                rasterizerDiscardEnable = {};
40621     VULKAN_HPP_NAMESPACE::PolygonMode                           polygonMode             = VULKAN_HPP_NAMESPACE::PolygonMode::eFill;
40622     VULKAN_HPP_NAMESPACE::CullModeFlags                         cullMode                = {};
40623     VULKAN_HPP_NAMESPACE::FrontFace                             frontFace               = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise;
40624     VULKAN_HPP_NAMESPACE::Bool32                                depthBiasEnable         = {};
40625     float                                                       depthBiasConstantFactor = {};
40626     float                                                       depthBiasClamp          = {};
40627     float                                                       depthBiasSlopeFactor    = {};
40628     float                                                       lineWidth               = {};
40629   };
40630 
40631   template <>
40632   struct CppType<StructureType, StructureType::ePipelineRasterizationStateCreateInfo>
40633   {
40634     using Type = PipelineRasterizationStateCreateInfo;
40635   };
40636 
40637   struct PipelineMultisampleStateCreateInfo
40638   {
40639     using NativeType = VkPipelineMultisampleStateCreateInfo;
40640 
40641     static const bool                                  allowDuplicate = false;
40642     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineMultisampleStateCreateInfo;
40643 
40644 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
40645     VULKAN_HPP_CONSTEXPR
PipelineMultisampleStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40646       PipelineMultisampleStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ = {},
40647                                           VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_  = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
40648                                           VULKAN_HPP_NAMESPACE::Bool32              sampleShadingEnable_   = {},
40649                                           float                                     minSampleShading_      = {},
40650                                           const VULKAN_HPP_NAMESPACE::SampleMask *  pSampleMask_           = {},
40651                                           VULKAN_HPP_NAMESPACE::Bool32              alphaToCoverageEnable_ = {},
40652                                           VULKAN_HPP_NAMESPACE::Bool32              alphaToOneEnable_      = {},
40653                                           const void *                              pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
40654       : pNext{ pNext_ }
40655       , flags{ flags_ }
40656       , rasterizationSamples{ rasterizationSamples_ }
40657       , sampleShadingEnable{ sampleShadingEnable_ }
40658       , minSampleShading{ minSampleShading_ }
40659       , pSampleMask{ pSampleMask_ }
40660       , alphaToCoverageEnable{ alphaToCoverageEnable_ }
40661       , alphaToOneEnable{ alphaToOneEnable_ }
40662     {
40663     }
40664 
40665     VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40666 
PipelineMultisampleStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40667     PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40668       : PipelineMultisampleStateCreateInfo( *reinterpret_cast<PipelineMultisampleStateCreateInfo const *>( &rhs ) )
40669     {
40670     }
40671 
40672     PipelineMultisampleStateCreateInfo & operator=( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40673 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40674 
operator =VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40675     PipelineMultisampleStateCreateInfo & operator=( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40676     {
40677       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo const *>( &rhs );
40678       return *this;
40679     }
40680 
40681 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40682     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40683     {
40684       pNext = pNext_;
40685       return *this;
40686     }
40687 
40688     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40689       setFlags( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40690     {
40691       flags = flags_;
40692       return *this;
40693     }
40694 
40695     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setRasterizationSamplesVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40696       setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
40697     {
40698       rasterizationSamples = rasterizationSamples_;
40699       return *this;
40700     }
40701 
setSampleShadingEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40702     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setSampleShadingEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable_ ) VULKAN_HPP_NOEXCEPT
40703     {
40704       sampleShadingEnable = sampleShadingEnable_;
40705       return *this;
40706     }
40707 
setMinSampleShadingVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40708     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setMinSampleShading( float minSampleShading_ ) VULKAN_HPP_NOEXCEPT
40709     {
40710       minSampleShading = minSampleShading_;
40711       return *this;
40712     }
40713 
setPSampleMaskVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40714     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setPSampleMask( const VULKAN_HPP_NAMESPACE::SampleMask * pSampleMask_ ) VULKAN_HPP_NOEXCEPT
40715     {
40716       pSampleMask = pSampleMask_;
40717       return *this;
40718     }
40719 
40720     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setAlphaToCoverageEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40721       setAlphaToCoverageEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable_ ) VULKAN_HPP_NOEXCEPT
40722     {
40723       alphaToCoverageEnable = alphaToCoverageEnable_;
40724       return *this;
40725     }
40726 
setAlphaToOneEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40727     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setAlphaToOneEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable_ ) VULKAN_HPP_NOEXCEPT
40728     {
40729       alphaToOneEnable = alphaToOneEnable_;
40730       return *this;
40731     }
40732 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40733 
operator VkPipelineMultisampleStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40734     operator VkPipelineMultisampleStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
40735     {
40736       return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo *>( this );
40737     }
40738 
operator VkPipelineMultisampleStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40739     operator VkPipelineMultisampleStateCreateInfo &() VULKAN_HPP_NOEXCEPT
40740     {
40741       return *reinterpret_cast<VkPipelineMultisampleStateCreateInfo *>( this );
40742     }
40743 
40744 #if defined( VULKAN_HPP_USE_REFLECT )
40745 #  if 14 <= VULKAN_HPP_CPP_VERSION
40746     auto
40747 #  else
40748     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40749                const void * const &,
40750                VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags const &,
40751                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
40752                VULKAN_HPP_NAMESPACE::Bool32 const &,
40753                float const &,
40754                const VULKAN_HPP_NAMESPACE::SampleMask * const &,
40755                VULKAN_HPP_NAMESPACE::Bool32 const &,
40756                VULKAN_HPP_NAMESPACE::Bool32 const &>
40757 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40758       reflect() const VULKAN_HPP_NOEXCEPT
40759     {
40760       return std::tie( sType, pNext, flags, rasterizationSamples, sampleShadingEnable, minSampleShading, pSampleMask, alphaToCoverageEnable, alphaToOneEnable );
40761     }
40762 #endif
40763 
40764 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40765     auto operator<=>( PipelineMultisampleStateCreateInfo const & ) const = default;
40766 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40767     bool operator==( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40768     {
40769 #  if defined( VULKAN_HPP_USE_REFLECT )
40770       return this->reflect() == rhs.reflect();
40771 #  else
40772       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rasterizationSamples == rhs.rasterizationSamples ) &&
40773              ( sampleShadingEnable == rhs.sampleShadingEnable ) && ( minSampleShading == rhs.minSampleShading ) && ( pSampleMask == rhs.pSampleMask ) &&
40774              ( alphaToCoverageEnable == rhs.alphaToCoverageEnable ) && ( alphaToOneEnable == rhs.alphaToOneEnable );
40775 #  endif
40776     }
40777 
operator !=VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40778     bool operator!=( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40779     {
40780       return !operator==( rhs );
40781     }
40782 #endif
40783 
40784   public:
40785     VULKAN_HPP_NAMESPACE::StructureType                       sType                 = StructureType::ePipelineMultisampleStateCreateInfo;
40786     const void *                                              pNext                 = {};
40787     VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags                 = {};
40788     VULKAN_HPP_NAMESPACE::SampleCountFlagBits                 rasterizationSamples  = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
40789     VULKAN_HPP_NAMESPACE::Bool32                              sampleShadingEnable   = {};
40790     float                                                     minSampleShading      = {};
40791     const VULKAN_HPP_NAMESPACE::SampleMask *                  pSampleMask           = {};
40792     VULKAN_HPP_NAMESPACE::Bool32                              alphaToCoverageEnable = {};
40793     VULKAN_HPP_NAMESPACE::Bool32                              alphaToOneEnable      = {};
40794   };
40795 
40796   template <>
40797   struct CppType<StructureType, StructureType::ePipelineMultisampleStateCreateInfo>
40798   {
40799     using Type = PipelineMultisampleStateCreateInfo;
40800   };
40801 
40802   struct StencilOpState
40803   {
40804     using NativeType = VkStencilOpState;
40805 
40806 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
StencilOpStateVULKAN_HPP_NAMESPACE::StencilOpState40807     VULKAN_HPP_CONSTEXPR StencilOpState( VULKAN_HPP_NAMESPACE::StencilOp failOp_      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep,
40808                                          VULKAN_HPP_NAMESPACE::StencilOp passOp_      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep,
40809                                          VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep,
40810                                          VULKAN_HPP_NAMESPACE::CompareOp compareOp_   = VULKAN_HPP_NAMESPACE::CompareOp::eNever,
40811                                          uint32_t                        compareMask_ = {},
40812                                          uint32_t                        writeMask_   = {},
40813                                          uint32_t                        reference_   = {} ) VULKAN_HPP_NOEXCEPT
40814       : failOp{ failOp_ }
40815       , passOp{ passOp_ }
40816       , depthFailOp{ depthFailOp_ }
40817       , compareOp{ compareOp_ }
40818       , compareMask{ compareMask_ }
40819       , writeMask{ writeMask_ }
40820       , reference{ reference_ }
40821     {
40822     }
40823 
40824     VULKAN_HPP_CONSTEXPR StencilOpState( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40825 
StencilOpStateVULKAN_HPP_NAMESPACE::StencilOpState40826     StencilOpState( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT : StencilOpState( *reinterpret_cast<StencilOpState const *>( &rhs ) ) {}
40827 
40828     StencilOpState & operator=( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40829 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40830 
operator =VULKAN_HPP_NAMESPACE::StencilOpState40831     StencilOpState & operator=( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT
40832     {
40833       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StencilOpState const *>( &rhs );
40834       return *this;
40835     }
40836 
40837 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFailOpVULKAN_HPP_NAMESPACE::StencilOpState40838     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setFailOp( VULKAN_HPP_NAMESPACE::StencilOp failOp_ ) VULKAN_HPP_NOEXCEPT
40839     {
40840       failOp = failOp_;
40841       return *this;
40842     }
40843 
setPassOpVULKAN_HPP_NAMESPACE::StencilOpState40844     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setPassOp( VULKAN_HPP_NAMESPACE::StencilOp passOp_ ) VULKAN_HPP_NOEXCEPT
40845     {
40846       passOp = passOp_;
40847       return *this;
40848     }
40849 
setDepthFailOpVULKAN_HPP_NAMESPACE::StencilOpState40850     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setDepthFailOp( VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ ) VULKAN_HPP_NOEXCEPT
40851     {
40852       depthFailOp = depthFailOp_;
40853       return *this;
40854     }
40855 
setCompareOpVULKAN_HPP_NAMESPACE::StencilOpState40856     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT
40857     {
40858       compareOp = compareOp_;
40859       return *this;
40860     }
40861 
setCompareMaskVULKAN_HPP_NAMESPACE::StencilOpState40862     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setCompareMask( uint32_t compareMask_ ) VULKAN_HPP_NOEXCEPT
40863     {
40864       compareMask = compareMask_;
40865       return *this;
40866     }
40867 
setWriteMaskVULKAN_HPP_NAMESPACE::StencilOpState40868     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setWriteMask( uint32_t writeMask_ ) VULKAN_HPP_NOEXCEPT
40869     {
40870       writeMask = writeMask_;
40871       return *this;
40872     }
40873 
setReferenceVULKAN_HPP_NAMESPACE::StencilOpState40874     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setReference( uint32_t reference_ ) VULKAN_HPP_NOEXCEPT
40875     {
40876       reference = reference_;
40877       return *this;
40878     }
40879 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40880 
operator VkStencilOpState const&VULKAN_HPP_NAMESPACE::StencilOpState40881     operator VkStencilOpState const &() const VULKAN_HPP_NOEXCEPT
40882     {
40883       return *reinterpret_cast<const VkStencilOpState *>( this );
40884     }
40885 
operator VkStencilOpState&VULKAN_HPP_NAMESPACE::StencilOpState40886     operator VkStencilOpState &() VULKAN_HPP_NOEXCEPT
40887     {
40888       return *reinterpret_cast<VkStencilOpState *>( this );
40889     }
40890 
40891 #if defined( VULKAN_HPP_USE_REFLECT )
40892 #  if 14 <= VULKAN_HPP_CPP_VERSION
40893     auto
40894 #  else
40895     std::tuple<VULKAN_HPP_NAMESPACE::StencilOp const &,
40896                VULKAN_HPP_NAMESPACE::StencilOp const &,
40897                VULKAN_HPP_NAMESPACE::StencilOp const &,
40898                VULKAN_HPP_NAMESPACE::CompareOp const &,
40899                uint32_t const &,
40900                uint32_t const &,
40901                uint32_t const &>
40902 #  endif
reflectVULKAN_HPP_NAMESPACE::StencilOpState40903       reflect() const VULKAN_HPP_NOEXCEPT
40904     {
40905       return std::tie( failOp, passOp, depthFailOp, compareOp, compareMask, writeMask, reference );
40906     }
40907 #endif
40908 
40909 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40910     auto operator<=>( StencilOpState const & ) const = default;
40911 #else
operator ==VULKAN_HPP_NAMESPACE::StencilOpState40912     bool operator==( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT
40913     {
40914 #  if defined( VULKAN_HPP_USE_REFLECT )
40915       return this->reflect() == rhs.reflect();
40916 #  else
40917       return ( failOp == rhs.failOp ) && ( passOp == rhs.passOp ) && ( depthFailOp == rhs.depthFailOp ) && ( compareOp == rhs.compareOp ) &&
40918              ( compareMask == rhs.compareMask ) && ( writeMask == rhs.writeMask ) && ( reference == rhs.reference );
40919 #  endif
40920     }
40921 
operator !=VULKAN_HPP_NAMESPACE::StencilOpState40922     bool operator!=( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT
40923     {
40924       return !operator==( rhs );
40925     }
40926 #endif
40927 
40928   public:
40929     VULKAN_HPP_NAMESPACE::StencilOp failOp      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
40930     VULKAN_HPP_NAMESPACE::StencilOp passOp      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
40931     VULKAN_HPP_NAMESPACE::StencilOp depthFailOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
40932     VULKAN_HPP_NAMESPACE::CompareOp compareOp   = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
40933     uint32_t                        compareMask = {};
40934     uint32_t                        writeMask   = {};
40935     uint32_t                        reference   = {};
40936   };
40937 
40938   struct PipelineDepthStencilStateCreateInfo
40939   {
40940     using NativeType = VkPipelineDepthStencilStateCreateInfo;
40941 
40942     static const bool                                  allowDuplicate = false;
40943     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineDepthStencilStateCreateInfo;
40944 
40945 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDepthStencilStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40946     VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_            = {},
40947                                                               VULKAN_HPP_NAMESPACE::Bool32                               depthTestEnable_  = {},
40948                                                               VULKAN_HPP_NAMESPACE::Bool32                               depthWriteEnable_ = {},
40949                                                               VULKAN_HPP_NAMESPACE::CompareOp      depthCompareOp_ = VULKAN_HPP_NAMESPACE::CompareOp::eNever,
40950                                                               VULKAN_HPP_NAMESPACE::Bool32         depthBoundsTestEnable_ = {},
40951                                                               VULKAN_HPP_NAMESPACE::Bool32         stencilTestEnable_     = {},
40952                                                               VULKAN_HPP_NAMESPACE::StencilOpState front_                 = {},
40953                                                               VULKAN_HPP_NAMESPACE::StencilOpState back_                  = {},
40954                                                               float                                minDepthBounds_        = {},
40955                                                               float                                maxDepthBounds_        = {},
40956                                                               const void *                         pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
40957       : pNext{ pNext_ }
40958       , flags{ flags_ }
40959       , depthTestEnable{ depthTestEnable_ }
40960       , depthWriteEnable{ depthWriteEnable_ }
40961       , depthCompareOp{ depthCompareOp_ }
40962       , depthBoundsTestEnable{ depthBoundsTestEnable_ }
40963       , stencilTestEnable{ stencilTestEnable_ }
40964       , front{ front_ }
40965       , back{ back_ }
40966       , minDepthBounds{ minDepthBounds_ }
40967       , maxDepthBounds{ maxDepthBounds_ }
40968     {
40969     }
40970 
40971     VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40972 
PipelineDepthStencilStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40973     PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40974       : PipelineDepthStencilStateCreateInfo( *reinterpret_cast<PipelineDepthStencilStateCreateInfo const *>( &rhs ) )
40975     {
40976     }
40977 
40978     PipelineDepthStencilStateCreateInfo & operator=( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40979 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40980 
operator =VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40981     PipelineDepthStencilStateCreateInfo & operator=( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40982     {
40983       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo const *>( &rhs );
40984       return *this;
40985     }
40986 
40987 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40988     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40989     {
40990       pNext = pNext_;
40991       return *this;
40992     }
40993 
40994     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40995       setFlags( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40996     {
40997       flags = flags_;
40998       return *this;
40999     }
41000 
setDepthTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41001     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable_ ) VULKAN_HPP_NOEXCEPT
41002     {
41003       depthTestEnable = depthTestEnable_;
41004       return *this;
41005     }
41006 
setDepthWriteEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41007     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable_ ) VULKAN_HPP_NOEXCEPT
41008     {
41009       depthWriteEnable = depthWriteEnable_;
41010       return *this;
41011     }
41012 
setDepthCompareOpVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41013     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp_ ) VULKAN_HPP_NOEXCEPT
41014     {
41015       depthCompareOp = depthCompareOp_;
41016       return *this;
41017     }
41018 
41019     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setDepthBoundsTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41020       setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable_ ) VULKAN_HPP_NOEXCEPT
41021     {
41022       depthBoundsTestEnable = depthBoundsTestEnable_;
41023       return *this;
41024     }
41025 
setStencilTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41026     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable_ ) VULKAN_HPP_NOEXCEPT
41027     {
41028       stencilTestEnable = stencilTestEnable_;
41029       return *this;
41030     }
41031 
setFrontVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41032     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setFront( VULKAN_HPP_NAMESPACE::StencilOpState const & front_ ) VULKAN_HPP_NOEXCEPT
41033     {
41034       front = front_;
41035       return *this;
41036     }
41037 
setBackVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41038     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setBack( VULKAN_HPP_NAMESPACE::StencilOpState const & back_ ) VULKAN_HPP_NOEXCEPT
41039     {
41040       back = back_;
41041       return *this;
41042     }
41043 
setMinDepthBoundsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41044     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setMinDepthBounds( float minDepthBounds_ ) VULKAN_HPP_NOEXCEPT
41045     {
41046       minDepthBounds = minDepthBounds_;
41047       return *this;
41048     }
41049 
setMaxDepthBoundsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41050     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setMaxDepthBounds( float maxDepthBounds_ ) VULKAN_HPP_NOEXCEPT
41051     {
41052       maxDepthBounds = maxDepthBounds_;
41053       return *this;
41054     }
41055 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41056 
operator VkPipelineDepthStencilStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41057     operator VkPipelineDepthStencilStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
41058     {
41059       return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo *>( this );
41060     }
41061 
operator VkPipelineDepthStencilStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41062     operator VkPipelineDepthStencilStateCreateInfo &() VULKAN_HPP_NOEXCEPT
41063     {
41064       return *reinterpret_cast<VkPipelineDepthStencilStateCreateInfo *>( this );
41065     }
41066 
41067 #if defined( VULKAN_HPP_USE_REFLECT )
41068 #  if 14 <= VULKAN_HPP_CPP_VERSION
41069     auto
41070 #  else
41071     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41072                const void * const &,
41073                VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags const &,
41074                VULKAN_HPP_NAMESPACE::Bool32 const &,
41075                VULKAN_HPP_NAMESPACE::Bool32 const &,
41076                VULKAN_HPP_NAMESPACE::CompareOp const &,
41077                VULKAN_HPP_NAMESPACE::Bool32 const &,
41078                VULKAN_HPP_NAMESPACE::Bool32 const &,
41079                VULKAN_HPP_NAMESPACE::StencilOpState const &,
41080                VULKAN_HPP_NAMESPACE::StencilOpState const &,
41081                float const &,
41082                float const &>
41083 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41084       reflect() const VULKAN_HPP_NOEXCEPT
41085     {
41086       return std::tie( sType,
41087                        pNext,
41088                        flags,
41089                        depthTestEnable,
41090                        depthWriteEnable,
41091                        depthCompareOp,
41092                        depthBoundsTestEnable,
41093                        stencilTestEnable,
41094                        front,
41095                        back,
41096                        minDepthBounds,
41097                        maxDepthBounds );
41098     }
41099 #endif
41100 
41101 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41102     auto operator<=>( PipelineDepthStencilStateCreateInfo const & ) const = default;
41103 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41104     bool operator==( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41105     {
41106 #  if defined( VULKAN_HPP_USE_REFLECT )
41107       return this->reflect() == rhs.reflect();
41108 #  else
41109       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( depthTestEnable == rhs.depthTestEnable ) &&
41110              ( depthWriteEnable == rhs.depthWriteEnable ) && ( depthCompareOp == rhs.depthCompareOp ) &&
41111              ( depthBoundsTestEnable == rhs.depthBoundsTestEnable ) && ( stencilTestEnable == rhs.stencilTestEnable ) && ( front == rhs.front ) &&
41112              ( back == rhs.back ) && ( minDepthBounds == rhs.minDepthBounds ) && ( maxDepthBounds == rhs.maxDepthBounds );
41113 #  endif
41114     }
41115 
operator !=VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo41116     bool operator!=( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41117     {
41118       return !operator==( rhs );
41119     }
41120 #endif
41121 
41122   public:
41123     VULKAN_HPP_NAMESPACE::StructureType                        sType                 = StructureType::ePipelineDepthStencilStateCreateInfo;
41124     const void *                                               pNext                 = {};
41125     VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags                 = {};
41126     VULKAN_HPP_NAMESPACE::Bool32                               depthTestEnable       = {};
41127     VULKAN_HPP_NAMESPACE::Bool32                               depthWriteEnable      = {};
41128     VULKAN_HPP_NAMESPACE::CompareOp                            depthCompareOp        = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
41129     VULKAN_HPP_NAMESPACE::Bool32                               depthBoundsTestEnable = {};
41130     VULKAN_HPP_NAMESPACE::Bool32                               stencilTestEnable     = {};
41131     VULKAN_HPP_NAMESPACE::StencilOpState                       front                 = {};
41132     VULKAN_HPP_NAMESPACE::StencilOpState                       back                  = {};
41133     float                                                      minDepthBounds        = {};
41134     float                                                      maxDepthBounds        = {};
41135   };
41136 
41137   template <>
41138   struct CppType<StructureType, StructureType::ePipelineDepthStencilStateCreateInfo>
41139   {
41140     using Type = PipelineDepthStencilStateCreateInfo;
41141   };
41142 
41143   struct PipelineColorBlendAttachmentState
41144   {
41145     using NativeType = VkPipelineColorBlendAttachmentState;
41146 
41147 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorBlendAttachmentStateVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41148     VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState( VULKAN_HPP_NAMESPACE::Bool32      blendEnable_         = {},
41149                                                             VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
41150                                                             VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
41151                                                             VULKAN_HPP_NAMESPACE::BlendOp     colorBlendOp_        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd,
41152                                                             VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
41153                                                             VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
41154                                                             VULKAN_HPP_NAMESPACE::BlendOp     alphaBlendOp_        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd,
41155                                                             VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_ = {} ) VULKAN_HPP_NOEXCEPT
41156       : blendEnable{ blendEnable_ }
41157       , srcColorBlendFactor{ srcColorBlendFactor_ }
41158       , dstColorBlendFactor{ dstColorBlendFactor_ }
41159       , colorBlendOp{ colorBlendOp_ }
41160       , srcAlphaBlendFactor{ srcAlphaBlendFactor_ }
41161       , dstAlphaBlendFactor{ dstAlphaBlendFactor_ }
41162       , alphaBlendOp{ alphaBlendOp_ }
41163       , colorWriteMask{ colorWriteMask_ }
41164     {
41165     }
41166 
41167     VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41168 
PipelineColorBlendAttachmentStateVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41169     PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
41170       : PipelineColorBlendAttachmentState( *reinterpret_cast<PipelineColorBlendAttachmentState const *>( &rhs ) )
41171     {
41172     }
41173 
41174     PipelineColorBlendAttachmentState & operator=( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41175 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41176 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41177     PipelineColorBlendAttachmentState & operator=( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
41178     {
41179       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState const *>( &rhs );
41180       return *this;
41181     }
41182 
41183 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBlendEnableVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41184     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setBlendEnable( VULKAN_HPP_NAMESPACE::Bool32 blendEnable_ ) VULKAN_HPP_NOEXCEPT
41185     {
41186       blendEnable = blendEnable_;
41187       return *this;
41188     }
41189 
41190     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setSrcColorBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41191       setSrcColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
41192     {
41193       srcColorBlendFactor = srcColorBlendFactor_;
41194       return *this;
41195     }
41196 
41197     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setDstColorBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41198       setDstColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
41199     {
41200       dstColorBlendFactor = dstColorBlendFactor_;
41201       return *this;
41202     }
41203 
setColorBlendOpVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41204     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setColorBlendOp( VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ ) VULKAN_HPP_NOEXCEPT
41205     {
41206       colorBlendOp = colorBlendOp_;
41207       return *this;
41208     }
41209 
41210     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setSrcAlphaBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41211       setSrcAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
41212     {
41213       srcAlphaBlendFactor = srcAlphaBlendFactor_;
41214       return *this;
41215     }
41216 
41217     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setDstAlphaBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41218       setDstAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
41219     {
41220       dstAlphaBlendFactor = dstAlphaBlendFactor_;
41221       return *this;
41222     }
41223 
setAlphaBlendOpVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41224     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setAlphaBlendOp( VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ ) VULKAN_HPP_NOEXCEPT
41225     {
41226       alphaBlendOp = alphaBlendOp_;
41227       return *this;
41228     }
41229 
41230     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setColorWriteMaskVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41231       setColorWriteMask( VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_ ) VULKAN_HPP_NOEXCEPT
41232     {
41233       colorWriteMask = colorWriteMask_;
41234       return *this;
41235     }
41236 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41237 
operator VkPipelineColorBlendAttachmentState const&VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41238     operator VkPipelineColorBlendAttachmentState const &() const VULKAN_HPP_NOEXCEPT
41239     {
41240       return *reinterpret_cast<const VkPipelineColorBlendAttachmentState *>( this );
41241     }
41242 
operator VkPipelineColorBlendAttachmentState&VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41243     operator VkPipelineColorBlendAttachmentState &() VULKAN_HPP_NOEXCEPT
41244     {
41245       return *reinterpret_cast<VkPipelineColorBlendAttachmentState *>( this );
41246     }
41247 
41248 #if defined( VULKAN_HPP_USE_REFLECT )
41249 #  if 14 <= VULKAN_HPP_CPP_VERSION
41250     auto
41251 #  else
41252     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &,
41253                VULKAN_HPP_NAMESPACE::BlendFactor const &,
41254                VULKAN_HPP_NAMESPACE::BlendFactor const &,
41255                VULKAN_HPP_NAMESPACE::BlendOp const &,
41256                VULKAN_HPP_NAMESPACE::BlendFactor const &,
41257                VULKAN_HPP_NAMESPACE::BlendFactor const &,
41258                VULKAN_HPP_NAMESPACE::BlendOp const &,
41259                VULKAN_HPP_NAMESPACE::ColorComponentFlags const &>
41260 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41261       reflect() const VULKAN_HPP_NOEXCEPT
41262     {
41263       return std::tie(
41264         blendEnable, srcColorBlendFactor, dstColorBlendFactor, colorBlendOp, srcAlphaBlendFactor, dstAlphaBlendFactor, alphaBlendOp, colorWriteMask );
41265     }
41266 #endif
41267 
41268 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41269     auto operator<=>( PipelineColorBlendAttachmentState const & ) const = default;
41270 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41271     bool operator==( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT
41272     {
41273 #  if defined( VULKAN_HPP_USE_REFLECT )
41274       return this->reflect() == rhs.reflect();
41275 #  else
41276       return ( blendEnable == rhs.blendEnable ) && ( srcColorBlendFactor == rhs.srcColorBlendFactor ) && ( dstColorBlendFactor == rhs.dstColorBlendFactor ) &&
41277              ( colorBlendOp == rhs.colorBlendOp ) && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor ) && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor ) &&
41278              ( alphaBlendOp == rhs.alphaBlendOp ) && ( colorWriteMask == rhs.colorWriteMask );
41279 #  endif
41280     }
41281 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState41282     bool operator!=( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT
41283     {
41284       return !operator==( rhs );
41285     }
41286 #endif
41287 
41288   public:
41289     VULKAN_HPP_NAMESPACE::Bool32              blendEnable         = {};
41290     VULKAN_HPP_NAMESPACE::BlendFactor         srcColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
41291     VULKAN_HPP_NAMESPACE::BlendFactor         dstColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
41292     VULKAN_HPP_NAMESPACE::BlendOp             colorBlendOp        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
41293     VULKAN_HPP_NAMESPACE::BlendFactor         srcAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
41294     VULKAN_HPP_NAMESPACE::BlendFactor         dstAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
41295     VULKAN_HPP_NAMESPACE::BlendOp             alphaBlendOp        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
41296     VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask      = {};
41297   };
41298 
41299   struct PipelineColorBlendStateCreateInfo
41300   {
41301     using NativeType = VkPipelineColorBlendStateCreateInfo;
41302 
41303     static const bool                                  allowDuplicate = false;
41304     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineColorBlendStateCreateInfo;
41305 
41306 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41307     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_         = {},
41308                                                                VULKAN_HPP_NAMESPACE::Bool32                             logicOpEnable_ = {},
41309                                                                VULKAN_HPP_NAMESPACE::LogicOp logicOp_         = VULKAN_HPP_NAMESPACE::LogicOp::eClear,
41310                                                                uint32_t                      attachmentCount_ = {},
41311                                                                const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments_   = {},
41312                                                                std::array<float, 4> const &                                    blendConstants_ = {},
41313                                                                const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
41314       : pNext{ pNext_ }
41315       , flags{ flags_ }
41316       , logicOpEnable{ logicOpEnable_ }
41317       , logicOp{ logicOp_ }
41318       , attachmentCount{ attachmentCount_ }
41319       , pAttachments{ pAttachments_ }
41320       , blendConstants{ blendConstants_ }
41321     {
41322     }
41323 
41324     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41325 
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41326     PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41327       : PipelineColorBlendStateCreateInfo( *reinterpret_cast<PipelineColorBlendStateCreateInfo const *>( &rhs ) )
41328     {
41329     }
41330 
41331 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41332     PipelineColorBlendStateCreateInfo(
41333       VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags                                                             flags_,
41334       VULKAN_HPP_NAMESPACE::Bool32                                                                                         logicOpEnable_,
41335       VULKAN_HPP_NAMESPACE::LogicOp                                                                                        logicOp_,
41336       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_,
41337       std::array<float, 4> const &                                                                                         blendConstants_ = {},
41338       const void *                                                                                                         pNext_          = nullptr )
41339       : pNext( pNext_ )
41340       , flags( flags_ )
41341       , logicOpEnable( logicOpEnable_ )
41342       , logicOp( logicOp_ )
41343       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
41344       , pAttachments( attachments_.data() )
41345       , blendConstants( blendConstants_ )
41346     {
41347     }
41348 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41349 
41350     PipelineColorBlendStateCreateInfo & operator=( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41351 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41352 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41353     PipelineColorBlendStateCreateInfo & operator=( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41354     {
41355       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo const *>( &rhs );
41356       return *this;
41357     }
41358 
41359 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41360     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41361     {
41362       pNext = pNext_;
41363       return *this;
41364     }
41365 
setFlagsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41366     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
41367     {
41368       flags = flags_;
41369       return *this;
41370     }
41371 
setLogicOpEnableVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41372     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setLogicOpEnable( VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_ ) VULKAN_HPP_NOEXCEPT
41373     {
41374       logicOpEnable = logicOpEnable_;
41375       return *this;
41376     }
41377 
setLogicOpVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41378     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setLogicOp( VULKAN_HPP_NAMESPACE::LogicOp logicOp_ ) VULKAN_HPP_NOEXCEPT
41379     {
41380       logicOp = logicOp_;
41381       return *this;
41382     }
41383 
setAttachmentCountVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41384     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
41385     {
41386       attachmentCount = attachmentCount_;
41387       return *this;
41388     }
41389 
41390     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo &
setPAttachmentsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41391       setPAttachments( const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments_ ) VULKAN_HPP_NOEXCEPT
41392     {
41393       pAttachments = pAttachments_;
41394       return *this;
41395     }
41396 
41397 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41398     PipelineColorBlendStateCreateInfo & setAttachments(
41399       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_ ) VULKAN_HPP_NOEXCEPT
41400     {
41401       attachmentCount = static_cast<uint32_t>( attachments_.size() );
41402       pAttachments    = attachments_.data();
41403       return *this;
41404     }
41405 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41406 
setBlendConstantsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41407     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setBlendConstants( std::array<float, 4> blendConstants_ ) VULKAN_HPP_NOEXCEPT
41408     {
41409       blendConstants = blendConstants_;
41410       return *this;
41411     }
41412 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41413 
operator VkPipelineColorBlendStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41414     operator VkPipelineColorBlendStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
41415     {
41416       return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo *>( this );
41417     }
41418 
operator VkPipelineColorBlendStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41419     operator VkPipelineColorBlendStateCreateInfo &() VULKAN_HPP_NOEXCEPT
41420     {
41421       return *reinterpret_cast<VkPipelineColorBlendStateCreateInfo *>( this );
41422     }
41423 
41424 #if defined( VULKAN_HPP_USE_REFLECT )
41425 #  if 14 <= VULKAN_HPP_CPP_VERSION
41426     auto
41427 #  else
41428     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41429                const void * const &,
41430                VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags const &,
41431                VULKAN_HPP_NAMESPACE::Bool32 const &,
41432                VULKAN_HPP_NAMESPACE::LogicOp const &,
41433                uint32_t const &,
41434                const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * const &,
41435                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
41436 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41437       reflect() const VULKAN_HPP_NOEXCEPT
41438     {
41439       return std::tie( sType, pNext, flags, logicOpEnable, logicOp, attachmentCount, pAttachments, blendConstants );
41440     }
41441 #endif
41442 
41443 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41444     auto operator<=>( PipelineColorBlendStateCreateInfo const & ) const = default;
41445 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41446     bool operator==( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41447     {
41448 #  if defined( VULKAN_HPP_USE_REFLECT )
41449       return this->reflect() == rhs.reflect();
41450 #  else
41451       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( logicOpEnable == rhs.logicOpEnable ) &&
41452              ( logicOp == rhs.logicOp ) && ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments ) &&
41453              ( blendConstants == rhs.blendConstants );
41454 #  endif
41455     }
41456 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41457     bool operator!=( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41458     {
41459       return !operator==( rhs );
41460     }
41461 #endif
41462 
41463   public:
41464     VULKAN_HPP_NAMESPACE::StructureType                             sType           = StructureType::ePipelineColorBlendStateCreateInfo;
41465     const void *                                                    pNext           = {};
41466     VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags        flags           = {};
41467     VULKAN_HPP_NAMESPACE::Bool32                                    logicOpEnable   = {};
41468     VULKAN_HPP_NAMESPACE::LogicOp                                   logicOp         = VULKAN_HPP_NAMESPACE::LogicOp::eClear;
41469     uint32_t                                                        attachmentCount = {};
41470     const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments    = {};
41471     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4>                  blendConstants  = {};
41472   };
41473 
41474   template <>
41475   struct CppType<StructureType, StructureType::ePipelineColorBlendStateCreateInfo>
41476   {
41477     using Type = PipelineColorBlendStateCreateInfo;
41478   };
41479 
41480   struct PipelineDynamicStateCreateInfo
41481   {
41482     using NativeType = VkPipelineDynamicStateCreateInfo;
41483 
41484     static const bool                                  allowDuplicate = false;
41485     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineDynamicStateCreateInfo;
41486 
41487 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41488     VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_             = {},
41489                                                          uint32_t                                              dynamicStateCount_ = {},
41490                                                          const VULKAN_HPP_NAMESPACE::DynamicState *            pDynamicStates_    = {},
41491                                                          const void *                                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
41492       : pNext{ pNext_ }
41493       , flags{ flags_ }
41494       , dynamicStateCount{ dynamicStateCount_ }
41495       , pDynamicStates{ pDynamicStates_ }
41496     {
41497     }
41498 
41499     VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41500 
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41501     PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41502       : PipelineDynamicStateCreateInfo( *reinterpret_cast<PipelineDynamicStateCreateInfo const *>( &rhs ) )
41503     {
41504     }
41505 
41506 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41507     PipelineDynamicStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags                                           flags_,
41508                                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DynamicState> const & dynamicStates_,
41509                                     const void *                                                                                    pNext_ = nullptr )
41510       : pNext( pNext_ ), flags( flags_ ), dynamicStateCount( static_cast<uint32_t>( dynamicStates_.size() ) ), pDynamicStates( dynamicStates_.data() )
41511     {
41512     }
41513 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41514 
41515     PipelineDynamicStateCreateInfo & operator=( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41516 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41517 
operator =VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41518     PipelineDynamicStateCreateInfo & operator=( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41519     {
41520       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo const *>( &rhs );
41521       return *this;
41522     }
41523 
41524 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41525     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41526     {
41527       pNext = pNext_;
41528       return *this;
41529     }
41530 
setFlagsVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41531     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
41532     {
41533       flags = flags_;
41534       return *this;
41535     }
41536 
setDynamicStateCountVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41537     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setDynamicStateCount( uint32_t dynamicStateCount_ ) VULKAN_HPP_NOEXCEPT
41538     {
41539       dynamicStateCount = dynamicStateCount_;
41540       return *this;
41541     }
41542 
setPDynamicStatesVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41543     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setPDynamicStates( const VULKAN_HPP_NAMESPACE::DynamicState * pDynamicStates_ ) VULKAN_HPP_NOEXCEPT
41544     {
41545       pDynamicStates = pDynamicStates_;
41546       return *this;
41547     }
41548 
41549 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
41550     PipelineDynamicStateCreateInfo &
setDynamicStatesVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41551       setDynamicStates( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DynamicState> const & dynamicStates_ ) VULKAN_HPP_NOEXCEPT
41552     {
41553       dynamicStateCount = static_cast<uint32_t>( dynamicStates_.size() );
41554       pDynamicStates    = dynamicStates_.data();
41555       return *this;
41556     }
41557 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41558 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41559 
operator VkPipelineDynamicStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41560     operator VkPipelineDynamicStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
41561     {
41562       return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo *>( this );
41563     }
41564 
operator VkPipelineDynamicStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41565     operator VkPipelineDynamicStateCreateInfo &() VULKAN_HPP_NOEXCEPT
41566     {
41567       return *reinterpret_cast<VkPipelineDynamicStateCreateInfo *>( this );
41568     }
41569 
41570 #if defined( VULKAN_HPP_USE_REFLECT )
41571 #  if 14 <= VULKAN_HPP_CPP_VERSION
41572     auto
41573 #  else
41574     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41575                const void * const &,
41576                VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags const &,
41577                uint32_t const &,
41578                const VULKAN_HPP_NAMESPACE::DynamicState * const &>
41579 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41580       reflect() const VULKAN_HPP_NOEXCEPT
41581     {
41582       return std::tie( sType, pNext, flags, dynamicStateCount, pDynamicStates );
41583     }
41584 #endif
41585 
41586 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41587     auto operator<=>( PipelineDynamicStateCreateInfo const & ) const = default;
41588 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41589     bool operator==( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41590     {
41591 #  if defined( VULKAN_HPP_USE_REFLECT )
41592       return this->reflect() == rhs.reflect();
41593 #  else
41594       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dynamicStateCount == rhs.dynamicStateCount ) &&
41595              ( pDynamicStates == rhs.pDynamicStates );
41596 #  endif
41597     }
41598 
operator !=VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41599     bool operator!=( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41600     {
41601       return !operator==( rhs );
41602     }
41603 #endif
41604 
41605   public:
41606     VULKAN_HPP_NAMESPACE::StructureType                   sType             = StructureType::ePipelineDynamicStateCreateInfo;
41607     const void *                                          pNext             = {};
41608     VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags             = {};
41609     uint32_t                                              dynamicStateCount = {};
41610     const VULKAN_HPP_NAMESPACE::DynamicState *            pDynamicStates    = {};
41611   };
41612 
41613   template <>
41614   struct CppType<StructureType, StructureType::ePipelineDynamicStateCreateInfo>
41615   {
41616     using Type = PipelineDynamicStateCreateInfo;
41617   };
41618 
41619   struct GraphicsPipelineCreateInfo
41620   {
41621     using NativeType = VkGraphicsPipelineCreateInfo;
41622 
41623     static const bool                                  allowDuplicate = false;
41624     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGraphicsPipelineCreateInfo;
41625 
41626 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41627     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                          flags_               = {},
41628                                                         uint32_t                                                           stageCount_          = {},
41629                                                         const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *        pStages_             = {},
41630                                                         const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *   pVertexInputState_   = {},
41631                                                         const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ = {},
41632                                                         const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo *  pTessellationState_  = {},
41633                                                         const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo *      pViewportState_      = {},
41634                                                         const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ = {},
41635                                                         const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo *   pMultisampleState_   = {},
41636                                                         const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo *  pDepthStencilState_  = {},
41637                                                         const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo *    pColorBlendState_    = {},
41638                                                         const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *       pDynamicState_       = {},
41639                                                         VULKAN_HPP_NAMESPACE::PipelineLayout                               layout_              = {},
41640                                                         VULKAN_HPP_NAMESPACE::RenderPass                                   renderPass_          = {},
41641                                                         uint32_t                                                           subpass_             = {},
41642                                                         VULKAN_HPP_NAMESPACE::Pipeline                                     basePipelineHandle_  = {},
41643                                                         int32_t                                                            basePipelineIndex_   = {},
41644                                                         const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
41645       : pNext{ pNext_ }
41646       , flags{ flags_ }
41647       , stageCount{ stageCount_ }
41648       , pStages{ pStages_ }
41649       , pVertexInputState{ pVertexInputState_ }
41650       , pInputAssemblyState{ pInputAssemblyState_ }
41651       , pTessellationState{ pTessellationState_ }
41652       , pViewportState{ pViewportState_ }
41653       , pRasterizationState{ pRasterizationState_ }
41654       , pMultisampleState{ pMultisampleState_ }
41655       , pDepthStencilState{ pDepthStencilState_ }
41656       , pColorBlendState{ pColorBlendState_ }
41657       , pDynamicState{ pDynamicState_ }
41658       , layout{ layout_ }
41659       , renderPass{ renderPass_ }
41660       , subpass{ subpass_ }
41661       , basePipelineHandle{ basePipelineHandle_ }
41662       , basePipelineIndex{ basePipelineIndex_ }
41663     {
41664     }
41665 
41666     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41667 
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41668     GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41669       : GraphicsPipelineCreateInfo( *reinterpret_cast<GraphicsPipelineCreateInfo const *>( &rhs ) )
41670     {
41671     }
41672 
41673 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41674     GraphicsPipelineCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                                                                        flags_,
41675                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_,
41676                                 const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *   pVertexInputState_   = {},
41677                                 const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ = {},
41678                                 const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo *  pTessellationState_  = {},
41679                                 const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo *      pViewportState_      = {},
41680                                 const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ = {},
41681                                 const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo *   pMultisampleState_   = {},
41682                                 const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo *  pDepthStencilState_  = {},
41683                                 const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo *    pColorBlendState_    = {},
41684                                 const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *       pDynamicState_       = {},
41685                                 VULKAN_HPP_NAMESPACE::PipelineLayout                               layout_              = {},
41686                                 VULKAN_HPP_NAMESPACE::RenderPass                                   renderPass_          = {},
41687                                 uint32_t                                                           subpass_             = {},
41688                                 VULKAN_HPP_NAMESPACE::Pipeline                                     basePipelineHandle_  = {},
41689                                 int32_t                                                            basePipelineIndex_   = {},
41690                                 const void *                                                       pNext_               = nullptr )
41691       : pNext( pNext_ )
41692       , flags( flags_ )
41693       , stageCount( static_cast<uint32_t>( stages_.size() ) )
41694       , pStages( stages_.data() )
41695       , pVertexInputState( pVertexInputState_ )
41696       , pInputAssemblyState( pInputAssemblyState_ )
41697       , pTessellationState( pTessellationState_ )
41698       , pViewportState( pViewportState_ )
41699       , pRasterizationState( pRasterizationState_ )
41700       , pMultisampleState( pMultisampleState_ )
41701       , pDepthStencilState( pDepthStencilState_ )
41702       , pColorBlendState( pColorBlendState_ )
41703       , pDynamicState( pDynamicState_ )
41704       , layout( layout_ )
41705       , renderPass( renderPass_ )
41706       , subpass( subpass_ )
41707       , basePipelineHandle( basePipelineHandle_ )
41708       , basePipelineIndex( basePipelineIndex_ )
41709     {
41710     }
41711 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41712 
41713     GraphicsPipelineCreateInfo & operator=( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41714 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41715 
operator =VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41716     GraphicsPipelineCreateInfo & operator=( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41717     {
41718       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const *>( &rhs );
41719       return *this;
41720     }
41721 
41722 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41723     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41724     {
41725       pNext = pNext_;
41726       return *this;
41727     }
41728 
setFlagsVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41729     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
41730     {
41731       flags = flags_;
41732       return *this;
41733     }
41734 
setStageCountVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41735     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
41736     {
41737       stageCount = stageCount_;
41738       return *this;
41739     }
41740 
setPStagesVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41741     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
41742     {
41743       pStages = pStages_;
41744       return *this;
41745     }
41746 
41747 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
41748     GraphicsPipelineCreateInfo &
setStagesVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41749       setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
41750     {
41751       stageCount = static_cast<uint32_t>( stages_.size() );
41752       pStages    = stages_.data();
41753       return *this;
41754     }
41755 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41756 
41757     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPVertexInputStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41758       setPVertexInputState( const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ ) VULKAN_HPP_NOEXCEPT
41759     {
41760       pVertexInputState = pVertexInputState_;
41761       return *this;
41762     }
41763 
41764     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPInputAssemblyStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41765       setPInputAssemblyState( const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ ) VULKAN_HPP_NOEXCEPT
41766     {
41767       pInputAssemblyState = pInputAssemblyState_;
41768       return *this;
41769     }
41770 
41771     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPTessellationStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41772       setPTessellationState( const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ ) VULKAN_HPP_NOEXCEPT
41773     {
41774       pTessellationState = pTessellationState_;
41775       return *this;
41776     }
41777 
41778     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPViewportStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41779       setPViewportState( const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState_ ) VULKAN_HPP_NOEXCEPT
41780     {
41781       pViewportState = pViewportState_;
41782       return *this;
41783     }
41784 
41785     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPRasterizationStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41786       setPRasterizationState( const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ ) VULKAN_HPP_NOEXCEPT
41787     {
41788       pRasterizationState = pRasterizationState_;
41789       return *this;
41790     }
41791 
41792     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPMultisampleStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41793       setPMultisampleState( const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState_ ) VULKAN_HPP_NOEXCEPT
41794     {
41795       pMultisampleState = pMultisampleState_;
41796       return *this;
41797     }
41798 
41799     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPDepthStencilStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41800       setPDepthStencilState( const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState_ ) VULKAN_HPP_NOEXCEPT
41801     {
41802       pDepthStencilState = pDepthStencilState_;
41803       return *this;
41804     }
41805 
41806     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPColorBlendStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41807       setPColorBlendState( const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState_ ) VULKAN_HPP_NOEXCEPT
41808     {
41809       pColorBlendState = pColorBlendState_;
41810       return *this;
41811     }
41812 
41813     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPDynamicStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41814       setPDynamicState( const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ ) VULKAN_HPP_NOEXCEPT
41815     {
41816       pDynamicState = pDynamicState_;
41817       return *this;
41818     }
41819 
setLayoutVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41820     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
41821     {
41822       layout = layout_;
41823       return *this;
41824     }
41825 
setRenderPassVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41826     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
41827     {
41828       renderPass = renderPass_;
41829       return *this;
41830     }
41831 
setSubpassVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41832     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
41833     {
41834       subpass = subpass_;
41835       return *this;
41836     }
41837 
setBasePipelineHandleVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41838     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
41839     {
41840       basePipelineHandle = basePipelineHandle_;
41841       return *this;
41842     }
41843 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41844     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
41845     {
41846       basePipelineIndex = basePipelineIndex_;
41847       return *this;
41848     }
41849 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41850 
operator VkGraphicsPipelineCreateInfo const&VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41851     operator VkGraphicsPipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT
41852     {
41853       return *reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( this );
41854     }
41855 
operator VkGraphicsPipelineCreateInfo&VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41856     operator VkGraphicsPipelineCreateInfo &() VULKAN_HPP_NOEXCEPT
41857     {
41858       return *reinterpret_cast<VkGraphicsPipelineCreateInfo *>( this );
41859     }
41860 
41861 #if defined( VULKAN_HPP_USE_REFLECT )
41862 #  if 14 <= VULKAN_HPP_CPP_VERSION
41863     auto
41864 #  else
41865     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41866                const void * const &,
41867                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
41868                uint32_t const &,
41869                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
41870                const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * const &,
41871                const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * const &,
41872                const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * const &,
41873                const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * const &,
41874                const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * const &,
41875                const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * const &,
41876                const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * const &,
41877                const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * const &,
41878                const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * const &,
41879                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
41880                VULKAN_HPP_NAMESPACE::RenderPass const &,
41881                uint32_t const &,
41882                VULKAN_HPP_NAMESPACE::Pipeline const &,
41883                int32_t const &>
41884 #  endif
reflectVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41885       reflect() const VULKAN_HPP_NOEXCEPT
41886     {
41887       return std::tie( sType,
41888                        pNext,
41889                        flags,
41890                        stageCount,
41891                        pStages,
41892                        pVertexInputState,
41893                        pInputAssemblyState,
41894                        pTessellationState,
41895                        pViewportState,
41896                        pRasterizationState,
41897                        pMultisampleState,
41898                        pDepthStencilState,
41899                        pColorBlendState,
41900                        pDynamicState,
41901                        layout,
41902                        renderPass,
41903                        subpass,
41904                        basePipelineHandle,
41905                        basePipelineIndex );
41906     }
41907 #endif
41908 
41909 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41910     auto operator<=>( GraphicsPipelineCreateInfo const & ) const = default;
41911 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41912     bool operator==( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41913     {
41914 #  if defined( VULKAN_HPP_USE_REFLECT )
41915       return this->reflect() == rhs.reflect();
41916 #  else
41917       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) &&
41918              ( pVertexInputState == rhs.pVertexInputState ) && ( pInputAssemblyState == rhs.pInputAssemblyState ) &&
41919              ( pTessellationState == rhs.pTessellationState ) && ( pViewportState == rhs.pViewportState ) &&
41920              ( pRasterizationState == rhs.pRasterizationState ) && ( pMultisampleState == rhs.pMultisampleState ) &&
41921              ( pDepthStencilState == rhs.pDepthStencilState ) && ( pColorBlendState == rhs.pColorBlendState ) && ( pDynamicState == rhs.pDynamicState ) &&
41922              ( layout == rhs.layout ) && ( renderPass == rhs.renderPass ) && ( subpass == rhs.subpass ) && ( basePipelineHandle == rhs.basePipelineHandle ) &&
41923              ( basePipelineIndex == rhs.basePipelineIndex );
41924 #  endif
41925     }
41926 
operator !=VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41927     bool operator!=( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41928     {
41929       return !operator==( rhs );
41930     }
41931 #endif
41932 
41933   public:
41934     VULKAN_HPP_NAMESPACE::StructureType                                sType               = StructureType::eGraphicsPipelineCreateInfo;
41935     const void *                                                       pNext               = {};
41936     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                          flags               = {};
41937     uint32_t                                                           stageCount          = {};
41938     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *        pStages             = {};
41939     const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *   pVertexInputState   = {};
41940     const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState = {};
41941     const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo *  pTessellationState  = {};
41942     const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo *      pViewportState      = {};
41943     const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState = {};
41944     const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo *   pMultisampleState   = {};
41945     const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo *  pDepthStencilState  = {};
41946     const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo *    pColorBlendState    = {};
41947     const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *       pDynamicState       = {};
41948     VULKAN_HPP_NAMESPACE::PipelineLayout                               layout              = {};
41949     VULKAN_HPP_NAMESPACE::RenderPass                                   renderPass          = {};
41950     uint32_t                                                           subpass             = {};
41951     VULKAN_HPP_NAMESPACE::Pipeline                                     basePipelineHandle  = {};
41952     int32_t                                                            basePipelineIndex   = {};
41953   };
41954 
41955   template <>
41956   struct CppType<StructureType, StructureType::eGraphicsPipelineCreateInfo>
41957   {
41958     using Type = GraphicsPipelineCreateInfo;
41959   };
41960 
41961   struct GraphicsPipelineLibraryCreateInfoEXT
41962   {
41963     using NativeType = VkGraphicsPipelineLibraryCreateInfoEXT;
41964 
41965     static const bool                                  allowDuplicate = false;
41966     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGraphicsPipelineLibraryCreateInfoEXT;
41967 
41968 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsPipelineLibraryCreateInfoEXTVULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41969     VULKAN_HPP_CONSTEXPR GraphicsPipelineLibraryCreateInfoEXT( VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryFlagsEXT flags_ = {},
41970                                                                const void *                                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
41971       : pNext{ pNext_ }
41972       , flags{ flags_ }
41973     {
41974     }
41975 
41976     VULKAN_HPP_CONSTEXPR GraphicsPipelineLibraryCreateInfoEXT( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41977 
GraphicsPipelineLibraryCreateInfoEXTVULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41978     GraphicsPipelineLibraryCreateInfoEXT( VkGraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41979       : GraphicsPipelineLibraryCreateInfoEXT( *reinterpret_cast<GraphicsPipelineLibraryCreateInfoEXT const *>( &rhs ) )
41980     {
41981     }
41982 
41983     GraphicsPipelineLibraryCreateInfoEXT & operator=( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41984 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41985 
operator =VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41986     GraphicsPipelineLibraryCreateInfoEXT & operator=( VkGraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41987     {
41988       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT const *>( &rhs );
41989       return *this;
41990     }
41991 
41992 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41993     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineLibraryCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41994     {
41995       pNext = pNext_;
41996       return *this;
41997     }
41998 
setFlagsVULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41999     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineLibraryCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
42000     {
42001       flags = flags_;
42002       return *this;
42003     }
42004 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42005 
operator VkGraphicsPipelineLibraryCreateInfoEXT const&VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT42006     operator VkGraphicsPipelineLibraryCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
42007     {
42008       return *reinterpret_cast<const VkGraphicsPipelineLibraryCreateInfoEXT *>( this );
42009     }
42010 
operator VkGraphicsPipelineLibraryCreateInfoEXT&VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT42011     operator VkGraphicsPipelineLibraryCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
42012     {
42013       return *reinterpret_cast<VkGraphicsPipelineLibraryCreateInfoEXT *>( this );
42014     }
42015 
42016 #if defined( VULKAN_HPP_USE_REFLECT )
42017 #  if 14 <= VULKAN_HPP_CPP_VERSION
42018     auto
42019 #  else
42020     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryFlagsEXT const &>
42021 #  endif
reflectVULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT42022       reflect() const VULKAN_HPP_NOEXCEPT
42023     {
42024       return std::tie( sType, pNext, flags );
42025     }
42026 #endif
42027 
42028 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42029     auto operator<=>( GraphicsPipelineLibraryCreateInfoEXT const & ) const = default;
42030 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT42031     bool operator==( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42032     {
42033 #  if defined( VULKAN_HPP_USE_REFLECT )
42034       return this->reflect() == rhs.reflect();
42035 #  else
42036       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
42037 #  endif
42038     }
42039 
operator !=VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT42040     bool operator!=( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42041     {
42042       return !operator==( rhs );
42043     }
42044 #endif
42045 
42046   public:
42047     VULKAN_HPP_NAMESPACE::StructureType                   sType = StructureType::eGraphicsPipelineLibraryCreateInfoEXT;
42048     const void *                                          pNext = {};
42049     VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryFlagsEXT flags = {};
42050   };
42051 
42052   template <>
42053   struct CppType<StructureType, StructureType::eGraphicsPipelineLibraryCreateInfoEXT>
42054   {
42055     using Type = GraphicsPipelineLibraryCreateInfoEXT;
42056   };
42057 
42058   struct GraphicsShaderGroupCreateInfoNV
42059   {
42060     using NativeType = VkGraphicsShaderGroupCreateInfoNV;
42061 
42062     static const bool                                  allowDuplicate = false;
42063     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGraphicsShaderGroupCreateInfoNV;
42064 
42065 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42066     VULKAN_HPP_CONSTEXPR GraphicsShaderGroupCreateInfoNV( uint32_t                                                          stageCount_         = {},
42067                                                           const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *       pStages_            = {},
42068                                                           const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *  pVertexInputState_  = {},
42069                                                           const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {},
42070                                                           const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
42071       : pNext{ pNext_ }
42072       , stageCount{ stageCount_ }
42073       , pStages{ pStages_ }
42074       , pVertexInputState{ pVertexInputState_ }
42075       , pTessellationState{ pTessellationState_ }
42076     {
42077     }
42078 
42079     VULKAN_HPP_CONSTEXPR GraphicsShaderGroupCreateInfoNV( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42080 
GraphicsShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42081     GraphicsShaderGroupCreateInfoNV( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
42082       : GraphicsShaderGroupCreateInfoNV( *reinterpret_cast<GraphicsShaderGroupCreateInfoNV const *>( &rhs ) )
42083     {
42084     }
42085 
42086 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GraphicsShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42087     GraphicsShaderGroupCreateInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_,
42088                                      const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *  pVertexInputState_  = {},
42089                                      const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {},
42090                                      const void *                                                      pNext_              = nullptr )
42091       : pNext( pNext_ )
42092       , stageCount( static_cast<uint32_t>( stages_.size() ) )
42093       , pStages( stages_.data() )
42094       , pVertexInputState( pVertexInputState_ )
42095       , pTessellationState( pTessellationState_ )
42096     {
42097     }
42098 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42099 
42100     GraphicsShaderGroupCreateInfoNV & operator=( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42101 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42102 
operator =VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42103     GraphicsShaderGroupCreateInfoNV & operator=( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
42104     {
42105       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV const *>( &rhs );
42106       return *this;
42107     }
42108 
42109 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42110     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42111     {
42112       pNext = pNext_;
42113       return *this;
42114     }
42115 
setStageCountVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42116     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
42117     {
42118       stageCount = stageCount_;
42119       return *this;
42120     }
42121 
42122     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV &
setPStagesVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42123       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
42124     {
42125       pStages = pStages_;
42126       return *this;
42127     }
42128 
42129 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
42130     GraphicsShaderGroupCreateInfoNV &
setStagesVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42131       setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
42132     {
42133       stageCount = static_cast<uint32_t>( stages_.size() );
42134       pStages    = stages_.data();
42135       return *this;
42136     }
42137 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42138 
42139     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV &
setPVertexInputStateVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42140       setPVertexInputState( const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ ) VULKAN_HPP_NOEXCEPT
42141     {
42142       pVertexInputState = pVertexInputState_;
42143       return *this;
42144     }
42145 
42146     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV &
setPTessellationStateVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42147       setPTessellationState( const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ ) VULKAN_HPP_NOEXCEPT
42148     {
42149       pTessellationState = pTessellationState_;
42150       return *this;
42151     }
42152 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42153 
operator VkGraphicsShaderGroupCreateInfoNV const&VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42154     operator VkGraphicsShaderGroupCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
42155     {
42156       return *reinterpret_cast<const VkGraphicsShaderGroupCreateInfoNV *>( this );
42157     }
42158 
operator VkGraphicsShaderGroupCreateInfoNV&VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42159     operator VkGraphicsShaderGroupCreateInfoNV &() VULKAN_HPP_NOEXCEPT
42160     {
42161       return *reinterpret_cast<VkGraphicsShaderGroupCreateInfoNV *>( this );
42162     }
42163 
42164 #if defined( VULKAN_HPP_USE_REFLECT )
42165 #  if 14 <= VULKAN_HPP_CPP_VERSION
42166     auto
42167 #  else
42168     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42169                const void * const &,
42170                uint32_t const &,
42171                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
42172                const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * const &,
42173                const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * const &>
42174 #  endif
reflectVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42175       reflect() const VULKAN_HPP_NOEXCEPT
42176     {
42177       return std::tie( sType, pNext, stageCount, pStages, pVertexInputState, pTessellationState );
42178     }
42179 #endif
42180 
42181 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42182     auto operator<=>( GraphicsShaderGroupCreateInfoNV const & ) const = default;
42183 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42184     bool operator==( GraphicsShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
42185     {
42186 #  if defined( VULKAN_HPP_USE_REFLECT )
42187       return this->reflect() == rhs.reflect();
42188 #  else
42189       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) &&
42190              ( pVertexInputState == rhs.pVertexInputState ) && ( pTessellationState == rhs.pTessellationState );
42191 #  endif
42192     }
42193 
operator !=VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV42194     bool operator!=( GraphicsShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
42195     {
42196       return !operator==( rhs );
42197     }
42198 #endif
42199 
42200   public:
42201     VULKAN_HPP_NAMESPACE::StructureType                               sType              = StructureType::eGraphicsShaderGroupCreateInfoNV;
42202     const void *                                                      pNext              = {};
42203     uint32_t                                                          stageCount         = {};
42204     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *       pStages            = {};
42205     const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *  pVertexInputState  = {};
42206     const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState = {};
42207   };
42208 
42209   template <>
42210   struct CppType<StructureType, StructureType::eGraphicsShaderGroupCreateInfoNV>
42211   {
42212     using Type = GraphicsShaderGroupCreateInfoNV;
42213   };
42214 
42215   struct GraphicsPipelineShaderGroupsCreateInfoNV
42216   {
42217     using NativeType = VkGraphicsPipelineShaderGroupsCreateInfoNV;
42218 
42219     static const bool                                  allowDuplicate = false;
42220     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV;
42221 
42222 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsPipelineShaderGroupsCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42223     VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV( uint32_t                                                      groupCount_    = {},
42224                                                                    const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups_       = {},
42225                                                                    uint32_t                                                      pipelineCount_ = {},
42226                                                                    const VULKAN_HPP_NAMESPACE::Pipeline *                        pPipelines_    = {},
42227                                                                    const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
42228       : pNext{ pNext_ }
42229       , groupCount{ groupCount_ }
42230       , pGroups{ pGroups_ }
42231       , pipelineCount{ pipelineCount_ }
42232       , pPipelines{ pPipelines_ }
42233     {
42234     }
42235 
42236     VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42237 
GraphicsPipelineShaderGroupsCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42238     GraphicsPipelineShaderGroupsCreateInfoNV( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
42239       : GraphicsPipelineShaderGroupsCreateInfoNV( *reinterpret_cast<GraphicsPipelineShaderGroupsCreateInfoNV const *>( &rhs ) )
42240     {
42241     }
42242 
42243 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GraphicsPipelineShaderGroupsCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42244     GraphicsPipelineShaderGroupsCreateInfoNV(
42245       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV> const & groups_,
42246       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const &                        pipelines_ = {},
42247       const void *                                                                                                       pNext_     = nullptr )
42248       : pNext( pNext_ )
42249       , groupCount( static_cast<uint32_t>( groups_.size() ) )
42250       , pGroups( groups_.data() )
42251       , pipelineCount( static_cast<uint32_t>( pipelines_.size() ) )
42252       , pPipelines( pipelines_.data() )
42253     {
42254     }
42255 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42256 
42257     GraphicsPipelineShaderGroupsCreateInfoNV & operator=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42258 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42259 
operator =VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42260     GraphicsPipelineShaderGroupsCreateInfoNV & operator=( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
42261     {
42262       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV const *>( &rhs );
42263       return *this;
42264     }
42265 
42266 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42267     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42268     {
42269       pNext = pNext_;
42270       return *this;
42271     }
42272 
setGroupCountVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42273     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT
42274     {
42275       groupCount = groupCount_;
42276       return *this;
42277     }
42278 
42279     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV &
setPGroupsVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42280       setPGroups( const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups_ ) VULKAN_HPP_NOEXCEPT
42281     {
42282       pGroups = pGroups_;
42283       return *this;
42284     }
42285 
42286 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGroupsVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42287     GraphicsPipelineShaderGroupsCreateInfoNV & setGroups(
42288       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV> const & groups_ ) VULKAN_HPP_NOEXCEPT
42289     {
42290       groupCount = static_cast<uint32_t>( groups_.size() );
42291       pGroups    = groups_.data();
42292       return *this;
42293     }
42294 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42295 
setPipelineCountVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42296     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setPipelineCount( uint32_t pipelineCount_ ) VULKAN_HPP_NOEXCEPT
42297     {
42298       pipelineCount = pipelineCount_;
42299       return *this;
42300     }
42301 
setPPipelinesVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42302     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setPPipelines( const VULKAN_HPP_NAMESPACE::Pipeline * pPipelines_ ) VULKAN_HPP_NOEXCEPT
42303     {
42304       pPipelines = pPipelines_;
42305       return *this;
42306     }
42307 
42308 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
42309     GraphicsPipelineShaderGroupsCreateInfoNV &
setPipelinesVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42310       setPipelines( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & pipelines_ ) VULKAN_HPP_NOEXCEPT
42311     {
42312       pipelineCount = static_cast<uint32_t>( pipelines_.size() );
42313       pPipelines    = pipelines_.data();
42314       return *this;
42315     }
42316 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42317 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42318 
operator VkGraphicsPipelineShaderGroupsCreateInfoNV const&VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42319     operator VkGraphicsPipelineShaderGroupsCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
42320     {
42321       return *reinterpret_cast<const VkGraphicsPipelineShaderGroupsCreateInfoNV *>( this );
42322     }
42323 
operator VkGraphicsPipelineShaderGroupsCreateInfoNV&VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42324     operator VkGraphicsPipelineShaderGroupsCreateInfoNV &() VULKAN_HPP_NOEXCEPT
42325     {
42326       return *reinterpret_cast<VkGraphicsPipelineShaderGroupsCreateInfoNV *>( this );
42327     }
42328 
42329 #if defined( VULKAN_HPP_USE_REFLECT )
42330 #  if 14 <= VULKAN_HPP_CPP_VERSION
42331     auto
42332 #  else
42333     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42334                const void * const &,
42335                uint32_t const &,
42336                const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * const &,
42337                uint32_t const &,
42338                const VULKAN_HPP_NAMESPACE::Pipeline * const &>
42339 #  endif
reflectVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42340       reflect() const VULKAN_HPP_NOEXCEPT
42341     {
42342       return std::tie( sType, pNext, groupCount, pGroups, pipelineCount, pPipelines );
42343     }
42344 #endif
42345 
42346 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42347     auto operator<=>( GraphicsPipelineShaderGroupsCreateInfoNV const & ) const = default;
42348 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42349     bool operator==( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
42350     {
42351 #  if defined( VULKAN_HPP_USE_REFLECT )
42352       return this->reflect() == rhs.reflect();
42353 #  else
42354       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( groupCount == rhs.groupCount ) && ( pGroups == rhs.pGroups ) &&
42355              ( pipelineCount == rhs.pipelineCount ) && ( pPipelines == rhs.pPipelines );
42356 #  endif
42357     }
42358 
operator !=VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42359     bool operator!=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
42360     {
42361       return !operator==( rhs );
42362     }
42363 #endif
42364 
42365   public:
42366     VULKAN_HPP_NAMESPACE::StructureType                           sType         = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV;
42367     const void *                                                  pNext         = {};
42368     uint32_t                                                      groupCount    = {};
42369     const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups       = {};
42370     uint32_t                                                      pipelineCount = {};
42371     const VULKAN_HPP_NAMESPACE::Pipeline *                        pPipelines    = {};
42372   };
42373 
42374   template <>
42375   struct CppType<StructureType, StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV>
42376   {
42377     using Type = GraphicsPipelineShaderGroupsCreateInfoNV;
42378   };
42379 
42380   struct XYColorEXT
42381   {
42382     using NativeType = VkXYColorEXT;
42383 
42384 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
XYColorEXTVULKAN_HPP_NAMESPACE::XYColorEXT42385     VULKAN_HPP_CONSTEXPR XYColorEXT( float x_ = {}, float y_ = {} ) VULKAN_HPP_NOEXCEPT
42386       : x{ x_ }
42387       , y{ y_ }
42388     {
42389     }
42390 
42391     VULKAN_HPP_CONSTEXPR XYColorEXT( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42392 
XYColorEXTVULKAN_HPP_NAMESPACE::XYColorEXT42393     XYColorEXT( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT : XYColorEXT( *reinterpret_cast<XYColorEXT const *>( &rhs ) ) {}
42394 
42395     XYColorEXT & operator=( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42396 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42397 
operator =VULKAN_HPP_NAMESPACE::XYColorEXT42398     XYColorEXT & operator=( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42399     {
42400       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XYColorEXT const *>( &rhs );
42401       return *this;
42402     }
42403 
42404 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::XYColorEXT42405     VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT
42406     {
42407       x = x_;
42408       return *this;
42409     }
42410 
setYVULKAN_HPP_NAMESPACE::XYColorEXT42411     VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT
42412     {
42413       y = y_;
42414       return *this;
42415     }
42416 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42417 
operator VkXYColorEXT const&VULKAN_HPP_NAMESPACE::XYColorEXT42418     operator VkXYColorEXT const &() const VULKAN_HPP_NOEXCEPT
42419     {
42420       return *reinterpret_cast<const VkXYColorEXT *>( this );
42421     }
42422 
operator VkXYColorEXT&VULKAN_HPP_NAMESPACE::XYColorEXT42423     operator VkXYColorEXT &() VULKAN_HPP_NOEXCEPT
42424     {
42425       return *reinterpret_cast<VkXYColorEXT *>( this );
42426     }
42427 
42428 #if defined( VULKAN_HPP_USE_REFLECT )
42429 #  if 14 <= VULKAN_HPP_CPP_VERSION
42430     auto
42431 #  else
42432     std::tuple<float const &, float const &>
42433 #  endif
reflectVULKAN_HPP_NAMESPACE::XYColorEXT42434       reflect() const VULKAN_HPP_NOEXCEPT
42435     {
42436       return std::tie( x, y );
42437     }
42438 #endif
42439 
42440 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42441     auto operator<=>( XYColorEXT const & ) const = default;
42442 #else
operator ==VULKAN_HPP_NAMESPACE::XYColorEXT42443     bool operator==( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42444     {
42445 #  if defined( VULKAN_HPP_USE_REFLECT )
42446       return this->reflect() == rhs.reflect();
42447 #  else
42448       return ( x == rhs.x ) && ( y == rhs.y );
42449 #  endif
42450     }
42451 
operator !=VULKAN_HPP_NAMESPACE::XYColorEXT42452     bool operator!=( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42453     {
42454       return !operator==( rhs );
42455     }
42456 #endif
42457 
42458   public:
42459     float x = {};
42460     float y = {};
42461   };
42462 
42463   struct HdrMetadataEXT
42464   {
42465     using NativeType = VkHdrMetadataEXT;
42466 
42467     static const bool                                  allowDuplicate = false;
42468     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eHdrMetadataEXT;
42469 
42470 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HdrMetadataEXTVULKAN_HPP_NAMESPACE::HdrMetadataEXT42471     VULKAN_HPP_CONSTEXPR HdrMetadataEXT( VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryRed_         = {},
42472                                          VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryGreen_       = {},
42473                                          VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryBlue_        = {},
42474                                          VULKAN_HPP_NAMESPACE::XYColorEXT whitePoint_                = {},
42475                                          float                            maxLuminance_              = {},
42476                                          float                            minLuminance_              = {},
42477                                          float                            maxContentLightLevel_      = {},
42478                                          float                            maxFrameAverageLightLevel_ = {},
42479                                          const void *                     pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
42480       : pNext{ pNext_ }
42481       , displayPrimaryRed{ displayPrimaryRed_ }
42482       , displayPrimaryGreen{ displayPrimaryGreen_ }
42483       , displayPrimaryBlue{ displayPrimaryBlue_ }
42484       , whitePoint{ whitePoint_ }
42485       , maxLuminance{ maxLuminance_ }
42486       , minLuminance{ minLuminance_ }
42487       , maxContentLightLevel{ maxContentLightLevel_ }
42488       , maxFrameAverageLightLevel{ maxFrameAverageLightLevel_ }
42489     {
42490     }
42491 
42492     VULKAN_HPP_CONSTEXPR HdrMetadataEXT( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42493 
HdrMetadataEXTVULKAN_HPP_NAMESPACE::HdrMetadataEXT42494     HdrMetadataEXT( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT : HdrMetadataEXT( *reinterpret_cast<HdrMetadataEXT const *>( &rhs ) ) {}
42495 
42496     HdrMetadataEXT & operator=( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42497 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42498 
operator =VULKAN_HPP_NAMESPACE::HdrMetadataEXT42499     HdrMetadataEXT & operator=( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42500     {
42501       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HdrMetadataEXT const *>( &rhs );
42502       return *this;
42503     }
42504 
42505 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::HdrMetadataEXT42506     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42507     {
42508       pNext = pNext_;
42509       return *this;
42510     }
42511 
setDisplayPrimaryRedVULKAN_HPP_NAMESPACE::HdrMetadataEXT42512     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryRed( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryRed_ ) VULKAN_HPP_NOEXCEPT
42513     {
42514       displayPrimaryRed = displayPrimaryRed_;
42515       return *this;
42516     }
42517 
setDisplayPrimaryGreenVULKAN_HPP_NAMESPACE::HdrMetadataEXT42518     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryGreen( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryGreen_ ) VULKAN_HPP_NOEXCEPT
42519     {
42520       displayPrimaryGreen = displayPrimaryGreen_;
42521       return *this;
42522     }
42523 
setDisplayPrimaryBlueVULKAN_HPP_NAMESPACE::HdrMetadataEXT42524     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryBlue( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryBlue_ ) VULKAN_HPP_NOEXCEPT
42525     {
42526       displayPrimaryBlue = displayPrimaryBlue_;
42527       return *this;
42528     }
42529 
setWhitePointVULKAN_HPP_NAMESPACE::HdrMetadataEXT42530     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setWhitePoint( VULKAN_HPP_NAMESPACE::XYColorEXT const & whitePoint_ ) VULKAN_HPP_NOEXCEPT
42531     {
42532       whitePoint = whitePoint_;
42533       return *this;
42534     }
42535 
setMaxLuminanceVULKAN_HPP_NAMESPACE::HdrMetadataEXT42536     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxLuminance( float maxLuminance_ ) VULKAN_HPP_NOEXCEPT
42537     {
42538       maxLuminance = maxLuminance_;
42539       return *this;
42540     }
42541 
setMinLuminanceVULKAN_HPP_NAMESPACE::HdrMetadataEXT42542     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMinLuminance( float minLuminance_ ) VULKAN_HPP_NOEXCEPT
42543     {
42544       minLuminance = minLuminance_;
42545       return *this;
42546     }
42547 
setMaxContentLightLevelVULKAN_HPP_NAMESPACE::HdrMetadataEXT42548     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxContentLightLevel( float maxContentLightLevel_ ) VULKAN_HPP_NOEXCEPT
42549     {
42550       maxContentLightLevel = maxContentLightLevel_;
42551       return *this;
42552     }
42553 
setMaxFrameAverageLightLevelVULKAN_HPP_NAMESPACE::HdrMetadataEXT42554     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ ) VULKAN_HPP_NOEXCEPT
42555     {
42556       maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
42557       return *this;
42558     }
42559 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42560 
operator VkHdrMetadataEXT const&VULKAN_HPP_NAMESPACE::HdrMetadataEXT42561     operator VkHdrMetadataEXT const &() const VULKAN_HPP_NOEXCEPT
42562     {
42563       return *reinterpret_cast<const VkHdrMetadataEXT *>( this );
42564     }
42565 
operator VkHdrMetadataEXT&VULKAN_HPP_NAMESPACE::HdrMetadataEXT42566     operator VkHdrMetadataEXT &() VULKAN_HPP_NOEXCEPT
42567     {
42568       return *reinterpret_cast<VkHdrMetadataEXT *>( this );
42569     }
42570 
42571 #if defined( VULKAN_HPP_USE_REFLECT )
42572 #  if 14 <= VULKAN_HPP_CPP_VERSION
42573     auto
42574 #  else
42575     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42576                const void * const &,
42577                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
42578                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
42579                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
42580                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
42581                float const &,
42582                float const &,
42583                float const &,
42584                float const &>
42585 #  endif
reflectVULKAN_HPP_NAMESPACE::HdrMetadataEXT42586       reflect() const VULKAN_HPP_NOEXCEPT
42587     {
42588       return std::tie( sType,
42589                        pNext,
42590                        displayPrimaryRed,
42591                        displayPrimaryGreen,
42592                        displayPrimaryBlue,
42593                        whitePoint,
42594                        maxLuminance,
42595                        minLuminance,
42596                        maxContentLightLevel,
42597                        maxFrameAverageLightLevel );
42598     }
42599 #endif
42600 
42601 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42602     auto operator<=>( HdrMetadataEXT const & ) const = default;
42603 #else
operator ==VULKAN_HPP_NAMESPACE::HdrMetadataEXT42604     bool operator==( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42605     {
42606 #  if defined( VULKAN_HPP_USE_REFLECT )
42607       return this->reflect() == rhs.reflect();
42608 #  else
42609       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayPrimaryRed == rhs.displayPrimaryRed ) &&
42610              ( displayPrimaryGreen == rhs.displayPrimaryGreen ) && ( displayPrimaryBlue == rhs.displayPrimaryBlue ) && ( whitePoint == rhs.whitePoint ) &&
42611              ( maxLuminance == rhs.maxLuminance ) && ( minLuminance == rhs.minLuminance ) && ( maxContentLightLevel == rhs.maxContentLightLevel ) &&
42612              ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
42613 #  endif
42614     }
42615 
operator !=VULKAN_HPP_NAMESPACE::HdrMetadataEXT42616     bool operator!=( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42617     {
42618       return !operator==( rhs );
42619     }
42620 #endif
42621 
42622   public:
42623     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eHdrMetadataEXT;
42624     const void *                        pNext                     = {};
42625     VULKAN_HPP_NAMESPACE::XYColorEXT    displayPrimaryRed         = {};
42626     VULKAN_HPP_NAMESPACE::XYColorEXT    displayPrimaryGreen       = {};
42627     VULKAN_HPP_NAMESPACE::XYColorEXT    displayPrimaryBlue        = {};
42628     VULKAN_HPP_NAMESPACE::XYColorEXT    whitePoint                = {};
42629     float                               maxLuminance              = {};
42630     float                               minLuminance              = {};
42631     float                               maxContentLightLevel      = {};
42632     float                               maxFrameAverageLightLevel = {};
42633   };
42634 
42635   template <>
42636   struct CppType<StructureType, StructureType::eHdrMetadataEXT>
42637   {
42638     using Type = HdrMetadataEXT;
42639   };
42640 
42641   struct HeadlessSurfaceCreateInfoEXT
42642   {
42643     using NativeType = VkHeadlessSurfaceCreateInfoEXT;
42644 
42645     static const bool                                  allowDuplicate = false;
42646     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eHeadlessSurfaceCreateInfoEXT;
42647 
42648 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HeadlessSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42649     VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ = {},
42650                                                        const void *                                        pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
42651       : pNext{ pNext_ }
42652       , flags{ flags_ }
42653     {
42654     }
42655 
42656     VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42657 
HeadlessSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42658     HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42659       : HeadlessSurfaceCreateInfoEXT( *reinterpret_cast<HeadlessSurfaceCreateInfoEXT const *>( &rhs ) )
42660     {
42661     }
42662 
42663     HeadlessSurfaceCreateInfoEXT & operator=( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42664 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42665 
operator =VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42666     HeadlessSurfaceCreateInfoEXT & operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42667     {
42668       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const *>( &rhs );
42669       return *this;
42670     }
42671 
42672 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42673     VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42674     {
42675       pNext = pNext_;
42676       return *this;
42677     }
42678 
setFlagsVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42679     VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
42680     {
42681       flags = flags_;
42682       return *this;
42683     }
42684 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42685 
operator VkHeadlessSurfaceCreateInfoEXT const&VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42686     operator VkHeadlessSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
42687     {
42688       return *reinterpret_cast<const VkHeadlessSurfaceCreateInfoEXT *>( this );
42689     }
42690 
operator VkHeadlessSurfaceCreateInfoEXT&VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42691     operator VkHeadlessSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
42692     {
42693       return *reinterpret_cast<VkHeadlessSurfaceCreateInfoEXT *>( this );
42694     }
42695 
42696 #if defined( VULKAN_HPP_USE_REFLECT )
42697 #  if 14 <= VULKAN_HPP_CPP_VERSION
42698     auto
42699 #  else
42700     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT const &>
42701 #  endif
reflectVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42702       reflect() const VULKAN_HPP_NOEXCEPT
42703     {
42704       return std::tie( sType, pNext, flags );
42705     }
42706 #endif
42707 
42708 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42709     auto operator<=>( HeadlessSurfaceCreateInfoEXT const & ) const = default;
42710 #else
operator ==VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42711     bool operator==( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42712     {
42713 #  if defined( VULKAN_HPP_USE_REFLECT )
42714       return this->reflect() == rhs.reflect();
42715 #  else
42716       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
42717 #  endif
42718     }
42719 
operator !=VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42720     bool operator!=( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42721     {
42722       return !operator==( rhs );
42723     }
42724 #endif
42725 
42726   public:
42727     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::eHeadlessSurfaceCreateInfoEXT;
42728     const void *                                        pNext = {};
42729     VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags = {};
42730   };
42731 
42732   template <>
42733   struct CppType<StructureType, StructureType::eHeadlessSurfaceCreateInfoEXT>
42734   {
42735     using Type = HeadlessSurfaceCreateInfoEXT;
42736   };
42737 
42738   struct HostImageCopyDevicePerformanceQuery
42739   {
42740     using NativeType = VkHostImageCopyDevicePerformanceQuery;
42741 
42742     static const bool                                  allowDuplicate = false;
42743     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eHostImageCopyDevicePerformanceQuery;
42744 
42745 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HostImageCopyDevicePerformanceQueryVULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery42746     VULKAN_HPP_CONSTEXPR HostImageCopyDevicePerformanceQuery( VULKAN_HPP_NAMESPACE::Bool32 optimalDeviceAccess_   = {},
42747                                                               VULKAN_HPP_NAMESPACE::Bool32 identicalMemoryLayout_ = {},
42748                                                               void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
42749       : pNext{ pNext_ }
42750       , optimalDeviceAccess{ optimalDeviceAccess_ }
42751       , identicalMemoryLayout{ identicalMemoryLayout_ }
42752     {
42753     }
42754 
42755     VULKAN_HPP_CONSTEXPR HostImageCopyDevicePerformanceQuery( HostImageCopyDevicePerformanceQuery const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42756 
HostImageCopyDevicePerformanceQueryVULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery42757     HostImageCopyDevicePerformanceQuery( VkHostImageCopyDevicePerformanceQuery const & rhs ) VULKAN_HPP_NOEXCEPT
42758       : HostImageCopyDevicePerformanceQuery( *reinterpret_cast<HostImageCopyDevicePerformanceQuery const *>( &rhs ) )
42759     {
42760     }
42761 
42762     HostImageCopyDevicePerformanceQuery & operator=( HostImageCopyDevicePerformanceQuery const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42763 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42764 
operator =VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery42765     HostImageCopyDevicePerformanceQuery & operator=( VkHostImageCopyDevicePerformanceQuery const & rhs ) VULKAN_HPP_NOEXCEPT
42766     {
42767       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery const *>( &rhs );
42768       return *this;
42769     }
42770 
operator VkHostImageCopyDevicePerformanceQuery const&VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery42771     operator VkHostImageCopyDevicePerformanceQuery const &() const VULKAN_HPP_NOEXCEPT
42772     {
42773       return *reinterpret_cast<const VkHostImageCopyDevicePerformanceQuery *>( this );
42774     }
42775 
operator VkHostImageCopyDevicePerformanceQuery&VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery42776     operator VkHostImageCopyDevicePerformanceQuery &() VULKAN_HPP_NOEXCEPT
42777     {
42778       return *reinterpret_cast<VkHostImageCopyDevicePerformanceQuery *>( this );
42779     }
42780 
42781 #if defined( VULKAN_HPP_USE_REFLECT )
42782 #  if 14 <= VULKAN_HPP_CPP_VERSION
42783     auto
42784 #  else
42785     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
42786 #  endif
reflectVULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery42787       reflect() const VULKAN_HPP_NOEXCEPT
42788     {
42789       return std::tie( sType, pNext, optimalDeviceAccess, identicalMemoryLayout );
42790     }
42791 #endif
42792 
42793 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42794     auto operator<=>( HostImageCopyDevicePerformanceQuery const & ) const = default;
42795 #else
operator ==VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery42796     bool operator==( HostImageCopyDevicePerformanceQuery const & rhs ) const VULKAN_HPP_NOEXCEPT
42797     {
42798 #  if defined( VULKAN_HPP_USE_REFLECT )
42799       return this->reflect() == rhs.reflect();
42800 #  else
42801       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( optimalDeviceAccess == rhs.optimalDeviceAccess ) &&
42802              ( identicalMemoryLayout == rhs.identicalMemoryLayout );
42803 #  endif
42804     }
42805 
operator !=VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery42806     bool operator!=( HostImageCopyDevicePerformanceQuery const & rhs ) const VULKAN_HPP_NOEXCEPT
42807     {
42808       return !operator==( rhs );
42809     }
42810 #endif
42811 
42812   public:
42813     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::eHostImageCopyDevicePerformanceQuery;
42814     void *                              pNext                 = {};
42815     VULKAN_HPP_NAMESPACE::Bool32        optimalDeviceAccess   = {};
42816     VULKAN_HPP_NAMESPACE::Bool32        identicalMemoryLayout = {};
42817   };
42818 
42819   template <>
42820   struct CppType<StructureType, StructureType::eHostImageCopyDevicePerformanceQuery>
42821   {
42822     using Type = HostImageCopyDevicePerformanceQuery;
42823   };
42824 
42825   using HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery;
42826 
42827   struct HostImageLayoutTransitionInfo
42828   {
42829     using NativeType = VkHostImageLayoutTransitionInfo;
42830 
42831     static const bool                                  allowDuplicate = false;
42832     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eHostImageLayoutTransitionInfo;
42833 
42834 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HostImageLayoutTransitionInfoVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42835     VULKAN_HPP_CONSTEXPR HostImageLayoutTransitionInfo( VULKAN_HPP_NAMESPACE::Image                 image_     = {},
42836                                                         VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
42837                                                         VULKAN_HPP_NAMESPACE::ImageLayout           newLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
42838                                                         VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {},
42839                                                         const void *                                pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
42840       : pNext{ pNext_ }
42841       , image{ image_ }
42842       , oldLayout{ oldLayout_ }
42843       , newLayout{ newLayout_ }
42844       , subresourceRange{ subresourceRange_ }
42845     {
42846     }
42847 
42848     VULKAN_HPP_CONSTEXPR HostImageLayoutTransitionInfo( HostImageLayoutTransitionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42849 
HostImageLayoutTransitionInfoVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42850     HostImageLayoutTransitionInfo( VkHostImageLayoutTransitionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
42851       : HostImageLayoutTransitionInfo( *reinterpret_cast<HostImageLayoutTransitionInfo const *>( &rhs ) )
42852     {
42853     }
42854 
42855     HostImageLayoutTransitionInfo & operator=( HostImageLayoutTransitionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42856 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42857 
operator =VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42858     HostImageLayoutTransitionInfo & operator=( VkHostImageLayoutTransitionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
42859     {
42860       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo const *>( &rhs );
42861       return *this;
42862     }
42863 
42864 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42865     VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42866     {
42867       pNext = pNext_;
42868       return *this;
42869     }
42870 
setImageVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42871     VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
42872     {
42873       image = image_;
42874       return *this;
42875     }
42876 
setOldLayoutVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42877     VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo & setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT
42878     {
42879       oldLayout = oldLayout_;
42880       return *this;
42881     }
42882 
setNewLayoutVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42883     VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo & setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT
42884     {
42885       newLayout = newLayout_;
42886       return *this;
42887     }
42888 
42889     VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo &
setSubresourceRangeVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42890       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
42891     {
42892       subresourceRange = subresourceRange_;
42893       return *this;
42894     }
42895 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42896 
operator VkHostImageLayoutTransitionInfo const&VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42897     operator VkHostImageLayoutTransitionInfo const &() const VULKAN_HPP_NOEXCEPT
42898     {
42899       return *reinterpret_cast<const VkHostImageLayoutTransitionInfo *>( this );
42900     }
42901 
operator VkHostImageLayoutTransitionInfo&VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42902     operator VkHostImageLayoutTransitionInfo &() VULKAN_HPP_NOEXCEPT
42903     {
42904       return *reinterpret_cast<VkHostImageLayoutTransitionInfo *>( this );
42905     }
42906 
42907 #if defined( VULKAN_HPP_USE_REFLECT )
42908 #  if 14 <= VULKAN_HPP_CPP_VERSION
42909     auto
42910 #  else
42911     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42912                const void * const &,
42913                VULKAN_HPP_NAMESPACE::Image const &,
42914                VULKAN_HPP_NAMESPACE::ImageLayout const &,
42915                VULKAN_HPP_NAMESPACE::ImageLayout const &,
42916                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
42917 #  endif
reflectVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42918       reflect() const VULKAN_HPP_NOEXCEPT
42919     {
42920       return std::tie( sType, pNext, image, oldLayout, newLayout, subresourceRange );
42921     }
42922 #endif
42923 
42924 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42925     auto operator<=>( HostImageLayoutTransitionInfo const & ) const = default;
42926 #else
operator ==VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42927     bool operator==( HostImageLayoutTransitionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
42928     {
42929 #  if defined( VULKAN_HPP_USE_REFLECT )
42930       return this->reflect() == rhs.reflect();
42931 #  else
42932       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( oldLayout == rhs.oldLayout ) && ( newLayout == rhs.newLayout ) &&
42933              ( subresourceRange == rhs.subresourceRange );
42934 #  endif
42935     }
42936 
operator !=VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo42937     bool operator!=( HostImageLayoutTransitionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
42938     {
42939       return !operator==( rhs );
42940     }
42941 #endif
42942 
42943   public:
42944     VULKAN_HPP_NAMESPACE::StructureType         sType            = StructureType::eHostImageLayoutTransitionInfo;
42945     const void *                                pNext            = {};
42946     VULKAN_HPP_NAMESPACE::Image                 image            = {};
42947     VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout        = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
42948     VULKAN_HPP_NAMESPACE::ImageLayout           newLayout        = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
42949     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {};
42950   };
42951 
42952   template <>
42953   struct CppType<StructureType, StructureType::eHostImageLayoutTransitionInfo>
42954   {
42955     using Type = HostImageLayoutTransitionInfo;
42956   };
42957 
42958   using HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo;
42959 
42960 #if defined( VK_USE_PLATFORM_IOS_MVK )
42961   struct IOSSurfaceCreateInfoMVK
42962   {
42963     using NativeType = VkIOSSurfaceCreateInfoMVK;
42964 
42965     static const bool                                  allowDuplicate = false;
42966     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eIosSurfaceCreateInfoMVK;
42967 
42968 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
IOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42969     VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags_ = {},
42970                                                   const void *                                   pView_ = {},
42971                                                   const void *                                   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
42972       : pNext{ pNext_ }
42973       , flags{ flags_ }
42974       , pView{ pView_ }
42975     {
42976     }
42977 
42978     VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42979 
IOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42980     IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
42981       : IOSSurfaceCreateInfoMVK( *reinterpret_cast<IOSSurfaceCreateInfoMVK const *>( &rhs ) )
42982     {
42983     }
42984 
42985     IOSSurfaceCreateInfoMVK & operator=( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42986 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42987 
operator =VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42988     IOSSurfaceCreateInfoMVK & operator=( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
42989     {
42990       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const *>( &rhs );
42991       return *this;
42992     }
42993 
42994 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42995     VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42996     {
42997       pNext = pNext_;
42998       return *this;
42999     }
43000 
setFlagsVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK43001     VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setFlags( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags_ ) VULKAN_HPP_NOEXCEPT
43002     {
43003       flags = flags_;
43004       return *this;
43005     }
43006 
setPViewVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK43007     VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setPView( const void * pView_ ) VULKAN_HPP_NOEXCEPT
43008     {
43009       pView = pView_;
43010       return *this;
43011     }
43012 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43013 
operator VkIOSSurfaceCreateInfoMVK const&VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK43014     operator VkIOSSurfaceCreateInfoMVK const &() const VULKAN_HPP_NOEXCEPT
43015     {
43016       return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK *>( this );
43017     }
43018 
operator VkIOSSurfaceCreateInfoMVK&VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK43019     operator VkIOSSurfaceCreateInfoMVK &() VULKAN_HPP_NOEXCEPT
43020     {
43021       return *reinterpret_cast<VkIOSSurfaceCreateInfoMVK *>( this );
43022     }
43023 
43024 #  if defined( VULKAN_HPP_USE_REFLECT )
43025 #    if 14 <= VULKAN_HPP_CPP_VERSION
43026     auto
43027 #    else
43028     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK const &, const void * const &>
43029 #    endif
reflectVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK43030       reflect() const VULKAN_HPP_NOEXCEPT
43031     {
43032       return std::tie( sType, pNext, flags, pView );
43033     }
43034 #  endif
43035 
43036 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43037     auto operator<=>( IOSSurfaceCreateInfoMVK const & ) const = default;
43038 #  else
operator ==VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK43039     bool operator==( IOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
43040     {
43041 #    if defined( VULKAN_HPP_USE_REFLECT )
43042       return this->reflect() == rhs.reflect();
43043 #    else
43044       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pView == rhs.pView );
43045 #    endif
43046     }
43047 
operator !=VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK43048     bool operator!=( IOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
43049     {
43050       return !operator==( rhs );
43051     }
43052 #  endif
43053 
43054   public:
43055     VULKAN_HPP_NAMESPACE::StructureType            sType = StructureType::eIosSurfaceCreateInfoMVK;
43056     const void *                                   pNext = {};
43057     VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags = {};
43058     const void *                                   pView = {};
43059   };
43060 
43061   template <>
43062   struct CppType<StructureType, StructureType::eIosSurfaceCreateInfoMVK>
43063   {
43064     using Type = IOSSurfaceCreateInfoMVK;
43065   };
43066 #endif /*VK_USE_PLATFORM_IOS_MVK*/
43067 
43068   struct ImageAlignmentControlCreateInfoMESA
43069   {
43070     using NativeType = VkImageAlignmentControlCreateInfoMESA;
43071 
43072     static const bool                                  allowDuplicate = false;
43073     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageAlignmentControlCreateInfoMESA;
43074 
43075 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageAlignmentControlCreateInfoMESAVULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA43076     VULKAN_HPP_CONSTEXPR ImageAlignmentControlCreateInfoMESA( uint32_t maximumRequestedAlignment_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43077       : pNext{ pNext_ }
43078       , maximumRequestedAlignment{ maximumRequestedAlignment_ }
43079     {
43080     }
43081 
43082     VULKAN_HPP_CONSTEXPR ImageAlignmentControlCreateInfoMESA( ImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43083 
ImageAlignmentControlCreateInfoMESAVULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA43084     ImageAlignmentControlCreateInfoMESA( VkImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT
43085       : ImageAlignmentControlCreateInfoMESA( *reinterpret_cast<ImageAlignmentControlCreateInfoMESA const *>( &rhs ) )
43086     {
43087     }
43088 
43089     ImageAlignmentControlCreateInfoMESA & operator=( ImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43090 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43091 
operator =VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA43092     ImageAlignmentControlCreateInfoMESA & operator=( VkImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT
43093     {
43094       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA const *>( &rhs );
43095       return *this;
43096     }
43097 
43098 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA43099     VULKAN_HPP_CONSTEXPR_14 ImageAlignmentControlCreateInfoMESA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43100     {
43101       pNext = pNext_;
43102       return *this;
43103     }
43104 
setMaximumRequestedAlignmentVULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA43105     VULKAN_HPP_CONSTEXPR_14 ImageAlignmentControlCreateInfoMESA & setMaximumRequestedAlignment( uint32_t maximumRequestedAlignment_ ) VULKAN_HPP_NOEXCEPT
43106     {
43107       maximumRequestedAlignment = maximumRequestedAlignment_;
43108       return *this;
43109     }
43110 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43111 
operator VkImageAlignmentControlCreateInfoMESA const&VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA43112     operator VkImageAlignmentControlCreateInfoMESA const &() const VULKAN_HPP_NOEXCEPT
43113     {
43114       return *reinterpret_cast<const VkImageAlignmentControlCreateInfoMESA *>( this );
43115     }
43116 
operator VkImageAlignmentControlCreateInfoMESA&VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA43117     operator VkImageAlignmentControlCreateInfoMESA &() VULKAN_HPP_NOEXCEPT
43118     {
43119       return *reinterpret_cast<VkImageAlignmentControlCreateInfoMESA *>( this );
43120     }
43121 
43122 #if defined( VULKAN_HPP_USE_REFLECT )
43123 #  if 14 <= VULKAN_HPP_CPP_VERSION
43124     auto
43125 #  else
43126     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
43127 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA43128       reflect() const VULKAN_HPP_NOEXCEPT
43129     {
43130       return std::tie( sType, pNext, maximumRequestedAlignment );
43131     }
43132 #endif
43133 
43134 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43135     auto operator<=>( ImageAlignmentControlCreateInfoMESA const & ) const = default;
43136 #else
operator ==VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA43137     bool operator==( ImageAlignmentControlCreateInfoMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
43138     {
43139 #  if defined( VULKAN_HPP_USE_REFLECT )
43140       return this->reflect() == rhs.reflect();
43141 #  else
43142       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maximumRequestedAlignment == rhs.maximumRequestedAlignment );
43143 #  endif
43144     }
43145 
operator !=VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA43146     bool operator!=( ImageAlignmentControlCreateInfoMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
43147     {
43148       return !operator==( rhs );
43149     }
43150 #endif
43151 
43152   public:
43153     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eImageAlignmentControlCreateInfoMESA;
43154     const void *                        pNext                     = {};
43155     uint32_t                            maximumRequestedAlignment = {};
43156   };
43157 
43158   template <>
43159   struct CppType<StructureType, StructureType::eImageAlignmentControlCreateInfoMESA>
43160   {
43161     using Type = ImageAlignmentControlCreateInfoMESA;
43162   };
43163 
43164   struct ImageBlit
43165   {
43166     using NativeType = VkImageBlit;
43167 
43168 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageBlitVULKAN_HPP_NAMESPACE::ImageBlit43169     VULKAN_HPP_CONSTEXPR_14 ImageBlit( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          srcSubresource_ = {},
43170                                        std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_     = {},
43171                                        VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          dstSubresource_ = {},
43172                                        std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_     = {} ) VULKAN_HPP_NOEXCEPT
43173       : srcSubresource{ srcSubresource_ }
43174       , srcOffsets{ srcOffsets_ }
43175       , dstSubresource{ dstSubresource_ }
43176       , dstOffsets{ dstOffsets_ }
43177     {
43178     }
43179 
43180     VULKAN_HPP_CONSTEXPR_14 ImageBlit( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43181 
ImageBlitVULKAN_HPP_NAMESPACE::ImageBlit43182     ImageBlit( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT : ImageBlit( *reinterpret_cast<ImageBlit const *>( &rhs ) ) {}
43183 
43184     ImageBlit & operator=( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43185 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43186 
operator =VULKAN_HPP_NAMESPACE::ImageBlit43187     ImageBlit & operator=( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT
43188     {
43189       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageBlit const *>( &rhs );
43190       return *this;
43191     }
43192 
43193 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageBlit43194     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
43195     {
43196       srcSubresource = srcSubresource_;
43197       return *this;
43198     }
43199 
setSrcOffsetsVULKAN_HPP_NAMESPACE::ImageBlit43200     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setSrcOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT
43201     {
43202       srcOffsets = srcOffsets_;
43203       return *this;
43204     }
43205 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageBlit43206     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
43207     {
43208       dstSubresource = dstSubresource_;
43209       return *this;
43210     }
43211 
setDstOffsetsVULKAN_HPP_NAMESPACE::ImageBlit43212     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setDstOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT
43213     {
43214       dstOffsets = dstOffsets_;
43215       return *this;
43216     }
43217 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43218 
operator VkImageBlit const&VULKAN_HPP_NAMESPACE::ImageBlit43219     operator VkImageBlit const &() const VULKAN_HPP_NOEXCEPT
43220     {
43221       return *reinterpret_cast<const VkImageBlit *>( this );
43222     }
43223 
operator VkImageBlit&VULKAN_HPP_NAMESPACE::ImageBlit43224     operator VkImageBlit &() VULKAN_HPP_NOEXCEPT
43225     {
43226       return *reinterpret_cast<VkImageBlit *>( this );
43227     }
43228 
43229 #if defined( VULKAN_HPP_USE_REFLECT )
43230 #  if 14 <= VULKAN_HPP_CPP_VERSION
43231     auto
43232 #  else
43233     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
43234                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &,
43235                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
43236                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &>
43237 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageBlit43238       reflect() const VULKAN_HPP_NOEXCEPT
43239     {
43240       return std::tie( srcSubresource, srcOffsets, dstSubresource, dstOffsets );
43241     }
43242 #endif
43243 
43244 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43245     auto operator<=>( ImageBlit const & ) const = default;
43246 #else
operator ==VULKAN_HPP_NAMESPACE::ImageBlit43247     bool operator==( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT
43248     {
43249 #  if defined( VULKAN_HPP_USE_REFLECT )
43250       return this->reflect() == rhs.reflect();
43251 #  else
43252       return ( srcSubresource == rhs.srcSubresource ) && ( srcOffsets == rhs.srcOffsets ) && ( dstSubresource == rhs.dstSubresource ) &&
43253              ( dstOffsets == rhs.dstOffsets );
43254 #  endif
43255     }
43256 
operator !=VULKAN_HPP_NAMESPACE::ImageBlit43257     bool operator!=( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT
43258     {
43259       return !operator==( rhs );
43260     }
43261 #endif
43262 
43263   public:
43264     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            srcSubresource = {};
43265     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> srcOffsets     = {};
43266     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            dstSubresource = {};
43267     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> dstOffsets     = {};
43268   };
43269 
43270   struct ImageCaptureDescriptorDataInfoEXT
43271   {
43272     using NativeType = VkImageCaptureDescriptorDataInfoEXT;
43273 
43274     static const bool                                  allowDuplicate = false;
43275     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCaptureDescriptorDataInfoEXT;
43276 
43277 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43278     VULKAN_HPP_CONSTEXPR ImageCaptureDescriptorDataInfoEXT( VULKAN_HPP_NAMESPACE::Image image_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43279       : pNext{ pNext_ }
43280       , image{ image_ }
43281     {
43282     }
43283 
43284     VULKAN_HPP_CONSTEXPR ImageCaptureDescriptorDataInfoEXT( ImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43285 
ImageCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43286     ImageCaptureDescriptorDataInfoEXT( VkImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43287       : ImageCaptureDescriptorDataInfoEXT( *reinterpret_cast<ImageCaptureDescriptorDataInfoEXT const *>( &rhs ) )
43288     {
43289     }
43290 
43291     ImageCaptureDescriptorDataInfoEXT & operator=( ImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43292 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43293 
operator =VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43294     ImageCaptureDescriptorDataInfoEXT & operator=( VkImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43295     {
43296       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT const *>( &rhs );
43297       return *this;
43298     }
43299 
43300 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43301     VULKAN_HPP_CONSTEXPR_14 ImageCaptureDescriptorDataInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43302     {
43303       pNext = pNext_;
43304       return *this;
43305     }
43306 
setImageVULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43307     VULKAN_HPP_CONSTEXPR_14 ImageCaptureDescriptorDataInfoEXT & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
43308     {
43309       image = image_;
43310       return *this;
43311     }
43312 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43313 
operator VkImageCaptureDescriptorDataInfoEXT const&VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43314     operator VkImageCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT
43315     {
43316       return *reinterpret_cast<const VkImageCaptureDescriptorDataInfoEXT *>( this );
43317     }
43318 
operator VkImageCaptureDescriptorDataInfoEXT&VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43319     operator VkImageCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT
43320     {
43321       return *reinterpret_cast<VkImageCaptureDescriptorDataInfoEXT *>( this );
43322     }
43323 
43324 #if defined( VULKAN_HPP_USE_REFLECT )
43325 #  if 14 <= VULKAN_HPP_CPP_VERSION
43326     auto
43327 #  else
43328     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &>
43329 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43330       reflect() const VULKAN_HPP_NOEXCEPT
43331     {
43332       return std::tie( sType, pNext, image );
43333     }
43334 #endif
43335 
43336 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43337     auto operator<=>( ImageCaptureDescriptorDataInfoEXT const & ) const = default;
43338 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43339     bool operator==( ImageCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43340     {
43341 #  if defined( VULKAN_HPP_USE_REFLECT )
43342       return this->reflect() == rhs.reflect();
43343 #  else
43344       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image );
43345 #  endif
43346     }
43347 
operator !=VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43348     bool operator!=( ImageCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43349     {
43350       return !operator==( rhs );
43351     }
43352 #endif
43353 
43354   public:
43355     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCaptureDescriptorDataInfoEXT;
43356     const void *                        pNext = {};
43357     VULKAN_HPP_NAMESPACE::Image         image = {};
43358   };
43359 
43360   template <>
43361   struct CppType<StructureType, StructureType::eImageCaptureDescriptorDataInfoEXT>
43362   {
43363     using Type = ImageCaptureDescriptorDataInfoEXT;
43364   };
43365 
43366   struct ImageCompressionControlEXT
43367   {
43368     using NativeType = VkImageCompressionControlEXT;
43369 
43370     static const bool                                  allowDuplicate = false;
43371     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCompressionControlEXT;
43372 
43373 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCompressionControlEXTVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43374     VULKAN_HPP_CONSTEXPR ImageCompressionControlEXT( VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT            flags_                        = {},
43375                                                      uint32_t                                                  compressionControlPlaneCount_ = {},
43376                                                      VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT * pFixedRateFlags_              = {},
43377                                                      const void *                                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43378       : pNext{ pNext_ }
43379       , flags{ flags_ }
43380       , compressionControlPlaneCount{ compressionControlPlaneCount_ }
43381       , pFixedRateFlags{ pFixedRateFlags_ }
43382     {
43383     }
43384 
43385     VULKAN_HPP_CONSTEXPR ImageCompressionControlEXT( ImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43386 
ImageCompressionControlEXTVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43387     ImageCompressionControlEXT( VkImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43388       : ImageCompressionControlEXT( *reinterpret_cast<ImageCompressionControlEXT const *>( &rhs ) )
43389     {
43390     }
43391 
43392 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageCompressionControlEXTVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43393     ImageCompressionControlEXT( VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT                                                                 flags_,
43394                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT> const & fixedRateFlags_,
43395                                 const void * pNext_ = nullptr )
43396       : pNext( pNext_ )
43397       , flags( flags_ )
43398       , compressionControlPlaneCount( static_cast<uint32_t>( fixedRateFlags_.size() ) )
43399       , pFixedRateFlags( fixedRateFlags_.data() )
43400     {
43401     }
43402 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43403 
43404     ImageCompressionControlEXT & operator=( ImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43405 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43406 
operator =VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43407     ImageCompressionControlEXT & operator=( VkImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43408     {
43409       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT const *>( &rhs );
43410       return *this;
43411     }
43412 
43413 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43414     VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43415     {
43416       pNext = pNext_;
43417       return *this;
43418     }
43419 
setFlagsVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43420     VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT & setFlags( VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
43421     {
43422       flags = flags_;
43423       return *this;
43424     }
43425 
setCompressionControlPlaneCountVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43426     VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT & setCompressionControlPlaneCount( uint32_t compressionControlPlaneCount_ ) VULKAN_HPP_NOEXCEPT
43427     {
43428       compressionControlPlaneCount = compressionControlPlaneCount_;
43429       return *this;
43430     }
43431 
43432     VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT &
setPFixedRateFlagsVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43433       setPFixedRateFlags( VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT * pFixedRateFlags_ ) VULKAN_HPP_NOEXCEPT
43434     {
43435       pFixedRateFlags = pFixedRateFlags_;
43436       return *this;
43437     }
43438 
43439 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setFixedRateFlagsVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43440     ImageCompressionControlEXT & setFixedRateFlags(
43441       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT> const & fixedRateFlags_ ) VULKAN_HPP_NOEXCEPT
43442     {
43443       compressionControlPlaneCount = static_cast<uint32_t>( fixedRateFlags_.size() );
43444       pFixedRateFlags              = fixedRateFlags_.data();
43445       return *this;
43446     }
43447 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43448 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43449 
operator VkImageCompressionControlEXT const&VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43450     operator VkImageCompressionControlEXT const &() const VULKAN_HPP_NOEXCEPT
43451     {
43452       return *reinterpret_cast<const VkImageCompressionControlEXT *>( this );
43453     }
43454 
operator VkImageCompressionControlEXT&VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43455     operator VkImageCompressionControlEXT &() VULKAN_HPP_NOEXCEPT
43456     {
43457       return *reinterpret_cast<VkImageCompressionControlEXT *>( this );
43458     }
43459 
43460 #if defined( VULKAN_HPP_USE_REFLECT )
43461 #  if 14 <= VULKAN_HPP_CPP_VERSION
43462     auto
43463 #  else
43464     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43465                const void * const &,
43466                VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT const &,
43467                uint32_t const &,
43468                VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT * const &>
43469 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43470       reflect() const VULKAN_HPP_NOEXCEPT
43471     {
43472       return std::tie( sType, pNext, flags, compressionControlPlaneCount, pFixedRateFlags );
43473     }
43474 #endif
43475 
43476 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43477     auto operator<=>( ImageCompressionControlEXT const & ) const = default;
43478 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43479     bool operator==( ImageCompressionControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43480     {
43481 #  if defined( VULKAN_HPP_USE_REFLECT )
43482       return this->reflect() == rhs.reflect();
43483 #  else
43484       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
43485              ( compressionControlPlaneCount == rhs.compressionControlPlaneCount ) && ( pFixedRateFlags == rhs.pFixedRateFlags );
43486 #  endif
43487     }
43488 
operator !=VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43489     bool operator!=( ImageCompressionControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43490     {
43491       return !operator==( rhs );
43492     }
43493 #endif
43494 
43495   public:
43496     VULKAN_HPP_NAMESPACE::StructureType                       sType                        = StructureType::eImageCompressionControlEXT;
43497     const void *                                              pNext                        = {};
43498     VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT            flags                        = {};
43499     uint32_t                                                  compressionControlPlaneCount = {};
43500     VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT * pFixedRateFlags              = {};
43501   };
43502 
43503   template <>
43504   struct CppType<StructureType, StructureType::eImageCompressionControlEXT>
43505   {
43506     using Type = ImageCompressionControlEXT;
43507   };
43508 
43509   struct ImageCompressionPropertiesEXT
43510   {
43511     using NativeType = VkImageCompressionPropertiesEXT;
43512 
43513     static const bool                                  allowDuplicate = false;
43514     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCompressionPropertiesEXT;
43515 
43516 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCompressionPropertiesEXTVULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43517     VULKAN_HPP_CONSTEXPR ImageCompressionPropertiesEXT( VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT          imageCompressionFlags_          = {},
43518                                                         VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags_ = {},
43519                                                         void *                                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43520       : pNext{ pNext_ }
43521       , imageCompressionFlags{ imageCompressionFlags_ }
43522       , imageCompressionFixedRateFlags{ imageCompressionFixedRateFlags_ }
43523     {
43524     }
43525 
43526     VULKAN_HPP_CONSTEXPR ImageCompressionPropertiesEXT( ImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43527 
ImageCompressionPropertiesEXTVULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43528     ImageCompressionPropertiesEXT( VkImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43529       : ImageCompressionPropertiesEXT( *reinterpret_cast<ImageCompressionPropertiesEXT const *>( &rhs ) )
43530     {
43531     }
43532 
43533     ImageCompressionPropertiesEXT & operator=( ImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43534 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43535 
operator =VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43536     ImageCompressionPropertiesEXT & operator=( VkImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43537     {
43538       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT const *>( &rhs );
43539       return *this;
43540     }
43541 
operator VkImageCompressionPropertiesEXT const&VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43542     operator VkImageCompressionPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
43543     {
43544       return *reinterpret_cast<const VkImageCompressionPropertiesEXT *>( this );
43545     }
43546 
operator VkImageCompressionPropertiesEXT&VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43547     operator VkImageCompressionPropertiesEXT &() VULKAN_HPP_NOEXCEPT
43548     {
43549       return *reinterpret_cast<VkImageCompressionPropertiesEXT *>( this );
43550     }
43551 
43552 #if defined( VULKAN_HPP_USE_REFLECT )
43553 #  if 14 <= VULKAN_HPP_CPP_VERSION
43554     auto
43555 #  else
43556     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43557                void * const &,
43558                VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT const &,
43559                VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT const &>
43560 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43561       reflect() const VULKAN_HPP_NOEXCEPT
43562     {
43563       return std::tie( sType, pNext, imageCompressionFlags, imageCompressionFixedRateFlags );
43564     }
43565 #endif
43566 
43567 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43568     auto operator<=>( ImageCompressionPropertiesEXT const & ) const = default;
43569 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43570     bool operator==( ImageCompressionPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43571     {
43572 #  if defined( VULKAN_HPP_USE_REFLECT )
43573       return this->reflect() == rhs.reflect();
43574 #  else
43575       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCompressionFlags == rhs.imageCompressionFlags ) &&
43576              ( imageCompressionFixedRateFlags == rhs.imageCompressionFixedRateFlags );
43577 #  endif
43578     }
43579 
operator !=VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43580     bool operator!=( ImageCompressionPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43581     {
43582       return !operator==( rhs );
43583     }
43584 #endif
43585 
43586   public:
43587     VULKAN_HPP_NAMESPACE::StructureType                     sType                          = StructureType::eImageCompressionPropertiesEXT;
43588     void *                                                  pNext                          = {};
43589     VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT          imageCompressionFlags          = {};
43590     VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags = {};
43591   };
43592 
43593   template <>
43594   struct CppType<StructureType, StructureType::eImageCompressionPropertiesEXT>
43595   {
43596     using Type = ImageCompressionPropertiesEXT;
43597   };
43598 
43599 #if defined( VK_USE_PLATFORM_FUCHSIA )
43600   struct ImageFormatConstraintsInfoFUCHSIA
43601   {
43602     using NativeType = VkImageFormatConstraintsInfoFUCHSIA;
43603 
43604     static const bool                                  allowDuplicate = false;
43605     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageFormatConstraintsInfoFUCHSIA;
43606 
43607 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43608     VULKAN_HPP_CONSTEXPR ImageFormatConstraintsInfoFUCHSIA( VULKAN_HPP_NAMESPACE::ImageCreateInfo                    imageCreateInfo_        = {},
43609                                                             VULKAN_HPP_NAMESPACE::FormatFeatureFlags                 requiredFormatFeatures_ = {},
43610                                                             VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags_                  = {},
43611                                                             uint64_t                                                 sysmemPixelFormat_      = {},
43612                                                             uint32_t                                                 colorSpaceCount_        = {},
43613                                                             const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA *    pColorSpaces_           = {},
43614                                                             const void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43615       : pNext{ pNext_ }
43616       , imageCreateInfo{ imageCreateInfo_ }
43617       , requiredFormatFeatures{ requiredFormatFeatures_ }
43618       , flags{ flags_ }
43619       , sysmemPixelFormat{ sysmemPixelFormat_ }
43620       , colorSpaceCount{ colorSpaceCount_ }
43621       , pColorSpaces{ pColorSpaces_ }
43622     {
43623     }
43624 
43625     VULKAN_HPP_CONSTEXPR ImageFormatConstraintsInfoFUCHSIA( ImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43626 
ImageFormatConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43627     ImageFormatConstraintsInfoFUCHSIA( VkImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
43628       : ImageFormatConstraintsInfoFUCHSIA( *reinterpret_cast<ImageFormatConstraintsInfoFUCHSIA const *>( &rhs ) )
43629     {
43630     }
43631 
43632 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageFormatConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43633     ImageFormatConstraintsInfoFUCHSIA( VULKAN_HPP_NAMESPACE::ImageCreateInfo                    imageCreateInfo_,
43634                                        VULKAN_HPP_NAMESPACE::FormatFeatureFlags                 requiredFormatFeatures_,
43635                                        VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags_,
43636                                        uint64_t                                                 sysmemPixelFormat_,
43637                                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA> const & colorSpaces_,
43638                                        const void * pNext_ = nullptr )
43639       : pNext( pNext_ )
43640       , imageCreateInfo( imageCreateInfo_ )
43641       , requiredFormatFeatures( requiredFormatFeatures_ )
43642       , flags( flags_ )
43643       , sysmemPixelFormat( sysmemPixelFormat_ )
43644       , colorSpaceCount( static_cast<uint32_t>( colorSpaces_.size() ) )
43645       , pColorSpaces( colorSpaces_.data() )
43646     {
43647     }
43648 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43649 
43650     ImageFormatConstraintsInfoFUCHSIA & operator=( ImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43651 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43652 
operator =VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43653     ImageFormatConstraintsInfoFUCHSIA & operator=( VkImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
43654     {
43655       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA const *>( &rhs );
43656       return *this;
43657     }
43658 
43659 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43660     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43661     {
43662       pNext = pNext_;
43663       return *this;
43664     }
43665 
43666     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setImageCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43667       setImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateInfo const & imageCreateInfo_ ) VULKAN_HPP_NOEXCEPT
43668     {
43669       imageCreateInfo = imageCreateInfo_;
43670       return *this;
43671     }
43672 
43673     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setRequiredFormatFeaturesVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43674       setRequiredFormatFeatures( VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures_ ) VULKAN_HPP_NOEXCEPT
43675     {
43676       requiredFormatFeatures = requiredFormatFeatures_;
43677       return *this;
43678     }
43679 
setFlagsVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43680     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setFlags( VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT
43681     {
43682       flags = flags_;
43683       return *this;
43684     }
43685 
setSysmemPixelFormatVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43686     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setSysmemPixelFormat( uint64_t sysmemPixelFormat_ ) VULKAN_HPP_NOEXCEPT
43687     {
43688       sysmemPixelFormat = sysmemPixelFormat_;
43689       return *this;
43690     }
43691 
setColorSpaceCountVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43692     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setColorSpaceCount( uint32_t colorSpaceCount_ ) VULKAN_HPP_NOEXCEPT
43693     {
43694       colorSpaceCount = colorSpaceCount_;
43695       return *this;
43696     }
43697 
43698     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setPColorSpacesVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43699       setPColorSpaces( const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA * pColorSpaces_ ) VULKAN_HPP_NOEXCEPT
43700     {
43701       pColorSpaces = pColorSpaces_;
43702       return *this;
43703     }
43704 
43705 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorSpacesVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43706     ImageFormatConstraintsInfoFUCHSIA & setColorSpaces(
43707       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA> const & colorSpaces_ ) VULKAN_HPP_NOEXCEPT
43708     {
43709       colorSpaceCount = static_cast<uint32_t>( colorSpaces_.size() );
43710       pColorSpaces    = colorSpaces_.data();
43711       return *this;
43712     }
43713 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43714 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43715 
operator VkImageFormatConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43716     operator VkImageFormatConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
43717     {
43718       return *reinterpret_cast<const VkImageFormatConstraintsInfoFUCHSIA *>( this );
43719     }
43720 
operator VkImageFormatConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43721     operator VkImageFormatConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
43722     {
43723       return *reinterpret_cast<VkImageFormatConstraintsInfoFUCHSIA *>( this );
43724     }
43725 
43726 #  if defined( VULKAN_HPP_USE_REFLECT )
43727 #    if 14 <= VULKAN_HPP_CPP_VERSION
43728     auto
43729 #    else
43730     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43731                const void * const &,
43732                VULKAN_HPP_NAMESPACE::ImageCreateInfo const &,
43733                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
43734                VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA const &,
43735                uint64_t const &,
43736                uint32_t const &,
43737                const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA * const &>
43738 #    endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43739       reflect() const VULKAN_HPP_NOEXCEPT
43740     {
43741       return std::tie( sType, pNext, imageCreateInfo, requiredFormatFeatures, flags, sysmemPixelFormat, colorSpaceCount, pColorSpaces );
43742     }
43743 #  endif
43744 
43745 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43746     auto operator<=>( ImageFormatConstraintsInfoFUCHSIA const & ) const = default;
43747 #  else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43748     bool operator==( ImageFormatConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
43749     {
43750 #    if defined( VULKAN_HPP_USE_REFLECT )
43751       return this->reflect() == rhs.reflect();
43752 #    else
43753       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCreateInfo == rhs.imageCreateInfo ) &&
43754              ( requiredFormatFeatures == rhs.requiredFormatFeatures ) && ( flags == rhs.flags ) && ( sysmemPixelFormat == rhs.sysmemPixelFormat ) &&
43755              ( colorSpaceCount == rhs.colorSpaceCount ) && ( pColorSpaces == rhs.pColorSpaces );
43756 #    endif
43757     }
43758 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43759     bool operator!=( ImageFormatConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
43760     {
43761       return !operator==( rhs );
43762     }
43763 #  endif
43764 
43765   public:
43766     VULKAN_HPP_NAMESPACE::StructureType                      sType                  = StructureType::eImageFormatConstraintsInfoFUCHSIA;
43767     const void *                                             pNext                  = {};
43768     VULKAN_HPP_NAMESPACE::ImageCreateInfo                    imageCreateInfo        = {};
43769     VULKAN_HPP_NAMESPACE::FormatFeatureFlags                 requiredFormatFeatures = {};
43770     VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags                  = {};
43771     uint64_t                                                 sysmemPixelFormat      = {};
43772     uint32_t                                                 colorSpaceCount        = {};
43773     const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA *    pColorSpaces           = {};
43774   };
43775 
43776   template <>
43777   struct CppType<StructureType, StructureType::eImageFormatConstraintsInfoFUCHSIA>
43778   {
43779     using Type = ImageFormatConstraintsInfoFUCHSIA;
43780   };
43781 #endif /*VK_USE_PLATFORM_FUCHSIA*/
43782 
43783 #if defined( VK_USE_PLATFORM_FUCHSIA )
43784   struct ImageConstraintsInfoFUCHSIA
43785   {
43786     using NativeType = VkImageConstraintsInfoFUCHSIA;
43787 
43788     static const bool                                  allowDuplicate = false;
43789     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageConstraintsInfoFUCHSIA;
43790 
43791 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43792     VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFUCHSIA( uint32_t                                                        formatConstraintsCount_      = {},
43793                                                       const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints_          = {},
43794                                                       VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA    bufferCollectionConstraints_ = {},
43795                                                       VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA          flags_                       = {},
43796                                                       const void *                                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43797       : pNext{ pNext_ }
43798       , formatConstraintsCount{ formatConstraintsCount_ }
43799       , pFormatConstraints{ pFormatConstraints_ }
43800       , bufferCollectionConstraints{ bufferCollectionConstraints_ }
43801       , flags{ flags_ }
43802     {
43803     }
43804 
43805     VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFUCHSIA( ImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43806 
ImageConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43807     ImageConstraintsInfoFUCHSIA( VkImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
43808       : ImageConstraintsInfoFUCHSIA( *reinterpret_cast<ImageConstraintsInfoFUCHSIA const *>( &rhs ) )
43809     {
43810     }
43811 
43812 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43813     ImageConstraintsInfoFUCHSIA(
43814       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA> const & formatConstraints_,
43815       VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA                                                         bufferCollectionConstraints_ = {},
43816       VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA                                                               flags_                       = {},
43817       const void *                                                                                                         pNext_ = nullptr )
43818       : pNext( pNext_ )
43819       , formatConstraintsCount( static_cast<uint32_t>( formatConstraints_.size() ) )
43820       , pFormatConstraints( formatConstraints_.data() )
43821       , bufferCollectionConstraints( bufferCollectionConstraints_ )
43822       , flags( flags_ )
43823     {
43824     }
43825 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43826 
43827     ImageConstraintsInfoFUCHSIA & operator=( ImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43828 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43829 
operator =VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43830     ImageConstraintsInfoFUCHSIA & operator=( VkImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
43831     {
43832       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA const *>( &rhs );
43833       return *this;
43834     }
43835 
43836 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43837     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43838     {
43839       pNext = pNext_;
43840       return *this;
43841     }
43842 
setFormatConstraintsCountVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43843     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setFormatConstraintsCount( uint32_t formatConstraintsCount_ ) VULKAN_HPP_NOEXCEPT
43844     {
43845       formatConstraintsCount = formatConstraintsCount_;
43846       return *this;
43847     }
43848 
43849     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA &
setPFormatConstraintsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43850       setPFormatConstraints( const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints_ ) VULKAN_HPP_NOEXCEPT
43851     {
43852       pFormatConstraints = pFormatConstraints_;
43853       return *this;
43854     }
43855 
43856 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setFormatConstraintsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43857     ImageConstraintsInfoFUCHSIA & setFormatConstraints(
43858       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA> const & formatConstraints_ )
43859       VULKAN_HPP_NOEXCEPT
43860     {
43861       formatConstraintsCount = static_cast<uint32_t>( formatConstraints_.size() );
43862       pFormatConstraints     = formatConstraints_.data();
43863       return *this;
43864     }
43865 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43866 
43867     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA &
setBufferCollectionConstraintsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43868       setBufferCollectionConstraints( VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ ) VULKAN_HPP_NOEXCEPT
43869     {
43870       bufferCollectionConstraints = bufferCollectionConstraints_;
43871       return *this;
43872     }
43873 
setFlagsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43874     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setFlags( VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT
43875     {
43876       flags = flags_;
43877       return *this;
43878     }
43879 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43880 
operator VkImageConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43881     operator VkImageConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
43882     {
43883       return *reinterpret_cast<const VkImageConstraintsInfoFUCHSIA *>( this );
43884     }
43885 
operator VkImageConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43886     operator VkImageConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
43887     {
43888       return *reinterpret_cast<VkImageConstraintsInfoFUCHSIA *>( this );
43889     }
43890 
43891 #  if defined( VULKAN_HPP_USE_REFLECT )
43892 #    if 14 <= VULKAN_HPP_CPP_VERSION
43893     auto
43894 #    else
43895     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43896                const void * const &,
43897                uint32_t const &,
43898                const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * const &,
43899                VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const &,
43900                VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA const &>
43901 #    endif
reflectVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43902       reflect() const VULKAN_HPP_NOEXCEPT
43903     {
43904       return std::tie( sType, pNext, formatConstraintsCount, pFormatConstraints, bufferCollectionConstraints, flags );
43905     }
43906 #  endif
43907 
43908 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43909     auto operator<=>( ImageConstraintsInfoFUCHSIA const & ) const = default;
43910 #  else
operator ==VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43911     bool operator==( ImageConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
43912     {
43913 #    if defined( VULKAN_HPP_USE_REFLECT )
43914       return this->reflect() == rhs.reflect();
43915 #    else
43916       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatConstraintsCount == rhs.formatConstraintsCount ) &&
43917              ( pFormatConstraints == rhs.pFormatConstraints ) && ( bufferCollectionConstraints == rhs.bufferCollectionConstraints ) && ( flags == rhs.flags );
43918 #    endif
43919     }
43920 
operator !=VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43921     bool operator!=( ImageConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
43922     {
43923       return !operator==( rhs );
43924     }
43925 #  endif
43926 
43927   public:
43928     VULKAN_HPP_NAMESPACE::StructureType                             sType                       = StructureType::eImageConstraintsInfoFUCHSIA;
43929     const void *                                                    pNext                       = {};
43930     uint32_t                                                        formatConstraintsCount      = {};
43931     const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints          = {};
43932     VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA    bufferCollectionConstraints = {};
43933     VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA          flags                       = {};
43934   };
43935 
43936   template <>
43937   struct CppType<StructureType, StructureType::eImageConstraintsInfoFUCHSIA>
43938   {
43939     using Type = ImageConstraintsInfoFUCHSIA;
43940   };
43941 #endif /*VK_USE_PLATFORM_FUCHSIA*/
43942 
43943   struct ImageCopy
43944   {
43945     using NativeType = VkImageCopy;
43946 
43947 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCopyVULKAN_HPP_NAMESPACE::ImageCopy43948     VULKAN_HPP_CONSTEXPR ImageCopy( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
43949                                     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
43950                                     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
43951                                     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
43952                                     VULKAN_HPP_NAMESPACE::Extent3D               extent_         = {} ) VULKAN_HPP_NOEXCEPT
43953       : srcSubresource{ srcSubresource_ }
43954       , srcOffset{ srcOffset_ }
43955       , dstSubresource{ dstSubresource_ }
43956       , dstOffset{ dstOffset_ }
43957       , extent{ extent_ }
43958     {
43959     }
43960 
43961     VULKAN_HPP_CONSTEXPR ImageCopy( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43962 
ImageCopyVULKAN_HPP_NAMESPACE::ImageCopy43963     ImageCopy( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCopy( *reinterpret_cast<ImageCopy const *>( &rhs ) ) {}
43964 
43965     ImageCopy & operator=( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43966 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43967 
operator =VULKAN_HPP_NAMESPACE::ImageCopy43968     ImageCopy & operator=( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
43969     {
43970       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCopy const *>( &rhs );
43971       return *this;
43972     }
43973 
43974 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageCopy43975     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
43976     {
43977       srcSubresource = srcSubresource_;
43978       return *this;
43979     }
43980 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageCopy43981     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
43982     {
43983       srcOffset = srcOffset_;
43984       return *this;
43985     }
43986 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageCopy43987     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
43988     {
43989       dstSubresource = dstSubresource_;
43990       return *this;
43991     }
43992 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageCopy43993     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
43994     {
43995       dstOffset = dstOffset_;
43996       return *this;
43997     }
43998 
setExtentVULKAN_HPP_NAMESPACE::ImageCopy43999     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
44000     {
44001       extent = extent_;
44002       return *this;
44003     }
44004 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44005 
operator VkImageCopy const&VULKAN_HPP_NAMESPACE::ImageCopy44006     operator VkImageCopy const &() const VULKAN_HPP_NOEXCEPT
44007     {
44008       return *reinterpret_cast<const VkImageCopy *>( this );
44009     }
44010 
operator VkImageCopy&VULKAN_HPP_NAMESPACE::ImageCopy44011     operator VkImageCopy &() VULKAN_HPP_NOEXCEPT
44012     {
44013       return *reinterpret_cast<VkImageCopy *>( this );
44014     }
44015 
44016 #if defined( VULKAN_HPP_USE_REFLECT )
44017 #  if 14 <= VULKAN_HPP_CPP_VERSION
44018     auto
44019 #  else
44020     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
44021                VULKAN_HPP_NAMESPACE::Offset3D const &,
44022                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
44023                VULKAN_HPP_NAMESPACE::Offset3D const &,
44024                VULKAN_HPP_NAMESPACE::Extent3D const &>
44025 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCopy44026       reflect() const VULKAN_HPP_NOEXCEPT
44027     {
44028       return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
44029     }
44030 #endif
44031 
44032 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44033     auto operator<=>( ImageCopy const & ) const = default;
44034 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCopy44035     bool operator==( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
44036     {
44037 #  if defined( VULKAN_HPP_USE_REFLECT )
44038       return this->reflect() == rhs.reflect();
44039 #  else
44040       return ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) && ( dstSubresource == rhs.dstSubresource ) &&
44041              ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent );
44042 #  endif
44043     }
44044 
operator !=VULKAN_HPP_NAMESPACE::ImageCopy44045     bool operator!=( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
44046     {
44047       return !operator==( rhs );
44048     }
44049 #endif
44050 
44051   public:
44052     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
44053     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
44054     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
44055     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
44056     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
44057   };
44058 
44059   struct SubresourceLayout
44060   {
44061     using NativeType = VkSubresourceLayout;
44062 
44063 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubresourceLayoutVULKAN_HPP_NAMESPACE::SubresourceLayout44064     VULKAN_HPP_CONSTEXPR SubresourceLayout( VULKAN_HPP_NAMESPACE::DeviceSize offset_     = {},
44065                                             VULKAN_HPP_NAMESPACE::DeviceSize size_       = {},
44066                                             VULKAN_HPP_NAMESPACE::DeviceSize rowPitch_   = {},
44067                                             VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch_ = {},
44068                                             VULKAN_HPP_NAMESPACE::DeviceSize depthPitch_ = {} ) VULKAN_HPP_NOEXCEPT
44069       : offset{ offset_ }
44070       , size{ size_ }
44071       , rowPitch{ rowPitch_ }
44072       , arrayPitch{ arrayPitch_ }
44073       , depthPitch{ depthPitch_ }
44074     {
44075     }
44076 
44077     VULKAN_HPP_CONSTEXPR SubresourceLayout( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44078 
SubresourceLayoutVULKAN_HPP_NAMESPACE::SubresourceLayout44079     SubresourceLayout( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT : SubresourceLayout( *reinterpret_cast<SubresourceLayout const *>( &rhs ) ) {}
44080 
44081     SubresourceLayout & operator=( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44082 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44083 
operator =VULKAN_HPP_NAMESPACE::SubresourceLayout44084     SubresourceLayout & operator=( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT
44085     {
44086       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubresourceLayout const *>( &rhs );
44087       return *this;
44088     }
44089 
44090 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setOffsetVULKAN_HPP_NAMESPACE::SubresourceLayout44091     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
44092     {
44093       offset = offset_;
44094       return *this;
44095     }
44096 
setSizeVULKAN_HPP_NAMESPACE::SubresourceLayout44097     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
44098     {
44099       size = size_;
44100       return *this;
44101     }
44102 
setRowPitchVULKAN_HPP_NAMESPACE::SubresourceLayout44103     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setRowPitch( VULKAN_HPP_NAMESPACE::DeviceSize rowPitch_ ) VULKAN_HPP_NOEXCEPT
44104     {
44105       rowPitch = rowPitch_;
44106       return *this;
44107     }
44108 
setArrayPitchVULKAN_HPP_NAMESPACE::SubresourceLayout44109     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setArrayPitch( VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch_ ) VULKAN_HPP_NOEXCEPT
44110     {
44111       arrayPitch = arrayPitch_;
44112       return *this;
44113     }
44114 
setDepthPitchVULKAN_HPP_NAMESPACE::SubresourceLayout44115     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setDepthPitch( VULKAN_HPP_NAMESPACE::DeviceSize depthPitch_ ) VULKAN_HPP_NOEXCEPT
44116     {
44117       depthPitch = depthPitch_;
44118       return *this;
44119     }
44120 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44121 
operator VkSubresourceLayout const&VULKAN_HPP_NAMESPACE::SubresourceLayout44122     operator VkSubresourceLayout const &() const VULKAN_HPP_NOEXCEPT
44123     {
44124       return *reinterpret_cast<const VkSubresourceLayout *>( this );
44125     }
44126 
operator VkSubresourceLayout&VULKAN_HPP_NAMESPACE::SubresourceLayout44127     operator VkSubresourceLayout &() VULKAN_HPP_NOEXCEPT
44128     {
44129       return *reinterpret_cast<VkSubresourceLayout *>( this );
44130     }
44131 
44132 #if defined( VULKAN_HPP_USE_REFLECT )
44133 #  if 14 <= VULKAN_HPP_CPP_VERSION
44134     auto
44135 #  else
44136     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &,
44137                VULKAN_HPP_NAMESPACE::DeviceSize const &,
44138                VULKAN_HPP_NAMESPACE::DeviceSize const &,
44139                VULKAN_HPP_NAMESPACE::DeviceSize const &,
44140                VULKAN_HPP_NAMESPACE::DeviceSize const &>
44141 #  endif
reflectVULKAN_HPP_NAMESPACE::SubresourceLayout44142       reflect() const VULKAN_HPP_NOEXCEPT
44143     {
44144       return std::tie( offset, size, rowPitch, arrayPitch, depthPitch );
44145     }
44146 #endif
44147 
44148 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44149     auto operator<=>( SubresourceLayout const & ) const = default;
44150 #else
operator ==VULKAN_HPP_NAMESPACE::SubresourceLayout44151     bool operator==( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
44152     {
44153 #  if defined( VULKAN_HPP_USE_REFLECT )
44154       return this->reflect() == rhs.reflect();
44155 #  else
44156       return ( offset == rhs.offset ) && ( size == rhs.size ) && ( rowPitch == rhs.rowPitch ) && ( arrayPitch == rhs.arrayPitch ) &&
44157              ( depthPitch == rhs.depthPitch );
44158 #  endif
44159     }
44160 
operator !=VULKAN_HPP_NAMESPACE::SubresourceLayout44161     bool operator!=( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
44162     {
44163       return !operator==( rhs );
44164     }
44165 #endif
44166 
44167   public:
44168     VULKAN_HPP_NAMESPACE::DeviceSize offset     = {};
44169     VULKAN_HPP_NAMESPACE::DeviceSize size       = {};
44170     VULKAN_HPP_NAMESPACE::DeviceSize rowPitch   = {};
44171     VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch = {};
44172     VULKAN_HPP_NAMESPACE::DeviceSize depthPitch = {};
44173   };
44174 
44175   struct ImageDrmFormatModifierExplicitCreateInfoEXT
44176   {
44177     using NativeType = VkImageDrmFormatModifierExplicitCreateInfoEXT;
44178 
44179     static const bool                                  allowDuplicate = false;
44180     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
44181 
44182 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44183     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT( uint64_t                                        drmFormatModifier_           = {},
44184                                                                       uint32_t                                        drmFormatModifierPlaneCount_ = {},
44185                                                                       const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts_               = {},
44186                                                                       const void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
44187       : pNext{ pNext_ }
44188       , drmFormatModifier{ drmFormatModifier_ }
44189       , drmFormatModifierPlaneCount{ drmFormatModifierPlaneCount_ }
44190       , pPlaneLayouts{ pPlaneLayouts_ }
44191     {
44192     }
44193 
44194     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44195 
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44196     ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44197       : ImageDrmFormatModifierExplicitCreateInfoEXT( *reinterpret_cast<ImageDrmFormatModifierExplicitCreateInfoEXT const *>( &rhs ) )
44198     {
44199     }
44200 
44201 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44202     ImageDrmFormatModifierExplicitCreateInfoEXT(
44203       uint64_t                                                                                             drmFormatModifier_,
44204       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubresourceLayout> const & planeLayouts_,
44205       const void *                                                                                         pNext_ = nullptr )
44206       : pNext( pNext_ )
44207       , drmFormatModifier( drmFormatModifier_ )
44208       , drmFormatModifierPlaneCount( static_cast<uint32_t>( planeLayouts_.size() ) )
44209       , pPlaneLayouts( planeLayouts_.data() )
44210     {
44211     }
44212 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44213 
44214     ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44215 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44216 
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44217     ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44218     {
44219       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT const *>( &rhs );
44220       return *this;
44221     }
44222 
44223 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44224     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44225     {
44226       pNext = pNext_;
44227       return *this;
44228     }
44229 
setDrmFormatModifierVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44230     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT
44231     {
44232       drmFormatModifier = drmFormatModifier_;
44233       return *this;
44234     }
44235 
44236     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT &
setDrmFormatModifierPlaneCountVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44237       setDrmFormatModifierPlaneCount( uint32_t drmFormatModifierPlaneCount_ ) VULKAN_HPP_NOEXCEPT
44238     {
44239       drmFormatModifierPlaneCount = drmFormatModifierPlaneCount_;
44240       return *this;
44241     }
44242 
44243     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT &
setPPlaneLayoutsVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44244       setPPlaneLayouts( const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts_ ) VULKAN_HPP_NOEXCEPT
44245     {
44246       pPlaneLayouts = pPlaneLayouts_;
44247       return *this;
44248     }
44249 
44250 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
44251     ImageDrmFormatModifierExplicitCreateInfoEXT &
setPlaneLayoutsVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44252       setPlaneLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubresourceLayout> const & planeLayouts_ ) VULKAN_HPP_NOEXCEPT
44253     {
44254       drmFormatModifierPlaneCount = static_cast<uint32_t>( planeLayouts_.size() );
44255       pPlaneLayouts               = planeLayouts_.data();
44256       return *this;
44257     }
44258 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44259 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44260 
operator VkImageDrmFormatModifierExplicitCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44261     operator VkImageDrmFormatModifierExplicitCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
44262     {
44263       return *reinterpret_cast<const VkImageDrmFormatModifierExplicitCreateInfoEXT *>( this );
44264     }
44265 
operator VkImageDrmFormatModifierExplicitCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44266     operator VkImageDrmFormatModifierExplicitCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
44267     {
44268       return *reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT *>( this );
44269     }
44270 
44271 #if defined( VULKAN_HPP_USE_REFLECT )
44272 #  if 14 <= VULKAN_HPP_CPP_VERSION
44273     auto
44274 #  else
44275     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
44276                const void * const &,
44277                uint64_t const &,
44278                uint32_t const &,
44279                const VULKAN_HPP_NAMESPACE::SubresourceLayout * const &>
44280 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44281       reflect() const VULKAN_HPP_NOEXCEPT
44282     {
44283       return std::tie( sType, pNext, drmFormatModifier, drmFormatModifierPlaneCount, pPlaneLayouts );
44284     }
44285 #endif
44286 
44287 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44288     auto operator<=>( ImageDrmFormatModifierExplicitCreateInfoEXT const & ) const = default;
44289 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44290     bool operator==( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44291     {
44292 #  if defined( VULKAN_HPP_USE_REFLECT )
44293       return this->reflect() == rhs.reflect();
44294 #  else
44295       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier ) &&
44296              ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) && ( pPlaneLayouts == rhs.pPlaneLayouts );
44297 #  endif
44298     }
44299 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT44300     bool operator!=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44301     {
44302       return !operator==( rhs );
44303     }
44304 #endif
44305 
44306   public:
44307     VULKAN_HPP_NAMESPACE::StructureType             sType                       = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
44308     const void *                                    pNext                       = {};
44309     uint64_t                                        drmFormatModifier           = {};
44310     uint32_t                                        drmFormatModifierPlaneCount = {};
44311     const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts               = {};
44312   };
44313 
44314   template <>
44315   struct CppType<StructureType, StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT>
44316   {
44317     using Type = ImageDrmFormatModifierExplicitCreateInfoEXT;
44318   };
44319 
44320   struct ImageDrmFormatModifierListCreateInfoEXT
44321   {
44322     using NativeType = VkImageDrmFormatModifierListCreateInfoEXT;
44323 
44324     static const bool                                  allowDuplicate = false;
44325     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageDrmFormatModifierListCreateInfoEXT;
44326 
44327 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44328     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT( uint32_t         drmFormatModifierCount_ = {},
44329                                                                   const uint64_t * pDrmFormatModifiers_    = {},
44330                                                                   const void *     pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
44331       : pNext{ pNext_ }
44332       , drmFormatModifierCount{ drmFormatModifierCount_ }
44333       , pDrmFormatModifiers{ pDrmFormatModifiers_ }
44334     {
44335     }
44336 
44337     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44338 
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44339     ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44340       : ImageDrmFormatModifierListCreateInfoEXT( *reinterpret_cast<ImageDrmFormatModifierListCreateInfoEXT const *>( &rhs ) )
44341     {
44342     }
44343 
44344 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44345     ImageDrmFormatModifierListCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & drmFormatModifiers_,
44346                                              const void *                                                          pNext_ = nullptr )
44347       : pNext( pNext_ ), drmFormatModifierCount( static_cast<uint32_t>( drmFormatModifiers_.size() ) ), pDrmFormatModifiers( drmFormatModifiers_.data() )
44348     {
44349     }
44350 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44351 
44352     ImageDrmFormatModifierListCreateInfoEXT & operator=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44353 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44354 
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44355     ImageDrmFormatModifierListCreateInfoEXT & operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44356     {
44357       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT const *>( &rhs );
44358       return *this;
44359     }
44360 
44361 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44362     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44363     {
44364       pNext = pNext_;
44365       return *this;
44366     }
44367 
setDrmFormatModifierCountVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44368     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ ) VULKAN_HPP_NOEXCEPT
44369     {
44370       drmFormatModifierCount = drmFormatModifierCount_;
44371       return *this;
44372     }
44373 
setPDrmFormatModifiersVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44374     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setPDrmFormatModifiers( const uint64_t * pDrmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT
44375     {
44376       pDrmFormatModifiers = pDrmFormatModifiers_;
44377       return *this;
44378     }
44379 
44380 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
44381     ImageDrmFormatModifierListCreateInfoEXT &
setDrmFormatModifiersVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44382       setDrmFormatModifiers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & drmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT
44383     {
44384       drmFormatModifierCount = static_cast<uint32_t>( drmFormatModifiers_.size() );
44385       pDrmFormatModifiers    = drmFormatModifiers_.data();
44386       return *this;
44387     }
44388 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44389 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44390 
operator VkImageDrmFormatModifierListCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44391     operator VkImageDrmFormatModifierListCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
44392     {
44393       return *reinterpret_cast<const VkImageDrmFormatModifierListCreateInfoEXT *>( this );
44394     }
44395 
operator VkImageDrmFormatModifierListCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44396     operator VkImageDrmFormatModifierListCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
44397     {
44398       return *reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT *>( this );
44399     }
44400 
44401 #if defined( VULKAN_HPP_USE_REFLECT )
44402 #  if 14 <= VULKAN_HPP_CPP_VERSION
44403     auto
44404 #  else
44405     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint64_t * const &>
44406 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44407       reflect() const VULKAN_HPP_NOEXCEPT
44408     {
44409       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifiers );
44410     }
44411 #endif
44412 
44413 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44414     auto operator<=>( ImageDrmFormatModifierListCreateInfoEXT const & ) const = default;
44415 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44416     bool operator==( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44417     {
44418 #  if defined( VULKAN_HPP_USE_REFLECT )
44419       return this->reflect() == rhs.reflect();
44420 #  else
44421       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) &&
44422              ( pDrmFormatModifiers == rhs.pDrmFormatModifiers );
44423 #  endif
44424     }
44425 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44426     bool operator!=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44427     {
44428       return !operator==( rhs );
44429     }
44430 #endif
44431 
44432   public:
44433     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::eImageDrmFormatModifierListCreateInfoEXT;
44434     const void *                        pNext                  = {};
44435     uint32_t                            drmFormatModifierCount = {};
44436     const uint64_t *                    pDrmFormatModifiers    = {};
44437   };
44438 
44439   template <>
44440   struct CppType<StructureType, StructureType::eImageDrmFormatModifierListCreateInfoEXT>
44441   {
44442     using Type = ImageDrmFormatModifierListCreateInfoEXT;
44443   };
44444 
44445   struct ImageDrmFormatModifierPropertiesEXT
44446   {
44447     using NativeType = VkImageDrmFormatModifierPropertiesEXT;
44448 
44449     static const bool                                  allowDuplicate = false;
44450     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageDrmFormatModifierPropertiesEXT;
44451 
44452 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44453     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( uint64_t drmFormatModifier_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
44454       : pNext{ pNext_ }
44455       , drmFormatModifier{ drmFormatModifier_ }
44456     {
44457     }
44458 
44459     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44460 
ImageDrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44461     ImageDrmFormatModifierPropertiesEXT( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44462       : ImageDrmFormatModifierPropertiesEXT( *reinterpret_cast<ImageDrmFormatModifierPropertiesEXT const *>( &rhs ) )
44463     {
44464     }
44465 
44466     ImageDrmFormatModifierPropertiesEXT & operator=( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44467 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44468 
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44469     ImageDrmFormatModifierPropertiesEXT & operator=( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44470     {
44471       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT const *>( &rhs );
44472       return *this;
44473     }
44474 
operator VkImageDrmFormatModifierPropertiesEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44475     operator VkImageDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
44476     {
44477       return *reinterpret_cast<const VkImageDrmFormatModifierPropertiesEXT *>( this );
44478     }
44479 
operator VkImageDrmFormatModifierPropertiesEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44480     operator VkImageDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT
44481     {
44482       return *reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT *>( this );
44483     }
44484 
44485 #if defined( VULKAN_HPP_USE_REFLECT )
44486 #  if 14 <= VULKAN_HPP_CPP_VERSION
44487     auto
44488 #  else
44489     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
44490 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44491       reflect() const VULKAN_HPP_NOEXCEPT
44492     {
44493       return std::tie( sType, pNext, drmFormatModifier );
44494     }
44495 #endif
44496 
44497 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44498     auto operator<=>( ImageDrmFormatModifierPropertiesEXT const & ) const = default;
44499 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44500     bool operator==( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44501     {
44502 #  if defined( VULKAN_HPP_USE_REFLECT )
44503       return this->reflect() == rhs.reflect();
44504 #  else
44505       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier );
44506 #  endif
44507     }
44508 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44509     bool operator!=( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44510     {
44511       return !operator==( rhs );
44512     }
44513 #endif
44514 
44515   public:
44516     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eImageDrmFormatModifierPropertiesEXT;
44517     void *                              pNext             = {};
44518     uint64_t                            drmFormatModifier = {};
44519   };
44520 
44521   template <>
44522   struct CppType<StructureType, StructureType::eImageDrmFormatModifierPropertiesEXT>
44523   {
44524     using Type = ImageDrmFormatModifierPropertiesEXT;
44525   };
44526 
44527   struct ImageFormatListCreateInfo
44528   {
44529     using NativeType = VkImageFormatListCreateInfo;
44530 
44531     static const bool                                  allowDuplicate = false;
44532     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageFormatListCreateInfo;
44533 
44534 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44535     VULKAN_HPP_CONSTEXPR ImageFormatListCreateInfo( uint32_t                             viewFormatCount_ = {},
44536                                                     const VULKAN_HPP_NAMESPACE::Format * pViewFormats_    = {},
44537                                                     const void *                         pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
44538       : pNext{ pNext_ }
44539       , viewFormatCount{ viewFormatCount_ }
44540       , pViewFormats{ pViewFormats_ }
44541     {
44542     }
44543 
44544     VULKAN_HPP_CONSTEXPR ImageFormatListCreateInfo( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44545 
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44546     ImageFormatListCreateInfo( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44547       : ImageFormatListCreateInfo( *reinterpret_cast<ImageFormatListCreateInfo const *>( &rhs ) )
44548     {
44549     }
44550 
44551 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44552     ImageFormatListCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_,
44553                                const void *                                                                              pNext_ = nullptr )
44554       : pNext( pNext_ ), viewFormatCount( static_cast<uint32_t>( viewFormats_.size() ) ), pViewFormats( viewFormats_.data() )
44555     {
44556     }
44557 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44558 
44559     ImageFormatListCreateInfo & operator=( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44560 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44561 
operator =VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44562     ImageFormatListCreateInfo & operator=( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44563     {
44564       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo const *>( &rhs );
44565       return *this;
44566     }
44567 
44568 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44569     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44570     {
44571       pNext = pNext_;
44572       return *this;
44573     }
44574 
setViewFormatCountVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44575     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT
44576     {
44577       viewFormatCount = viewFormatCount_;
44578       return *this;
44579     }
44580 
setPViewFormatsVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44581     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setPViewFormats( const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ ) VULKAN_HPP_NOEXCEPT
44582     {
44583       pViewFormats = pViewFormats_;
44584       return *this;
44585     }
44586 
44587 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
44588     ImageFormatListCreateInfo &
setViewFormatsVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44589       setViewFormats( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ ) VULKAN_HPP_NOEXCEPT
44590     {
44591       viewFormatCount = static_cast<uint32_t>( viewFormats_.size() );
44592       pViewFormats    = viewFormats_.data();
44593       return *this;
44594     }
44595 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44596 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44597 
operator VkImageFormatListCreateInfo const&VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44598     operator VkImageFormatListCreateInfo const &() const VULKAN_HPP_NOEXCEPT
44599     {
44600       return *reinterpret_cast<const VkImageFormatListCreateInfo *>( this );
44601     }
44602 
operator VkImageFormatListCreateInfo&VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44603     operator VkImageFormatListCreateInfo &() VULKAN_HPP_NOEXCEPT
44604     {
44605       return *reinterpret_cast<VkImageFormatListCreateInfo *>( this );
44606     }
44607 
44608 #if defined( VULKAN_HPP_USE_REFLECT )
44609 #  if 14 <= VULKAN_HPP_CPP_VERSION
44610     auto
44611 #  else
44612     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Format * const &>
44613 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44614       reflect() const VULKAN_HPP_NOEXCEPT
44615     {
44616       return std::tie( sType, pNext, viewFormatCount, pViewFormats );
44617     }
44618 #endif
44619 
44620 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44621     auto operator<=>( ImageFormatListCreateInfo const & ) const = default;
44622 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44623     bool operator==( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44624     {
44625 #  if defined( VULKAN_HPP_USE_REFLECT )
44626       return this->reflect() == rhs.reflect();
44627 #  else
44628       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewFormatCount == rhs.viewFormatCount ) && ( pViewFormats == rhs.pViewFormats );
44629 #  endif
44630     }
44631 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44632     bool operator!=( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44633     {
44634       return !operator==( rhs );
44635     }
44636 #endif
44637 
44638   public:
44639     VULKAN_HPP_NAMESPACE::StructureType  sType           = StructureType::eImageFormatListCreateInfo;
44640     const void *                         pNext           = {};
44641     uint32_t                             viewFormatCount = {};
44642     const VULKAN_HPP_NAMESPACE::Format * pViewFormats    = {};
44643   };
44644 
44645   template <>
44646   struct CppType<StructureType, StructureType::eImageFormatListCreateInfo>
44647   {
44648     using Type = ImageFormatListCreateInfo;
44649   };
44650 
44651   using ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
44652 
44653   struct ImageFormatProperties2
44654   {
44655     using NativeType = VkImageFormatProperties2;
44656 
44657     static const bool                                  allowDuplicate = false;
44658     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageFormatProperties2;
44659 
44660 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatProperties2VULKAN_HPP_NAMESPACE::ImageFormatProperties244661     VULKAN_HPP_CONSTEXPR ImageFormatProperties2( VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties_ = {},
44662                                                  void *                                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
44663       : pNext{ pNext_ }
44664       , imageFormatProperties{ imageFormatProperties_ }
44665     {
44666     }
44667 
44668     VULKAN_HPP_CONSTEXPR ImageFormatProperties2( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44669 
ImageFormatProperties2VULKAN_HPP_NAMESPACE::ImageFormatProperties244670     ImageFormatProperties2( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
44671       : ImageFormatProperties2( *reinterpret_cast<ImageFormatProperties2 const *>( &rhs ) )
44672     {
44673     }
44674 
44675     ImageFormatProperties2 & operator=( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44676 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44677 
operator =VULKAN_HPP_NAMESPACE::ImageFormatProperties244678     ImageFormatProperties2 & operator=( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
44679     {
44680       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatProperties2 const *>( &rhs );
44681       return *this;
44682     }
44683 
operator VkImageFormatProperties2 const&VULKAN_HPP_NAMESPACE::ImageFormatProperties244684     operator VkImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
44685     {
44686       return *reinterpret_cast<const VkImageFormatProperties2 *>( this );
44687     }
44688 
operator VkImageFormatProperties2&VULKAN_HPP_NAMESPACE::ImageFormatProperties244689     operator VkImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT
44690     {
44691       return *reinterpret_cast<VkImageFormatProperties2 *>( this );
44692     }
44693 
44694 #if defined( VULKAN_HPP_USE_REFLECT )
44695 #  if 14 <= VULKAN_HPP_CPP_VERSION
44696     auto
44697 #  else
44698     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageFormatProperties const &>
44699 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatProperties244700       reflect() const VULKAN_HPP_NOEXCEPT
44701     {
44702       return std::tie( sType, pNext, imageFormatProperties );
44703     }
44704 #endif
44705 
44706 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44707     auto operator<=>( ImageFormatProperties2 const & ) const = default;
44708 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatProperties244709     bool operator==( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
44710     {
44711 #  if defined( VULKAN_HPP_USE_REFLECT )
44712       return this->reflect() == rhs.reflect();
44713 #  else
44714       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageFormatProperties == rhs.imageFormatProperties );
44715 #  endif
44716     }
44717 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatProperties244718     bool operator!=( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
44719     {
44720       return !operator==( rhs );
44721     }
44722 #endif
44723 
44724   public:
44725     VULKAN_HPP_NAMESPACE::StructureType         sType                 = StructureType::eImageFormatProperties2;
44726     void *                                      pNext                 = {};
44727     VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties = {};
44728   };
44729 
44730   template <>
44731   struct CppType<StructureType, StructureType::eImageFormatProperties2>
44732   {
44733     using Type = ImageFormatProperties2;
44734   };
44735 
44736   using ImageFormatProperties2KHR = ImageFormatProperties2;
44737 
44738   struct ImageMemoryBarrier
44739   {
44740     using NativeType = VkImageMemoryBarrier;
44741 
44742     static const bool                                  allowDuplicate = false;
44743     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageMemoryBarrier;
44744 
44745 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryBarrierVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44746     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags           srcAccessMask_       = {},
44747                                              VULKAN_HPP_NAMESPACE::AccessFlags           dstAccessMask_       = {},
44748                                              VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout_           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
44749                                              VULKAN_HPP_NAMESPACE::ImageLayout           newLayout_           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
44750                                              uint32_t                                    srcQueueFamilyIndex_ = {},
44751                                              uint32_t                                    dstQueueFamilyIndex_ = {},
44752                                              VULKAN_HPP_NAMESPACE::Image                 image_               = {},
44753                                              VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_    = {},
44754                                              const void *                                pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
44755       : pNext{ pNext_ }
44756       , srcAccessMask{ srcAccessMask_ }
44757       , dstAccessMask{ dstAccessMask_ }
44758       , oldLayout{ oldLayout_ }
44759       , newLayout{ newLayout_ }
44760       , srcQueueFamilyIndex{ srcQueueFamilyIndex_ }
44761       , dstQueueFamilyIndex{ dstQueueFamilyIndex_ }
44762       , image{ image_ }
44763       , subresourceRange{ subresourceRange_ }
44764     {
44765     }
44766 
44767     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44768 
ImageMemoryBarrierVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44769     ImageMemoryBarrier( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT : ImageMemoryBarrier( *reinterpret_cast<ImageMemoryBarrier const *>( &rhs ) ) {}
44770 
44771     ImageMemoryBarrier & operator=( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44772 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44773 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryBarrier44774     ImageMemoryBarrier & operator=( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
44775     {
44776       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier const *>( &rhs );
44777       return *this;
44778     }
44779 
44780 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44781     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44782     {
44783       pNext = pNext_;
44784       return *this;
44785     }
44786 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44787     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
44788     {
44789       srcAccessMask = srcAccessMask_;
44790       return *this;
44791     }
44792 
setDstAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44793     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
44794     {
44795       dstAccessMask = dstAccessMask_;
44796       return *this;
44797     }
44798 
setOldLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44799     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT
44800     {
44801       oldLayout = oldLayout_;
44802       return *this;
44803     }
44804 
setNewLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44805     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT
44806     {
44807       newLayout = newLayout_;
44808       return *this;
44809     }
44810 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44811     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
44812     {
44813       srcQueueFamilyIndex = srcQueueFamilyIndex_;
44814       return *this;
44815     }
44816 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44817     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
44818     {
44819       dstQueueFamilyIndex = dstQueueFamilyIndex_;
44820       return *this;
44821     }
44822 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44823     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
44824     {
44825       image = image_;
44826       return *this;
44827     }
44828 
44829     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier &
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44830       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
44831     {
44832       subresourceRange = subresourceRange_;
44833       return *this;
44834     }
44835 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44836 
operator VkImageMemoryBarrier const&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier44837     operator VkImageMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
44838     {
44839       return *reinterpret_cast<const VkImageMemoryBarrier *>( this );
44840     }
44841 
operator VkImageMemoryBarrier&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier44842     operator VkImageMemoryBarrier &() VULKAN_HPP_NOEXCEPT
44843     {
44844       return *reinterpret_cast<VkImageMemoryBarrier *>( this );
44845     }
44846 
44847 #if defined( VULKAN_HPP_USE_REFLECT )
44848 #  if 14 <= VULKAN_HPP_CPP_VERSION
44849     auto
44850 #  else
44851     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
44852                const void * const &,
44853                VULKAN_HPP_NAMESPACE::AccessFlags const &,
44854                VULKAN_HPP_NAMESPACE::AccessFlags const &,
44855                VULKAN_HPP_NAMESPACE::ImageLayout const &,
44856                VULKAN_HPP_NAMESPACE::ImageLayout const &,
44857                uint32_t const &,
44858                uint32_t const &,
44859                VULKAN_HPP_NAMESPACE::Image const &,
44860                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
44861 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44862       reflect() const VULKAN_HPP_NOEXCEPT
44863     {
44864       return std::tie( sType, pNext, srcAccessMask, dstAccessMask, oldLayout, newLayout, srcQueueFamilyIndex, dstQueueFamilyIndex, image, subresourceRange );
44865     }
44866 #endif
44867 
44868 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44869     auto operator<=>( ImageMemoryBarrier const & ) const = default;
44870 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryBarrier44871     bool operator==( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
44872     {
44873 #  if defined( VULKAN_HPP_USE_REFLECT )
44874       return this->reflect() == rhs.reflect();
44875 #  else
44876       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ) &&
44877              ( oldLayout == rhs.oldLayout ) && ( newLayout == rhs.newLayout ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) &&
44878              ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( image == rhs.image ) && ( subresourceRange == rhs.subresourceRange );
44879 #  endif
44880     }
44881 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryBarrier44882     bool operator!=( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
44883     {
44884       return !operator==( rhs );
44885     }
44886 #endif
44887 
44888   public:
44889     VULKAN_HPP_NAMESPACE::StructureType         sType               = StructureType::eImageMemoryBarrier;
44890     const void *                                pNext               = {};
44891     VULKAN_HPP_NAMESPACE::AccessFlags           srcAccessMask       = {};
44892     VULKAN_HPP_NAMESPACE::AccessFlags           dstAccessMask       = {};
44893     VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
44894     VULKAN_HPP_NAMESPACE::ImageLayout           newLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
44895     uint32_t                                    srcQueueFamilyIndex = {};
44896     uint32_t                                    dstQueueFamilyIndex = {};
44897     VULKAN_HPP_NAMESPACE::Image                 image               = {};
44898     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange    = {};
44899   };
44900 
44901   template <>
44902   struct CppType<StructureType, StructureType::eImageMemoryBarrier>
44903   {
44904     using Type = ImageMemoryBarrier;
44905   };
44906 
44907   struct ImageMemoryRequirementsInfo2
44908   {
44909     using NativeType = VkImageMemoryRequirementsInfo2;
44910 
44911     static const bool                                  allowDuplicate = false;
44912     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageMemoryRequirementsInfo2;
44913 
44914 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244915     VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Image image_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
44916       : pNext{ pNext_ }
44917       , image{ image_ }
44918     {
44919     }
44920 
44921     VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44922 
ImageMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244923     ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
44924       : ImageMemoryRequirementsInfo2( *reinterpret_cast<ImageMemoryRequirementsInfo2 const *>( &rhs ) )
44925     {
44926     }
44927 
44928     ImageMemoryRequirementsInfo2 & operator=( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44929 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44930 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244931     ImageMemoryRequirementsInfo2 & operator=( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
44932     {
44933       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 const *>( &rhs );
44934       return *this;
44935     }
44936 
44937 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244938     VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44939     {
44940       pNext = pNext_;
44941       return *this;
44942     }
44943 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244944     VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
44945     {
44946       image = image_;
44947       return *this;
44948     }
44949 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44950 
operator VkImageMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244951     operator VkImageMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
44952     {
44953       return *reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( this );
44954     }
44955 
operator VkImageMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244956     operator VkImageMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
44957     {
44958       return *reinterpret_cast<VkImageMemoryRequirementsInfo2 *>( this );
44959     }
44960 
44961 #if defined( VULKAN_HPP_USE_REFLECT )
44962 #  if 14 <= VULKAN_HPP_CPP_VERSION
44963     auto
44964 #  else
44965     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &>
44966 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244967       reflect() const VULKAN_HPP_NOEXCEPT
44968     {
44969       return std::tie( sType, pNext, image );
44970     }
44971 #endif
44972 
44973 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44974     auto operator<=>( ImageMemoryRequirementsInfo2 const & ) const = default;
44975 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244976     bool operator==( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
44977     {
44978 #  if defined( VULKAN_HPP_USE_REFLECT )
44979       return this->reflect() == rhs.reflect();
44980 #  else
44981       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image );
44982 #  endif
44983     }
44984 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244985     bool operator!=( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
44986     {
44987       return !operator==( rhs );
44988     }
44989 #endif
44990 
44991   public:
44992     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryRequirementsInfo2;
44993     const void *                        pNext = {};
44994     VULKAN_HPP_NAMESPACE::Image         image = {};
44995   };
44996 
44997   template <>
44998   struct CppType<StructureType, StructureType::eImageMemoryRequirementsInfo2>
44999   {
45000     using Type = ImageMemoryRequirementsInfo2;
45001   };
45002 
45003   using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
45004 
45005 #if defined( VK_USE_PLATFORM_FUCHSIA )
45006   struct ImagePipeSurfaceCreateInfoFUCHSIA
45007   {
45008     using NativeType = VkImagePipeSurfaceCreateInfoFUCHSIA;
45009 
45010     static const bool                                  allowDuplicate = false;
45011     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA;
45012 
45013 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImagePipeSurfaceCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45014     VULKAN_HPP_CONSTEXPR ImagePipeSurfaceCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags_           = {},
45015                                                             zx_handle_t                                              imagePipeHandle_ = {},
45016                                                             const void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
45017       : pNext{ pNext_ }
45018       , flags{ flags_ }
45019       , imagePipeHandle{ imagePipeHandle_ }
45020     {
45021     }
45022 
45023     VULKAN_HPP_CONSTEXPR ImagePipeSurfaceCreateInfoFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45024 
ImagePipeSurfaceCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45025     ImagePipeSurfaceCreateInfoFUCHSIA( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
45026       : ImagePipeSurfaceCreateInfoFUCHSIA( *reinterpret_cast<ImagePipeSurfaceCreateInfoFUCHSIA const *>( &rhs ) )
45027     {
45028     }
45029 
45030     ImagePipeSurfaceCreateInfoFUCHSIA & operator=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45031 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45032 
operator =VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45033     ImagePipeSurfaceCreateInfoFUCHSIA & operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
45034     {
45035       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const *>( &rhs );
45036       return *this;
45037     }
45038 
45039 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45040     VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45041     {
45042       pNext = pNext_;
45043       return *this;
45044     }
45045 
setFlagsVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45046     VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setFlags( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT
45047     {
45048       flags = flags_;
45049       return *this;
45050     }
45051 
setImagePipeHandleVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45052     VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setImagePipeHandle( zx_handle_t imagePipeHandle_ ) VULKAN_HPP_NOEXCEPT
45053     {
45054       imagePipeHandle = imagePipeHandle_;
45055       return *this;
45056     }
45057 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45058 
operator VkImagePipeSurfaceCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45059     operator VkImagePipeSurfaceCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
45060     {
45061       return *reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA *>( this );
45062     }
45063 
operator VkImagePipeSurfaceCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45064     operator VkImagePipeSurfaceCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
45065     {
45066       return *reinterpret_cast<VkImagePipeSurfaceCreateInfoFUCHSIA *>( this );
45067     }
45068 
45069 #  if defined( VULKAN_HPP_USE_REFLECT )
45070 #    if 14 <= VULKAN_HPP_CPP_VERSION
45071     auto
45072 #    else
45073     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
45074                const void * const &,
45075                VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA const &,
45076                zx_handle_t const &>
45077 #    endif
reflectVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45078       reflect() const VULKAN_HPP_NOEXCEPT
45079     {
45080       return std::tie( sType, pNext, flags, imagePipeHandle );
45081     }
45082 #  endif
45083 
45084 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45085     std::strong_ordering operator<=>( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
45086     {
45087       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
45088         return cmp;
45089       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
45090         return cmp;
45091       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
45092         return cmp;
45093       if ( auto cmp = memcmp( &imagePipeHandle, &rhs.imagePipeHandle, sizeof( zx_handle_t ) ); cmp != 0 )
45094         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
45095 
45096       return std::strong_ordering::equivalent;
45097     }
45098 #  endif
45099 
operator ==VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45100     bool operator==( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
45101     {
45102       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
45103              ( memcmp( &imagePipeHandle, &rhs.imagePipeHandle, sizeof( zx_handle_t ) ) == 0 );
45104     }
45105 
operator !=VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA45106     bool operator!=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
45107     {
45108       return !operator==( rhs );
45109     }
45110 
45111   public:
45112     VULKAN_HPP_NAMESPACE::StructureType                      sType           = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA;
45113     const void *                                             pNext           = {};
45114     VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags           = {};
45115     zx_handle_t                                              imagePipeHandle = {};
45116   };
45117 
45118   template <>
45119   struct CppType<StructureType, StructureType::eImagepipeSurfaceCreateInfoFUCHSIA>
45120   {
45121     using Type = ImagePipeSurfaceCreateInfoFUCHSIA;
45122   };
45123 #endif /*VK_USE_PLATFORM_FUCHSIA*/
45124 
45125   struct ImagePlaneMemoryRequirementsInfo
45126   {
45127     using NativeType = VkImagePlaneMemoryRequirementsInfo;
45128 
45129     static const bool                                  allowDuplicate = false;
45130     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImagePlaneMemoryRequirementsInfo;
45131 
45132 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
45133     VULKAN_HPP_CONSTEXPR
ImagePlaneMemoryRequirementsInfoVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo45134       ImagePlaneMemoryRequirementsInfo( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor,
45135                                         const void *                              pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
45136       : pNext{ pNext_ }
45137       , planeAspect{ planeAspect_ }
45138     {
45139     }
45140 
45141     VULKAN_HPP_CONSTEXPR ImagePlaneMemoryRequirementsInfo( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45142 
ImagePlaneMemoryRequirementsInfoVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo45143     ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45144       : ImagePlaneMemoryRequirementsInfo( *reinterpret_cast<ImagePlaneMemoryRequirementsInfo const *>( &rhs ) )
45145     {
45146     }
45147 
45148     ImagePlaneMemoryRequirementsInfo & operator=( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45149 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45150 
operator =VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo45151     ImagePlaneMemoryRequirementsInfo & operator=( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45152     {
45153       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo const *>( &rhs );
45154       return *this;
45155     }
45156 
45157 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo45158     VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45159     {
45160       pNext = pNext_;
45161       return *this;
45162     }
45163 
setPlaneAspectVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo45164     VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
45165     {
45166       planeAspect = planeAspect_;
45167       return *this;
45168     }
45169 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45170 
operator VkImagePlaneMemoryRequirementsInfo const&VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo45171     operator VkImagePlaneMemoryRequirementsInfo const &() const VULKAN_HPP_NOEXCEPT
45172     {
45173       return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo *>( this );
45174     }
45175 
operator VkImagePlaneMemoryRequirementsInfo&VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo45176     operator VkImagePlaneMemoryRequirementsInfo &() VULKAN_HPP_NOEXCEPT
45177     {
45178       return *reinterpret_cast<VkImagePlaneMemoryRequirementsInfo *>( this );
45179     }
45180 
45181 #if defined( VULKAN_HPP_USE_REFLECT )
45182 #  if 14 <= VULKAN_HPP_CPP_VERSION
45183     auto
45184 #  else
45185     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
45186 #  endif
reflectVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo45187       reflect() const VULKAN_HPP_NOEXCEPT
45188     {
45189       return std::tie( sType, pNext, planeAspect );
45190     }
45191 #endif
45192 
45193 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45194     auto operator<=>( ImagePlaneMemoryRequirementsInfo const & ) const = default;
45195 #else
operator ==VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo45196     bool operator==( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45197     {
45198 #  if defined( VULKAN_HPP_USE_REFLECT )
45199       return this->reflect() == rhs.reflect();
45200 #  else
45201       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( planeAspect == rhs.planeAspect );
45202 #  endif
45203     }
45204 
operator !=VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo45205     bool operator!=( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45206     {
45207       return !operator==( rhs );
45208     }
45209 #endif
45210 
45211   public:
45212     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eImagePlaneMemoryRequirementsInfo;
45213     const void *                              pNext       = {};
45214     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
45215   };
45216 
45217   template <>
45218   struct CppType<StructureType, StructureType::eImagePlaneMemoryRequirementsInfo>
45219   {
45220     using Type = ImagePlaneMemoryRequirementsInfo;
45221   };
45222 
45223   using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
45224 
45225   struct ImageResolve
45226   {
45227     using NativeType = VkImageResolve;
45228 
45229 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageResolveVULKAN_HPP_NAMESPACE::ImageResolve45230     VULKAN_HPP_CONSTEXPR ImageResolve( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
45231                                        VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
45232                                        VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
45233                                        VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
45234                                        VULKAN_HPP_NAMESPACE::Extent3D               extent_         = {} ) VULKAN_HPP_NOEXCEPT
45235       : srcSubresource{ srcSubresource_ }
45236       , srcOffset{ srcOffset_ }
45237       , dstSubresource{ dstSubresource_ }
45238       , dstOffset{ dstOffset_ }
45239       , extent{ extent_ }
45240     {
45241     }
45242 
45243     VULKAN_HPP_CONSTEXPR ImageResolve( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45244 
ImageResolveVULKAN_HPP_NAMESPACE::ImageResolve45245     ImageResolve( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT : ImageResolve( *reinterpret_cast<ImageResolve const *>( &rhs ) ) {}
45246 
45247     ImageResolve & operator=( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45248 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45249 
operator =VULKAN_HPP_NAMESPACE::ImageResolve45250     ImageResolve & operator=( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT
45251     {
45252       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageResolve const *>( &rhs );
45253       return *this;
45254     }
45255 
45256 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageResolve45257     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
45258     {
45259       srcSubresource = srcSubresource_;
45260       return *this;
45261     }
45262 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageResolve45263     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
45264     {
45265       srcOffset = srcOffset_;
45266       return *this;
45267     }
45268 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageResolve45269     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
45270     {
45271       dstSubresource = dstSubresource_;
45272       return *this;
45273     }
45274 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageResolve45275     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
45276     {
45277       dstOffset = dstOffset_;
45278       return *this;
45279     }
45280 
setExtentVULKAN_HPP_NAMESPACE::ImageResolve45281     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
45282     {
45283       extent = extent_;
45284       return *this;
45285     }
45286 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45287 
operator VkImageResolve const&VULKAN_HPP_NAMESPACE::ImageResolve45288     operator VkImageResolve const &() const VULKAN_HPP_NOEXCEPT
45289     {
45290       return *reinterpret_cast<const VkImageResolve *>( this );
45291     }
45292 
operator VkImageResolve&VULKAN_HPP_NAMESPACE::ImageResolve45293     operator VkImageResolve &() VULKAN_HPP_NOEXCEPT
45294     {
45295       return *reinterpret_cast<VkImageResolve *>( this );
45296     }
45297 
45298 #if defined( VULKAN_HPP_USE_REFLECT )
45299 #  if 14 <= VULKAN_HPP_CPP_VERSION
45300     auto
45301 #  else
45302     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
45303                VULKAN_HPP_NAMESPACE::Offset3D const &,
45304                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
45305                VULKAN_HPP_NAMESPACE::Offset3D const &,
45306                VULKAN_HPP_NAMESPACE::Extent3D const &>
45307 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageResolve45308       reflect() const VULKAN_HPP_NOEXCEPT
45309     {
45310       return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
45311     }
45312 #endif
45313 
45314 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45315     auto operator<=>( ImageResolve const & ) const = default;
45316 #else
operator ==VULKAN_HPP_NAMESPACE::ImageResolve45317     bool operator==( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
45318     {
45319 #  if defined( VULKAN_HPP_USE_REFLECT )
45320       return this->reflect() == rhs.reflect();
45321 #  else
45322       return ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) && ( dstSubresource == rhs.dstSubresource ) &&
45323              ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent );
45324 #  endif
45325     }
45326 
operator !=VULKAN_HPP_NAMESPACE::ImageResolve45327     bool operator!=( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
45328     {
45329       return !operator==( rhs );
45330     }
45331 #endif
45332 
45333   public:
45334     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
45335     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
45336     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
45337     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
45338     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
45339   };
45340 
45341   struct ImageResolve2
45342   {
45343     using NativeType = VkImageResolve2;
45344 
45345     static const bool                                  allowDuplicate = false;
45346     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageResolve2;
45347 
45348 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageResolve2VULKAN_HPP_NAMESPACE::ImageResolve245349     VULKAN_HPP_CONSTEXPR ImageResolve2( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
45350                                         VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
45351                                         VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
45352                                         VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
45353                                         VULKAN_HPP_NAMESPACE::Extent3D               extent_         = {},
45354                                         const void *                                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
45355       : pNext{ pNext_ }
45356       , srcSubresource{ srcSubresource_ }
45357       , srcOffset{ srcOffset_ }
45358       , dstSubresource{ dstSubresource_ }
45359       , dstOffset{ dstOffset_ }
45360       , extent{ extent_ }
45361     {
45362     }
45363 
45364     VULKAN_HPP_CONSTEXPR ImageResolve2( ImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45365 
ImageResolve2VULKAN_HPP_NAMESPACE::ImageResolve245366     ImageResolve2( VkImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageResolve2( *reinterpret_cast<ImageResolve2 const *>( &rhs ) ) {}
45367 
45368     ImageResolve2 & operator=( ImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45369 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45370 
operator =VULKAN_HPP_NAMESPACE::ImageResolve245371     ImageResolve2 & operator=( VkImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT
45372     {
45373       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageResolve2 const *>( &rhs );
45374       return *this;
45375     }
45376 
45377 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageResolve245378     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45379     {
45380       pNext = pNext_;
45381       return *this;
45382     }
45383 
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageResolve245384     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
45385     {
45386       srcSubresource = srcSubresource_;
45387       return *this;
45388     }
45389 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageResolve245390     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
45391     {
45392       srcOffset = srcOffset_;
45393       return *this;
45394     }
45395 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageResolve245396     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
45397     {
45398       dstSubresource = dstSubresource_;
45399       return *this;
45400     }
45401 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageResolve245402     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
45403     {
45404       dstOffset = dstOffset_;
45405       return *this;
45406     }
45407 
setExtentVULKAN_HPP_NAMESPACE::ImageResolve245408     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
45409     {
45410       extent = extent_;
45411       return *this;
45412     }
45413 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45414 
operator VkImageResolve2 const&VULKAN_HPP_NAMESPACE::ImageResolve245415     operator VkImageResolve2 const &() const VULKAN_HPP_NOEXCEPT
45416     {
45417       return *reinterpret_cast<const VkImageResolve2 *>( this );
45418     }
45419 
operator VkImageResolve2&VULKAN_HPP_NAMESPACE::ImageResolve245420     operator VkImageResolve2 &() VULKAN_HPP_NOEXCEPT
45421     {
45422       return *reinterpret_cast<VkImageResolve2 *>( this );
45423     }
45424 
45425 #if defined( VULKAN_HPP_USE_REFLECT )
45426 #  if 14 <= VULKAN_HPP_CPP_VERSION
45427     auto
45428 #  else
45429     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
45430                const void * const &,
45431                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
45432                VULKAN_HPP_NAMESPACE::Offset3D const &,
45433                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
45434                VULKAN_HPP_NAMESPACE::Offset3D const &,
45435                VULKAN_HPP_NAMESPACE::Extent3D const &>
45436 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageResolve245437       reflect() const VULKAN_HPP_NOEXCEPT
45438     {
45439       return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
45440     }
45441 #endif
45442 
45443 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45444     auto operator<=>( ImageResolve2 const & ) const = default;
45445 #else
operator ==VULKAN_HPP_NAMESPACE::ImageResolve245446     bool operator==( ImageResolve2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45447     {
45448 #  if defined( VULKAN_HPP_USE_REFLECT )
45449       return this->reflect() == rhs.reflect();
45450 #  else
45451       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) &&
45452              ( dstSubresource == rhs.dstSubresource ) && ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent );
45453 #  endif
45454     }
45455 
operator !=VULKAN_HPP_NAMESPACE::ImageResolve245456     bool operator!=( ImageResolve2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45457     {
45458       return !operator==( rhs );
45459     }
45460 #endif
45461 
45462   public:
45463     VULKAN_HPP_NAMESPACE::StructureType          sType          = StructureType::eImageResolve2;
45464     const void *                                 pNext          = {};
45465     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
45466     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
45467     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
45468     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
45469     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
45470   };
45471 
45472   template <>
45473   struct CppType<StructureType, StructureType::eImageResolve2>
45474   {
45475     using Type = ImageResolve2;
45476   };
45477 
45478   using ImageResolve2KHR = ImageResolve2;
45479 
45480   struct ImageSparseMemoryRequirementsInfo2
45481   {
45482     using NativeType = VkImageSparseMemoryRequirementsInfo2;
45483 
45484     static const bool                                  allowDuplicate = false;
45485     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageSparseMemoryRequirementsInfo2;
45486 
45487 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSparseMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245488     VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Image image_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
45489       : pNext{ pNext_ }
45490       , image{ image_ }
45491     {
45492     }
45493 
45494     VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45495 
ImageSparseMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245496     ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
45497       : ImageSparseMemoryRequirementsInfo2( *reinterpret_cast<ImageSparseMemoryRequirementsInfo2 const *>( &rhs ) )
45498     {
45499     }
45500 
45501     ImageSparseMemoryRequirementsInfo2 & operator=( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45502 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45503 
operator =VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245504     ImageSparseMemoryRequirementsInfo2 & operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
45505     {
45506       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 const *>( &rhs );
45507       return *this;
45508     }
45509 
45510 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245511     VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45512     {
45513       pNext = pNext_;
45514       return *this;
45515     }
45516 
setImageVULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245517     VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
45518     {
45519       image = image_;
45520       return *this;
45521     }
45522 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45523 
operator VkImageSparseMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245524     operator VkImageSparseMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
45525     {
45526       return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( this );
45527     }
45528 
operator VkImageSparseMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245529     operator VkImageSparseMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
45530     {
45531       return *reinterpret_cast<VkImageSparseMemoryRequirementsInfo2 *>( this );
45532     }
45533 
45534 #if defined( VULKAN_HPP_USE_REFLECT )
45535 #  if 14 <= VULKAN_HPP_CPP_VERSION
45536     auto
45537 #  else
45538     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &>
45539 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245540       reflect() const VULKAN_HPP_NOEXCEPT
45541     {
45542       return std::tie( sType, pNext, image );
45543     }
45544 #endif
45545 
45546 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45547     auto operator<=>( ImageSparseMemoryRequirementsInfo2 const & ) const = default;
45548 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245549     bool operator==( ImageSparseMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45550     {
45551 #  if defined( VULKAN_HPP_USE_REFLECT )
45552       return this->reflect() == rhs.reflect();
45553 #  else
45554       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image );
45555 #  endif
45556     }
45557 
operator !=VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245558     bool operator!=( ImageSparseMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45559     {
45560       return !operator==( rhs );
45561     }
45562 #endif
45563 
45564   public:
45565     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2;
45566     const void *                        pNext = {};
45567     VULKAN_HPP_NAMESPACE::Image         image = {};
45568   };
45569 
45570   template <>
45571   struct CppType<StructureType, StructureType::eImageSparseMemoryRequirementsInfo2>
45572   {
45573     using Type = ImageSparseMemoryRequirementsInfo2;
45574   };
45575 
45576   using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
45577 
45578   struct ImageStencilUsageCreateInfo
45579   {
45580     using NativeType = VkImageStencilUsageCreateInfo;
45581 
45582     static const bool                                  allowDuplicate = false;
45583     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageStencilUsageCreateInfo;
45584 
45585 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageStencilUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45586     VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo( VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ = {},
45587                                                       const void *                          pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
45588       : pNext{ pNext_ }
45589       , stencilUsage{ stencilUsage_ }
45590     {
45591     }
45592 
45593     VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45594 
ImageStencilUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45595     ImageStencilUsageCreateInfo( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45596       : ImageStencilUsageCreateInfo( *reinterpret_cast<ImageStencilUsageCreateInfo const *>( &rhs ) )
45597     {
45598     }
45599 
45600     ImageStencilUsageCreateInfo & operator=( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45601 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45602 
operator =VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45603     ImageStencilUsageCreateInfo & operator=( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45604     {
45605       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo const *>( &rhs );
45606       return *this;
45607     }
45608 
45609 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45610     VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45611     {
45612       pNext = pNext_;
45613       return *this;
45614     }
45615 
setStencilUsageVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45616     VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & setStencilUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ ) VULKAN_HPP_NOEXCEPT
45617     {
45618       stencilUsage = stencilUsage_;
45619       return *this;
45620     }
45621 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45622 
operator VkImageStencilUsageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45623     operator VkImageStencilUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
45624     {
45625       return *reinterpret_cast<const VkImageStencilUsageCreateInfo *>( this );
45626     }
45627 
operator VkImageStencilUsageCreateInfo&VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45628     operator VkImageStencilUsageCreateInfo &() VULKAN_HPP_NOEXCEPT
45629     {
45630       return *reinterpret_cast<VkImageStencilUsageCreateInfo *>( this );
45631     }
45632 
45633 #if defined( VULKAN_HPP_USE_REFLECT )
45634 #  if 14 <= VULKAN_HPP_CPP_VERSION
45635     auto
45636 #  else
45637     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
45638 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45639       reflect() const VULKAN_HPP_NOEXCEPT
45640     {
45641       return std::tie( sType, pNext, stencilUsage );
45642     }
45643 #endif
45644 
45645 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45646     auto operator<=>( ImageStencilUsageCreateInfo const & ) const = default;
45647 #else
operator ==VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45648     bool operator==( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45649     {
45650 #  if defined( VULKAN_HPP_USE_REFLECT )
45651       return this->reflect() == rhs.reflect();
45652 #  else
45653       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilUsage == rhs.stencilUsage );
45654 #  endif
45655     }
45656 
operator !=VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45657     bool operator!=( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45658     {
45659       return !operator==( rhs );
45660     }
45661 #endif
45662 
45663   public:
45664     VULKAN_HPP_NAMESPACE::StructureType   sType        = StructureType::eImageStencilUsageCreateInfo;
45665     const void *                          pNext        = {};
45666     VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage = {};
45667   };
45668 
45669   template <>
45670   struct CppType<StructureType, StructureType::eImageStencilUsageCreateInfo>
45671   {
45672     using Type = ImageStencilUsageCreateInfo;
45673   };
45674 
45675   using ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
45676 
45677   struct ImageSwapchainCreateInfoKHR
45678   {
45679     using NativeType = VkImageSwapchainCreateInfoKHR;
45680 
45681     static const bool                                  allowDuplicate = false;
45682     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageSwapchainCreateInfoKHR;
45683 
45684 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45685     VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
45686       : pNext{ pNext_ }
45687       , swapchain{ swapchain_ }
45688     {
45689     }
45690 
45691     VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45692 
ImageSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45693     ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
45694       : ImageSwapchainCreateInfoKHR( *reinterpret_cast<ImageSwapchainCreateInfoKHR const *>( &rhs ) )
45695     {
45696     }
45697 
45698     ImageSwapchainCreateInfoKHR & operator=( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45699 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45700 
operator =VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45701     ImageSwapchainCreateInfoKHR & operator=( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
45702     {
45703       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR const *>( &rhs );
45704       return *this;
45705     }
45706 
45707 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45708     VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45709     {
45710       pNext = pNext_;
45711       return *this;
45712     }
45713 
setSwapchainVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45714     VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
45715     {
45716       swapchain = swapchain_;
45717       return *this;
45718     }
45719 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45720 
operator VkImageSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45721     operator VkImageSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
45722     {
45723       return *reinterpret_cast<const VkImageSwapchainCreateInfoKHR *>( this );
45724     }
45725 
operator VkImageSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45726     operator VkImageSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
45727     {
45728       return *reinterpret_cast<VkImageSwapchainCreateInfoKHR *>( this );
45729     }
45730 
45731 #if defined( VULKAN_HPP_USE_REFLECT )
45732 #  if 14 <= VULKAN_HPP_CPP_VERSION
45733     auto
45734 #  else
45735     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SwapchainKHR const &>
45736 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45737       reflect() const VULKAN_HPP_NOEXCEPT
45738     {
45739       return std::tie( sType, pNext, swapchain );
45740     }
45741 #endif
45742 
45743 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45744     auto operator<=>( ImageSwapchainCreateInfoKHR const & ) const = default;
45745 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45746     bool operator==( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
45747     {
45748 #  if defined( VULKAN_HPP_USE_REFLECT )
45749       return this->reflect() == rhs.reflect();
45750 #  else
45751       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain );
45752 #  endif
45753     }
45754 
operator !=VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45755     bool operator!=( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
45756     {
45757       return !operator==( rhs );
45758     }
45759 #endif
45760 
45761   public:
45762     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eImageSwapchainCreateInfoKHR;
45763     const void *                        pNext     = {};
45764     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain = {};
45765   };
45766 
45767   template <>
45768   struct CppType<StructureType, StructureType::eImageSwapchainCreateInfoKHR>
45769   {
45770     using Type = ImageSwapchainCreateInfoKHR;
45771   };
45772 
45773   struct ImageViewASTCDecodeModeEXT
45774   {
45775     using NativeType = VkImageViewASTCDecodeModeEXT;
45776 
45777     static const bool                                  allowDuplicate = false;
45778     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewAstcDecodeModeEXT;
45779 
45780 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewASTCDecodeModeEXTVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45781     VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT( VULKAN_HPP_NAMESPACE::Format decodeMode_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
45782                                                      const void *                 pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
45783       : pNext{ pNext_ }
45784       , decodeMode{ decodeMode_ }
45785     {
45786     }
45787 
45788     VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45789 
ImageViewASTCDecodeModeEXTVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45790     ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45791       : ImageViewASTCDecodeModeEXT( *reinterpret_cast<ImageViewASTCDecodeModeEXT const *>( &rhs ) )
45792     {
45793     }
45794 
45795     ImageViewASTCDecodeModeEXT & operator=( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45796 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45797 
operator =VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45798     ImageViewASTCDecodeModeEXT & operator=( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45799     {
45800       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT const *>( &rhs );
45801       return *this;
45802     }
45803 
45804 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45805     VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45806     {
45807       pNext = pNext_;
45808       return *this;
45809     }
45810 
setDecodeModeVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45811     VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & setDecodeMode( VULKAN_HPP_NAMESPACE::Format decodeMode_ ) VULKAN_HPP_NOEXCEPT
45812     {
45813       decodeMode = decodeMode_;
45814       return *this;
45815     }
45816 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45817 
operator VkImageViewASTCDecodeModeEXT const&VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45818     operator VkImageViewASTCDecodeModeEXT const &() const VULKAN_HPP_NOEXCEPT
45819     {
45820       return *reinterpret_cast<const VkImageViewASTCDecodeModeEXT *>( this );
45821     }
45822 
operator VkImageViewASTCDecodeModeEXT&VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45823     operator VkImageViewASTCDecodeModeEXT &() VULKAN_HPP_NOEXCEPT
45824     {
45825       return *reinterpret_cast<VkImageViewASTCDecodeModeEXT *>( this );
45826     }
45827 
45828 #if defined( VULKAN_HPP_USE_REFLECT )
45829 #  if 14 <= VULKAN_HPP_CPP_VERSION
45830     auto
45831 #  else
45832     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Format const &>
45833 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45834       reflect() const VULKAN_HPP_NOEXCEPT
45835     {
45836       return std::tie( sType, pNext, decodeMode );
45837     }
45838 #endif
45839 
45840 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45841     auto operator<=>( ImageViewASTCDecodeModeEXT const & ) const = default;
45842 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45843     bool operator==( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45844     {
45845 #  if defined( VULKAN_HPP_USE_REFLECT )
45846       return this->reflect() == rhs.reflect();
45847 #  else
45848       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decodeMode == rhs.decodeMode );
45849 #  endif
45850     }
45851 
operator !=VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45852     bool operator!=( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45853     {
45854       return !operator==( rhs );
45855     }
45856 #endif
45857 
45858   public:
45859     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eImageViewAstcDecodeModeEXT;
45860     const void *                        pNext      = {};
45861     VULKAN_HPP_NAMESPACE::Format        decodeMode = VULKAN_HPP_NAMESPACE::Format::eUndefined;
45862   };
45863 
45864   template <>
45865   struct CppType<StructureType, StructureType::eImageViewAstcDecodeModeEXT>
45866   {
45867     using Type = ImageViewASTCDecodeModeEXT;
45868   };
45869 
45870   struct ImageViewAddressPropertiesNVX
45871   {
45872     using NativeType = VkImageViewAddressPropertiesNVX;
45873 
45874     static const bool                                  allowDuplicate = false;
45875     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewAddressPropertiesNVX;
45876 
45877 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewAddressPropertiesNVXVULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45878     VULKAN_HPP_CONSTEXPR ImageViewAddressPropertiesNVX( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {},
45879                                                         VULKAN_HPP_NAMESPACE::DeviceSize    size_          = {},
45880                                                         void *                              pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
45881       : pNext{ pNext_ }
45882       , deviceAddress{ deviceAddress_ }
45883       , size{ size_ }
45884     {
45885     }
45886 
45887     VULKAN_HPP_CONSTEXPR ImageViewAddressPropertiesNVX( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45888 
ImageViewAddressPropertiesNVXVULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45889     ImageViewAddressPropertiesNVX( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
45890       : ImageViewAddressPropertiesNVX( *reinterpret_cast<ImageViewAddressPropertiesNVX const *>( &rhs ) )
45891     {
45892     }
45893 
45894     ImageViewAddressPropertiesNVX & operator=( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45895 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45896 
operator =VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45897     ImageViewAddressPropertiesNVX & operator=( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
45898     {
45899       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX const *>( &rhs );
45900       return *this;
45901     }
45902 
operator VkImageViewAddressPropertiesNVX const&VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45903     operator VkImageViewAddressPropertiesNVX const &() const VULKAN_HPP_NOEXCEPT
45904     {
45905       return *reinterpret_cast<const VkImageViewAddressPropertiesNVX *>( this );
45906     }
45907 
operator VkImageViewAddressPropertiesNVX&VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45908     operator VkImageViewAddressPropertiesNVX &() VULKAN_HPP_NOEXCEPT
45909     {
45910       return *reinterpret_cast<VkImageViewAddressPropertiesNVX *>( this );
45911     }
45912 
45913 #if defined( VULKAN_HPP_USE_REFLECT )
45914 #  if 14 <= VULKAN_HPP_CPP_VERSION
45915     auto
45916 #  else
45917     std::
45918       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceAddress const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
45919 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45920       reflect() const VULKAN_HPP_NOEXCEPT
45921     {
45922       return std::tie( sType, pNext, deviceAddress, size );
45923     }
45924 #endif
45925 
45926 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45927     auto operator<=>( ImageViewAddressPropertiesNVX const & ) const = default;
45928 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45929     bool operator==( ImageViewAddressPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
45930     {
45931 #  if defined( VULKAN_HPP_USE_REFLECT )
45932       return this->reflect() == rhs.reflect();
45933 #  else
45934       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress ) && ( size == rhs.size );
45935 #  endif
45936     }
45937 
operator !=VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45938     bool operator!=( ImageViewAddressPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
45939     {
45940       return !operator==( rhs );
45941     }
45942 #endif
45943 
45944   public:
45945     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eImageViewAddressPropertiesNVX;
45946     void *                              pNext         = {};
45947     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
45948     VULKAN_HPP_NAMESPACE::DeviceSize    size          = {};
45949   };
45950 
45951   template <>
45952   struct CppType<StructureType, StructureType::eImageViewAddressPropertiesNVX>
45953   {
45954     using Type = ImageViewAddressPropertiesNVX;
45955   };
45956 
45957   struct ImageViewCaptureDescriptorDataInfoEXT
45958   {
45959     using NativeType = VkImageViewCaptureDescriptorDataInfoEXT;
45960 
45961     static const bool                                  allowDuplicate = false;
45962     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewCaptureDescriptorDataInfoEXT;
45963 
45964 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45965     VULKAN_HPP_CONSTEXPR ImageViewCaptureDescriptorDataInfoEXT( VULKAN_HPP_NAMESPACE::ImageView imageView_ = {},
45966                                                                 const void *                    pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
45967       : pNext{ pNext_ }
45968       , imageView{ imageView_ }
45969     {
45970     }
45971 
45972     VULKAN_HPP_CONSTEXPR ImageViewCaptureDescriptorDataInfoEXT( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45973 
ImageViewCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45974     ImageViewCaptureDescriptorDataInfoEXT( VkImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45975       : ImageViewCaptureDescriptorDataInfoEXT( *reinterpret_cast<ImageViewCaptureDescriptorDataInfoEXT const *>( &rhs ) )
45976     {
45977     }
45978 
45979     ImageViewCaptureDescriptorDataInfoEXT & operator=( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45980 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45981 
operator =VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45982     ImageViewCaptureDescriptorDataInfoEXT & operator=( VkImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45983     {
45984       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT const *>( &rhs );
45985       return *this;
45986     }
45987 
45988 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45989     VULKAN_HPP_CONSTEXPR_14 ImageViewCaptureDescriptorDataInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45990     {
45991       pNext = pNext_;
45992       return *this;
45993     }
45994 
setImageViewVULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45995     VULKAN_HPP_CONSTEXPR_14 ImageViewCaptureDescriptorDataInfoEXT & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
45996     {
45997       imageView = imageView_;
45998       return *this;
45999     }
46000 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46001 
operator VkImageViewCaptureDescriptorDataInfoEXT const&VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT46002     operator VkImageViewCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT
46003     {
46004       return *reinterpret_cast<const VkImageViewCaptureDescriptorDataInfoEXT *>( this );
46005     }
46006 
operator VkImageViewCaptureDescriptorDataInfoEXT&VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT46007     operator VkImageViewCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT
46008     {
46009       return *reinterpret_cast<VkImageViewCaptureDescriptorDataInfoEXT *>( this );
46010     }
46011 
46012 #if defined( VULKAN_HPP_USE_REFLECT )
46013 #  if 14 <= VULKAN_HPP_CPP_VERSION
46014     auto
46015 #  else
46016     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageView const &>
46017 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT46018       reflect() const VULKAN_HPP_NOEXCEPT
46019     {
46020       return std::tie( sType, pNext, imageView );
46021     }
46022 #endif
46023 
46024 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46025     auto operator<=>( ImageViewCaptureDescriptorDataInfoEXT const & ) const = default;
46026 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT46027     bool operator==( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46028     {
46029 #  if defined( VULKAN_HPP_USE_REFLECT )
46030       return this->reflect() == rhs.reflect();
46031 #  else
46032       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView );
46033 #  endif
46034     }
46035 
operator !=VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT46036     bool operator!=( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46037     {
46038       return !operator==( rhs );
46039     }
46040 #endif
46041 
46042   public:
46043     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eImageViewCaptureDescriptorDataInfoEXT;
46044     const void *                        pNext     = {};
46045     VULKAN_HPP_NAMESPACE::ImageView     imageView = {};
46046   };
46047 
46048   template <>
46049   struct CppType<StructureType, StructureType::eImageViewCaptureDescriptorDataInfoEXT>
46050   {
46051     using Type = ImageViewCaptureDescriptorDataInfoEXT;
46052   };
46053 
46054   struct ImageViewCreateInfo
46055   {
46056     using NativeType = VkImageViewCreateInfo;
46057 
46058     static const bool                                  allowDuplicate = false;
46059     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewCreateInfo;
46060 
46061 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewCreateInfoVULKAN_HPP_NAMESPACE::ImageViewCreateInfo46062     VULKAN_HPP_CONSTEXPR ImageViewCreateInfo( VULKAN_HPP_NAMESPACE::ImageViewCreateFlags  flags_            = {},
46063                                               VULKAN_HPP_NAMESPACE::Image                 image_            = {},
46064                                               VULKAN_HPP_NAMESPACE::ImageViewType         viewType_         = VULKAN_HPP_NAMESPACE::ImageViewType::e1D,
46065                                               VULKAN_HPP_NAMESPACE::Format                format_           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
46066                                               VULKAN_HPP_NAMESPACE::ComponentMapping      components_       = {},
46067                                               VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {},
46068                                               const void *                                pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
46069       : pNext{ pNext_ }
46070       , flags{ flags_ }
46071       , image{ image_ }
46072       , viewType{ viewType_ }
46073       , format{ format_ }
46074       , components{ components_ }
46075       , subresourceRange{ subresourceRange_ }
46076     {
46077     }
46078 
46079     VULKAN_HPP_CONSTEXPR ImageViewCreateInfo( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46080 
ImageViewCreateInfoVULKAN_HPP_NAMESPACE::ImageViewCreateInfo46081     ImageViewCreateInfo( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ImageViewCreateInfo( *reinterpret_cast<ImageViewCreateInfo const *>( &rhs ) )
46082     {
46083     }
46084 
46085     ImageViewCreateInfo & operator=( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46086 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46087 
operator =VULKAN_HPP_NAMESPACE::ImageViewCreateInfo46088     ImageViewCreateInfo & operator=( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46089     {
46090       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const *>( &rhs );
46091       return *this;
46092     }
46093 
46094 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewCreateInfo46095     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46096     {
46097       pNext = pNext_;
46098       return *this;
46099     }
46100 
setFlagsVULKAN_HPP_NAMESPACE::ImageViewCreateInfo46101     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
46102     {
46103       flags = flags_;
46104       return *this;
46105     }
46106 
setImageVULKAN_HPP_NAMESPACE::ImageViewCreateInfo46107     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
46108     {
46109       image = image_;
46110       return *this;
46111     }
46112 
setViewTypeVULKAN_HPP_NAMESPACE::ImageViewCreateInfo46113     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setViewType( VULKAN_HPP_NAMESPACE::ImageViewType viewType_ ) VULKAN_HPP_NOEXCEPT
46114     {
46115       viewType = viewType_;
46116       return *this;
46117     }
46118 
setFormatVULKAN_HPP_NAMESPACE::ImageViewCreateInfo46119     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
46120     {
46121       format = format_;
46122       return *this;
46123     }
46124 
setComponentsVULKAN_HPP_NAMESPACE::ImageViewCreateInfo46125     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
46126     {
46127       components = components_;
46128       return *this;
46129     }
46130 
46131     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo &
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageViewCreateInfo46132       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
46133     {
46134       subresourceRange = subresourceRange_;
46135       return *this;
46136     }
46137 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46138 
operator VkImageViewCreateInfo const&VULKAN_HPP_NAMESPACE::ImageViewCreateInfo46139     operator VkImageViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
46140     {
46141       return *reinterpret_cast<const VkImageViewCreateInfo *>( this );
46142     }
46143 
operator VkImageViewCreateInfo&VULKAN_HPP_NAMESPACE::ImageViewCreateInfo46144     operator VkImageViewCreateInfo &() VULKAN_HPP_NOEXCEPT
46145     {
46146       return *reinterpret_cast<VkImageViewCreateInfo *>( this );
46147     }
46148 
46149 #if defined( VULKAN_HPP_USE_REFLECT )
46150 #  if 14 <= VULKAN_HPP_CPP_VERSION
46151     auto
46152 #  else
46153     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
46154                const void * const &,
46155                VULKAN_HPP_NAMESPACE::ImageViewCreateFlags const &,
46156                VULKAN_HPP_NAMESPACE::Image const &,
46157                VULKAN_HPP_NAMESPACE::ImageViewType const &,
46158                VULKAN_HPP_NAMESPACE::Format const &,
46159                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
46160                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
46161 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewCreateInfo46162       reflect() const VULKAN_HPP_NOEXCEPT
46163     {
46164       return std::tie( sType, pNext, flags, image, viewType, format, components, subresourceRange );
46165     }
46166 #endif
46167 
46168 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46169     auto operator<=>( ImageViewCreateInfo const & ) const = default;
46170 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewCreateInfo46171     bool operator==( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46172     {
46173 #  if defined( VULKAN_HPP_USE_REFLECT )
46174       return this->reflect() == rhs.reflect();
46175 #  else
46176       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( image == rhs.image ) && ( viewType == rhs.viewType ) &&
46177              ( format == rhs.format ) && ( components == rhs.components ) && ( subresourceRange == rhs.subresourceRange );
46178 #  endif
46179     }
46180 
operator !=VULKAN_HPP_NAMESPACE::ImageViewCreateInfo46181     bool operator!=( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46182     {
46183       return !operator==( rhs );
46184     }
46185 #endif
46186 
46187   public:
46188     VULKAN_HPP_NAMESPACE::StructureType         sType            = StructureType::eImageViewCreateInfo;
46189     const void *                                pNext            = {};
46190     VULKAN_HPP_NAMESPACE::ImageViewCreateFlags  flags            = {};
46191     VULKAN_HPP_NAMESPACE::Image                 image            = {};
46192     VULKAN_HPP_NAMESPACE::ImageViewType         viewType         = VULKAN_HPP_NAMESPACE::ImageViewType::e1D;
46193     VULKAN_HPP_NAMESPACE::Format                format           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
46194     VULKAN_HPP_NAMESPACE::ComponentMapping      components       = {};
46195     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {};
46196   };
46197 
46198   template <>
46199   struct CppType<StructureType, StructureType::eImageViewCreateInfo>
46200   {
46201     using Type = ImageViewCreateInfo;
46202   };
46203 
46204   struct ImageViewHandleInfoNVX
46205   {
46206     using NativeType = VkImageViewHandleInfoNVX;
46207 
46208     static const bool                                  allowDuplicate = false;
46209     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewHandleInfoNVX;
46210 
46211 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewHandleInfoNVXVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46212     VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX( VULKAN_HPP_NAMESPACE::ImageView      imageView_      = {},
46213                                                  VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
46214                                                  VULKAN_HPP_NAMESPACE::Sampler        sampler_        = {},
46215                                                  const void *                         pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
46216       : pNext{ pNext_ }
46217       , imageView{ imageView_ }
46218       , descriptorType{ descriptorType_ }
46219       , sampler{ sampler_ }
46220     {
46221     }
46222 
46223     VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46224 
ImageViewHandleInfoNVXVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46225     ImageViewHandleInfoNVX( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
46226       : ImageViewHandleInfoNVX( *reinterpret_cast<ImageViewHandleInfoNVX const *>( &rhs ) )
46227     {
46228     }
46229 
46230     ImageViewHandleInfoNVX & operator=( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46231 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46232 
operator =VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46233     ImageViewHandleInfoNVX & operator=( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
46234     {
46235       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX const *>( &rhs );
46236       return *this;
46237     }
46238 
46239 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46240     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46241     {
46242       pNext = pNext_;
46243       return *this;
46244     }
46245 
setImageViewVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46246     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
46247     {
46248       imageView = imageView_;
46249       return *this;
46250     }
46251 
setDescriptorTypeVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46252     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
46253     {
46254       descriptorType = descriptorType_;
46255       return *this;
46256     }
46257 
setSamplerVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46258     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT
46259     {
46260       sampler = sampler_;
46261       return *this;
46262     }
46263 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46264 
operator VkImageViewHandleInfoNVX const&VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46265     operator VkImageViewHandleInfoNVX const &() const VULKAN_HPP_NOEXCEPT
46266     {
46267       return *reinterpret_cast<const VkImageViewHandleInfoNVX *>( this );
46268     }
46269 
operator VkImageViewHandleInfoNVX&VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46270     operator VkImageViewHandleInfoNVX &() VULKAN_HPP_NOEXCEPT
46271     {
46272       return *reinterpret_cast<VkImageViewHandleInfoNVX *>( this );
46273     }
46274 
46275 #if defined( VULKAN_HPP_USE_REFLECT )
46276 #  if 14 <= VULKAN_HPP_CPP_VERSION
46277     auto
46278 #  else
46279     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
46280                const void * const &,
46281                VULKAN_HPP_NAMESPACE::ImageView const &,
46282                VULKAN_HPP_NAMESPACE::DescriptorType const &,
46283                VULKAN_HPP_NAMESPACE::Sampler const &>
46284 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46285       reflect() const VULKAN_HPP_NOEXCEPT
46286     {
46287       return std::tie( sType, pNext, imageView, descriptorType, sampler );
46288     }
46289 #endif
46290 
46291 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46292     auto operator<=>( ImageViewHandleInfoNVX const & ) const = default;
46293 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46294     bool operator==( ImageViewHandleInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
46295     {
46296 #  if defined( VULKAN_HPP_USE_REFLECT )
46297       return this->reflect() == rhs.reflect();
46298 #  else
46299       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && ( descriptorType == rhs.descriptorType ) &&
46300              ( sampler == rhs.sampler );
46301 #  endif
46302     }
46303 
operator !=VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46304     bool operator!=( ImageViewHandleInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
46305     {
46306       return !operator==( rhs );
46307     }
46308 #endif
46309 
46310   public:
46311     VULKAN_HPP_NAMESPACE::StructureType  sType          = StructureType::eImageViewHandleInfoNVX;
46312     const void *                         pNext          = {};
46313     VULKAN_HPP_NAMESPACE::ImageView      imageView      = {};
46314     VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
46315     VULKAN_HPP_NAMESPACE::Sampler        sampler        = {};
46316   };
46317 
46318   template <>
46319   struct CppType<StructureType, StructureType::eImageViewHandleInfoNVX>
46320   {
46321     using Type = ImageViewHandleInfoNVX;
46322   };
46323 
46324   struct ImageViewMinLodCreateInfoEXT
46325   {
46326     using NativeType = VkImageViewMinLodCreateInfoEXT;
46327 
46328     static const bool                                  allowDuplicate = false;
46329     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewMinLodCreateInfoEXT;
46330 
46331 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewMinLodCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46332     VULKAN_HPP_CONSTEXPR ImageViewMinLodCreateInfoEXT( float minLod_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
46333       : pNext{ pNext_ }
46334       , minLod{ minLod_ }
46335     {
46336     }
46337 
46338     VULKAN_HPP_CONSTEXPR ImageViewMinLodCreateInfoEXT( ImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46339 
ImageViewMinLodCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46340     ImageViewMinLodCreateInfoEXT( VkImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46341       : ImageViewMinLodCreateInfoEXT( *reinterpret_cast<ImageViewMinLodCreateInfoEXT const *>( &rhs ) )
46342     {
46343     }
46344 
46345     ImageViewMinLodCreateInfoEXT & operator=( ImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46346 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46347 
operator =VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46348     ImageViewMinLodCreateInfoEXT & operator=( VkImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46349     {
46350       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT const *>( &rhs );
46351       return *this;
46352     }
46353 
46354 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46355     VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46356     {
46357       pNext = pNext_;
46358       return *this;
46359     }
46360 
setMinLodVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46361     VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT & setMinLod( float minLod_ ) VULKAN_HPP_NOEXCEPT
46362     {
46363       minLod = minLod_;
46364       return *this;
46365     }
46366 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46367 
operator VkImageViewMinLodCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46368     operator VkImageViewMinLodCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
46369     {
46370       return *reinterpret_cast<const VkImageViewMinLodCreateInfoEXT *>( this );
46371     }
46372 
operator VkImageViewMinLodCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46373     operator VkImageViewMinLodCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
46374     {
46375       return *reinterpret_cast<VkImageViewMinLodCreateInfoEXT *>( this );
46376     }
46377 
46378 #if defined( VULKAN_HPP_USE_REFLECT )
46379 #  if 14 <= VULKAN_HPP_CPP_VERSION
46380     auto
46381 #  else
46382     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, float const &>
46383 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46384       reflect() const VULKAN_HPP_NOEXCEPT
46385     {
46386       return std::tie( sType, pNext, minLod );
46387     }
46388 #endif
46389 
46390 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46391     auto operator<=>( ImageViewMinLodCreateInfoEXT const & ) const = default;
46392 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46393     bool operator==( ImageViewMinLodCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46394     {
46395 #  if defined( VULKAN_HPP_USE_REFLECT )
46396       return this->reflect() == rhs.reflect();
46397 #  else
46398       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minLod == rhs.minLod );
46399 #  endif
46400     }
46401 
operator !=VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46402     bool operator!=( ImageViewMinLodCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46403     {
46404       return !operator==( rhs );
46405     }
46406 #endif
46407 
46408   public:
46409     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eImageViewMinLodCreateInfoEXT;
46410     const void *                        pNext  = {};
46411     float                               minLod = {};
46412   };
46413 
46414   template <>
46415   struct CppType<StructureType, StructureType::eImageViewMinLodCreateInfoEXT>
46416   {
46417     using Type = ImageViewMinLodCreateInfoEXT;
46418   };
46419 
46420   struct ImageViewSampleWeightCreateInfoQCOM
46421   {
46422     using NativeType = VkImageViewSampleWeightCreateInfoQCOM;
46423 
46424     static const bool                                  allowDuplicate = false;
46425     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewSampleWeightCreateInfoQCOM;
46426 
46427 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewSampleWeightCreateInfoQCOMVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46428     VULKAN_HPP_CONSTEXPR ImageViewSampleWeightCreateInfoQCOM( VULKAN_HPP_NAMESPACE::Offset2D filterCenter_ = {},
46429                                                               VULKAN_HPP_NAMESPACE::Extent2D filterSize_   = {},
46430                                                               uint32_t                       numPhases_    = {},
46431                                                               const void *                   pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
46432       : pNext{ pNext_ }
46433       , filterCenter{ filterCenter_ }
46434       , filterSize{ filterSize_ }
46435       , numPhases{ numPhases_ }
46436     {
46437     }
46438 
46439     VULKAN_HPP_CONSTEXPR ImageViewSampleWeightCreateInfoQCOM( ImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46440 
ImageViewSampleWeightCreateInfoQCOMVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46441     ImageViewSampleWeightCreateInfoQCOM( VkImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
46442       : ImageViewSampleWeightCreateInfoQCOM( *reinterpret_cast<ImageViewSampleWeightCreateInfoQCOM const *>( &rhs ) )
46443     {
46444     }
46445 
46446     ImageViewSampleWeightCreateInfoQCOM & operator=( ImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46447 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46448 
operator =VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46449     ImageViewSampleWeightCreateInfoQCOM & operator=( VkImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
46450     {
46451       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM const *>( &rhs );
46452       return *this;
46453     }
46454 
46455 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46456     VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46457     {
46458       pNext = pNext_;
46459       return *this;
46460     }
46461 
setFilterCenterVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46462     VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setFilterCenter( VULKAN_HPP_NAMESPACE::Offset2D const & filterCenter_ ) VULKAN_HPP_NOEXCEPT
46463     {
46464       filterCenter = filterCenter_;
46465       return *this;
46466     }
46467 
setFilterSizeVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46468     VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setFilterSize( VULKAN_HPP_NAMESPACE::Extent2D const & filterSize_ ) VULKAN_HPP_NOEXCEPT
46469     {
46470       filterSize = filterSize_;
46471       return *this;
46472     }
46473 
setNumPhasesVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46474     VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setNumPhases( uint32_t numPhases_ ) VULKAN_HPP_NOEXCEPT
46475     {
46476       numPhases = numPhases_;
46477       return *this;
46478     }
46479 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46480 
operator VkImageViewSampleWeightCreateInfoQCOM const&VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46481     operator VkImageViewSampleWeightCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
46482     {
46483       return *reinterpret_cast<const VkImageViewSampleWeightCreateInfoQCOM *>( this );
46484     }
46485 
operator VkImageViewSampleWeightCreateInfoQCOM&VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46486     operator VkImageViewSampleWeightCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT
46487     {
46488       return *reinterpret_cast<VkImageViewSampleWeightCreateInfoQCOM *>( this );
46489     }
46490 
46491 #if defined( VULKAN_HPP_USE_REFLECT )
46492 #  if 14 <= VULKAN_HPP_CPP_VERSION
46493     auto
46494 #  else
46495     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
46496                const void * const &,
46497                VULKAN_HPP_NAMESPACE::Offset2D const &,
46498                VULKAN_HPP_NAMESPACE::Extent2D const &,
46499                uint32_t const &>
46500 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46501       reflect() const VULKAN_HPP_NOEXCEPT
46502     {
46503       return std::tie( sType, pNext, filterCenter, filterSize, numPhases );
46504     }
46505 #endif
46506 
46507 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46508     auto operator<=>( ImageViewSampleWeightCreateInfoQCOM const & ) const = default;
46509 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46510     bool operator==( ImageViewSampleWeightCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
46511     {
46512 #  if defined( VULKAN_HPP_USE_REFLECT )
46513       return this->reflect() == rhs.reflect();
46514 #  else
46515       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( filterCenter == rhs.filterCenter ) && ( filterSize == rhs.filterSize ) &&
46516              ( numPhases == rhs.numPhases );
46517 #  endif
46518     }
46519 
operator !=VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46520     bool operator!=( ImageViewSampleWeightCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
46521     {
46522       return !operator==( rhs );
46523     }
46524 #endif
46525 
46526   public:
46527     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eImageViewSampleWeightCreateInfoQCOM;
46528     const void *                        pNext        = {};
46529     VULKAN_HPP_NAMESPACE::Offset2D      filterCenter = {};
46530     VULKAN_HPP_NAMESPACE::Extent2D      filterSize   = {};
46531     uint32_t                            numPhases    = {};
46532   };
46533 
46534   template <>
46535   struct CppType<StructureType, StructureType::eImageViewSampleWeightCreateInfoQCOM>
46536   {
46537     using Type = ImageViewSampleWeightCreateInfoQCOM;
46538   };
46539 
46540   struct ImageViewSlicedCreateInfoEXT
46541   {
46542     using NativeType = VkImageViewSlicedCreateInfoEXT;
46543 
46544     static const bool                                  allowDuplicate = false;
46545     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewSlicedCreateInfoEXT;
46546 
46547 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
46548     VULKAN_HPP_CONSTEXPR
ImageViewSlicedCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46549       ImageViewSlicedCreateInfoEXT( uint32_t sliceOffset_ = {}, uint32_t sliceCount_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
46550       : pNext{ pNext_ }
46551       , sliceOffset{ sliceOffset_ }
46552       , sliceCount{ sliceCount_ }
46553     {
46554     }
46555 
46556     VULKAN_HPP_CONSTEXPR ImageViewSlicedCreateInfoEXT( ImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46557 
ImageViewSlicedCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46558     ImageViewSlicedCreateInfoEXT( VkImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46559       : ImageViewSlicedCreateInfoEXT( *reinterpret_cast<ImageViewSlicedCreateInfoEXT const *>( &rhs ) )
46560     {
46561     }
46562 
46563     ImageViewSlicedCreateInfoEXT & operator=( ImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46564 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46565 
operator =VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46566     ImageViewSlicedCreateInfoEXT & operator=( VkImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46567     {
46568       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT const *>( &rhs );
46569       return *this;
46570     }
46571 
46572 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46573     VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46574     {
46575       pNext = pNext_;
46576       return *this;
46577     }
46578 
setSliceOffsetVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46579     VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT & setSliceOffset( uint32_t sliceOffset_ ) VULKAN_HPP_NOEXCEPT
46580     {
46581       sliceOffset = sliceOffset_;
46582       return *this;
46583     }
46584 
setSliceCountVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46585     VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT & setSliceCount( uint32_t sliceCount_ ) VULKAN_HPP_NOEXCEPT
46586     {
46587       sliceCount = sliceCount_;
46588       return *this;
46589     }
46590 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46591 
operator VkImageViewSlicedCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46592     operator VkImageViewSlicedCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
46593     {
46594       return *reinterpret_cast<const VkImageViewSlicedCreateInfoEXT *>( this );
46595     }
46596 
operator VkImageViewSlicedCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46597     operator VkImageViewSlicedCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
46598     {
46599       return *reinterpret_cast<VkImageViewSlicedCreateInfoEXT *>( this );
46600     }
46601 
46602 #if defined( VULKAN_HPP_USE_REFLECT )
46603 #  if 14 <= VULKAN_HPP_CPP_VERSION
46604     auto
46605 #  else
46606     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &>
46607 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46608       reflect() const VULKAN_HPP_NOEXCEPT
46609     {
46610       return std::tie( sType, pNext, sliceOffset, sliceCount );
46611     }
46612 #endif
46613 
46614 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46615     auto operator<=>( ImageViewSlicedCreateInfoEXT const & ) const = default;
46616 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46617     bool operator==( ImageViewSlicedCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46618     {
46619 #  if defined( VULKAN_HPP_USE_REFLECT )
46620       return this->reflect() == rhs.reflect();
46621 #  else
46622       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sliceOffset == rhs.sliceOffset ) && ( sliceCount == rhs.sliceCount );
46623 #  endif
46624     }
46625 
operator !=VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46626     bool operator!=( ImageViewSlicedCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46627     {
46628       return !operator==( rhs );
46629     }
46630 #endif
46631 
46632   public:
46633     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eImageViewSlicedCreateInfoEXT;
46634     const void *                        pNext       = {};
46635     uint32_t                            sliceOffset = {};
46636     uint32_t                            sliceCount  = {};
46637   };
46638 
46639   template <>
46640   struct CppType<StructureType, StructureType::eImageViewSlicedCreateInfoEXT>
46641   {
46642     using Type = ImageViewSlicedCreateInfoEXT;
46643   };
46644 
46645   struct ImageViewUsageCreateInfo
46646   {
46647     using NativeType = VkImageViewUsageCreateInfo;
46648 
46649     static const bool                                  allowDuplicate = false;
46650     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewUsageCreateInfo;
46651 
46652 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46653     VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
46654       : pNext{ pNext_ }
46655       , usage{ usage_ }
46656     {
46657     }
46658 
46659     VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46660 
ImageViewUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46661     ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46662       : ImageViewUsageCreateInfo( *reinterpret_cast<ImageViewUsageCreateInfo const *>( &rhs ) )
46663     {
46664     }
46665 
46666     ImageViewUsageCreateInfo & operator=( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46667 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46668 
operator =VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46669     ImageViewUsageCreateInfo & operator=( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46670     {
46671       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo const *>( &rhs );
46672       return *this;
46673     }
46674 
46675 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46676     VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46677     {
46678       pNext = pNext_;
46679       return *this;
46680     }
46681 
setUsageVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46682     VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
46683     {
46684       usage = usage_;
46685       return *this;
46686     }
46687 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46688 
operator VkImageViewUsageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46689     operator VkImageViewUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
46690     {
46691       return *reinterpret_cast<const VkImageViewUsageCreateInfo *>( this );
46692     }
46693 
operator VkImageViewUsageCreateInfo&VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46694     operator VkImageViewUsageCreateInfo &() VULKAN_HPP_NOEXCEPT
46695     {
46696       return *reinterpret_cast<VkImageViewUsageCreateInfo *>( this );
46697     }
46698 
46699 #if defined( VULKAN_HPP_USE_REFLECT )
46700 #  if 14 <= VULKAN_HPP_CPP_VERSION
46701     auto
46702 #  else
46703     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
46704 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46705       reflect() const VULKAN_HPP_NOEXCEPT
46706     {
46707       return std::tie( sType, pNext, usage );
46708     }
46709 #endif
46710 
46711 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46712     auto operator<=>( ImageViewUsageCreateInfo const & ) const = default;
46713 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46714     bool operator==( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46715     {
46716 #  if defined( VULKAN_HPP_USE_REFLECT )
46717       return this->reflect() == rhs.reflect();
46718 #  else
46719       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( usage == rhs.usage );
46720 #  endif
46721     }
46722 
operator !=VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46723     bool operator!=( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46724     {
46725       return !operator==( rhs );
46726     }
46727 #endif
46728 
46729   public:
46730     VULKAN_HPP_NAMESPACE::StructureType   sType = StructureType::eImageViewUsageCreateInfo;
46731     const void *                          pNext = {};
46732     VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {};
46733   };
46734 
46735   template <>
46736   struct CppType<StructureType, StructureType::eImageViewUsageCreateInfo>
46737   {
46738     using Type = ImageViewUsageCreateInfo;
46739   };
46740 
46741   using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
46742 
46743 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
46744   struct ImportAndroidHardwareBufferInfoANDROID
46745   {
46746     using NativeType = VkImportAndroidHardwareBufferInfoANDROID;
46747 
46748     static const bool                                  allowDuplicate = false;
46749     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportAndroidHardwareBufferInfoANDROID;
46750 
46751 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46752     VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID( struct AHardwareBuffer * buffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
46753       : pNext{ pNext_ }
46754       , buffer{ buffer_ }
46755     {
46756     }
46757 
46758     VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46759 
ImportAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46760     ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
46761       : ImportAndroidHardwareBufferInfoANDROID( *reinterpret_cast<ImportAndroidHardwareBufferInfoANDROID const *>( &rhs ) )
46762     {
46763     }
46764 
46765     ImportAndroidHardwareBufferInfoANDROID & operator=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46766 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46767 
operator =VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46768     ImportAndroidHardwareBufferInfoANDROID & operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
46769     {
46770       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID const *>( &rhs );
46771       return *this;
46772     }
46773 
46774 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46775     VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46776     {
46777       pNext = pNext_;
46778       return *this;
46779     }
46780 
setBufferVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46781     VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & setBuffer( struct AHardwareBuffer * buffer_ ) VULKAN_HPP_NOEXCEPT
46782     {
46783       buffer = buffer_;
46784       return *this;
46785     }
46786 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46787 
operator VkImportAndroidHardwareBufferInfoANDROID const&VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46788     operator VkImportAndroidHardwareBufferInfoANDROID const &() const VULKAN_HPP_NOEXCEPT
46789     {
46790       return *reinterpret_cast<const VkImportAndroidHardwareBufferInfoANDROID *>( this );
46791     }
46792 
operator VkImportAndroidHardwareBufferInfoANDROID&VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46793     operator VkImportAndroidHardwareBufferInfoANDROID &() VULKAN_HPP_NOEXCEPT
46794     {
46795       return *reinterpret_cast<VkImportAndroidHardwareBufferInfoANDROID *>( this );
46796     }
46797 
46798 #  if defined( VULKAN_HPP_USE_REFLECT )
46799 #    if 14 <= VULKAN_HPP_CPP_VERSION
46800     auto
46801 #    else
46802     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, struct AHardwareBuffer * const &>
46803 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46804       reflect() const VULKAN_HPP_NOEXCEPT
46805     {
46806       return std::tie( sType, pNext, buffer );
46807     }
46808 #  endif
46809 
46810 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46811     auto operator<=>( ImportAndroidHardwareBufferInfoANDROID const & ) const = default;
46812 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46813     bool operator==( ImportAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
46814     {
46815 #    if defined( VULKAN_HPP_USE_REFLECT )
46816       return this->reflect() == rhs.reflect();
46817 #    else
46818       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
46819 #    endif
46820     }
46821 
operator !=VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46822     bool operator!=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
46823     {
46824       return !operator==( rhs );
46825     }
46826 #  endif
46827 
46828   public:
46829     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eImportAndroidHardwareBufferInfoANDROID;
46830     const void *                        pNext  = {};
46831     struct AHardwareBuffer *            buffer = {};
46832   };
46833 
46834   template <>
46835   struct CppType<StructureType, StructureType::eImportAndroidHardwareBufferInfoANDROID>
46836   {
46837     using Type = ImportAndroidHardwareBufferInfoANDROID;
46838   };
46839 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
46840 
46841   struct ImportFenceFdInfoKHR
46842   {
46843     using NativeType = VkImportFenceFdInfoKHR;
46844 
46845     static const bool                                  allowDuplicate = false;
46846     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportFenceFdInfoKHR;
46847 
46848 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportFenceFdInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46849     VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR(
46850       VULKAN_HPP_NAMESPACE::Fence                           fence_      = {},
46851       VULKAN_HPP_NAMESPACE::FenceImportFlags                flags_      = {},
46852       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
46853       int                                                   fd_         = {},
46854       const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
46855       : pNext{ pNext_ }
46856       , fence{ fence_ }
46857       , flags{ flags_ }
46858       , handleType{ handleType_ }
46859       , fd{ fd_ }
46860     {
46861     }
46862 
46863     VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46864 
ImportFenceFdInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46865     ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
46866       : ImportFenceFdInfoKHR( *reinterpret_cast<ImportFenceFdInfoKHR const *>( &rhs ) )
46867     {
46868     }
46869 
46870     ImportFenceFdInfoKHR & operator=( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46871 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46872 
operator =VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46873     ImportFenceFdInfoKHR & operator=( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
46874     {
46875       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR const *>( &rhs );
46876       return *this;
46877     }
46878 
46879 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46880     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46881     {
46882       pNext = pNext_;
46883       return *this;
46884     }
46885 
setFenceVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46886     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
46887     {
46888       fence = fence_;
46889       return *this;
46890     }
46891 
setFlagsVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46892     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
46893     {
46894       flags = flags_;
46895       return *this;
46896     }
46897 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46898     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
46899     {
46900       handleType = handleType_;
46901       return *this;
46902     }
46903 
setFdVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46904     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
46905     {
46906       fd = fd_;
46907       return *this;
46908     }
46909 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46910 
operator VkImportFenceFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46911     operator VkImportFenceFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
46912     {
46913       return *reinterpret_cast<const VkImportFenceFdInfoKHR *>( this );
46914     }
46915 
operator VkImportFenceFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46916     operator VkImportFenceFdInfoKHR &() VULKAN_HPP_NOEXCEPT
46917     {
46918       return *reinterpret_cast<VkImportFenceFdInfoKHR *>( this );
46919     }
46920 
46921 #if defined( VULKAN_HPP_USE_REFLECT )
46922 #  if 14 <= VULKAN_HPP_CPP_VERSION
46923     auto
46924 #  else
46925     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
46926                const void * const &,
46927                VULKAN_HPP_NAMESPACE::Fence const &,
46928                VULKAN_HPP_NAMESPACE::FenceImportFlags const &,
46929                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &,
46930                int const &>
46931 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46932       reflect() const VULKAN_HPP_NOEXCEPT
46933     {
46934       return std::tie( sType, pNext, fence, flags, handleType, fd );
46935     }
46936 #endif
46937 
46938 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46939     auto operator<=>( ImportFenceFdInfoKHR const & ) const = default;
46940 #else
operator ==VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46941     bool operator==( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
46942     {
46943 #  if defined( VULKAN_HPP_USE_REFLECT )
46944       return this->reflect() == rhs.reflect();
46945 #  else
46946       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) &&
46947              ( fd == rhs.fd );
46948 #  endif
46949     }
46950 
operator !=VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46951     bool operator!=( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
46952     {
46953       return !operator==( rhs );
46954     }
46955 #endif
46956 
46957   public:
46958     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eImportFenceFdInfoKHR;
46959     const void *                                          pNext      = {};
46960     VULKAN_HPP_NAMESPACE::Fence                           fence      = {};
46961     VULKAN_HPP_NAMESPACE::FenceImportFlags                flags      = {};
46962     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
46963     int                                                   fd         = {};
46964   };
46965 
46966   template <>
46967   struct CppType<StructureType, StructureType::eImportFenceFdInfoKHR>
46968   {
46969     using Type = ImportFenceFdInfoKHR;
46970   };
46971 
46972 #if defined( VK_USE_PLATFORM_WIN32_KHR )
46973   struct ImportFenceWin32HandleInfoKHR
46974   {
46975     using NativeType = VkImportFenceWin32HandleInfoKHR;
46976 
46977     static const bool                                  allowDuplicate = false;
46978     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportFenceWin32HandleInfoKHR;
46979 
46980 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46981     VULKAN_HPP_CONSTEXPR ImportFenceWin32HandleInfoKHR(
46982       VULKAN_HPP_NAMESPACE::Fence                           fence_      = {},
46983       VULKAN_HPP_NAMESPACE::FenceImportFlags                flags_      = {},
46984       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
46985       HANDLE                                                handle_     = {},
46986       LPCWSTR                                               name_       = {},
46987       const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
46988       : pNext{ pNext_ }
46989       , fence{ fence_ }
46990       , flags{ flags_ }
46991       , handleType{ handleType_ }
46992       , handle{ handle_ }
46993       , name{ name_ }
46994     {
46995     }
46996 
46997     VULKAN_HPP_CONSTEXPR ImportFenceWin32HandleInfoKHR( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46998 
ImportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46999     ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47000       : ImportFenceWin32HandleInfoKHR( *reinterpret_cast<ImportFenceWin32HandleInfoKHR const *>( &rhs ) )
47001     {
47002     }
47003 
47004     ImportFenceWin32HandleInfoKHR & operator=( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47005 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47006 
operator =VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47007     ImportFenceWin32HandleInfoKHR & operator=( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47008     {
47009       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR const *>( &rhs );
47010       return *this;
47011     }
47012 
47013 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47014     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47015     {
47016       pNext = pNext_;
47017       return *this;
47018     }
47019 
setFenceVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47020     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
47021     {
47022       fence = fence_;
47023       return *this;
47024     }
47025 
setFlagsVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47026     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
47027     {
47028       flags = flags_;
47029       return *this;
47030     }
47031 
47032     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47033       setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
47034     {
47035       handleType = handleType_;
47036       return *this;
47037     }
47038 
setHandleVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47039     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
47040     {
47041       handle = handle_;
47042       return *this;
47043     }
47044 
setNameVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47045     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
47046     {
47047       name = name_;
47048       return *this;
47049     }
47050 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47051 
operator VkImportFenceWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47052     operator VkImportFenceWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
47053     {
47054       return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR *>( this );
47055     }
47056 
operator VkImportFenceWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47057     operator VkImportFenceWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
47058     {
47059       return *reinterpret_cast<VkImportFenceWin32HandleInfoKHR *>( this );
47060     }
47061 
47062 #  if defined( VULKAN_HPP_USE_REFLECT )
47063 #    if 14 <= VULKAN_HPP_CPP_VERSION
47064     auto
47065 #    else
47066     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
47067                const void * const &,
47068                VULKAN_HPP_NAMESPACE::Fence const &,
47069                VULKAN_HPP_NAMESPACE::FenceImportFlags const &,
47070                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &,
47071                HANDLE const &,
47072                LPCWSTR const &>
47073 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47074       reflect() const VULKAN_HPP_NOEXCEPT
47075     {
47076       return std::tie( sType, pNext, fence, flags, handleType, handle, name );
47077     }
47078 #  endif
47079 
47080 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47081     auto operator<=>( ImportFenceWin32HandleInfoKHR const & ) const = default;
47082 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47083     bool operator==( ImportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47084     {
47085 #    if defined( VULKAN_HPP_USE_REFLECT )
47086       return this->reflect() == rhs.reflect();
47087 #    else
47088       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) &&
47089              ( handle == rhs.handle ) && ( name == rhs.name );
47090 #    endif
47091     }
47092 
operator !=VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR47093     bool operator!=( ImportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47094     {
47095       return !operator==( rhs );
47096     }
47097 #  endif
47098 
47099   public:
47100     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eImportFenceWin32HandleInfoKHR;
47101     const void *                                          pNext      = {};
47102     VULKAN_HPP_NAMESPACE::Fence                           fence      = {};
47103     VULKAN_HPP_NAMESPACE::FenceImportFlags                flags      = {};
47104     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
47105     HANDLE                                                handle     = {};
47106     LPCWSTR                                               name       = {};
47107   };
47108 
47109   template <>
47110   struct CppType<StructureType, StructureType::eImportFenceWin32HandleInfoKHR>
47111   {
47112     using Type = ImportFenceWin32HandleInfoKHR;
47113   };
47114 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
47115 
47116 #if defined( VK_USE_PLATFORM_FUCHSIA )
47117   struct ImportMemoryBufferCollectionFUCHSIA
47118   {
47119     using NativeType = VkImportMemoryBufferCollectionFUCHSIA;
47120 
47121     static const bool                                  allowDuplicate = false;
47122     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryBufferCollectionFUCHSIA;
47123 
47124 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryBufferCollectionFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47125     VULKAN_HPP_CONSTEXPR ImportMemoryBufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {},
47126                                                               uint32_t                                      index_      = {},
47127                                                               const void *                                  pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
47128       : pNext{ pNext_ }
47129       , collection{ collection_ }
47130       , index{ index_ }
47131     {
47132     }
47133 
47134     VULKAN_HPP_CONSTEXPR ImportMemoryBufferCollectionFUCHSIA( ImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47135 
ImportMemoryBufferCollectionFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47136     ImportMemoryBufferCollectionFUCHSIA( VkImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
47137       : ImportMemoryBufferCollectionFUCHSIA( *reinterpret_cast<ImportMemoryBufferCollectionFUCHSIA const *>( &rhs ) )
47138     {
47139     }
47140 
47141     ImportMemoryBufferCollectionFUCHSIA & operator=( ImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47142 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47143 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47144     ImportMemoryBufferCollectionFUCHSIA & operator=( VkImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
47145     {
47146       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA const *>( &rhs );
47147       return *this;
47148     }
47149 
47150 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47151     VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47152     {
47153       pNext = pNext_;
47154       return *this;
47155     }
47156 
setCollectionVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47157     VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT
47158     {
47159       collection = collection_;
47160       return *this;
47161     }
47162 
setIndexVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47163     VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
47164     {
47165       index = index_;
47166       return *this;
47167     }
47168 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47169 
operator VkImportMemoryBufferCollectionFUCHSIA const&VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47170     operator VkImportMemoryBufferCollectionFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
47171     {
47172       return *reinterpret_cast<const VkImportMemoryBufferCollectionFUCHSIA *>( this );
47173     }
47174 
operator VkImportMemoryBufferCollectionFUCHSIA&VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47175     operator VkImportMemoryBufferCollectionFUCHSIA &() VULKAN_HPP_NOEXCEPT
47176     {
47177       return *reinterpret_cast<VkImportMemoryBufferCollectionFUCHSIA *>( this );
47178     }
47179 
47180 #  if defined( VULKAN_HPP_USE_REFLECT )
47181 #    if 14 <= VULKAN_HPP_CPP_VERSION
47182     auto
47183 #    else
47184     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const &, uint32_t const &>
47185 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47186       reflect() const VULKAN_HPP_NOEXCEPT
47187     {
47188       return std::tie( sType, pNext, collection, index );
47189     }
47190 #  endif
47191 
47192 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47193     auto operator<=>( ImportMemoryBufferCollectionFUCHSIA const & ) const = default;
47194 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47195     bool operator==( ImportMemoryBufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
47196     {
47197 #    if defined( VULKAN_HPP_USE_REFLECT )
47198       return this->reflect() == rhs.reflect();
47199 #    else
47200       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && ( index == rhs.index );
47201 #    endif
47202     }
47203 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA47204     bool operator!=( ImportMemoryBufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
47205     {
47206       return !operator==( rhs );
47207     }
47208 #  endif
47209 
47210   public:
47211     VULKAN_HPP_NAMESPACE::StructureType           sType      = StructureType::eImportMemoryBufferCollectionFUCHSIA;
47212     const void *                                  pNext      = {};
47213     VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {};
47214     uint32_t                                      index      = {};
47215   };
47216 
47217   template <>
47218   struct CppType<StructureType, StructureType::eImportMemoryBufferCollectionFUCHSIA>
47219   {
47220     using Type = ImportMemoryBufferCollectionFUCHSIA;
47221   };
47222 #endif /*VK_USE_PLATFORM_FUCHSIA*/
47223 
47224   struct ImportMemoryFdInfoKHR
47225   {
47226     using NativeType = VkImportMemoryFdInfoKHR;
47227 
47228     static const bool                                  allowDuplicate = false;
47229     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryFdInfoKHR;
47230 
47231 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryFdInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47232     VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR(
47233       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
47234       int                                                    fd_         = {},
47235       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
47236       : pNext{ pNext_ }
47237       , handleType{ handleType_ }
47238       , fd{ fd_ }
47239     {
47240     }
47241 
47242     VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47243 
ImportMemoryFdInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47244     ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47245       : ImportMemoryFdInfoKHR( *reinterpret_cast<ImportMemoryFdInfoKHR const *>( &rhs ) )
47246     {
47247     }
47248 
47249     ImportMemoryFdInfoKHR & operator=( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47250 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47251 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47252     ImportMemoryFdInfoKHR & operator=( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47253     {
47254       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR const *>( &rhs );
47255       return *this;
47256     }
47257 
47258 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47259     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47260     {
47261       pNext = pNext_;
47262       return *this;
47263     }
47264 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47265     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
47266     {
47267       handleType = handleType_;
47268       return *this;
47269     }
47270 
setFdVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47271     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
47272     {
47273       fd = fd_;
47274       return *this;
47275     }
47276 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47277 
operator VkImportMemoryFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47278     operator VkImportMemoryFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
47279     {
47280       return *reinterpret_cast<const VkImportMemoryFdInfoKHR *>( this );
47281     }
47282 
operator VkImportMemoryFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47283     operator VkImportMemoryFdInfoKHR &() VULKAN_HPP_NOEXCEPT
47284     {
47285       return *reinterpret_cast<VkImportMemoryFdInfoKHR *>( this );
47286     }
47287 
47288 #if defined( VULKAN_HPP_USE_REFLECT )
47289 #  if 14 <= VULKAN_HPP_CPP_VERSION
47290     auto
47291 #  else
47292     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &, int const &>
47293 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47294       reflect() const VULKAN_HPP_NOEXCEPT
47295     {
47296       return std::tie( sType, pNext, handleType, fd );
47297     }
47298 #endif
47299 
47300 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47301     auto operator<=>( ImportMemoryFdInfoKHR const & ) const = default;
47302 #else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47303     bool operator==( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47304     {
47305 #  if defined( VULKAN_HPP_USE_REFLECT )
47306       return this->reflect() == rhs.reflect();
47307 #  else
47308       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( fd == rhs.fd );
47309 #  endif
47310     }
47311 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47312     bool operator!=( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47313     {
47314       return !operator==( rhs );
47315     }
47316 #endif
47317 
47318   public:
47319     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eImportMemoryFdInfoKHR;
47320     const void *                                           pNext      = {};
47321     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
47322     int                                                    fd         = {};
47323   };
47324 
47325   template <>
47326   struct CppType<StructureType, StructureType::eImportMemoryFdInfoKHR>
47327   {
47328     using Type = ImportMemoryFdInfoKHR;
47329   };
47330 
47331   struct ImportMemoryHostPointerInfoEXT
47332   {
47333     using NativeType = VkImportMemoryHostPointerInfoEXT;
47334 
47335     static const bool                                  allowDuplicate = false;
47336     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryHostPointerInfoEXT;
47337 
47338 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryHostPointerInfoEXTVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47339     VULKAN_HPP_CONSTEXPR ImportMemoryHostPointerInfoEXT(
47340       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_   = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
47341       void *                                                 pHostPointer_ = {},
47342       const void *                                           pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
47343       : pNext{ pNext_ }
47344       , handleType{ handleType_ }
47345       , pHostPointer{ pHostPointer_ }
47346     {
47347     }
47348 
47349     VULKAN_HPP_CONSTEXPR ImportMemoryHostPointerInfoEXT( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47350 
ImportMemoryHostPointerInfoEXTVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47351     ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47352       : ImportMemoryHostPointerInfoEXT( *reinterpret_cast<ImportMemoryHostPointerInfoEXT const *>( &rhs ) )
47353     {
47354     }
47355 
47356     ImportMemoryHostPointerInfoEXT & operator=( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47357 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47358 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47359     ImportMemoryHostPointerInfoEXT & operator=( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47360     {
47361       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT const *>( &rhs );
47362       return *this;
47363     }
47364 
47365 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47366     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47367     {
47368       pNext = pNext_;
47369       return *this;
47370     }
47371 
47372     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47373       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
47374     {
47375       handleType = handleType_;
47376       return *this;
47377     }
47378 
setPHostPointerVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47379     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPHostPointer( void * pHostPointer_ ) VULKAN_HPP_NOEXCEPT
47380     {
47381       pHostPointer = pHostPointer_;
47382       return *this;
47383     }
47384 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47385 
operator VkImportMemoryHostPointerInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47386     operator VkImportMemoryHostPointerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
47387     {
47388       return *reinterpret_cast<const VkImportMemoryHostPointerInfoEXT *>( this );
47389     }
47390 
operator VkImportMemoryHostPointerInfoEXT&VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47391     operator VkImportMemoryHostPointerInfoEXT &() VULKAN_HPP_NOEXCEPT
47392     {
47393       return *reinterpret_cast<VkImportMemoryHostPointerInfoEXT *>( this );
47394     }
47395 
47396 #if defined( VULKAN_HPP_USE_REFLECT )
47397 #  if 14 <= VULKAN_HPP_CPP_VERSION
47398     auto
47399 #  else
47400     std::
47401       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &, void * const &>
47402 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47403       reflect() const VULKAN_HPP_NOEXCEPT
47404     {
47405       return std::tie( sType, pNext, handleType, pHostPointer );
47406     }
47407 #endif
47408 
47409 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47410     auto operator<=>( ImportMemoryHostPointerInfoEXT const & ) const = default;
47411 #else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47412     bool operator==( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47413     {
47414 #  if defined( VULKAN_HPP_USE_REFLECT )
47415       return this->reflect() == rhs.reflect();
47416 #  else
47417       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( pHostPointer == rhs.pHostPointer );
47418 #  endif
47419     }
47420 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47421     bool operator!=( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47422     {
47423       return !operator==( rhs );
47424     }
47425 #endif
47426 
47427   public:
47428     VULKAN_HPP_NAMESPACE::StructureType                    sType        = StructureType::eImportMemoryHostPointerInfoEXT;
47429     const void *                                           pNext        = {};
47430     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType   = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
47431     void *                                                 pHostPointer = {};
47432   };
47433 
47434   template <>
47435   struct CppType<StructureType, StructureType::eImportMemoryHostPointerInfoEXT>
47436   {
47437     using Type = ImportMemoryHostPointerInfoEXT;
47438   };
47439 
47440 #if defined( VK_USE_PLATFORM_WIN32_KHR )
47441   struct ImportMemoryWin32HandleInfoKHR
47442   {
47443     using NativeType = VkImportMemoryWin32HandleInfoKHR;
47444 
47445     static const bool                                  allowDuplicate = false;
47446     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryWin32HandleInfoKHR;
47447 
47448 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47449     VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoKHR(
47450       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
47451       HANDLE                                                 handle_     = {},
47452       LPCWSTR                                                name_       = {},
47453       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
47454       : pNext{ pNext_ }
47455       , handleType{ handleType_ }
47456       , handle{ handle_ }
47457       , name{ name_ }
47458     {
47459     }
47460 
47461     VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoKHR( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47462 
ImportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47463     ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47464       : ImportMemoryWin32HandleInfoKHR( *reinterpret_cast<ImportMemoryWin32HandleInfoKHR const *>( &rhs ) )
47465     {
47466     }
47467 
47468     ImportMemoryWin32HandleInfoKHR & operator=( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47469 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47470 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47471     ImportMemoryWin32HandleInfoKHR & operator=( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47472     {
47473       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR const *>( &rhs );
47474       return *this;
47475     }
47476 
47477 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47478     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47479     {
47480       pNext = pNext_;
47481       return *this;
47482     }
47483 
47484     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47485       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
47486     {
47487       handleType = handleType_;
47488       return *this;
47489     }
47490 
setHandleVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47491     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
47492     {
47493       handle = handle_;
47494       return *this;
47495     }
47496 
setNameVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47497     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
47498     {
47499       name = name_;
47500       return *this;
47501     }
47502 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47503 
operator VkImportMemoryWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47504     operator VkImportMemoryWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
47505     {
47506       return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR *>( this );
47507     }
47508 
operator VkImportMemoryWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47509     operator VkImportMemoryWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
47510     {
47511       return *reinterpret_cast<VkImportMemoryWin32HandleInfoKHR *>( this );
47512     }
47513 
47514 #  if defined( VULKAN_HPP_USE_REFLECT )
47515 #    if 14 <= VULKAN_HPP_CPP_VERSION
47516     auto
47517 #    else
47518     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
47519                const void * const &,
47520                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &,
47521                HANDLE const &,
47522                LPCWSTR const &>
47523 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47524       reflect() const VULKAN_HPP_NOEXCEPT
47525     {
47526       return std::tie( sType, pNext, handleType, handle, name );
47527     }
47528 #  endif
47529 
47530 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47531     auto operator<=>( ImportMemoryWin32HandleInfoKHR const & ) const = default;
47532 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47533     bool operator==( ImportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47534     {
47535 #    if defined( VULKAN_HPP_USE_REFLECT )
47536       return this->reflect() == rhs.reflect();
47537 #    else
47538       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( handle == rhs.handle ) && ( name == rhs.name );
47539 #    endif
47540     }
47541 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47542     bool operator!=( ImportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47543     {
47544       return !operator==( rhs );
47545     }
47546 #  endif
47547 
47548   public:
47549     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eImportMemoryWin32HandleInfoKHR;
47550     const void *                                           pNext      = {};
47551     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
47552     HANDLE                                                 handle     = {};
47553     LPCWSTR                                                name       = {};
47554   };
47555 
47556   template <>
47557   struct CppType<StructureType, StructureType::eImportMemoryWin32HandleInfoKHR>
47558   {
47559     using Type = ImportMemoryWin32HandleInfoKHR;
47560   };
47561 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
47562 
47563 #if defined( VK_USE_PLATFORM_WIN32_KHR )
47564   struct ImportMemoryWin32HandleInfoNV
47565   {
47566     using NativeType = VkImportMemoryWin32HandleInfoNV;
47567 
47568     static const bool                                  allowDuplicate = false;
47569     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryWin32HandleInfoNV;
47570 
47571 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47572     VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType_ = {},
47573                                                         HANDLE                                                handle_     = {},
47574                                                         const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
47575       : pNext{ pNext_ }
47576       , handleType{ handleType_ }
47577       , handle{ handle_ }
47578     {
47579     }
47580 
47581     VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoNV( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47582 
ImportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47583     ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47584       : ImportMemoryWin32HandleInfoNV( *reinterpret_cast<ImportMemoryWin32HandleInfoNV const *>( &rhs ) )
47585     {
47586     }
47587 
47588     ImportMemoryWin32HandleInfoNV & operator=( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47589 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47590 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47591     ImportMemoryWin32HandleInfoNV & operator=( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47592     {
47593       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV const *>( &rhs );
47594       return *this;
47595     }
47596 
47597 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47598     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47599     {
47600       pNext = pNext_;
47601       return *this;
47602     }
47603 
47604     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47605       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType_ ) VULKAN_HPP_NOEXCEPT
47606     {
47607       handleType = handleType_;
47608       return *this;
47609     }
47610 
setHandleVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47611     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
47612     {
47613       handle = handle_;
47614       return *this;
47615     }
47616 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47617 
operator VkImportMemoryWin32HandleInfoNV const&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47618     operator VkImportMemoryWin32HandleInfoNV const &() const VULKAN_HPP_NOEXCEPT
47619     {
47620       return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV *>( this );
47621     }
47622 
operator VkImportMemoryWin32HandleInfoNV&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47623     operator VkImportMemoryWin32HandleInfoNV &() VULKAN_HPP_NOEXCEPT
47624     {
47625       return *reinterpret_cast<VkImportMemoryWin32HandleInfoNV *>( this );
47626     }
47627 
47628 #  if defined( VULKAN_HPP_USE_REFLECT )
47629 #    if 14 <= VULKAN_HPP_CPP_VERSION
47630     auto
47631 #    else
47632     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &, HANDLE const &>
47633 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47634       reflect() const VULKAN_HPP_NOEXCEPT
47635     {
47636       return std::tie( sType, pNext, handleType, handle );
47637     }
47638 #  endif
47639 
47640 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47641     auto operator<=>( ImportMemoryWin32HandleInfoNV const & ) const = default;
47642 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47643     bool operator==( ImportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47644     {
47645 #    if defined( VULKAN_HPP_USE_REFLECT )
47646       return this->reflect() == rhs.reflect();
47647 #    else
47648       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( handle == rhs.handle );
47649 #    endif
47650     }
47651 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47652     bool operator!=( ImportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47653     {
47654       return !operator==( rhs );
47655     }
47656 #  endif
47657 
47658   public:
47659     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eImportMemoryWin32HandleInfoNV;
47660     const void *                                          pNext      = {};
47661     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType = {};
47662     HANDLE                                                handle     = {};
47663   };
47664 
47665   template <>
47666   struct CppType<StructureType, StructureType::eImportMemoryWin32HandleInfoNV>
47667   {
47668     using Type = ImportMemoryWin32HandleInfoNV;
47669   };
47670 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
47671 
47672 #if defined( VK_USE_PLATFORM_FUCHSIA )
47673   struct ImportMemoryZirconHandleInfoFUCHSIA
47674   {
47675     using NativeType = VkImportMemoryZirconHandleInfoFUCHSIA;
47676 
47677     static const bool                                  allowDuplicate = false;
47678     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryZirconHandleInfoFUCHSIA;
47679 
47680 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47681     VULKAN_HPP_CONSTEXPR ImportMemoryZirconHandleInfoFUCHSIA(
47682       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
47683       zx_handle_t                                            handle_     = {},
47684       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
47685       : pNext{ pNext_ }
47686       , handleType{ handleType_ }
47687       , handle{ handle_ }
47688     {
47689     }
47690 
47691     VULKAN_HPP_CONSTEXPR ImportMemoryZirconHandleInfoFUCHSIA( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47692 
ImportMemoryZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47693     ImportMemoryZirconHandleInfoFUCHSIA( VkImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
47694       : ImportMemoryZirconHandleInfoFUCHSIA( *reinterpret_cast<ImportMemoryZirconHandleInfoFUCHSIA const *>( &rhs ) )
47695     {
47696     }
47697 
47698     ImportMemoryZirconHandleInfoFUCHSIA & operator=( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47699 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47700 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47701     ImportMemoryZirconHandleInfoFUCHSIA & operator=( VkImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
47702     {
47703       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA const *>( &rhs );
47704       return *this;
47705     }
47706 
47707 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47708     VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47709     {
47710       pNext = pNext_;
47711       return *this;
47712     }
47713 
47714     VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47715       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
47716     {
47717       handleType = handleType_;
47718       return *this;
47719     }
47720 
setHandleVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47721     VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setHandle( zx_handle_t handle_ ) VULKAN_HPP_NOEXCEPT
47722     {
47723       handle = handle_;
47724       return *this;
47725     }
47726 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47727 
operator VkImportMemoryZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47728     operator VkImportMemoryZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
47729     {
47730       return *reinterpret_cast<const VkImportMemoryZirconHandleInfoFUCHSIA *>( this );
47731     }
47732 
operator VkImportMemoryZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47733     operator VkImportMemoryZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
47734     {
47735       return *reinterpret_cast<VkImportMemoryZirconHandleInfoFUCHSIA *>( this );
47736     }
47737 
47738 #  if defined( VULKAN_HPP_USE_REFLECT )
47739 #    if 14 <= VULKAN_HPP_CPP_VERSION
47740     auto
47741 #    else
47742     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
47743                const void * const &,
47744                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &,
47745                zx_handle_t const &>
47746 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47747       reflect() const VULKAN_HPP_NOEXCEPT
47748     {
47749       return std::tie( sType, pNext, handleType, handle );
47750     }
47751 #  endif
47752 
47753 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47754     std::strong_ordering operator<=>( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
47755     {
47756       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
47757         return cmp;
47758       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
47759         return cmp;
47760       if ( auto cmp = handleType <=> rhs.handleType; cmp != 0 )
47761         return cmp;
47762       if ( auto cmp = memcmp( &handle, &rhs.handle, sizeof( zx_handle_t ) ); cmp != 0 )
47763         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
47764 
47765       return std::strong_ordering::equivalent;
47766     }
47767 #  endif
47768 
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47769     bool operator==( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
47770     {
47771       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) &&
47772              ( memcmp( &handle, &rhs.handle, sizeof( zx_handle_t ) ) == 0 );
47773     }
47774 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47775     bool operator!=( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
47776     {
47777       return !operator==( rhs );
47778     }
47779 
47780   public:
47781     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eImportMemoryZirconHandleInfoFUCHSIA;
47782     const void *                                           pNext      = {};
47783     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
47784     zx_handle_t                                            handle     = {};
47785   };
47786 
47787   template <>
47788   struct CppType<StructureType, StructureType::eImportMemoryZirconHandleInfoFUCHSIA>
47789   {
47790     using Type = ImportMemoryZirconHandleInfoFUCHSIA;
47791   };
47792 #endif /*VK_USE_PLATFORM_FUCHSIA*/
47793 
47794 #if defined( VK_USE_PLATFORM_METAL_EXT )
47795   struct ImportMetalBufferInfoEXT
47796   {
47797     using NativeType = VkImportMetalBufferInfoEXT;
47798 
47799     static const bool                                  allowDuplicate = false;
47800     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMetalBufferInfoEXT;
47801 
47802 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMetalBufferInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47803     VULKAN_HPP_CONSTEXPR ImportMetalBufferInfoEXT( MTLBuffer_id mtlBuffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
47804       : pNext{ pNext_ }
47805       , mtlBuffer{ mtlBuffer_ }
47806     {
47807     }
47808 
47809     VULKAN_HPP_CONSTEXPR ImportMetalBufferInfoEXT( ImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47810 
ImportMetalBufferInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47811     ImportMetalBufferInfoEXT( VkImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47812       : ImportMetalBufferInfoEXT( *reinterpret_cast<ImportMetalBufferInfoEXT const *>( &rhs ) )
47813     {
47814     }
47815 
47816     ImportMetalBufferInfoEXT & operator=( ImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47817 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47818 
operator =VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47819     ImportMetalBufferInfoEXT & operator=( VkImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47820     {
47821       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT const *>( &rhs );
47822       return *this;
47823     }
47824 
47825 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47826     VULKAN_HPP_CONSTEXPR_14 ImportMetalBufferInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47827     {
47828       pNext = pNext_;
47829       return *this;
47830     }
47831 
setMtlBufferVULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47832     VULKAN_HPP_CONSTEXPR_14 ImportMetalBufferInfoEXT & setMtlBuffer( MTLBuffer_id mtlBuffer_ ) VULKAN_HPP_NOEXCEPT
47833     {
47834       mtlBuffer = mtlBuffer_;
47835       return *this;
47836     }
47837 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47838 
operator VkImportMetalBufferInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47839     operator VkImportMetalBufferInfoEXT const &() const VULKAN_HPP_NOEXCEPT
47840     {
47841       return *reinterpret_cast<const VkImportMetalBufferInfoEXT *>( this );
47842     }
47843 
operator VkImportMetalBufferInfoEXT&VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47844     operator VkImportMetalBufferInfoEXT &() VULKAN_HPP_NOEXCEPT
47845     {
47846       return *reinterpret_cast<VkImportMetalBufferInfoEXT *>( this );
47847     }
47848 
47849 #  if defined( VULKAN_HPP_USE_REFLECT )
47850 #    if 14 <= VULKAN_HPP_CPP_VERSION
47851     auto
47852 #    else
47853     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, MTLBuffer_id const &>
47854 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47855       reflect() const VULKAN_HPP_NOEXCEPT
47856     {
47857       return std::tie( sType, pNext, mtlBuffer );
47858     }
47859 #  endif
47860 
47861 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47862     auto operator<=>( ImportMetalBufferInfoEXT const & ) const = default;
47863 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47864     bool operator==( ImportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47865     {
47866 #    if defined( VULKAN_HPP_USE_REFLECT )
47867       return this->reflect() == rhs.reflect();
47868 #    else
47869       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mtlBuffer == rhs.mtlBuffer );
47870 #    endif
47871     }
47872 
operator !=VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47873     bool operator!=( ImportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47874     {
47875       return !operator==( rhs );
47876     }
47877 #  endif
47878 
47879   public:
47880     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eImportMetalBufferInfoEXT;
47881     const void *                        pNext     = {};
47882     MTLBuffer_id                        mtlBuffer = {};
47883   };
47884 
47885   template <>
47886   struct CppType<StructureType, StructureType::eImportMetalBufferInfoEXT>
47887   {
47888     using Type = ImportMetalBufferInfoEXT;
47889   };
47890 #endif /*VK_USE_PLATFORM_METAL_EXT*/
47891 
47892 #if defined( VK_USE_PLATFORM_METAL_EXT )
47893   struct ImportMetalIOSurfaceInfoEXT
47894   {
47895     using NativeType = VkImportMetalIOSurfaceInfoEXT;
47896 
47897     static const bool                                  allowDuplicate = false;
47898     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMetalIoSurfaceInfoEXT;
47899 
47900 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMetalIOSurfaceInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47901     VULKAN_HPP_CONSTEXPR ImportMetalIOSurfaceInfoEXT( IOSurfaceRef ioSurface_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
47902       : pNext{ pNext_ }
47903       , ioSurface{ ioSurface_ }
47904     {
47905     }
47906 
47907     VULKAN_HPP_CONSTEXPR ImportMetalIOSurfaceInfoEXT( ImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47908 
ImportMetalIOSurfaceInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47909     ImportMetalIOSurfaceInfoEXT( VkImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47910       : ImportMetalIOSurfaceInfoEXT( *reinterpret_cast<ImportMetalIOSurfaceInfoEXT const *>( &rhs ) )
47911     {
47912     }
47913 
47914     ImportMetalIOSurfaceInfoEXT & operator=( ImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47915 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47916 
operator =VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47917     ImportMetalIOSurfaceInfoEXT & operator=( VkImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47918     {
47919       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT const *>( &rhs );
47920       return *this;
47921     }
47922 
47923 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47924     VULKAN_HPP_CONSTEXPR_14 ImportMetalIOSurfaceInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47925     {
47926       pNext = pNext_;
47927       return *this;
47928     }
47929 
setIoSurfaceVULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47930     VULKAN_HPP_CONSTEXPR_14 ImportMetalIOSurfaceInfoEXT & setIoSurface( IOSurfaceRef ioSurface_ ) VULKAN_HPP_NOEXCEPT
47931     {
47932       ioSurface = ioSurface_;
47933       return *this;
47934     }
47935 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47936 
operator VkImportMetalIOSurfaceInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47937     operator VkImportMetalIOSurfaceInfoEXT const &() const VULKAN_HPP_NOEXCEPT
47938     {
47939       return *reinterpret_cast<const VkImportMetalIOSurfaceInfoEXT *>( this );
47940     }
47941 
operator VkImportMetalIOSurfaceInfoEXT&VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47942     operator VkImportMetalIOSurfaceInfoEXT &() VULKAN_HPP_NOEXCEPT
47943     {
47944       return *reinterpret_cast<VkImportMetalIOSurfaceInfoEXT *>( this );
47945     }
47946 
47947 #  if defined( VULKAN_HPP_USE_REFLECT )
47948 #    if 14 <= VULKAN_HPP_CPP_VERSION
47949     auto
47950 #    else
47951     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, IOSurfaceRef const &>
47952 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47953       reflect() const VULKAN_HPP_NOEXCEPT
47954     {
47955       return std::tie( sType, pNext, ioSurface );
47956     }
47957 #  endif
47958 
47959 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47960     auto operator<=>( ImportMetalIOSurfaceInfoEXT const & ) const = default;
47961 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47962     bool operator==( ImportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47963     {
47964 #    if defined( VULKAN_HPP_USE_REFLECT )
47965       return this->reflect() == rhs.reflect();
47966 #    else
47967       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ioSurface == rhs.ioSurface );
47968 #    endif
47969     }
47970 
operator !=VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47971     bool operator!=( ImportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47972     {
47973       return !operator==( rhs );
47974     }
47975 #  endif
47976 
47977   public:
47978     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eImportMetalIoSurfaceInfoEXT;
47979     const void *                        pNext     = {};
47980     IOSurfaceRef                        ioSurface = {};
47981   };
47982 
47983   template <>
47984   struct CppType<StructureType, StructureType::eImportMetalIoSurfaceInfoEXT>
47985   {
47986     using Type = ImportMetalIOSurfaceInfoEXT;
47987   };
47988 #endif /*VK_USE_PLATFORM_METAL_EXT*/
47989 
47990 #if defined( VK_USE_PLATFORM_METAL_EXT )
47991   struct ImportMetalSharedEventInfoEXT
47992   {
47993     using NativeType = VkImportMetalSharedEventInfoEXT;
47994 
47995     static const bool                                  allowDuplicate = false;
47996     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMetalSharedEventInfoEXT;
47997 
47998 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMetalSharedEventInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47999     VULKAN_HPP_CONSTEXPR ImportMetalSharedEventInfoEXT( MTLSharedEvent_id mtlSharedEvent_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
48000       : pNext{ pNext_ }
48001       , mtlSharedEvent{ mtlSharedEvent_ }
48002     {
48003     }
48004 
48005     VULKAN_HPP_CONSTEXPR ImportMetalSharedEventInfoEXT( ImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48006 
ImportMetalSharedEventInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT48007     ImportMetalSharedEventInfoEXT( VkImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
48008       : ImportMetalSharedEventInfoEXT( *reinterpret_cast<ImportMetalSharedEventInfoEXT const *>( &rhs ) )
48009     {
48010     }
48011 
48012     ImportMetalSharedEventInfoEXT & operator=( ImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48013 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48014 
operator =VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT48015     ImportMetalSharedEventInfoEXT & operator=( VkImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
48016     {
48017       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT const *>( &rhs );
48018       return *this;
48019     }
48020 
48021 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT48022     VULKAN_HPP_CONSTEXPR_14 ImportMetalSharedEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48023     {
48024       pNext = pNext_;
48025       return *this;
48026     }
48027 
setMtlSharedEventVULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT48028     VULKAN_HPP_CONSTEXPR_14 ImportMetalSharedEventInfoEXT & setMtlSharedEvent( MTLSharedEvent_id mtlSharedEvent_ ) VULKAN_HPP_NOEXCEPT
48029     {
48030       mtlSharedEvent = mtlSharedEvent_;
48031       return *this;
48032     }
48033 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48034 
operator VkImportMetalSharedEventInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT48035     operator VkImportMetalSharedEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
48036     {
48037       return *reinterpret_cast<const VkImportMetalSharedEventInfoEXT *>( this );
48038     }
48039 
operator VkImportMetalSharedEventInfoEXT&VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT48040     operator VkImportMetalSharedEventInfoEXT &() VULKAN_HPP_NOEXCEPT
48041     {
48042       return *reinterpret_cast<VkImportMetalSharedEventInfoEXT *>( this );
48043     }
48044 
48045 #  if defined( VULKAN_HPP_USE_REFLECT )
48046 #    if 14 <= VULKAN_HPP_CPP_VERSION
48047     auto
48048 #    else
48049     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, MTLSharedEvent_id const &>
48050 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT48051       reflect() const VULKAN_HPP_NOEXCEPT
48052     {
48053       return std::tie( sType, pNext, mtlSharedEvent );
48054     }
48055 #  endif
48056 
48057 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48058     auto operator<=>( ImportMetalSharedEventInfoEXT const & ) const = default;
48059 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT48060     bool operator==( ImportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
48061     {
48062 #    if defined( VULKAN_HPP_USE_REFLECT )
48063       return this->reflect() == rhs.reflect();
48064 #    else
48065       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mtlSharedEvent == rhs.mtlSharedEvent );
48066 #    endif
48067     }
48068 
operator !=VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT48069     bool operator!=( ImportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
48070     {
48071       return !operator==( rhs );
48072     }
48073 #  endif
48074 
48075   public:
48076     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eImportMetalSharedEventInfoEXT;
48077     const void *                        pNext          = {};
48078     MTLSharedEvent_id                   mtlSharedEvent = {};
48079   };
48080 
48081   template <>
48082   struct CppType<StructureType, StructureType::eImportMetalSharedEventInfoEXT>
48083   {
48084     using Type = ImportMetalSharedEventInfoEXT;
48085   };
48086 #endif /*VK_USE_PLATFORM_METAL_EXT*/
48087 
48088 #if defined( VK_USE_PLATFORM_METAL_EXT )
48089   struct ImportMetalTextureInfoEXT
48090   {
48091     using NativeType = VkImportMetalTextureInfoEXT;
48092 
48093     static const bool                                  allowDuplicate = true;
48094     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMetalTextureInfoEXT;
48095 
48096 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMetalTextureInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48097     VULKAN_HPP_CONSTEXPR ImportMetalTextureInfoEXT( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane_      = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor,
48098                                                     MTLTexture_id                             mtlTexture_ = {},
48099                                                     const void *                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
48100       : pNext{ pNext_ }
48101       , plane{ plane_ }
48102       , mtlTexture{ mtlTexture_ }
48103     {
48104     }
48105 
48106     VULKAN_HPP_CONSTEXPR ImportMetalTextureInfoEXT( ImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48107 
ImportMetalTextureInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48108     ImportMetalTextureInfoEXT( VkImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
48109       : ImportMetalTextureInfoEXT( *reinterpret_cast<ImportMetalTextureInfoEXT const *>( &rhs ) )
48110     {
48111     }
48112 
48113     ImportMetalTextureInfoEXT & operator=( ImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48114 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48115 
operator =VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48116     ImportMetalTextureInfoEXT & operator=( VkImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
48117     {
48118       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT const *>( &rhs );
48119       return *this;
48120     }
48121 
48122 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48123     VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48124     {
48125       pNext = pNext_;
48126       return *this;
48127     }
48128 
setPlaneVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48129     VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT & setPlane( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane_ ) VULKAN_HPP_NOEXCEPT
48130     {
48131       plane = plane_;
48132       return *this;
48133     }
48134 
setMtlTextureVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48135     VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT & setMtlTexture( MTLTexture_id mtlTexture_ ) VULKAN_HPP_NOEXCEPT
48136     {
48137       mtlTexture = mtlTexture_;
48138       return *this;
48139     }
48140 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48141 
operator VkImportMetalTextureInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48142     operator VkImportMetalTextureInfoEXT const &() const VULKAN_HPP_NOEXCEPT
48143     {
48144       return *reinterpret_cast<const VkImportMetalTextureInfoEXT *>( this );
48145     }
48146 
operator VkImportMetalTextureInfoEXT&VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48147     operator VkImportMetalTextureInfoEXT &() VULKAN_HPP_NOEXCEPT
48148     {
48149       return *reinterpret_cast<VkImportMetalTextureInfoEXT *>( this );
48150     }
48151 
48152 #  if defined( VULKAN_HPP_USE_REFLECT )
48153 #    if 14 <= VULKAN_HPP_CPP_VERSION
48154     auto
48155 #    else
48156     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &, MTLTexture_id const &>
48157 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48158       reflect() const VULKAN_HPP_NOEXCEPT
48159     {
48160       return std::tie( sType, pNext, plane, mtlTexture );
48161     }
48162 #  endif
48163 
48164 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48165     auto operator<=>( ImportMetalTextureInfoEXT const & ) const = default;
48166 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48167     bool operator==( ImportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
48168     {
48169 #    if defined( VULKAN_HPP_USE_REFLECT )
48170       return this->reflect() == rhs.reflect();
48171 #    else
48172       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( plane == rhs.plane ) && ( mtlTexture == rhs.mtlTexture );
48173 #    endif
48174     }
48175 
operator !=VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT48176     bool operator!=( ImportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
48177     {
48178       return !operator==( rhs );
48179     }
48180 #  endif
48181 
48182   public:
48183     VULKAN_HPP_NAMESPACE::StructureType       sType      = StructureType::eImportMetalTextureInfoEXT;
48184     const void *                              pNext      = {};
48185     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane      = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
48186     MTLTexture_id                             mtlTexture = {};
48187   };
48188 
48189   template <>
48190   struct CppType<StructureType, StructureType::eImportMetalTextureInfoEXT>
48191   {
48192     using Type = ImportMetalTextureInfoEXT;
48193   };
48194 #endif /*VK_USE_PLATFORM_METAL_EXT*/
48195 
48196 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
48197   struct ImportScreenBufferInfoQNX
48198   {
48199     using NativeType = VkImportScreenBufferInfoQNX;
48200 
48201     static const bool                                  allowDuplicate = false;
48202     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportScreenBufferInfoQNX;
48203 
48204 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportScreenBufferInfoQNXVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX48205     VULKAN_HPP_CONSTEXPR ImportScreenBufferInfoQNX( struct _screen_buffer * buffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
48206       : pNext{ pNext_ }
48207       , buffer{ buffer_ }
48208     {
48209     }
48210 
48211     VULKAN_HPP_CONSTEXPR ImportScreenBufferInfoQNX( ImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48212 
ImportScreenBufferInfoQNXVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX48213     ImportScreenBufferInfoQNX( VkImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
48214       : ImportScreenBufferInfoQNX( *reinterpret_cast<ImportScreenBufferInfoQNX const *>( &rhs ) )
48215     {
48216     }
48217 
48218     ImportScreenBufferInfoQNX & operator=( ImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48219 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48220 
operator =VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX48221     ImportScreenBufferInfoQNX & operator=( VkImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
48222     {
48223       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX const *>( &rhs );
48224       return *this;
48225     }
48226 
48227 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX48228     VULKAN_HPP_CONSTEXPR_14 ImportScreenBufferInfoQNX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48229     {
48230       pNext = pNext_;
48231       return *this;
48232     }
48233 
setBufferVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX48234     VULKAN_HPP_CONSTEXPR_14 ImportScreenBufferInfoQNX & setBuffer( struct _screen_buffer * buffer_ ) VULKAN_HPP_NOEXCEPT
48235     {
48236       buffer = buffer_;
48237       return *this;
48238     }
48239 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48240 
operator VkImportScreenBufferInfoQNX const&VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX48241     operator VkImportScreenBufferInfoQNX const &() const VULKAN_HPP_NOEXCEPT
48242     {
48243       return *reinterpret_cast<const VkImportScreenBufferInfoQNX *>( this );
48244     }
48245 
operator VkImportScreenBufferInfoQNX&VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX48246     operator VkImportScreenBufferInfoQNX &() VULKAN_HPP_NOEXCEPT
48247     {
48248       return *reinterpret_cast<VkImportScreenBufferInfoQNX *>( this );
48249     }
48250 
48251 #  if defined( VULKAN_HPP_USE_REFLECT )
48252 #    if 14 <= VULKAN_HPP_CPP_VERSION
48253     auto
48254 #    else
48255     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, struct _screen_buffer * const &>
48256 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX48257       reflect() const VULKAN_HPP_NOEXCEPT
48258     {
48259       return std::tie( sType, pNext, buffer );
48260     }
48261 #  endif
48262 
48263 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48264     auto operator<=>( ImportScreenBufferInfoQNX const & ) const = default;
48265 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX48266     bool operator==( ImportScreenBufferInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
48267     {
48268 #    if defined( VULKAN_HPP_USE_REFLECT )
48269       return this->reflect() == rhs.reflect();
48270 #    else
48271       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
48272 #    endif
48273     }
48274 
operator !=VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX48275     bool operator!=( ImportScreenBufferInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
48276     {
48277       return !operator==( rhs );
48278     }
48279 #  endif
48280 
48281   public:
48282     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eImportScreenBufferInfoQNX;
48283     const void *                        pNext  = {};
48284     struct _screen_buffer *             buffer = {};
48285   };
48286 
48287   template <>
48288   struct CppType<StructureType, StructureType::eImportScreenBufferInfoQNX>
48289   {
48290     using Type = ImportScreenBufferInfoQNX;
48291   };
48292 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
48293 
48294   struct ImportSemaphoreFdInfoKHR
48295   {
48296     using NativeType = VkImportSemaphoreFdInfoKHR;
48297 
48298     static const bool                                  allowDuplicate = false;
48299     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportSemaphoreFdInfoKHR;
48300 
48301 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportSemaphoreFdInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48302     VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR(
48303       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_  = {},
48304       VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags_      = {},
48305       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
48306       int                                                       fd_         = {},
48307       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
48308       : pNext{ pNext_ }
48309       , semaphore{ semaphore_ }
48310       , flags{ flags_ }
48311       , handleType{ handleType_ }
48312       , fd{ fd_ }
48313     {
48314     }
48315 
48316     VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48317 
ImportSemaphoreFdInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48318     ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
48319       : ImportSemaphoreFdInfoKHR( *reinterpret_cast<ImportSemaphoreFdInfoKHR const *>( &rhs ) )
48320     {
48321     }
48322 
48323     ImportSemaphoreFdInfoKHR & operator=( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48324 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48325 
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48326     ImportSemaphoreFdInfoKHR & operator=( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
48327     {
48328       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR const *>( &rhs );
48329       return *this;
48330     }
48331 
48332 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48333     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48334     {
48335       pNext = pNext_;
48336       return *this;
48337     }
48338 
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48339     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
48340     {
48341       semaphore = semaphore_;
48342       return *this;
48343     }
48344 
setFlagsVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48345     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
48346     {
48347       flags = flags_;
48348       return *this;
48349     }
48350 
48351     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48352       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
48353     {
48354       handleType = handleType_;
48355       return *this;
48356     }
48357 
setFdVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48358     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
48359     {
48360       fd = fd_;
48361       return *this;
48362     }
48363 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48364 
operator VkImportSemaphoreFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48365     operator VkImportSemaphoreFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
48366     {
48367       return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR *>( this );
48368     }
48369 
operator VkImportSemaphoreFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48370     operator VkImportSemaphoreFdInfoKHR &() VULKAN_HPP_NOEXCEPT
48371     {
48372       return *reinterpret_cast<VkImportSemaphoreFdInfoKHR *>( this );
48373     }
48374 
48375 #if defined( VULKAN_HPP_USE_REFLECT )
48376 #  if 14 <= VULKAN_HPP_CPP_VERSION
48377     auto
48378 #  else
48379     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48380                const void * const &,
48381                VULKAN_HPP_NAMESPACE::Semaphore const &,
48382                VULKAN_HPP_NAMESPACE::SemaphoreImportFlags const &,
48383                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &,
48384                int const &>
48385 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48386       reflect() const VULKAN_HPP_NOEXCEPT
48387     {
48388       return std::tie( sType, pNext, semaphore, flags, handleType, fd );
48389     }
48390 #endif
48391 
48392 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48393     auto operator<=>( ImportSemaphoreFdInfoKHR const & ) const = default;
48394 #else
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48395     bool operator==( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
48396     {
48397 #  if defined( VULKAN_HPP_USE_REFLECT )
48398       return this->reflect() == rhs.reflect();
48399 #  else
48400       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) &&
48401              ( fd == rhs.fd );
48402 #  endif
48403     }
48404 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48405     bool operator!=( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
48406     {
48407       return !operator==( rhs );
48408     }
48409 #endif
48410 
48411   public:
48412     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::eImportSemaphoreFdInfoKHR;
48413     const void *                                              pNext      = {};
48414     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore  = {};
48415     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags      = {};
48416     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
48417     int                                                       fd         = {};
48418   };
48419 
48420   template <>
48421   struct CppType<StructureType, StructureType::eImportSemaphoreFdInfoKHR>
48422   {
48423     using Type = ImportSemaphoreFdInfoKHR;
48424   };
48425 
48426 #if defined( VK_USE_PLATFORM_WIN32_KHR )
48427   struct ImportSemaphoreWin32HandleInfoKHR
48428   {
48429     using NativeType = VkImportSemaphoreWin32HandleInfoKHR;
48430 
48431     static const bool                                  allowDuplicate = false;
48432     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportSemaphoreWin32HandleInfoKHR;
48433 
48434 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48435     VULKAN_HPP_CONSTEXPR ImportSemaphoreWin32HandleInfoKHR(
48436       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_  = {},
48437       VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags_      = {},
48438       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
48439       HANDLE                                                    handle_     = {},
48440       LPCWSTR                                                   name_       = {},
48441       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
48442       : pNext{ pNext_ }
48443       , semaphore{ semaphore_ }
48444       , flags{ flags_ }
48445       , handleType{ handleType_ }
48446       , handle{ handle_ }
48447       , name{ name_ }
48448     {
48449     }
48450 
48451     VULKAN_HPP_CONSTEXPR ImportSemaphoreWin32HandleInfoKHR( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48452 
ImportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48453     ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
48454       : ImportSemaphoreWin32HandleInfoKHR( *reinterpret_cast<ImportSemaphoreWin32HandleInfoKHR const *>( &rhs ) )
48455     {
48456     }
48457 
48458     ImportSemaphoreWin32HandleInfoKHR & operator=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48459 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48460 
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48461     ImportSemaphoreWin32HandleInfoKHR & operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
48462     {
48463       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR const *>( &rhs );
48464       return *this;
48465     }
48466 
48467 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48468     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48469     {
48470       pNext = pNext_;
48471       return *this;
48472     }
48473 
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48474     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
48475     {
48476       semaphore = semaphore_;
48477       return *this;
48478     }
48479 
setFlagsVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48480     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
48481     {
48482       flags = flags_;
48483       return *this;
48484     }
48485 
48486     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48487       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
48488     {
48489       handleType = handleType_;
48490       return *this;
48491     }
48492 
setHandleVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48493     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
48494     {
48495       handle = handle_;
48496       return *this;
48497     }
48498 
setNameVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48499     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
48500     {
48501       name = name_;
48502       return *this;
48503     }
48504 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48505 
operator VkImportSemaphoreWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48506     operator VkImportSemaphoreWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
48507     {
48508       return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR *>( this );
48509     }
48510 
operator VkImportSemaphoreWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48511     operator VkImportSemaphoreWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
48512     {
48513       return *reinterpret_cast<VkImportSemaphoreWin32HandleInfoKHR *>( this );
48514     }
48515 
48516 #  if defined( VULKAN_HPP_USE_REFLECT )
48517 #    if 14 <= VULKAN_HPP_CPP_VERSION
48518     auto
48519 #    else
48520     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48521                const void * const &,
48522                VULKAN_HPP_NAMESPACE::Semaphore const &,
48523                VULKAN_HPP_NAMESPACE::SemaphoreImportFlags const &,
48524                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &,
48525                HANDLE const &,
48526                LPCWSTR const &>
48527 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48528       reflect() const VULKAN_HPP_NOEXCEPT
48529     {
48530       return std::tie( sType, pNext, semaphore, flags, handleType, handle, name );
48531     }
48532 #  endif
48533 
48534 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48535     auto operator<=>( ImportSemaphoreWin32HandleInfoKHR const & ) const = default;
48536 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48537     bool operator==( ImportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
48538     {
48539 #    if defined( VULKAN_HPP_USE_REFLECT )
48540       return this->reflect() == rhs.reflect();
48541 #    else
48542       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) &&
48543              ( handle == rhs.handle ) && ( name == rhs.name );
48544 #    endif
48545     }
48546 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48547     bool operator!=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
48548     {
48549       return !operator==( rhs );
48550     }
48551 #  endif
48552 
48553   public:
48554     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::eImportSemaphoreWin32HandleInfoKHR;
48555     const void *                                              pNext      = {};
48556     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore  = {};
48557     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags      = {};
48558     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
48559     HANDLE                                                    handle     = {};
48560     LPCWSTR                                                   name       = {};
48561   };
48562 
48563   template <>
48564   struct CppType<StructureType, StructureType::eImportSemaphoreWin32HandleInfoKHR>
48565   {
48566     using Type = ImportSemaphoreWin32HandleInfoKHR;
48567   };
48568 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
48569 
48570 #if defined( VK_USE_PLATFORM_FUCHSIA )
48571   struct ImportSemaphoreZirconHandleInfoFUCHSIA
48572   {
48573     using NativeType = VkImportSemaphoreZirconHandleInfoFUCHSIA;
48574 
48575     static const bool                                  allowDuplicate = false;
48576     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA;
48577 
48578 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportSemaphoreZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48579     VULKAN_HPP_CONSTEXPR ImportSemaphoreZirconHandleInfoFUCHSIA(
48580       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_    = {},
48581       VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags_        = {},
48582       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_   = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
48583       zx_handle_t                                               zirconHandle_ = {},
48584       const void *                                              pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
48585       : pNext{ pNext_ }
48586       , semaphore{ semaphore_ }
48587       , flags{ flags_ }
48588       , handleType{ handleType_ }
48589       , zirconHandle{ zirconHandle_ }
48590     {
48591     }
48592 
48593     VULKAN_HPP_CONSTEXPR ImportSemaphoreZirconHandleInfoFUCHSIA( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48594 
ImportSemaphoreZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48595     ImportSemaphoreZirconHandleInfoFUCHSIA( VkImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
48596       : ImportSemaphoreZirconHandleInfoFUCHSIA( *reinterpret_cast<ImportSemaphoreZirconHandleInfoFUCHSIA const *>( &rhs ) )
48597     {
48598     }
48599 
48600     ImportSemaphoreZirconHandleInfoFUCHSIA & operator=( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48601 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48602 
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48603     ImportSemaphoreZirconHandleInfoFUCHSIA & operator=( VkImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
48604     {
48605       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA const *>( &rhs );
48606       return *this;
48607     }
48608 
48609 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48610     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48611     {
48612       pNext = pNext_;
48613       return *this;
48614     }
48615 
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48616     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
48617     {
48618       semaphore = semaphore_;
48619       return *this;
48620     }
48621 
setFlagsVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48622     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
48623     {
48624       flags = flags_;
48625       return *this;
48626     }
48627 
48628     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48629       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
48630     {
48631       handleType = handleType_;
48632       return *this;
48633     }
48634 
setZirconHandleVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48635     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setZirconHandle( zx_handle_t zirconHandle_ ) VULKAN_HPP_NOEXCEPT
48636     {
48637       zirconHandle = zirconHandle_;
48638       return *this;
48639     }
48640 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48641 
operator VkImportSemaphoreZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48642     operator VkImportSemaphoreZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
48643     {
48644       return *reinterpret_cast<const VkImportSemaphoreZirconHandleInfoFUCHSIA *>( this );
48645     }
48646 
operator VkImportSemaphoreZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48647     operator VkImportSemaphoreZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
48648     {
48649       return *reinterpret_cast<VkImportSemaphoreZirconHandleInfoFUCHSIA *>( this );
48650     }
48651 
48652 #  if defined( VULKAN_HPP_USE_REFLECT )
48653 #    if 14 <= VULKAN_HPP_CPP_VERSION
48654     auto
48655 #    else
48656     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48657                const void * const &,
48658                VULKAN_HPP_NAMESPACE::Semaphore const &,
48659                VULKAN_HPP_NAMESPACE::SemaphoreImportFlags const &,
48660                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &,
48661                zx_handle_t const &>
48662 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48663       reflect() const VULKAN_HPP_NOEXCEPT
48664     {
48665       return std::tie( sType, pNext, semaphore, flags, handleType, zirconHandle );
48666     }
48667 #  endif
48668 
48669 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48670     std::strong_ordering operator<=>( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
48671     {
48672       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
48673         return cmp;
48674       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
48675         return cmp;
48676       if ( auto cmp = semaphore <=> rhs.semaphore; cmp != 0 )
48677         return cmp;
48678       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
48679         return cmp;
48680       if ( auto cmp = handleType <=> rhs.handleType; cmp != 0 )
48681         return cmp;
48682       if ( auto cmp = memcmp( &zirconHandle, &rhs.zirconHandle, sizeof( zx_handle_t ) ); cmp != 0 )
48683         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
48684 
48685       return std::strong_ordering::equivalent;
48686     }
48687 #  endif
48688 
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48689     bool operator==( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
48690     {
48691       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) &&
48692              ( memcmp( &zirconHandle, &rhs.zirconHandle, sizeof( zx_handle_t ) ) == 0 );
48693     }
48694 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48695     bool operator!=( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
48696     {
48697       return !operator==( rhs );
48698     }
48699 
48700   public:
48701     VULKAN_HPP_NAMESPACE::StructureType                       sType        = StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA;
48702     const void *                                              pNext        = {};
48703     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore    = {};
48704     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags        = {};
48705     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType   = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
48706     zx_handle_t                                               zirconHandle = {};
48707   };
48708 
48709   template <>
48710   struct CppType<StructureType, StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA>
48711   {
48712     using Type = ImportSemaphoreZirconHandleInfoFUCHSIA;
48713   };
48714 #endif /*VK_USE_PLATFORM_FUCHSIA*/
48715 
48716   struct IndirectCommandsLayoutTokenNV
48717   {
48718     using NativeType = VkIndirectCommandsLayoutTokenNV;
48719 
48720     static const bool                                  allowDuplicate = false;
48721     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eIndirectCommandsLayoutTokenNV;
48722 
48723 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
IndirectCommandsLayoutTokenNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48724     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutTokenNV(
48725       VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_                    = VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup,
48726       uint32_t                                          stream_                       = {},
48727       uint32_t                                          offset_                       = {},
48728       uint32_t                                          vertexBindingUnit_            = {},
48729       VULKAN_HPP_NAMESPACE::Bool32                      vertexDynamicStride_          = {},
48730       VULKAN_HPP_NAMESPACE::PipelineLayout              pushconstantPipelineLayout_   = {},
48731       VULKAN_HPP_NAMESPACE::ShaderStageFlags            pushconstantShaderStageFlags_ = {},
48732       uint32_t                                          pushconstantOffset_           = {},
48733       uint32_t                                          pushconstantSize_             = {},
48734       VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV        indirectStateFlags_           = {},
48735       uint32_t                                          indexTypeCount_               = {},
48736       const VULKAN_HPP_NAMESPACE::IndexType *           pIndexTypes_                  = {},
48737       const uint32_t *                                  pIndexTypeValues_             = {},
48738       const void *                                      pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
48739       : pNext{ pNext_ }
48740       , tokenType{ tokenType_ }
48741       , stream{ stream_ }
48742       , offset{ offset_ }
48743       , vertexBindingUnit{ vertexBindingUnit_ }
48744       , vertexDynamicStride{ vertexDynamicStride_ }
48745       , pushconstantPipelineLayout{ pushconstantPipelineLayout_ }
48746       , pushconstantShaderStageFlags{ pushconstantShaderStageFlags_ }
48747       , pushconstantOffset{ pushconstantOffset_ }
48748       , pushconstantSize{ pushconstantSize_ }
48749       , indirectStateFlags{ indirectStateFlags_ }
48750       , indexTypeCount{ indexTypeCount_ }
48751       , pIndexTypes{ pIndexTypes_ }
48752       , pIndexTypeValues{ pIndexTypeValues_ }
48753     {
48754     }
48755 
48756     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutTokenNV( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48757 
IndirectCommandsLayoutTokenNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48758     IndirectCommandsLayoutTokenNV( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT
48759       : IndirectCommandsLayoutTokenNV( *reinterpret_cast<IndirectCommandsLayoutTokenNV const *>( &rhs ) )
48760     {
48761     }
48762 
48763 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
IndirectCommandsLayoutTokenNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48764     IndirectCommandsLayoutTokenNV( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV                                            tokenType_,
48765                                    uint32_t                                                                                     stream_,
48766                                    uint32_t                                                                                     offset_,
48767                                    uint32_t                                                                                     vertexBindingUnit_,
48768                                    VULKAN_HPP_NAMESPACE::Bool32                                                                 vertexDynamicStride_,
48769                                    VULKAN_HPP_NAMESPACE::PipelineLayout                                                         pushconstantPipelineLayout_,
48770                                    VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                       pushconstantShaderStageFlags_,
48771                                    uint32_t                                                                                     pushconstantOffset_,
48772                                    uint32_t                                                                                     pushconstantSize_,
48773                                    VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV                                                   indirectStateFlags_,
48774                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndexType> const & indexTypes_,
48775                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                        indexTypeValues_ = {},
48776                                    const void *                                                                                 pNext_           = nullptr )
48777       : pNext( pNext_ )
48778       , tokenType( tokenType_ )
48779       , stream( stream_ )
48780       , offset( offset_ )
48781       , vertexBindingUnit( vertexBindingUnit_ )
48782       , vertexDynamicStride( vertexDynamicStride_ )
48783       , pushconstantPipelineLayout( pushconstantPipelineLayout_ )
48784       , pushconstantShaderStageFlags( pushconstantShaderStageFlags_ )
48785       , pushconstantOffset( pushconstantOffset_ )
48786       , pushconstantSize( pushconstantSize_ )
48787       , indirectStateFlags( indirectStateFlags_ )
48788       , indexTypeCount( static_cast<uint32_t>( indexTypes_.size() ) )
48789       , pIndexTypes( indexTypes_.data() )
48790       , pIndexTypeValues( indexTypeValues_.data() )
48791     {
48792 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
48793       VULKAN_HPP_ASSERT( indexTypes_.size() == indexTypeValues_.size() );
48794 #    else
48795       if ( indexTypes_.size() != indexTypeValues_.size() )
48796       {
48797         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
48798                           "::IndirectCommandsLayoutTokenNV::IndirectCommandsLayoutTokenNV: indexTypes_.size() != indexTypeValues_.size()" );
48799       }
48800 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
48801     }
48802 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48803 
48804     IndirectCommandsLayoutTokenNV & operator=( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48805 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48806 
operator =VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48807     IndirectCommandsLayoutTokenNV & operator=( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT
48808     {
48809       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV const *>( &rhs );
48810       return *this;
48811     }
48812 
48813 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48814     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48815     {
48816       pNext = pNext_;
48817       return *this;
48818     }
48819 
setTokenTypeVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48820     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setTokenType( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_ ) VULKAN_HPP_NOEXCEPT
48821     {
48822       tokenType = tokenType_;
48823       return *this;
48824     }
48825 
setStreamVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48826     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setStream( uint32_t stream_ ) VULKAN_HPP_NOEXCEPT
48827     {
48828       stream = stream_;
48829       return *this;
48830     }
48831 
setOffsetVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48832     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
48833     {
48834       offset = offset_;
48835       return *this;
48836     }
48837 
setVertexBindingUnitVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48838     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setVertexBindingUnit( uint32_t vertexBindingUnit_ ) VULKAN_HPP_NOEXCEPT
48839     {
48840       vertexBindingUnit = vertexBindingUnit_;
48841       return *this;
48842     }
48843 
setVertexDynamicStrideVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48844     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setVertexDynamicStride( VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride_ ) VULKAN_HPP_NOEXCEPT
48845     {
48846       vertexDynamicStride = vertexDynamicStride_;
48847       return *this;
48848     }
48849 
48850     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setPushconstantPipelineLayoutVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48851       setPushconstantPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout_ ) VULKAN_HPP_NOEXCEPT
48852     {
48853       pushconstantPipelineLayout = pushconstantPipelineLayout_;
48854       return *this;
48855     }
48856 
48857     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setPushconstantShaderStageFlagsVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48858       setPushconstantShaderStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags_ ) VULKAN_HPP_NOEXCEPT
48859     {
48860       pushconstantShaderStageFlags = pushconstantShaderStageFlags_;
48861       return *this;
48862     }
48863 
setPushconstantOffsetVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48864     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantOffset( uint32_t pushconstantOffset_ ) VULKAN_HPP_NOEXCEPT
48865     {
48866       pushconstantOffset = pushconstantOffset_;
48867       return *this;
48868     }
48869 
setPushconstantSizeVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48870     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantSize( uint32_t pushconstantSize_ ) VULKAN_HPP_NOEXCEPT
48871     {
48872       pushconstantSize = pushconstantSize_;
48873       return *this;
48874     }
48875 
48876     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setIndirectStateFlagsVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48877       setIndirectStateFlags( VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_ ) VULKAN_HPP_NOEXCEPT
48878     {
48879       indirectStateFlags = indirectStateFlags_;
48880       return *this;
48881     }
48882 
setIndexTypeCountVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48883     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setIndexTypeCount( uint32_t indexTypeCount_ ) VULKAN_HPP_NOEXCEPT
48884     {
48885       indexTypeCount = indexTypeCount_;
48886       return *this;
48887     }
48888 
setPIndexTypesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48889     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPIndexTypes( const VULKAN_HPP_NAMESPACE::IndexType * pIndexTypes_ ) VULKAN_HPP_NOEXCEPT
48890     {
48891       pIndexTypes = pIndexTypes_;
48892       return *this;
48893     }
48894 
48895 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
48896     IndirectCommandsLayoutTokenNV &
setIndexTypesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48897       setIndexTypes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndexType> const & indexTypes_ ) VULKAN_HPP_NOEXCEPT
48898     {
48899       indexTypeCount = static_cast<uint32_t>( indexTypes_.size() );
48900       pIndexTypes    = indexTypes_.data();
48901       return *this;
48902     }
48903 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48904 
setPIndexTypeValuesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48905     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPIndexTypeValues( const uint32_t * pIndexTypeValues_ ) VULKAN_HPP_NOEXCEPT
48906     {
48907       pIndexTypeValues = pIndexTypeValues_;
48908       return *this;
48909     }
48910 
48911 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
48912     IndirectCommandsLayoutTokenNV &
setIndexTypeValuesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48913       setIndexTypeValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & indexTypeValues_ ) VULKAN_HPP_NOEXCEPT
48914     {
48915       indexTypeCount   = static_cast<uint32_t>( indexTypeValues_.size() );
48916       pIndexTypeValues = indexTypeValues_.data();
48917       return *this;
48918     }
48919 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48920 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48921 
operator VkIndirectCommandsLayoutTokenNV const&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48922     operator VkIndirectCommandsLayoutTokenNV const &() const VULKAN_HPP_NOEXCEPT
48923     {
48924       return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNV *>( this );
48925     }
48926 
operator VkIndirectCommandsLayoutTokenNV&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48927     operator VkIndirectCommandsLayoutTokenNV &() VULKAN_HPP_NOEXCEPT
48928     {
48929       return *reinterpret_cast<VkIndirectCommandsLayoutTokenNV *>( this );
48930     }
48931 
48932 #if defined( VULKAN_HPP_USE_REFLECT )
48933 #  if 14 <= VULKAN_HPP_CPP_VERSION
48934     auto
48935 #  else
48936     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48937                const void * const &,
48938                VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV const &,
48939                uint32_t const &,
48940                uint32_t const &,
48941                uint32_t const &,
48942                VULKAN_HPP_NAMESPACE::Bool32 const &,
48943                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
48944                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
48945                uint32_t const &,
48946                uint32_t const &,
48947                VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV const &,
48948                uint32_t const &,
48949                const VULKAN_HPP_NAMESPACE::IndexType * const &,
48950                const uint32_t * const &>
48951 #  endif
reflectVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48952       reflect() const VULKAN_HPP_NOEXCEPT
48953     {
48954       return std::tie( sType,
48955                        pNext,
48956                        tokenType,
48957                        stream,
48958                        offset,
48959                        vertexBindingUnit,
48960                        vertexDynamicStride,
48961                        pushconstantPipelineLayout,
48962                        pushconstantShaderStageFlags,
48963                        pushconstantOffset,
48964                        pushconstantSize,
48965                        indirectStateFlags,
48966                        indexTypeCount,
48967                        pIndexTypes,
48968                        pIndexTypeValues );
48969     }
48970 #endif
48971 
48972 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48973     auto operator<=>( IndirectCommandsLayoutTokenNV const & ) const = default;
48974 #else
operator ==VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48975     bool operator==( IndirectCommandsLayoutTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT
48976     {
48977 #  if defined( VULKAN_HPP_USE_REFLECT )
48978       return this->reflect() == rhs.reflect();
48979 #  else
48980       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tokenType == rhs.tokenType ) && ( stream == rhs.stream ) && ( offset == rhs.offset ) &&
48981              ( vertexBindingUnit == rhs.vertexBindingUnit ) && ( vertexDynamicStride == rhs.vertexDynamicStride ) &&
48982              ( pushconstantPipelineLayout == rhs.pushconstantPipelineLayout ) && ( pushconstantShaderStageFlags == rhs.pushconstantShaderStageFlags ) &&
48983              ( pushconstantOffset == rhs.pushconstantOffset ) && ( pushconstantSize == rhs.pushconstantSize ) &&
48984              ( indirectStateFlags == rhs.indirectStateFlags ) && ( indexTypeCount == rhs.indexTypeCount ) && ( pIndexTypes == rhs.pIndexTypes ) &&
48985              ( pIndexTypeValues == rhs.pIndexTypeValues );
48986 #  endif
48987     }
48988 
operator !=VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48989     bool operator!=( IndirectCommandsLayoutTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT
48990     {
48991       return !operator==( rhs );
48992     }
48993 #endif
48994 
48995   public:
48996     VULKAN_HPP_NAMESPACE::StructureType               sType                        = StructureType::eIndirectCommandsLayoutTokenNV;
48997     const void *                                      pNext                        = {};
48998     VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType                    = VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup;
48999     uint32_t                                          stream                       = {};
49000     uint32_t                                          offset                       = {};
49001     uint32_t                                          vertexBindingUnit            = {};
49002     VULKAN_HPP_NAMESPACE::Bool32                      vertexDynamicStride          = {};
49003     VULKAN_HPP_NAMESPACE::PipelineLayout              pushconstantPipelineLayout   = {};
49004     VULKAN_HPP_NAMESPACE::ShaderStageFlags            pushconstantShaderStageFlags = {};
49005     uint32_t                                          pushconstantOffset           = {};
49006     uint32_t                                          pushconstantSize             = {};
49007     VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV        indirectStateFlags           = {};
49008     uint32_t                                          indexTypeCount               = {};
49009     const VULKAN_HPP_NAMESPACE::IndexType *           pIndexTypes                  = {};
49010     const uint32_t *                                  pIndexTypeValues             = {};
49011   };
49012 
49013   template <>
49014   struct CppType<StructureType, StructureType::eIndirectCommandsLayoutTokenNV>
49015   {
49016     using Type = IndirectCommandsLayoutTokenNV;
49017   };
49018 
49019   struct IndirectCommandsLayoutCreateInfoNV
49020   {
49021     using NativeType = VkIndirectCommandsLayoutCreateInfoNV;
49022 
49023     static const bool                                  allowDuplicate = false;
49024     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eIndirectCommandsLayoutCreateInfoNV;
49025 
49026 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
49027     VULKAN_HPP_CONSTEXPR
IndirectCommandsLayoutCreateInfoNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49028       IndirectCommandsLayoutCreateInfoNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_ = {},
49029                                           VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_      = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
49030                                           uint32_t                                tokenCount_             = {},
49031                                           const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens_        = {},
49032                                           uint32_t                                                    streamCount_    = {},
49033                                           const uint32_t *                                            pStreamStrides_ = {},
49034                                           const void *                                                pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
49035       : pNext{ pNext_ }
49036       , flags{ flags_ }
49037       , pipelineBindPoint{ pipelineBindPoint_ }
49038       , tokenCount{ tokenCount_ }
49039       , pTokens{ pTokens_ }
49040       , streamCount{ streamCount_ }
49041       , pStreamStrides{ pStreamStrides_ }
49042     {
49043     }
49044 
49045     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoNV( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49046 
IndirectCommandsLayoutCreateInfoNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49047     IndirectCommandsLayoutCreateInfoNV( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
49048       : IndirectCommandsLayoutCreateInfoNV( *reinterpret_cast<IndirectCommandsLayoutCreateInfoNV const *>( &rhs ) )
49049     {
49050     }
49051 
49052 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
IndirectCommandsLayoutCreateInfoNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49053     IndirectCommandsLayoutCreateInfoNV(
49054       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV                                                         flags_,
49055       VULKAN_HPP_NAMESPACE::PipelineBindPoint                                                                          pipelineBindPoint_,
49056       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV> const & tokens_,
49057       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                                            streamStrides_ = {},
49058       const void *                                                                                                     pNext_         = nullptr )
49059       : pNext( pNext_ )
49060       , flags( flags_ )
49061       , pipelineBindPoint( pipelineBindPoint_ )
49062       , tokenCount( static_cast<uint32_t>( tokens_.size() ) )
49063       , pTokens( tokens_.data() )
49064       , streamCount( static_cast<uint32_t>( streamStrides_.size() ) )
49065       , pStreamStrides( streamStrides_.data() )
49066     {
49067     }
49068 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49069 
49070     IndirectCommandsLayoutCreateInfoNV & operator=( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49071 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49072 
operator =VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49073     IndirectCommandsLayoutCreateInfoNV & operator=( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
49074     {
49075       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const *>( &rhs );
49076       return *this;
49077     }
49078 
49079 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49080     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49081     {
49082       pNext = pNext_;
49083       return *this;
49084     }
49085 
setFlagsVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49086     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
49087     {
49088       flags = flags_;
49089       return *this;
49090     }
49091 
49092     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV &
setPipelineBindPointVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49093       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
49094     {
49095       pipelineBindPoint = pipelineBindPoint_;
49096       return *this;
49097     }
49098 
setTokenCountVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49099     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setTokenCount( uint32_t tokenCount_ ) VULKAN_HPP_NOEXCEPT
49100     {
49101       tokenCount = tokenCount_;
49102       return *this;
49103     }
49104 
49105     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV &
setPTokensVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49106       setPTokens( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens_ ) VULKAN_HPP_NOEXCEPT
49107     {
49108       pTokens = pTokens_;
49109       return *this;
49110     }
49111 
49112 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
49113     IndirectCommandsLayoutCreateInfoNV &
setTokensVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49114       setTokens( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV> const & tokens_ ) VULKAN_HPP_NOEXCEPT
49115     {
49116       tokenCount = static_cast<uint32_t>( tokens_.size() );
49117       pTokens    = tokens_.data();
49118       return *this;
49119     }
49120 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49121 
setStreamCountVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49122     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setStreamCount( uint32_t streamCount_ ) VULKAN_HPP_NOEXCEPT
49123     {
49124       streamCount = streamCount_;
49125       return *this;
49126     }
49127 
setPStreamStridesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49128     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setPStreamStrides( const uint32_t * pStreamStrides_ ) VULKAN_HPP_NOEXCEPT
49129     {
49130       pStreamStrides = pStreamStrides_;
49131       return *this;
49132     }
49133 
49134 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
49135     IndirectCommandsLayoutCreateInfoNV &
setStreamStridesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49136       setStreamStrides( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & streamStrides_ ) VULKAN_HPP_NOEXCEPT
49137     {
49138       streamCount    = static_cast<uint32_t>( streamStrides_.size() );
49139       pStreamStrides = streamStrides_.data();
49140       return *this;
49141     }
49142 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49143 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49144 
operator VkIndirectCommandsLayoutCreateInfoNV const&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49145     operator VkIndirectCommandsLayoutCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
49146     {
49147       return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNV *>( this );
49148     }
49149 
operator VkIndirectCommandsLayoutCreateInfoNV&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49150     operator VkIndirectCommandsLayoutCreateInfoNV &() VULKAN_HPP_NOEXCEPT
49151     {
49152       return *reinterpret_cast<VkIndirectCommandsLayoutCreateInfoNV *>( this );
49153     }
49154 
49155 #if defined( VULKAN_HPP_USE_REFLECT )
49156 #  if 14 <= VULKAN_HPP_CPP_VERSION
49157     auto
49158 #  else
49159     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
49160                const void * const &,
49161                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV const &,
49162                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
49163                uint32_t const &,
49164                const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * const &,
49165                uint32_t const &,
49166                const uint32_t * const &>
49167 #  endif
reflectVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49168       reflect() const VULKAN_HPP_NOEXCEPT
49169     {
49170       return std::tie( sType, pNext, flags, pipelineBindPoint, tokenCount, pTokens, streamCount, pStreamStrides );
49171     }
49172 #endif
49173 
49174 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49175     auto operator<=>( IndirectCommandsLayoutCreateInfoNV const & ) const = default;
49176 #else
operator ==VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49177     bool operator==( IndirectCommandsLayoutCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49178     {
49179 #  if defined( VULKAN_HPP_USE_REFLECT )
49180       return this->reflect() == rhs.reflect();
49181 #  else
49182       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) &&
49183              ( tokenCount == rhs.tokenCount ) && ( pTokens == rhs.pTokens ) && ( streamCount == rhs.streamCount ) && ( pStreamStrides == rhs.pStreamStrides );
49184 #  endif
49185     }
49186 
operator !=VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV49187     bool operator!=( IndirectCommandsLayoutCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49188     {
49189       return !operator==( rhs );
49190     }
49191 #endif
49192 
49193   public:
49194     VULKAN_HPP_NAMESPACE::StructureType                         sType             = StructureType::eIndirectCommandsLayoutCreateInfoNV;
49195     const void *                                                pNext             = {};
49196     VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV    flags             = {};
49197     VULKAN_HPP_NAMESPACE::PipelineBindPoint                     pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
49198     uint32_t                                                    tokenCount        = {};
49199     const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens           = {};
49200     uint32_t                                                    streamCount       = {};
49201     const uint32_t *                                            pStreamStrides    = {};
49202   };
49203 
49204   template <>
49205   struct CppType<StructureType, StructureType::eIndirectCommandsLayoutCreateInfoNV>
49206   {
49207     using Type = IndirectCommandsLayoutCreateInfoNV;
49208   };
49209 
49210   struct InitializePerformanceApiInfoINTEL
49211   {
49212     using NativeType = VkInitializePerformanceApiInfoINTEL;
49213 
49214     static const bool                                  allowDuplicate = false;
49215     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eInitializePerformanceApiInfoINTEL;
49216 
49217 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
InitializePerformanceApiInfoINTELVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL49218     VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL( void * pUserData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
49219       : pNext{ pNext_ }
49220       , pUserData{ pUserData_ }
49221     {
49222     }
49223 
49224     VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49225 
InitializePerformanceApiInfoINTELVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL49226     InitializePerformanceApiInfoINTEL( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
49227       : InitializePerformanceApiInfoINTEL( *reinterpret_cast<InitializePerformanceApiInfoINTEL const *>( &rhs ) )
49228     {
49229     }
49230 
49231     InitializePerformanceApiInfoINTEL & operator=( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49232 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49233 
operator =VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL49234     InitializePerformanceApiInfoINTEL & operator=( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
49235     {
49236       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL const *>( &rhs );
49237       return *this;
49238     }
49239 
49240 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL49241     VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49242     {
49243       pNext = pNext_;
49244       return *this;
49245     }
49246 
setPUserDataVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL49247     VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
49248     {
49249       pUserData = pUserData_;
49250       return *this;
49251     }
49252 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49253 
operator VkInitializePerformanceApiInfoINTEL const&VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL49254     operator VkInitializePerformanceApiInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
49255     {
49256       return *reinterpret_cast<const VkInitializePerformanceApiInfoINTEL *>( this );
49257     }
49258 
operator VkInitializePerformanceApiInfoINTEL&VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL49259     operator VkInitializePerformanceApiInfoINTEL &() VULKAN_HPP_NOEXCEPT
49260     {
49261       return *reinterpret_cast<VkInitializePerformanceApiInfoINTEL *>( this );
49262     }
49263 
49264 #if defined( VULKAN_HPP_USE_REFLECT )
49265 #  if 14 <= VULKAN_HPP_CPP_VERSION
49266     auto
49267 #  else
49268     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, void * const &>
49269 #  endif
reflectVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL49270       reflect() const VULKAN_HPP_NOEXCEPT
49271     {
49272       return std::tie( sType, pNext, pUserData );
49273     }
49274 #endif
49275 
49276 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49277     auto operator<=>( InitializePerformanceApiInfoINTEL const & ) const = default;
49278 #else
operator ==VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL49279     bool operator==( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
49280     {
49281 #  if defined( VULKAN_HPP_USE_REFLECT )
49282       return this->reflect() == rhs.reflect();
49283 #  else
49284       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pUserData == rhs.pUserData );
49285 #  endif
49286     }
49287 
operator !=VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL49288     bool operator!=( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
49289     {
49290       return !operator==( rhs );
49291     }
49292 #endif
49293 
49294   public:
49295     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eInitializePerformanceApiInfoINTEL;
49296     const void *                        pNext     = {};
49297     void *                              pUserData = {};
49298   };
49299 
49300   template <>
49301   struct CppType<StructureType, StructureType::eInitializePerformanceApiInfoINTEL>
49302   {
49303     using Type = InitializePerformanceApiInfoINTEL;
49304   };
49305 
49306   struct InputAttachmentAspectReference
49307   {
49308     using NativeType = VkInputAttachmentAspectReference;
49309 
49310 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
InputAttachmentAspectReferenceVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49311     VULKAN_HPP_CONSTEXPR InputAttachmentAspectReference( uint32_t                               subpass_              = {},
49312                                                          uint32_t                               inputAttachmentIndex_ = {},
49313                                                          VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_           = {} ) VULKAN_HPP_NOEXCEPT
49314       : subpass{ subpass_ }
49315       , inputAttachmentIndex{ inputAttachmentIndex_ }
49316       , aspectMask{ aspectMask_ }
49317     {
49318     }
49319 
49320     VULKAN_HPP_CONSTEXPR InputAttachmentAspectReference( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49321 
InputAttachmentAspectReferenceVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49322     InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
49323       : InputAttachmentAspectReference( *reinterpret_cast<InputAttachmentAspectReference const *>( &rhs ) )
49324     {
49325     }
49326 
49327     InputAttachmentAspectReference & operator=( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49328 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49329 
operator =VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49330     InputAttachmentAspectReference & operator=( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
49331     {
49332       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference const *>( &rhs );
49333       return *this;
49334     }
49335 
49336 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSubpassVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49337     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
49338     {
49339       subpass = subpass_;
49340       return *this;
49341     }
49342 
setInputAttachmentIndexVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49343     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setInputAttachmentIndex( uint32_t inputAttachmentIndex_ ) VULKAN_HPP_NOEXCEPT
49344     {
49345       inputAttachmentIndex = inputAttachmentIndex_;
49346       return *this;
49347     }
49348 
setAspectMaskVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49349     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
49350     {
49351       aspectMask = aspectMask_;
49352       return *this;
49353     }
49354 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49355 
operator VkInputAttachmentAspectReference const&VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49356     operator VkInputAttachmentAspectReference const &() const VULKAN_HPP_NOEXCEPT
49357     {
49358       return *reinterpret_cast<const VkInputAttachmentAspectReference *>( this );
49359     }
49360 
operator VkInputAttachmentAspectReference&VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49361     operator VkInputAttachmentAspectReference &() VULKAN_HPP_NOEXCEPT
49362     {
49363       return *reinterpret_cast<VkInputAttachmentAspectReference *>( this );
49364     }
49365 
49366 #if defined( VULKAN_HPP_USE_REFLECT )
49367 #  if 14 <= VULKAN_HPP_CPP_VERSION
49368     auto
49369 #  else
49370     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ImageAspectFlags const &>
49371 #  endif
reflectVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49372       reflect() const VULKAN_HPP_NOEXCEPT
49373     {
49374       return std::tie( subpass, inputAttachmentIndex, aspectMask );
49375     }
49376 #endif
49377 
49378 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49379     auto operator<=>( InputAttachmentAspectReference const & ) const = default;
49380 #else
operator ==VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49381     bool operator==( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT
49382     {
49383 #  if defined( VULKAN_HPP_USE_REFLECT )
49384       return this->reflect() == rhs.reflect();
49385 #  else
49386       return ( subpass == rhs.subpass ) && ( inputAttachmentIndex == rhs.inputAttachmentIndex ) && ( aspectMask == rhs.aspectMask );
49387 #  endif
49388     }
49389 
operator !=VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49390     bool operator!=( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT
49391     {
49392       return !operator==( rhs );
49393     }
49394 #endif
49395 
49396   public:
49397     uint32_t                               subpass              = {};
49398     uint32_t                               inputAttachmentIndex = {};
49399     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask           = {};
49400   };
49401 
49402   using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
49403 
49404   struct InstanceCreateInfo
49405   {
49406     using NativeType = VkInstanceCreateInfo;
49407 
49408     static const bool                                  allowDuplicate = false;
49409     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eInstanceCreateInfo;
49410 
49411 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo49412     VULKAN_HPP_CONSTEXPR InstanceCreateInfo( VULKAN_HPP_NAMESPACE::InstanceCreateFlags     flags_                   = {},
49413                                              const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_        = {},
49414                                              uint32_t                                      enabledLayerCount_       = {},
49415                                              const char * const *                          ppEnabledLayerNames_     = {},
49416                                              uint32_t                                      enabledExtensionCount_   = {},
49417                                              const char * const *                          ppEnabledExtensionNames_ = {},
49418                                              const void *                                  pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
49419       : pNext{ pNext_ }
49420       , flags{ flags_ }
49421       , pApplicationInfo{ pApplicationInfo_ }
49422       , enabledLayerCount{ enabledLayerCount_ }
49423       , ppEnabledLayerNames{ ppEnabledLayerNames_ }
49424       , enabledExtensionCount{ enabledExtensionCount_ }
49425       , ppEnabledExtensionNames{ ppEnabledExtensionNames_ }
49426     {
49427     }
49428 
49429     VULKAN_HPP_CONSTEXPR InstanceCreateInfo( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49430 
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo49431     InstanceCreateInfo( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : InstanceCreateInfo( *reinterpret_cast<InstanceCreateInfo const *>( &rhs ) ) {}
49432 
49433 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo49434     InstanceCreateInfo( VULKAN_HPP_NAMESPACE::InstanceCreateFlags                                 flags_,
49435                         const VULKAN_HPP_NAMESPACE::ApplicationInfo *                             pApplicationInfo_,
49436                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_,
49437                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ = {},
49438                         const void *                                                              pNext_                  = nullptr )
49439       : pNext( pNext_ )
49440       , flags( flags_ )
49441       , pApplicationInfo( pApplicationInfo_ )
49442       , enabledLayerCount( static_cast<uint32_t>( pEnabledLayerNames_.size() ) )
49443       , ppEnabledLayerNames( pEnabledLayerNames_.data() )
49444       , enabledExtensionCount( static_cast<uint32_t>( pEnabledExtensionNames_.size() ) )
49445       , ppEnabledExtensionNames( pEnabledExtensionNames_.data() )
49446     {
49447     }
49448 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49449 
49450     InstanceCreateInfo & operator=( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49451 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49452 
operator =VULKAN_HPP_NAMESPACE::InstanceCreateInfo49453     InstanceCreateInfo & operator=( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
49454     {
49455       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InstanceCreateInfo const *>( &rhs );
49456       return *this;
49457     }
49458 
49459 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::InstanceCreateInfo49460     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49461     {
49462       pNext = pNext_;
49463       return *this;
49464     }
49465 
setFlagsVULKAN_HPP_NAMESPACE::InstanceCreateInfo49466     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
49467     {
49468       flags = flags_;
49469       return *this;
49470     }
49471 
setPApplicationInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo49472     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPApplicationInfo( const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_ ) VULKAN_HPP_NOEXCEPT
49473     {
49474       pApplicationInfo = pApplicationInfo_;
49475       return *this;
49476     }
49477 
setEnabledLayerCountVULKAN_HPP_NAMESPACE::InstanceCreateInfo49478     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT
49479     {
49480       enabledLayerCount = enabledLayerCount_;
49481       return *this;
49482     }
49483 
setPpEnabledLayerNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo49484     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPpEnabledLayerNames( const char * const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
49485     {
49486       ppEnabledLayerNames = ppEnabledLayerNames_;
49487       return *this;
49488     }
49489 
49490 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
49491     InstanceCreateInfo &
setPEnabledLayerNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo49492       setPEnabledLayerNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
49493     {
49494       enabledLayerCount   = static_cast<uint32_t>( pEnabledLayerNames_.size() );
49495       ppEnabledLayerNames = pEnabledLayerNames_.data();
49496       return *this;
49497     }
49498 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49499 
setEnabledExtensionCountVULKAN_HPP_NAMESPACE::InstanceCreateInfo49500     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT
49501     {
49502       enabledExtensionCount = enabledExtensionCount_;
49503       return *this;
49504     }
49505 
setPpEnabledExtensionNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo49506     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPpEnabledExtensionNames( const char * const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
49507     {
49508       ppEnabledExtensionNames = ppEnabledExtensionNames_;
49509       return *this;
49510     }
49511 
49512 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
49513     InstanceCreateInfo &
setPEnabledExtensionNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo49514       setPEnabledExtensionNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
49515     {
49516       enabledExtensionCount   = static_cast<uint32_t>( pEnabledExtensionNames_.size() );
49517       ppEnabledExtensionNames = pEnabledExtensionNames_.data();
49518       return *this;
49519     }
49520 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49521 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49522 
operator VkInstanceCreateInfo const&VULKAN_HPP_NAMESPACE::InstanceCreateInfo49523     operator VkInstanceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
49524     {
49525       return *reinterpret_cast<const VkInstanceCreateInfo *>( this );
49526     }
49527 
operator VkInstanceCreateInfo&VULKAN_HPP_NAMESPACE::InstanceCreateInfo49528     operator VkInstanceCreateInfo &() VULKAN_HPP_NOEXCEPT
49529     {
49530       return *reinterpret_cast<VkInstanceCreateInfo *>( this );
49531     }
49532 
49533 #if defined( VULKAN_HPP_USE_REFLECT )
49534 #  if 14 <= VULKAN_HPP_CPP_VERSION
49535     auto
49536 #  else
49537     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
49538                const void * const &,
49539                VULKAN_HPP_NAMESPACE::InstanceCreateFlags const &,
49540                const VULKAN_HPP_NAMESPACE::ApplicationInfo * const &,
49541                uint32_t const &,
49542                const char * const * const &,
49543                uint32_t const &,
49544                const char * const * const &>
49545 #  endif
reflectVULKAN_HPP_NAMESPACE::InstanceCreateInfo49546       reflect() const VULKAN_HPP_NOEXCEPT
49547     {
49548       return std::tie( sType, pNext, flags, pApplicationInfo, enabledLayerCount, ppEnabledLayerNames, enabledExtensionCount, ppEnabledExtensionNames );
49549     }
49550 #endif
49551 
49552 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::InstanceCreateInfo49553     std::strong_ordering operator<=>( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
49554     {
49555       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
49556         return cmp;
49557       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
49558         return cmp;
49559       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
49560         return cmp;
49561       if ( auto cmp = pApplicationInfo <=> rhs.pApplicationInfo; cmp != 0 )
49562         return cmp;
49563       if ( auto cmp = enabledLayerCount <=> rhs.enabledLayerCount; cmp != 0 )
49564         return cmp;
49565       for ( size_t i = 0; i < enabledLayerCount; ++i )
49566       {
49567         if ( ppEnabledLayerNames[i] != rhs.ppEnabledLayerNames[i] )
49568           if ( auto cmp = strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ); cmp != 0 )
49569             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
49570       }
49571       if ( auto cmp = enabledExtensionCount <=> rhs.enabledExtensionCount; cmp != 0 )
49572         return cmp;
49573       for ( size_t i = 0; i < enabledExtensionCount; ++i )
49574       {
49575         if ( ppEnabledExtensionNames[i] != rhs.ppEnabledExtensionNames[i] )
49576           if ( auto cmp = strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ); cmp != 0 )
49577             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
49578       }
49579 
49580       return std::strong_ordering::equivalent;
49581     }
49582 #endif
49583 
operator ==VULKAN_HPP_NAMESPACE::InstanceCreateInfo49584     bool operator==( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
49585     {
49586       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pApplicationInfo == rhs.pApplicationInfo ) &&
49587              ( enabledLayerCount == rhs.enabledLayerCount ) &&
49588              std::equal( ppEnabledLayerNames,
49589                          ppEnabledLayerNames + enabledLayerCount,
49590                          rhs.ppEnabledLayerNames,
49591                          []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } ) &&
49592              ( enabledExtensionCount == rhs.enabledExtensionCount ) &&
49593              std::equal( ppEnabledExtensionNames,
49594                          ppEnabledExtensionNames + enabledExtensionCount,
49595                          rhs.ppEnabledExtensionNames,
49596                          []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } );
49597     }
49598 
operator !=VULKAN_HPP_NAMESPACE::InstanceCreateInfo49599     bool operator!=( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
49600     {
49601       return !operator==( rhs );
49602     }
49603 
49604   public:
49605     VULKAN_HPP_NAMESPACE::StructureType           sType                   = StructureType::eInstanceCreateInfo;
49606     const void *                                  pNext                   = {};
49607     VULKAN_HPP_NAMESPACE::InstanceCreateFlags     flags                   = {};
49608     const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo        = {};
49609     uint32_t                                      enabledLayerCount       = {};
49610     const char * const *                          ppEnabledLayerNames     = {};
49611     uint32_t                                      enabledExtensionCount   = {};
49612     const char * const *                          ppEnabledExtensionNames = {};
49613   };
49614 
49615   template <>
49616   struct CppType<StructureType, StructureType::eInstanceCreateInfo>
49617   {
49618     using Type = InstanceCreateInfo;
49619   };
49620 
49621   struct LatencySleepInfoNV
49622   {
49623     using NativeType = VkLatencySleepInfoNV;
49624 
49625     static const bool                                  allowDuplicate = false;
49626     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLatencySleepInfoNV;
49627 
49628 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
49629     VULKAN_HPP_CONSTEXPR
LatencySleepInfoNVVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49630       LatencySleepInfoNV( VULKAN_HPP_NAMESPACE::Semaphore signalSemaphore_ = {}, uint64_t value_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
49631       : pNext{ pNext_ }
49632       , signalSemaphore{ signalSemaphore_ }
49633       , value{ value_ }
49634     {
49635     }
49636 
49637     VULKAN_HPP_CONSTEXPR LatencySleepInfoNV( LatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49638 
LatencySleepInfoNVVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49639     LatencySleepInfoNV( VkLatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT : LatencySleepInfoNV( *reinterpret_cast<LatencySleepInfoNV const *>( &rhs ) ) {}
49640 
49641     LatencySleepInfoNV & operator=( LatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49642 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49643 
operator =VULKAN_HPP_NAMESPACE::LatencySleepInfoNV49644     LatencySleepInfoNV & operator=( VkLatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
49645     {
49646       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LatencySleepInfoNV const *>( &rhs );
49647       return *this;
49648     }
49649 
49650 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49651     VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49652     {
49653       pNext = pNext_;
49654       return *this;
49655     }
49656 
setSignalSemaphoreVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49657     VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV & setSignalSemaphore( VULKAN_HPP_NAMESPACE::Semaphore signalSemaphore_ ) VULKAN_HPP_NOEXCEPT
49658     {
49659       signalSemaphore = signalSemaphore_;
49660       return *this;
49661     }
49662 
setValueVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49663     VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
49664     {
49665       value = value_;
49666       return *this;
49667     }
49668 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49669 
operator VkLatencySleepInfoNV const&VULKAN_HPP_NAMESPACE::LatencySleepInfoNV49670     operator VkLatencySleepInfoNV const &() const VULKAN_HPP_NOEXCEPT
49671     {
49672       return *reinterpret_cast<const VkLatencySleepInfoNV *>( this );
49673     }
49674 
operator VkLatencySleepInfoNV&VULKAN_HPP_NAMESPACE::LatencySleepInfoNV49675     operator VkLatencySleepInfoNV &() VULKAN_HPP_NOEXCEPT
49676     {
49677       return *reinterpret_cast<VkLatencySleepInfoNV *>( this );
49678     }
49679 
49680 #if defined( VULKAN_HPP_USE_REFLECT )
49681 #  if 14 <= VULKAN_HPP_CPP_VERSION
49682     auto
49683 #  else
49684     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Semaphore const &, uint64_t const &>
49685 #  endif
reflectVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49686       reflect() const VULKAN_HPP_NOEXCEPT
49687     {
49688       return std::tie( sType, pNext, signalSemaphore, value );
49689     }
49690 #endif
49691 
49692 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49693     auto operator<=>( LatencySleepInfoNV const & ) const = default;
49694 #else
operator ==VULKAN_HPP_NAMESPACE::LatencySleepInfoNV49695     bool operator==( LatencySleepInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49696     {
49697 #  if defined( VULKAN_HPP_USE_REFLECT )
49698       return this->reflect() == rhs.reflect();
49699 #  else
49700       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( signalSemaphore == rhs.signalSemaphore ) && ( value == rhs.value );
49701 #  endif
49702     }
49703 
operator !=VULKAN_HPP_NAMESPACE::LatencySleepInfoNV49704     bool operator!=( LatencySleepInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49705     {
49706       return !operator==( rhs );
49707     }
49708 #endif
49709 
49710   public:
49711     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eLatencySleepInfoNV;
49712     const void *                        pNext           = {};
49713     VULKAN_HPP_NAMESPACE::Semaphore     signalSemaphore = {};
49714     uint64_t                            value           = {};
49715   };
49716 
49717   template <>
49718   struct CppType<StructureType, StructureType::eLatencySleepInfoNV>
49719   {
49720     using Type = LatencySleepInfoNV;
49721   };
49722 
49723   struct LatencySleepModeInfoNV
49724   {
49725     using NativeType = VkLatencySleepModeInfoNV;
49726 
49727     static const bool                                  allowDuplicate = false;
49728     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLatencySleepModeInfoNV;
49729 
49730 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LatencySleepModeInfoNVVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49731     VULKAN_HPP_CONSTEXPR LatencySleepModeInfoNV( VULKAN_HPP_NAMESPACE::Bool32 lowLatencyMode_    = {},
49732                                                  VULKAN_HPP_NAMESPACE::Bool32 lowLatencyBoost_   = {},
49733                                                  uint32_t                     minimumIntervalUs_ = {},
49734                                                  const void *                 pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
49735       : pNext{ pNext_ }
49736       , lowLatencyMode{ lowLatencyMode_ }
49737       , lowLatencyBoost{ lowLatencyBoost_ }
49738       , minimumIntervalUs{ minimumIntervalUs_ }
49739     {
49740     }
49741 
49742     VULKAN_HPP_CONSTEXPR LatencySleepModeInfoNV( LatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49743 
LatencySleepModeInfoNVVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49744     LatencySleepModeInfoNV( VkLatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
49745       : LatencySleepModeInfoNV( *reinterpret_cast<LatencySleepModeInfoNV const *>( &rhs ) )
49746     {
49747     }
49748 
49749     LatencySleepModeInfoNV & operator=( LatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49750 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49751 
operator =VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49752     LatencySleepModeInfoNV & operator=( VkLatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
49753     {
49754       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV const *>( &rhs );
49755       return *this;
49756     }
49757 
49758 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49759     VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49760     {
49761       pNext = pNext_;
49762       return *this;
49763     }
49764 
setLowLatencyModeVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49765     VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setLowLatencyMode( VULKAN_HPP_NAMESPACE::Bool32 lowLatencyMode_ ) VULKAN_HPP_NOEXCEPT
49766     {
49767       lowLatencyMode = lowLatencyMode_;
49768       return *this;
49769     }
49770 
setLowLatencyBoostVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49771     VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setLowLatencyBoost( VULKAN_HPP_NAMESPACE::Bool32 lowLatencyBoost_ ) VULKAN_HPP_NOEXCEPT
49772     {
49773       lowLatencyBoost = lowLatencyBoost_;
49774       return *this;
49775     }
49776 
setMinimumIntervalUsVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49777     VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setMinimumIntervalUs( uint32_t minimumIntervalUs_ ) VULKAN_HPP_NOEXCEPT
49778     {
49779       minimumIntervalUs = minimumIntervalUs_;
49780       return *this;
49781     }
49782 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49783 
operator VkLatencySleepModeInfoNV const&VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49784     operator VkLatencySleepModeInfoNV const &() const VULKAN_HPP_NOEXCEPT
49785     {
49786       return *reinterpret_cast<const VkLatencySleepModeInfoNV *>( this );
49787     }
49788 
operator VkLatencySleepModeInfoNV&VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49789     operator VkLatencySleepModeInfoNV &() VULKAN_HPP_NOEXCEPT
49790     {
49791       return *reinterpret_cast<VkLatencySleepModeInfoNV *>( this );
49792     }
49793 
49794 #if defined( VULKAN_HPP_USE_REFLECT )
49795 #  if 14 <= VULKAN_HPP_CPP_VERSION
49796     auto
49797 #  else
49798     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
49799                const void * const &,
49800                VULKAN_HPP_NAMESPACE::Bool32 const &,
49801                VULKAN_HPP_NAMESPACE::Bool32 const &,
49802                uint32_t const &>
49803 #  endif
reflectVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49804       reflect() const VULKAN_HPP_NOEXCEPT
49805     {
49806       return std::tie( sType, pNext, lowLatencyMode, lowLatencyBoost, minimumIntervalUs );
49807     }
49808 #endif
49809 
49810 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49811     auto operator<=>( LatencySleepModeInfoNV const & ) const = default;
49812 #else
operator ==VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49813     bool operator==( LatencySleepModeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49814     {
49815 #  if defined( VULKAN_HPP_USE_REFLECT )
49816       return this->reflect() == rhs.reflect();
49817 #  else
49818       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lowLatencyMode == rhs.lowLatencyMode ) && ( lowLatencyBoost == rhs.lowLatencyBoost ) &&
49819              ( minimumIntervalUs == rhs.minimumIntervalUs );
49820 #  endif
49821     }
49822 
operator !=VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49823     bool operator!=( LatencySleepModeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49824     {
49825       return !operator==( rhs );
49826     }
49827 #endif
49828 
49829   public:
49830     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eLatencySleepModeInfoNV;
49831     const void *                        pNext             = {};
49832     VULKAN_HPP_NAMESPACE::Bool32        lowLatencyMode    = {};
49833     VULKAN_HPP_NAMESPACE::Bool32        lowLatencyBoost   = {};
49834     uint32_t                            minimumIntervalUs = {};
49835   };
49836 
49837   template <>
49838   struct CppType<StructureType, StructureType::eLatencySleepModeInfoNV>
49839   {
49840     using Type = LatencySleepModeInfoNV;
49841   };
49842 
49843   struct LatencySubmissionPresentIdNV
49844   {
49845     using NativeType = VkLatencySubmissionPresentIdNV;
49846 
49847     static const bool                                  allowDuplicate = false;
49848     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLatencySubmissionPresentIdNV;
49849 
49850 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LatencySubmissionPresentIdNVVULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49851     VULKAN_HPP_CONSTEXPR LatencySubmissionPresentIdNV( uint64_t presentID_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
49852       : pNext{ pNext_ }
49853       , presentID{ presentID_ }
49854     {
49855     }
49856 
49857     VULKAN_HPP_CONSTEXPR LatencySubmissionPresentIdNV( LatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49858 
LatencySubmissionPresentIdNVVULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49859     LatencySubmissionPresentIdNV( VkLatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT
49860       : LatencySubmissionPresentIdNV( *reinterpret_cast<LatencySubmissionPresentIdNV const *>( &rhs ) )
49861     {
49862     }
49863 
49864     LatencySubmissionPresentIdNV & operator=( LatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49865 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49866 
operator =VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49867     LatencySubmissionPresentIdNV & operator=( VkLatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT
49868     {
49869       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV const *>( &rhs );
49870       return *this;
49871     }
49872 
49873 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49874     VULKAN_HPP_CONSTEXPR_14 LatencySubmissionPresentIdNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49875     {
49876       pNext = pNext_;
49877       return *this;
49878     }
49879 
setPresentIDVULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49880     VULKAN_HPP_CONSTEXPR_14 LatencySubmissionPresentIdNV & setPresentID( uint64_t presentID_ ) VULKAN_HPP_NOEXCEPT
49881     {
49882       presentID = presentID_;
49883       return *this;
49884     }
49885 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49886 
operator VkLatencySubmissionPresentIdNV const&VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49887     operator VkLatencySubmissionPresentIdNV const &() const VULKAN_HPP_NOEXCEPT
49888     {
49889       return *reinterpret_cast<const VkLatencySubmissionPresentIdNV *>( this );
49890     }
49891 
operator VkLatencySubmissionPresentIdNV&VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49892     operator VkLatencySubmissionPresentIdNV &() VULKAN_HPP_NOEXCEPT
49893     {
49894       return *reinterpret_cast<VkLatencySubmissionPresentIdNV *>( this );
49895     }
49896 
49897 #if defined( VULKAN_HPP_USE_REFLECT )
49898 #  if 14 <= VULKAN_HPP_CPP_VERSION
49899     auto
49900 #  else
49901     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
49902 #  endif
reflectVULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49903       reflect() const VULKAN_HPP_NOEXCEPT
49904     {
49905       return std::tie( sType, pNext, presentID );
49906     }
49907 #endif
49908 
49909 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49910     auto operator<=>( LatencySubmissionPresentIdNV const & ) const = default;
49911 #else
operator ==VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49912     bool operator==( LatencySubmissionPresentIdNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49913     {
49914 #  if defined( VULKAN_HPP_USE_REFLECT )
49915       return this->reflect() == rhs.reflect();
49916 #  else
49917       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentID == rhs.presentID );
49918 #  endif
49919     }
49920 
operator !=VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49921     bool operator!=( LatencySubmissionPresentIdNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49922     {
49923       return !operator==( rhs );
49924     }
49925 #endif
49926 
49927   public:
49928     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eLatencySubmissionPresentIdNV;
49929     const void *                        pNext     = {};
49930     uint64_t                            presentID = {};
49931   };
49932 
49933   template <>
49934   struct CppType<StructureType, StructureType::eLatencySubmissionPresentIdNV>
49935   {
49936     using Type = LatencySubmissionPresentIdNV;
49937   };
49938 
49939   struct LatencySurfaceCapabilitiesNV
49940   {
49941     using NativeType = VkLatencySurfaceCapabilitiesNV;
49942 
49943     static const bool                                  allowDuplicate = false;
49944     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLatencySurfaceCapabilitiesNV;
49945 
49946 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LatencySurfaceCapabilitiesNVVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49947     VULKAN_HPP_CONSTEXPR LatencySurfaceCapabilitiesNV( uint32_t                               presentModeCount_ = {},
49948                                                        VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_    = {},
49949                                                        const void *                           pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
49950       : pNext{ pNext_ }
49951       , presentModeCount{ presentModeCount_ }
49952       , pPresentModes{ pPresentModes_ }
49953     {
49954     }
49955 
49956     VULKAN_HPP_CONSTEXPR LatencySurfaceCapabilitiesNV( LatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49957 
LatencySurfaceCapabilitiesNVVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49958     LatencySurfaceCapabilitiesNV( VkLatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
49959       : LatencySurfaceCapabilitiesNV( *reinterpret_cast<LatencySurfaceCapabilitiesNV const *>( &rhs ) )
49960     {
49961     }
49962 
49963 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
LatencySurfaceCapabilitiesNVVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49964     LatencySurfaceCapabilitiesNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_,
49965                                   const void *                                                                                pNext_ = nullptr )
49966       : pNext( pNext_ ), presentModeCount( static_cast<uint32_t>( presentModes_.size() ) ), pPresentModes( presentModes_.data() )
49967     {
49968     }
49969 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49970 
49971     LatencySurfaceCapabilitiesNV & operator=( LatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49972 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49973 
operator =VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49974     LatencySurfaceCapabilitiesNV & operator=( VkLatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
49975     {
49976       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV const *>( &rhs );
49977       return *this;
49978     }
49979 
49980 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49981     VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49982     {
49983       pNext = pNext_;
49984       return *this;
49985     }
49986 
setPresentModeCountVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49987     VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV & setPresentModeCount( uint32_t presentModeCount_ ) VULKAN_HPP_NOEXCEPT
49988     {
49989       presentModeCount = presentModeCount_;
49990       return *this;
49991     }
49992 
setPPresentModesVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49993     VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV & setPPresentModes( VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_ ) VULKAN_HPP_NOEXCEPT
49994     {
49995       pPresentModes = pPresentModes_;
49996       return *this;
49997     }
49998 
49999 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
50000     LatencySurfaceCapabilitiesNV &
setPresentModesVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV50001       setPresentModes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_ ) VULKAN_HPP_NOEXCEPT
50002     {
50003       presentModeCount = static_cast<uint32_t>( presentModes_.size() );
50004       pPresentModes    = presentModes_.data();
50005       return *this;
50006     }
50007 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50008 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50009 
operator VkLatencySurfaceCapabilitiesNV const&VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV50010     operator VkLatencySurfaceCapabilitiesNV const &() const VULKAN_HPP_NOEXCEPT
50011     {
50012       return *reinterpret_cast<const VkLatencySurfaceCapabilitiesNV *>( this );
50013     }
50014 
operator VkLatencySurfaceCapabilitiesNV&VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV50015     operator VkLatencySurfaceCapabilitiesNV &() VULKAN_HPP_NOEXCEPT
50016     {
50017       return *reinterpret_cast<VkLatencySurfaceCapabilitiesNV *>( this );
50018     }
50019 
50020 #if defined( VULKAN_HPP_USE_REFLECT )
50021 #  if 14 <= VULKAN_HPP_CPP_VERSION
50022     auto
50023 #  else
50024     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::PresentModeKHR * const &>
50025 #  endif
reflectVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV50026       reflect() const VULKAN_HPP_NOEXCEPT
50027     {
50028       return std::tie( sType, pNext, presentModeCount, pPresentModes );
50029     }
50030 #endif
50031 
50032 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50033     auto operator<=>( LatencySurfaceCapabilitiesNV const & ) const = default;
50034 #else
operator ==VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV50035     bool operator==( LatencySurfaceCapabilitiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
50036     {
50037 #  if defined( VULKAN_HPP_USE_REFLECT )
50038       return this->reflect() == rhs.reflect();
50039 #  else
50040       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentModeCount == rhs.presentModeCount ) && ( pPresentModes == rhs.pPresentModes );
50041 #  endif
50042     }
50043 
operator !=VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV50044     bool operator!=( LatencySurfaceCapabilitiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
50045     {
50046       return !operator==( rhs );
50047     }
50048 #endif
50049 
50050   public:
50051     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eLatencySurfaceCapabilitiesNV;
50052     const void *                           pNext            = {};
50053     uint32_t                               presentModeCount = {};
50054     VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes    = {};
50055   };
50056 
50057   template <>
50058   struct CppType<StructureType, StructureType::eLatencySurfaceCapabilitiesNV>
50059   {
50060     using Type = LatencySurfaceCapabilitiesNV;
50061   };
50062 
50063   struct LayerProperties
50064   {
50065     using NativeType = VkLayerProperties;
50066 
50067 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LayerPropertiesVULKAN_HPP_NAMESPACE::LayerProperties50068     VULKAN_HPP_CONSTEXPR_14 LayerProperties( std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & layerName_             = {},
50069                                              uint32_t                                             specVersion_           = {},
50070                                              uint32_t                                             implementationVersion_ = {},
50071                                              std::array<char, VK_MAX_DESCRIPTION_SIZE> const &    description_           = {} ) VULKAN_HPP_NOEXCEPT
50072       : layerName{ layerName_ }
50073       , specVersion{ specVersion_ }
50074       , implementationVersion{ implementationVersion_ }
50075       , description{ description_ }
50076     {
50077     }
50078 
50079     VULKAN_HPP_CONSTEXPR_14 LayerProperties( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50080 
LayerPropertiesVULKAN_HPP_NAMESPACE::LayerProperties50081     LayerProperties( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT : LayerProperties( *reinterpret_cast<LayerProperties const *>( &rhs ) ) {}
50082 
50083     LayerProperties & operator=( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50084 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50085 
operator =VULKAN_HPP_NAMESPACE::LayerProperties50086     LayerProperties & operator=( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT
50087     {
50088       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerProperties const *>( &rhs );
50089       return *this;
50090     }
50091 
operator VkLayerProperties const&VULKAN_HPP_NAMESPACE::LayerProperties50092     operator VkLayerProperties const &() const VULKAN_HPP_NOEXCEPT
50093     {
50094       return *reinterpret_cast<const VkLayerProperties *>( this );
50095     }
50096 
operator VkLayerProperties&VULKAN_HPP_NAMESPACE::LayerProperties50097     operator VkLayerProperties &() VULKAN_HPP_NOEXCEPT
50098     {
50099       return *reinterpret_cast<VkLayerProperties *>( this );
50100     }
50101 
50102 #if defined( VULKAN_HPP_USE_REFLECT )
50103 #  if 14 <= VULKAN_HPP_CPP_VERSION
50104     auto
50105 #  else
50106     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &,
50107                uint32_t const &,
50108                uint32_t const &,
50109                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &>
50110 #  endif
reflectVULKAN_HPP_NAMESPACE::LayerProperties50111       reflect() const VULKAN_HPP_NOEXCEPT
50112     {
50113       return std::tie( layerName, specVersion, implementationVersion, description );
50114     }
50115 #endif
50116 
50117 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::LayerProperties50118     std::strong_ordering operator<=>( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
50119     {
50120       if ( auto cmp = strcmp( layerName, rhs.layerName ); cmp != 0 )
50121         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
50122       if ( auto cmp = specVersion <=> rhs.specVersion; cmp != 0 )
50123         return cmp;
50124       if ( auto cmp = implementationVersion <=> rhs.implementationVersion; cmp != 0 )
50125         return cmp;
50126       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
50127         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
50128 
50129       return std::strong_ordering::equivalent;
50130     }
50131 #endif
50132 
operator ==VULKAN_HPP_NAMESPACE::LayerProperties50133     bool operator==( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
50134     {
50135       return ( strcmp( layerName, rhs.layerName ) == 0 ) && ( specVersion == rhs.specVersion ) && ( implementationVersion == rhs.implementationVersion ) &&
50136              ( strcmp( description, rhs.description ) == 0 );
50137     }
50138 
operator !=VULKAN_HPP_NAMESPACE::LayerProperties50139     bool operator!=( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
50140     {
50141       return !operator==( rhs );
50142     }
50143 
50144   public:
50145     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> layerName             = {};
50146     uint32_t                                                               specVersion           = {};
50147     uint32_t                                                               implementationVersion = {};
50148     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE>    description           = {};
50149   };
50150 
50151   struct LayerSettingEXT
50152   {
50153     using NativeType = VkLayerSettingEXT;
50154 
50155 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT50156     VULKAN_HPP_CONSTEXPR LayerSettingEXT( const char *                              pLayerName_   = {},
50157                                           const char *                              pSettingName_ = {},
50158                                           VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT type_         = VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT::eBool32,
50159                                           uint32_t                                  valueCount_   = {},
50160                                           const void *                              pValues_      = {} ) VULKAN_HPP_NOEXCEPT
50161       : pLayerName{ pLayerName_ }
50162       , pSettingName{ pSettingName_ }
50163       , type{ type_ }
50164       , valueCount{ valueCount_ }
50165       , pValues{ pValues_ }
50166     {
50167     }
50168 
50169     VULKAN_HPP_CONSTEXPR LayerSettingEXT( LayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50170 
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT50171     LayerSettingEXT( VkLayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT : LayerSettingEXT( *reinterpret_cast<LayerSettingEXT const *>( &rhs ) ) {}
50172 
50173 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
50174     // NOTE: you need to provide the type because vk::Bool32 and uint32_t are indistinguishable!
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT50175     LayerSettingEXT( char const *                                       pLayerName_,
50176                      char const *                                       pSettingName_,
50177                      VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT          type_,
50178                      vk::ArrayProxyNoTemporaries<const int32_t> const & values_ )
50179       : pLayerName( pLayerName_ )
50180       , pSettingName( pSettingName_ )
50181       , type( type_ )
50182       , valueCount( static_cast<uint32_t>( values_.size() ) )
50183       , pValues( values_.data() )
50184     {
50185       VULKAN_HPP_ASSERT( VULKAN_HPP_NAMESPACE::isSameType<int32_t>( type ) );
50186     }
50187 
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT50188     LayerSettingEXT( char const *                                       pLayerName_,
50189                      char const *                                       pSettingName_,
50190                      VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT          type_,
50191                      vk::ArrayProxyNoTemporaries<const int64_t> const & values_ )
50192       : pLayerName( pLayerName_ )
50193       , pSettingName( pSettingName_ )
50194       , type( type_ )
50195       , valueCount( static_cast<uint32_t>( values_.size() ) )
50196       , pValues( values_.data() )
50197     {
50198       VULKAN_HPP_ASSERT( VULKAN_HPP_NAMESPACE::isSameType<int64_t>( type ) );
50199     }
50200 
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT50201     LayerSettingEXT( char const *                                        pLayerName_,
50202                      char const *                                        pSettingName_,
50203                      VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT           type_,
50204                      vk::ArrayProxyNoTemporaries<const uint32_t> const & values_ )
50205       : pLayerName( pLayerName_ )
50206       , pSettingName( pSettingName_ )
50207       , type( type_ )
50208       , valueCount( static_cast<uint32_t>( values_.size() ) )
50209       , pValues( values_.data() )
50210     {
50211       VULKAN_HPP_ASSERT( VULKAN_HPP_NAMESPACE::isSameType<uint32_t>( type ) );
50212     }
50213 
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT50214     LayerSettingEXT( char const *                                        pLayerName_,
50215                      char const *                                        pSettingName_,
50216                      VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT           type_,
50217                      vk::ArrayProxyNoTemporaries<const uint64_t> const & values_ )
50218       : pLayerName( pLayerName_ )
50219       , pSettingName( pSettingName_ )
50220       , type( type_ )
50221       , valueCount( static_cast<uint32_t>( values_.size() ) )
50222       , pValues( values_.data() )
50223     {
50224       VULKAN_HPP_ASSERT( VULKAN_HPP_NAMESPACE::isSameType<uint64_t>( type ) );
50225     }
50226 
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT50227     LayerSettingEXT( char const *                                     pLayerName_,
50228                      char const *                                     pSettingName_,
50229                      VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT        type_,
50230                      vk::ArrayProxyNoTemporaries<const float> const & values_ )
50231       : pLayerName( pLayerName_ )
50232       , pSettingName( pSettingName_ )
50233       , type( type_ )
50234       , valueCount( static_cast<uint32_t>( values_.size() ) )
50235       , pValues( values_.data() )
50236     {
50237       VULKAN_HPP_ASSERT( VULKAN_HPP_NAMESPACE::isSameType<float>( type ) );
50238     }
50239 
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT50240     LayerSettingEXT( char const *                                      pLayerName_,
50241                      char const *                                      pSettingName_,
50242                      VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT         type_,
50243                      vk::ArrayProxyNoTemporaries<const double> const & values_ )
50244       : pLayerName( pLayerName_ )
50245       , pSettingName( pSettingName_ )
50246       , type( type_ )
50247       , valueCount( static_cast<uint32_t>( values_.size() ) )
50248       , pValues( values_.data() )
50249     {
50250       VULKAN_HPP_ASSERT( VULKAN_HPP_NAMESPACE::isSameType<double>( type ) );
50251     }
50252 
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT50253     LayerSettingEXT( char const *                                      pLayerName_,
50254                      char const *                                      pSettingName_,
50255                      VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT         type_,
50256                      vk::ArrayProxyNoTemporaries<const char *> const & values_ )
50257       : pLayerName( pLayerName_ )
50258       , pSettingName( pSettingName_ )
50259       , type( type_ )
50260       , valueCount( static_cast<uint32_t>( values_.size() ) )
50261       , pValues( values_.data() )
50262     {
50263       VULKAN_HPP_ASSERT( VULKAN_HPP_NAMESPACE::isSameType<char *>( type ) );
50264     }
50265 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50266 
50267     LayerSettingEXT & operator=( LayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50268 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50269 
operator =VULKAN_HPP_NAMESPACE::LayerSettingEXT50270     LayerSettingEXT & operator=( VkLayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT
50271     {
50272       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerSettingEXT const *>( &rhs );
50273       return *this;
50274     }
50275 
50276 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPLayerNameVULKAN_HPP_NAMESPACE::LayerSettingEXT50277     VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setPLayerName( const char * pLayerName_ ) VULKAN_HPP_NOEXCEPT
50278     {
50279       pLayerName = pLayerName_;
50280       return *this;
50281     }
50282 
setPSettingNameVULKAN_HPP_NAMESPACE::LayerSettingEXT50283     VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setPSettingName( const char * pSettingName_ ) VULKAN_HPP_NOEXCEPT
50284     {
50285       pSettingName = pSettingName_;
50286       return *this;
50287     }
50288 
setTypeVULKAN_HPP_NAMESPACE::LayerSettingEXT50289     VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setType( VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT type_ ) VULKAN_HPP_NOEXCEPT
50290     {
50291       type = type_;
50292       return *this;
50293     }
50294 
setValueCountVULKAN_HPP_NAMESPACE::LayerSettingEXT50295     VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setValueCount( uint32_t valueCount_ ) VULKAN_HPP_NOEXCEPT
50296     {
50297       valueCount = valueCount_;
50298       return *this;
50299     }
50300 
50301 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setValuesVULKAN_HPP_NAMESPACE::LayerSettingEXT50302     LayerSettingEXT & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int32_t> const & values_ ) VULKAN_HPP_NOEXCEPT
50303     {
50304       valueCount = static_cast<uint32_t>( values_.size() );
50305       pValues    = values_.data();
50306       return *this;
50307     }
50308 
setValuesVULKAN_HPP_NAMESPACE::LayerSettingEXT50309     LayerSettingEXT & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int64_t> const & values_ ) VULKAN_HPP_NOEXCEPT
50310     {
50311       valueCount = static_cast<uint32_t>( values_.size() );
50312       pValues    = values_.data();
50313       return *this;
50314     }
50315 
setValuesVULKAN_HPP_NAMESPACE::LayerSettingEXT50316     LayerSettingEXT & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & values_ ) VULKAN_HPP_NOEXCEPT
50317     {
50318       valueCount = static_cast<uint32_t>( values_.size() );
50319       pValues    = values_.data();
50320       return *this;
50321     }
50322 
setValuesVULKAN_HPP_NAMESPACE::LayerSettingEXT50323     LayerSettingEXT & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & values_ ) VULKAN_HPP_NOEXCEPT
50324     {
50325       valueCount = static_cast<uint32_t>( values_.size() );
50326       pValues    = values_.data();
50327       return *this;
50328     }
50329 
setValuesVULKAN_HPP_NAMESPACE::LayerSettingEXT50330     LayerSettingEXT & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & values_ ) VULKAN_HPP_NOEXCEPT
50331     {
50332       valueCount = static_cast<uint32_t>( values_.size() );
50333       pValues    = values_.data();
50334       return *this;
50335     }
50336 
setValuesVULKAN_HPP_NAMESPACE::LayerSettingEXT50337     LayerSettingEXT & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const double> const & values_ ) VULKAN_HPP_NOEXCEPT
50338     {
50339       valueCount = static_cast<uint32_t>( values_.size() );
50340       pValues    = values_.data();
50341       return *this;
50342     }
50343 
setValuesVULKAN_HPP_NAMESPACE::LayerSettingEXT50344     LayerSettingEXT & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char *> const & values_ ) VULKAN_HPP_NOEXCEPT
50345     {
50346       valueCount = static_cast<uint32_t>( values_.size() );
50347       pValues    = values_.data();
50348       return *this;
50349     }
50350 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50351 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50352 
operator VkLayerSettingEXT const&VULKAN_HPP_NAMESPACE::LayerSettingEXT50353     operator VkLayerSettingEXT const &() const VULKAN_HPP_NOEXCEPT
50354     {
50355       return *reinterpret_cast<const VkLayerSettingEXT *>( this );
50356     }
50357 
operator VkLayerSettingEXT&VULKAN_HPP_NAMESPACE::LayerSettingEXT50358     operator VkLayerSettingEXT &() VULKAN_HPP_NOEXCEPT
50359     {
50360       return *reinterpret_cast<VkLayerSettingEXT *>( this );
50361     }
50362 
50363 #if defined( VULKAN_HPP_USE_REFLECT )
50364 #  if 14 <= VULKAN_HPP_CPP_VERSION
50365     auto
50366 #  else
50367     std::tuple<const char * const &, const char * const &, VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT const &, uint32_t const &, const void * const &>
50368 #  endif
reflectVULKAN_HPP_NAMESPACE::LayerSettingEXT50369       reflect() const VULKAN_HPP_NOEXCEPT
50370     {
50371       return std::tie( pLayerName, pSettingName, type, valueCount, pValues );
50372     }
50373 #endif
50374 
50375 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::LayerSettingEXT50376     std::strong_ordering operator<=>( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50377     {
50378       if ( pLayerName != rhs.pLayerName )
50379         if ( auto cmp = strcmp( pLayerName, rhs.pLayerName ); cmp != 0 )
50380           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
50381       if ( pSettingName != rhs.pSettingName )
50382         if ( auto cmp = strcmp( pSettingName, rhs.pSettingName ); cmp != 0 )
50383           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
50384       if ( auto cmp = type <=> rhs.type; cmp != 0 )
50385         return cmp;
50386       if ( auto cmp = valueCount <=> rhs.valueCount; cmp != 0 )
50387         return cmp;
50388       if ( auto cmp = pValues <=> rhs.pValues; cmp != 0 )
50389         return cmp;
50390 
50391       return std::strong_ordering::equivalent;
50392     }
50393 #endif
50394 
operator ==VULKAN_HPP_NAMESPACE::LayerSettingEXT50395     bool operator==( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50396     {
50397       return ( ( pLayerName == rhs.pLayerName ) || ( strcmp( pLayerName, rhs.pLayerName ) == 0 ) ) &&
50398              ( ( pSettingName == rhs.pSettingName ) || ( strcmp( pSettingName, rhs.pSettingName ) == 0 ) ) && ( type == rhs.type ) &&
50399              ( valueCount == rhs.valueCount ) && ( pValues == rhs.pValues );
50400     }
50401 
operator !=VULKAN_HPP_NAMESPACE::LayerSettingEXT50402     bool operator!=( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50403     {
50404       return !operator==( rhs );
50405     }
50406 
50407   public:
50408     const char *                              pLayerName   = {};
50409     const char *                              pSettingName = {};
50410     VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT type         = VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT::eBool32;
50411     uint32_t                                  valueCount   = {};
50412     const void *                              pValues      = {};
50413   };
50414 
50415   struct LayerSettingsCreateInfoEXT
50416   {
50417     using NativeType = VkLayerSettingsCreateInfoEXT;
50418 
50419     static const bool                                  allowDuplicate = true;
50420     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLayerSettingsCreateInfoEXT;
50421 
50422 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LayerSettingsCreateInfoEXTVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50423     VULKAN_HPP_CONSTEXPR LayerSettingsCreateInfoEXT( uint32_t                                      settingCount_ = {},
50424                                                      const VULKAN_HPP_NAMESPACE::LayerSettingEXT * pSettings_    = {},
50425                                                      const void *                                  pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
50426       : pNext{ pNext_ }
50427       , settingCount{ settingCount_ }
50428       , pSettings{ pSettings_ }
50429     {
50430     }
50431 
50432     VULKAN_HPP_CONSTEXPR LayerSettingsCreateInfoEXT( LayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50433 
LayerSettingsCreateInfoEXTVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50434     LayerSettingsCreateInfoEXT( VkLayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
50435       : LayerSettingsCreateInfoEXT( *reinterpret_cast<LayerSettingsCreateInfoEXT const *>( &rhs ) )
50436     {
50437     }
50438 
50439 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
LayerSettingsCreateInfoEXTVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50440     LayerSettingsCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::LayerSettingEXT> const & settings_,
50441                                 const void *                                                                                       pNext_ = nullptr )
50442       : pNext( pNext_ ), settingCount( static_cast<uint32_t>( settings_.size() ) ), pSettings( settings_.data() )
50443     {
50444     }
50445 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50446 
50447     LayerSettingsCreateInfoEXT & operator=( LayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50448 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50449 
operator =VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50450     LayerSettingsCreateInfoEXT & operator=( VkLayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
50451     {
50452       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT const *>( &rhs );
50453       return *this;
50454     }
50455 
50456 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50457     VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50458     {
50459       pNext = pNext_;
50460       return *this;
50461     }
50462 
setSettingCountVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50463     VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setSettingCount( uint32_t settingCount_ ) VULKAN_HPP_NOEXCEPT
50464     {
50465       settingCount = settingCount_;
50466       return *this;
50467     }
50468 
setPSettingsVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50469     VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setPSettings( const VULKAN_HPP_NAMESPACE::LayerSettingEXT * pSettings_ ) VULKAN_HPP_NOEXCEPT
50470     {
50471       pSettings = pSettings_;
50472       return *this;
50473     }
50474 
50475 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
50476     LayerSettingsCreateInfoEXT &
setSettingsVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50477       setSettings( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::LayerSettingEXT> const & settings_ ) VULKAN_HPP_NOEXCEPT
50478     {
50479       settingCount = static_cast<uint32_t>( settings_.size() );
50480       pSettings    = settings_.data();
50481       return *this;
50482     }
50483 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50484 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50485 
operator VkLayerSettingsCreateInfoEXT const&VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50486     operator VkLayerSettingsCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
50487     {
50488       return *reinterpret_cast<const VkLayerSettingsCreateInfoEXT *>( this );
50489     }
50490 
operator VkLayerSettingsCreateInfoEXT&VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50491     operator VkLayerSettingsCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
50492     {
50493       return *reinterpret_cast<VkLayerSettingsCreateInfoEXT *>( this );
50494     }
50495 
50496 #if defined( VULKAN_HPP_USE_REFLECT )
50497 #  if 14 <= VULKAN_HPP_CPP_VERSION
50498     auto
50499 #  else
50500     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::LayerSettingEXT * const &>
50501 #  endif
reflectVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50502       reflect() const VULKAN_HPP_NOEXCEPT
50503     {
50504       return std::tie( sType, pNext, settingCount, pSettings );
50505     }
50506 #endif
50507 
50508 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50509     auto operator<=>( LayerSettingsCreateInfoEXT const & ) const = default;
50510 #else
operator ==VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50511     bool operator==( LayerSettingsCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50512     {
50513 #  if defined( VULKAN_HPP_USE_REFLECT )
50514       return this->reflect() == rhs.reflect();
50515 #  else
50516       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( settingCount == rhs.settingCount ) && ( pSettings == rhs.pSettings );
50517 #  endif
50518     }
50519 
operator !=VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50520     bool operator!=( LayerSettingsCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50521     {
50522       return !operator==( rhs );
50523     }
50524 #endif
50525 
50526   public:
50527     VULKAN_HPP_NAMESPACE::StructureType           sType        = StructureType::eLayerSettingsCreateInfoEXT;
50528     const void *                                  pNext        = {};
50529     uint32_t                                      settingCount = {};
50530     const VULKAN_HPP_NAMESPACE::LayerSettingEXT * pSettings    = {};
50531   };
50532 
50533   template <>
50534   struct CppType<StructureType, StructureType::eLayerSettingsCreateInfoEXT>
50535   {
50536     using Type = LayerSettingsCreateInfoEXT;
50537   };
50538 
50539 #if defined( VK_USE_PLATFORM_MACOS_MVK )
50540   struct MacOSSurfaceCreateInfoMVK
50541   {
50542     using NativeType = VkMacOSSurfaceCreateInfoMVK;
50543 
50544     static const bool                                  allowDuplicate = false;
50545     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMacosSurfaceCreateInfoMVK;
50546 
50547 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MacOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50548     VULKAN_HPP_CONSTEXPR MacOSSurfaceCreateInfoMVK( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags_ = {},
50549                                                     const void *                                     pView_ = {},
50550                                                     const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
50551       : pNext{ pNext_ }
50552       , flags{ flags_ }
50553       , pView{ pView_ }
50554     {
50555     }
50556 
50557     VULKAN_HPP_CONSTEXPR MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50558 
MacOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50559     MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
50560       : MacOSSurfaceCreateInfoMVK( *reinterpret_cast<MacOSSurfaceCreateInfoMVK const *>( &rhs ) )
50561     {
50562     }
50563 
50564     MacOSSurfaceCreateInfoMVK & operator=( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50565 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50566 
operator =VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50567     MacOSSurfaceCreateInfoMVK & operator=( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
50568     {
50569       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const *>( &rhs );
50570       return *this;
50571     }
50572 
50573 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50574     VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50575     {
50576       pNext = pNext_;
50577       return *this;
50578     }
50579 
setFlagsVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50580     VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setFlags( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags_ ) VULKAN_HPP_NOEXCEPT
50581     {
50582       flags = flags_;
50583       return *this;
50584     }
50585 
setPViewVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50586     VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setPView( const void * pView_ ) VULKAN_HPP_NOEXCEPT
50587     {
50588       pView = pView_;
50589       return *this;
50590     }
50591 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50592 
operator VkMacOSSurfaceCreateInfoMVK const&VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50593     operator VkMacOSSurfaceCreateInfoMVK const &() const VULKAN_HPP_NOEXCEPT
50594     {
50595       return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK *>( this );
50596     }
50597 
operator VkMacOSSurfaceCreateInfoMVK&VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50598     operator VkMacOSSurfaceCreateInfoMVK &() VULKAN_HPP_NOEXCEPT
50599     {
50600       return *reinterpret_cast<VkMacOSSurfaceCreateInfoMVK *>( this );
50601     }
50602 
50603 #  if defined( VULKAN_HPP_USE_REFLECT )
50604 #    if 14 <= VULKAN_HPP_CPP_VERSION
50605     auto
50606 #    else
50607     std::
50608       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK const &, const void * const &>
50609 #    endif
reflectVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50610       reflect() const VULKAN_HPP_NOEXCEPT
50611     {
50612       return std::tie( sType, pNext, flags, pView );
50613     }
50614 #  endif
50615 
50616 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50617     auto operator<=>( MacOSSurfaceCreateInfoMVK const & ) const = default;
50618 #  else
operator ==VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50619     bool operator==( MacOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
50620     {
50621 #    if defined( VULKAN_HPP_USE_REFLECT )
50622       return this->reflect() == rhs.reflect();
50623 #    else
50624       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pView == rhs.pView );
50625 #    endif
50626     }
50627 
operator !=VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50628     bool operator!=( MacOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
50629     {
50630       return !operator==( rhs );
50631     }
50632 #  endif
50633 
50634   public:
50635     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::eMacosSurfaceCreateInfoMVK;
50636     const void *                                     pNext = {};
50637     VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags = {};
50638     const void *                                     pView = {};
50639   };
50640 
50641   template <>
50642   struct CppType<StructureType, StructureType::eMacosSurfaceCreateInfoMVK>
50643   {
50644     using Type = MacOSSurfaceCreateInfoMVK;
50645   };
50646 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
50647 
50648   struct MappedMemoryRange
50649   {
50650     using NativeType = VkMappedMemoryRange;
50651 
50652     static const bool                                  allowDuplicate = false;
50653     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMappedMemoryRange;
50654 
50655 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MappedMemoryRangeVULKAN_HPP_NAMESPACE::MappedMemoryRange50656     VULKAN_HPP_CONSTEXPR MappedMemoryRange( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {},
50657                                             VULKAN_HPP_NAMESPACE::DeviceSize   offset_ = {},
50658                                             VULKAN_HPP_NAMESPACE::DeviceSize   size_   = {},
50659                                             const void *                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
50660       : pNext{ pNext_ }
50661       , memory{ memory_ }
50662       , offset{ offset_ }
50663       , size{ size_ }
50664     {
50665     }
50666 
50667     VULKAN_HPP_CONSTEXPR MappedMemoryRange( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50668 
MappedMemoryRangeVULKAN_HPP_NAMESPACE::MappedMemoryRange50669     MappedMemoryRange( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT : MappedMemoryRange( *reinterpret_cast<MappedMemoryRange const *>( &rhs ) ) {}
50670 
50671     MappedMemoryRange & operator=( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50672 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50673 
operator =VULKAN_HPP_NAMESPACE::MappedMemoryRange50674     MappedMemoryRange & operator=( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT
50675     {
50676       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MappedMemoryRange const *>( &rhs );
50677       return *this;
50678     }
50679 
50680 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MappedMemoryRange50681     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50682     {
50683       pNext = pNext_;
50684       return *this;
50685     }
50686 
setMemoryVULKAN_HPP_NAMESPACE::MappedMemoryRange50687     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
50688     {
50689       memory = memory_;
50690       return *this;
50691     }
50692 
setOffsetVULKAN_HPP_NAMESPACE::MappedMemoryRange50693     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
50694     {
50695       offset = offset_;
50696       return *this;
50697     }
50698 
setSizeVULKAN_HPP_NAMESPACE::MappedMemoryRange50699     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
50700     {
50701       size = size_;
50702       return *this;
50703     }
50704 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50705 
operator VkMappedMemoryRange const&VULKAN_HPP_NAMESPACE::MappedMemoryRange50706     operator VkMappedMemoryRange const &() const VULKAN_HPP_NOEXCEPT
50707     {
50708       return *reinterpret_cast<const VkMappedMemoryRange *>( this );
50709     }
50710 
operator VkMappedMemoryRange&VULKAN_HPP_NAMESPACE::MappedMemoryRange50711     operator VkMappedMemoryRange &() VULKAN_HPP_NOEXCEPT
50712     {
50713       return *reinterpret_cast<VkMappedMemoryRange *>( this );
50714     }
50715 
50716 #if defined( VULKAN_HPP_USE_REFLECT )
50717 #  if 14 <= VULKAN_HPP_CPP_VERSION
50718     auto
50719 #  else
50720     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
50721                const void * const &,
50722                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
50723                VULKAN_HPP_NAMESPACE::DeviceSize const &,
50724                VULKAN_HPP_NAMESPACE::DeviceSize const &>
50725 #  endif
reflectVULKAN_HPP_NAMESPACE::MappedMemoryRange50726       reflect() const VULKAN_HPP_NOEXCEPT
50727     {
50728       return std::tie( sType, pNext, memory, offset, size );
50729     }
50730 #endif
50731 
50732 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50733     auto operator<=>( MappedMemoryRange const & ) const = default;
50734 #else
operator ==VULKAN_HPP_NAMESPACE::MappedMemoryRange50735     bool operator==( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT
50736     {
50737 #  if defined( VULKAN_HPP_USE_REFLECT )
50738       return this->reflect() == rhs.reflect();
50739 #  else
50740       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( offset == rhs.offset ) && ( size == rhs.size );
50741 #  endif
50742     }
50743 
operator !=VULKAN_HPP_NAMESPACE::MappedMemoryRange50744     bool operator!=( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT
50745     {
50746       return !operator==( rhs );
50747     }
50748 #endif
50749 
50750   public:
50751     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eMappedMemoryRange;
50752     const void *                        pNext  = {};
50753     VULKAN_HPP_NAMESPACE::DeviceMemory  memory = {};
50754     VULKAN_HPP_NAMESPACE::DeviceSize    offset = {};
50755     VULKAN_HPP_NAMESPACE::DeviceSize    size   = {};
50756   };
50757 
50758   template <>
50759   struct CppType<StructureType, StructureType::eMappedMemoryRange>
50760   {
50761     using Type = MappedMemoryRange;
50762   };
50763 
50764   struct MemoryAllocateFlagsInfo
50765   {
50766     using NativeType = VkMemoryAllocateFlagsInfo;
50767 
50768     static const bool                                  allowDuplicate = false;
50769     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryAllocateFlagsInfo;
50770 
50771 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryAllocateFlagsInfoVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50772     VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_      = {},
50773                                                   uint32_t                                  deviceMask_ = {},
50774                                                   const void *                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
50775       : pNext{ pNext_ }
50776       , flags{ flags_ }
50777       , deviceMask{ deviceMask_ }
50778     {
50779     }
50780 
50781     VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50782 
MemoryAllocateFlagsInfoVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50783     MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
50784       : MemoryAllocateFlagsInfo( *reinterpret_cast<MemoryAllocateFlagsInfo const *>( &rhs ) )
50785     {
50786     }
50787 
50788     MemoryAllocateFlagsInfo & operator=( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50789 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50790 
operator =VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50791     MemoryAllocateFlagsInfo & operator=( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
50792     {
50793       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo const *>( &rhs );
50794       return *this;
50795     }
50796 
50797 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50798     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50799     {
50800       pNext = pNext_;
50801       return *this;
50802     }
50803 
setFlagsVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50804     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setFlags( VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_ ) VULKAN_HPP_NOEXCEPT
50805     {
50806       flags = flags_;
50807       return *this;
50808     }
50809 
setDeviceMaskVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50810     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
50811     {
50812       deviceMask = deviceMask_;
50813       return *this;
50814     }
50815 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50816 
operator VkMemoryAllocateFlagsInfo const&VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50817     operator VkMemoryAllocateFlagsInfo const &() const VULKAN_HPP_NOEXCEPT
50818     {
50819       return *reinterpret_cast<const VkMemoryAllocateFlagsInfo *>( this );
50820     }
50821 
operator VkMemoryAllocateFlagsInfo&VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50822     operator VkMemoryAllocateFlagsInfo &() VULKAN_HPP_NOEXCEPT
50823     {
50824       return *reinterpret_cast<VkMemoryAllocateFlagsInfo *>( this );
50825     }
50826 
50827 #if defined( VULKAN_HPP_USE_REFLECT )
50828 #  if 14 <= VULKAN_HPP_CPP_VERSION
50829     auto
50830 #  else
50831     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::MemoryAllocateFlags const &, uint32_t const &>
50832 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50833       reflect() const VULKAN_HPP_NOEXCEPT
50834     {
50835       return std::tie( sType, pNext, flags, deviceMask );
50836     }
50837 #endif
50838 
50839 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50840     auto operator<=>( MemoryAllocateFlagsInfo const & ) const = default;
50841 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50842     bool operator==( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50843     {
50844 #  if defined( VULKAN_HPP_USE_REFLECT )
50845       return this->reflect() == rhs.reflect();
50846 #  else
50847       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( deviceMask == rhs.deviceMask );
50848 #  endif
50849     }
50850 
operator !=VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50851     bool operator!=( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50852     {
50853       return !operator==( rhs );
50854     }
50855 #endif
50856 
50857   public:
50858     VULKAN_HPP_NAMESPACE::StructureType       sType      = StructureType::eMemoryAllocateFlagsInfo;
50859     const void *                              pNext      = {};
50860     VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags      = {};
50861     uint32_t                                  deviceMask = {};
50862   };
50863 
50864   template <>
50865   struct CppType<StructureType, StructureType::eMemoryAllocateFlagsInfo>
50866   {
50867     using Type = MemoryAllocateFlagsInfo;
50868   };
50869 
50870   using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
50871 
50872   struct MemoryAllocateInfo
50873   {
50874     using NativeType = VkMemoryAllocateInfo;
50875 
50876     static const bool                                  allowDuplicate = false;
50877     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryAllocateInfo;
50878 
50879 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryAllocateInfoVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50880     VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_  = {},
50881                                              uint32_t                         memoryTypeIndex_ = {},
50882                                              const void *                     pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
50883       : pNext{ pNext_ }
50884       , allocationSize{ allocationSize_ }
50885       , memoryTypeIndex{ memoryTypeIndex_ }
50886     {
50887     }
50888 
50889     VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50890 
MemoryAllocateInfoVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50891     MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryAllocateInfo( *reinterpret_cast<MemoryAllocateInfo const *>( &rhs ) ) {}
50892 
50893     MemoryAllocateInfo & operator=( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50894 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50895 
operator =VULKAN_HPP_NAMESPACE::MemoryAllocateInfo50896     MemoryAllocateInfo & operator=( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
50897     {
50898       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const *>( &rhs );
50899       return *this;
50900     }
50901 
50902 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50903     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50904     {
50905       pNext = pNext_;
50906       return *this;
50907     }
50908 
setAllocationSizeVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50909     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setAllocationSize( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ ) VULKAN_HPP_NOEXCEPT
50910     {
50911       allocationSize = allocationSize_;
50912       return *this;
50913     }
50914 
setMemoryTypeIndexVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50915     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setMemoryTypeIndex( uint32_t memoryTypeIndex_ ) VULKAN_HPP_NOEXCEPT
50916     {
50917       memoryTypeIndex = memoryTypeIndex_;
50918       return *this;
50919     }
50920 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50921 
operator VkMemoryAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryAllocateInfo50922     operator VkMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
50923     {
50924       return *reinterpret_cast<const VkMemoryAllocateInfo *>( this );
50925     }
50926 
operator VkMemoryAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryAllocateInfo50927     operator VkMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT
50928     {
50929       return *reinterpret_cast<VkMemoryAllocateInfo *>( this );
50930     }
50931 
50932 #if defined( VULKAN_HPP_USE_REFLECT )
50933 #  if 14 <= VULKAN_HPP_CPP_VERSION
50934     auto
50935 #  else
50936     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
50937 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50938       reflect() const VULKAN_HPP_NOEXCEPT
50939     {
50940       return std::tie( sType, pNext, allocationSize, memoryTypeIndex );
50941     }
50942 #endif
50943 
50944 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50945     auto operator<=>( MemoryAllocateInfo const & ) const = default;
50946 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryAllocateInfo50947     bool operator==( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50948     {
50949 #  if defined( VULKAN_HPP_USE_REFLECT )
50950       return this->reflect() == rhs.reflect();
50951 #  else
50952       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && ( memoryTypeIndex == rhs.memoryTypeIndex );
50953 #  endif
50954     }
50955 
operator !=VULKAN_HPP_NAMESPACE::MemoryAllocateInfo50956     bool operator!=( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50957     {
50958       return !operator==( rhs );
50959     }
50960 #endif
50961 
50962   public:
50963     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eMemoryAllocateInfo;
50964     const void *                        pNext           = {};
50965     VULKAN_HPP_NAMESPACE::DeviceSize    allocationSize  = {};
50966     uint32_t                            memoryTypeIndex = {};
50967   };
50968 
50969   template <>
50970   struct CppType<StructureType, StructureType::eMemoryAllocateInfo>
50971   {
50972     using Type = MemoryAllocateInfo;
50973   };
50974 
50975   struct MemoryBarrier
50976   {
50977     using NativeType = VkMemoryBarrier;
50978 
50979     static const bool                                  allowDuplicate = false;
50980     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryBarrier;
50981 
50982 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryBarrierVULKAN_HPP_NAMESPACE::MemoryBarrier50983     VULKAN_HPP_CONSTEXPR MemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {},
50984                                         VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {},
50985                                         const void *                      pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
50986       : pNext{ pNext_ }
50987       , srcAccessMask{ srcAccessMask_ }
50988       , dstAccessMask{ dstAccessMask_ }
50989     {
50990     }
50991 
50992     VULKAN_HPP_CONSTEXPR MemoryBarrier( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50993 
MemoryBarrierVULKAN_HPP_NAMESPACE::MemoryBarrier50994     MemoryBarrier( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryBarrier( *reinterpret_cast<MemoryBarrier const *>( &rhs ) ) {}
50995 
50996     MemoryBarrier & operator=( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50997 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50998 
operator =VULKAN_HPP_NAMESPACE::MemoryBarrier50999     MemoryBarrier & operator=( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
51000     {
51001       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryBarrier const *>( &rhs );
51002       return *this;
51003     }
51004 
51005 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryBarrier51006     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51007     {
51008       pNext = pNext_;
51009       return *this;
51010     }
51011 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier51012     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
51013     {
51014       srcAccessMask = srcAccessMask_;
51015       return *this;
51016     }
51017 
setDstAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier51018     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
51019     {
51020       dstAccessMask = dstAccessMask_;
51021       return *this;
51022     }
51023 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51024 
operator VkMemoryBarrier const&VULKAN_HPP_NAMESPACE::MemoryBarrier51025     operator VkMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
51026     {
51027       return *reinterpret_cast<const VkMemoryBarrier *>( this );
51028     }
51029 
operator VkMemoryBarrier&VULKAN_HPP_NAMESPACE::MemoryBarrier51030     operator VkMemoryBarrier &() VULKAN_HPP_NOEXCEPT
51031     {
51032       return *reinterpret_cast<VkMemoryBarrier *>( this );
51033     }
51034 
51035 #if defined( VULKAN_HPP_USE_REFLECT )
51036 #  if 14 <= VULKAN_HPP_CPP_VERSION
51037     auto
51038 #  else
51039     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51040                const void * const &,
51041                VULKAN_HPP_NAMESPACE::AccessFlags const &,
51042                VULKAN_HPP_NAMESPACE::AccessFlags const &>
51043 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryBarrier51044       reflect() const VULKAN_HPP_NOEXCEPT
51045     {
51046       return std::tie( sType, pNext, srcAccessMask, dstAccessMask );
51047     }
51048 #endif
51049 
51050 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51051     auto operator<=>( MemoryBarrier const & ) const = default;
51052 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryBarrier51053     bool operator==( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
51054     {
51055 #  if defined( VULKAN_HPP_USE_REFLECT )
51056       return this->reflect() == rhs.reflect();
51057 #  else
51058       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask );
51059 #  endif
51060     }
51061 
operator !=VULKAN_HPP_NAMESPACE::MemoryBarrier51062     bool operator!=( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
51063     {
51064       return !operator==( rhs );
51065     }
51066 #endif
51067 
51068   public:
51069     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eMemoryBarrier;
51070     const void *                        pNext         = {};
51071     VULKAN_HPP_NAMESPACE::AccessFlags   srcAccessMask = {};
51072     VULKAN_HPP_NAMESPACE::AccessFlags   dstAccessMask = {};
51073   };
51074 
51075   template <>
51076   struct CppType<StructureType, StructureType::eMemoryBarrier>
51077   {
51078     using Type = MemoryBarrier;
51079   };
51080 
51081   struct MemoryDedicatedAllocateInfo
51082   {
51083     using NativeType = VkMemoryDedicatedAllocateInfo;
51084 
51085     static const bool                                  allowDuplicate = false;
51086     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryDedicatedAllocateInfo;
51087 
51088 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryDedicatedAllocateInfoVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51089     VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo( VULKAN_HPP_NAMESPACE::Image  image_  = {},
51090                                                       VULKAN_HPP_NAMESPACE::Buffer buffer_ = {},
51091                                                       const void *                 pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
51092       : pNext{ pNext_ }
51093       , image{ image_ }
51094       , buffer{ buffer_ }
51095     {
51096     }
51097 
51098     VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51099 
MemoryDedicatedAllocateInfoVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51100     MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
51101       : MemoryDedicatedAllocateInfo( *reinterpret_cast<MemoryDedicatedAllocateInfo const *>( &rhs ) )
51102     {
51103     }
51104 
51105     MemoryDedicatedAllocateInfo & operator=( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51106 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51107 
operator =VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51108     MemoryDedicatedAllocateInfo & operator=( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
51109     {
51110       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo const *>( &rhs );
51111       return *this;
51112     }
51113 
51114 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51115     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51116     {
51117       pNext = pNext_;
51118       return *this;
51119     }
51120 
setImageVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51121     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
51122     {
51123       image = image_;
51124       return *this;
51125     }
51126 
setBufferVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51127     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
51128     {
51129       buffer = buffer_;
51130       return *this;
51131     }
51132 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51133 
operator VkMemoryDedicatedAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51134     operator VkMemoryDedicatedAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
51135     {
51136       return *reinterpret_cast<const VkMemoryDedicatedAllocateInfo *>( this );
51137     }
51138 
operator VkMemoryDedicatedAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51139     operator VkMemoryDedicatedAllocateInfo &() VULKAN_HPP_NOEXCEPT
51140     {
51141       return *reinterpret_cast<VkMemoryDedicatedAllocateInfo *>( this );
51142     }
51143 
51144 #if defined( VULKAN_HPP_USE_REFLECT )
51145 #  if 14 <= VULKAN_HPP_CPP_VERSION
51146     auto
51147 #  else
51148     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::Buffer const &>
51149 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51150       reflect() const VULKAN_HPP_NOEXCEPT
51151     {
51152       return std::tie( sType, pNext, image, buffer );
51153     }
51154 #endif
51155 
51156 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51157     auto operator<=>( MemoryDedicatedAllocateInfo const & ) const = default;
51158 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51159     bool operator==( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
51160     {
51161 #  if defined( VULKAN_HPP_USE_REFLECT )
51162       return this->reflect() == rhs.reflect();
51163 #  else
51164       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( buffer == rhs.buffer );
51165 #  endif
51166     }
51167 
operator !=VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo51168     bool operator!=( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
51169     {
51170       return !operator==( rhs );
51171     }
51172 #endif
51173 
51174   public:
51175     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eMemoryDedicatedAllocateInfo;
51176     const void *                        pNext  = {};
51177     VULKAN_HPP_NAMESPACE::Image         image  = {};
51178     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
51179   };
51180 
51181   template <>
51182   struct CppType<StructureType, StructureType::eMemoryDedicatedAllocateInfo>
51183   {
51184     using Type = MemoryDedicatedAllocateInfo;
51185   };
51186 
51187   using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
51188 
51189   struct MemoryDedicatedRequirements
51190   {
51191     using NativeType = VkMemoryDedicatedRequirements;
51192 
51193     static const bool                                  allowDuplicate = false;
51194     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryDedicatedRequirements;
51195 
51196 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryDedicatedRequirementsVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements51197     VULKAN_HPP_CONSTEXPR MemoryDedicatedRequirements( VULKAN_HPP_NAMESPACE::Bool32 prefersDedicatedAllocation_  = {},
51198                                                       VULKAN_HPP_NAMESPACE::Bool32 requiresDedicatedAllocation_ = {},
51199                                                       void *                       pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
51200       : pNext{ pNext_ }
51201       , prefersDedicatedAllocation{ prefersDedicatedAllocation_ }
51202       , requiresDedicatedAllocation{ requiresDedicatedAllocation_ }
51203     {
51204     }
51205 
51206     VULKAN_HPP_CONSTEXPR MemoryDedicatedRequirements( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51207 
MemoryDedicatedRequirementsVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements51208     MemoryDedicatedRequirements( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
51209       : MemoryDedicatedRequirements( *reinterpret_cast<MemoryDedicatedRequirements const *>( &rhs ) )
51210     {
51211     }
51212 
51213     MemoryDedicatedRequirements & operator=( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51214 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51215 
operator =VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements51216     MemoryDedicatedRequirements & operator=( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
51217     {
51218       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements const *>( &rhs );
51219       return *this;
51220     }
51221 
operator VkMemoryDedicatedRequirements const&VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements51222     operator VkMemoryDedicatedRequirements const &() const VULKAN_HPP_NOEXCEPT
51223     {
51224       return *reinterpret_cast<const VkMemoryDedicatedRequirements *>( this );
51225     }
51226 
operator VkMemoryDedicatedRequirements&VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements51227     operator VkMemoryDedicatedRequirements &() VULKAN_HPP_NOEXCEPT
51228     {
51229       return *reinterpret_cast<VkMemoryDedicatedRequirements *>( this );
51230     }
51231 
51232 #if defined( VULKAN_HPP_USE_REFLECT )
51233 #  if 14 <= VULKAN_HPP_CPP_VERSION
51234     auto
51235 #  else
51236     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
51237 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements51238       reflect() const VULKAN_HPP_NOEXCEPT
51239     {
51240       return std::tie( sType, pNext, prefersDedicatedAllocation, requiresDedicatedAllocation );
51241     }
51242 #endif
51243 
51244 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51245     auto operator<=>( MemoryDedicatedRequirements const & ) const = default;
51246 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements51247     bool operator==( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
51248     {
51249 #  if defined( VULKAN_HPP_USE_REFLECT )
51250       return this->reflect() == rhs.reflect();
51251 #  else
51252       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation ) &&
51253              ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
51254 #  endif
51255     }
51256 
operator !=VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements51257     bool operator!=( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
51258     {
51259       return !operator==( rhs );
51260     }
51261 #endif
51262 
51263   public:
51264     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::eMemoryDedicatedRequirements;
51265     void *                              pNext                       = {};
51266     VULKAN_HPP_NAMESPACE::Bool32        prefersDedicatedAllocation  = {};
51267     VULKAN_HPP_NAMESPACE::Bool32        requiresDedicatedAllocation = {};
51268   };
51269 
51270   template <>
51271   struct CppType<StructureType, StructureType::eMemoryDedicatedRequirements>
51272   {
51273     using Type = MemoryDedicatedRequirements;
51274   };
51275 
51276   using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
51277 
51278   struct MemoryFdPropertiesKHR
51279   {
51280     using NativeType = VkMemoryFdPropertiesKHR;
51281 
51282     static const bool                                  allowDuplicate = false;
51283     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryFdPropertiesKHR;
51284 
51285 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryFdPropertiesKHRVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR51286     VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
51287       : pNext{ pNext_ }
51288       , memoryTypeBits{ memoryTypeBits_ }
51289     {
51290     }
51291 
51292     VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51293 
MemoryFdPropertiesKHRVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR51294     MemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
51295       : MemoryFdPropertiesKHR( *reinterpret_cast<MemoryFdPropertiesKHR const *>( &rhs ) )
51296     {
51297     }
51298 
51299     MemoryFdPropertiesKHR & operator=( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51300 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51301 
operator =VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR51302     MemoryFdPropertiesKHR & operator=( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
51303     {
51304       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR const *>( &rhs );
51305       return *this;
51306     }
51307 
operator VkMemoryFdPropertiesKHR const&VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR51308     operator VkMemoryFdPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
51309     {
51310       return *reinterpret_cast<const VkMemoryFdPropertiesKHR *>( this );
51311     }
51312 
operator VkMemoryFdPropertiesKHR&VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR51313     operator VkMemoryFdPropertiesKHR &() VULKAN_HPP_NOEXCEPT
51314     {
51315       return *reinterpret_cast<VkMemoryFdPropertiesKHR *>( this );
51316     }
51317 
51318 #if defined( VULKAN_HPP_USE_REFLECT )
51319 #  if 14 <= VULKAN_HPP_CPP_VERSION
51320     auto
51321 #  else
51322     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
51323 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR51324       reflect() const VULKAN_HPP_NOEXCEPT
51325     {
51326       return std::tie( sType, pNext, memoryTypeBits );
51327     }
51328 #endif
51329 
51330 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51331     auto operator<=>( MemoryFdPropertiesKHR const & ) const = default;
51332 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR51333     bool operator==( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51334     {
51335 #  if defined( VULKAN_HPP_USE_REFLECT )
51336       return this->reflect() == rhs.reflect();
51337 #  else
51338       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits );
51339 #  endif
51340     }
51341 
operator !=VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR51342     bool operator!=( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51343     {
51344       return !operator==( rhs );
51345     }
51346 #endif
51347 
51348   public:
51349     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryFdPropertiesKHR;
51350     void *                              pNext          = {};
51351     uint32_t                            memoryTypeBits = {};
51352   };
51353 
51354   template <>
51355   struct CppType<StructureType, StructureType::eMemoryFdPropertiesKHR>
51356   {
51357     using Type = MemoryFdPropertiesKHR;
51358   };
51359 
51360 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
51361   struct MemoryGetAndroidHardwareBufferInfoANDROID
51362   {
51363     using NativeType = VkMemoryGetAndroidHardwareBufferInfoANDROID;
51364 
51365     static const bool                                  allowDuplicate = false;
51366     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID;
51367 
51368 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51369     VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {},
51370                                                                     const void *                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
51371       : pNext{ pNext_ }
51372       , memory{ memory_ }
51373     {
51374     }
51375 
51376     VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51377 
MemoryGetAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51378     MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
51379       : MemoryGetAndroidHardwareBufferInfoANDROID( *reinterpret_cast<MemoryGetAndroidHardwareBufferInfoANDROID const *>( &rhs ) )
51380     {
51381     }
51382 
51383     MemoryGetAndroidHardwareBufferInfoANDROID & operator=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51384 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51385 
operator =VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51386     MemoryGetAndroidHardwareBufferInfoANDROID & operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
51387     {
51388       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID const *>( &rhs );
51389       return *this;
51390     }
51391 
51392 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51393     VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51394     {
51395       pNext = pNext_;
51396       return *this;
51397     }
51398 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51399     VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51400     {
51401       memory = memory_;
51402       return *this;
51403     }
51404 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51405 
operator VkMemoryGetAndroidHardwareBufferInfoANDROID const&VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51406     operator VkMemoryGetAndroidHardwareBufferInfoANDROID const &() const VULKAN_HPP_NOEXCEPT
51407     {
51408       return *reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID *>( this );
51409     }
51410 
operator VkMemoryGetAndroidHardwareBufferInfoANDROID&VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51411     operator VkMemoryGetAndroidHardwareBufferInfoANDROID &() VULKAN_HPP_NOEXCEPT
51412     {
51413       return *reinterpret_cast<VkMemoryGetAndroidHardwareBufferInfoANDROID *>( this );
51414     }
51415 
51416 #  if defined( VULKAN_HPP_USE_REFLECT )
51417 #    if 14 <= VULKAN_HPP_CPP_VERSION
51418     auto
51419 #    else
51420     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &>
51421 #    endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51422       reflect() const VULKAN_HPP_NOEXCEPT
51423     {
51424       return std::tie( sType, pNext, memory );
51425     }
51426 #  endif
51427 
51428 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51429     auto operator<=>( MemoryGetAndroidHardwareBufferInfoANDROID const & ) const = default;
51430 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51431     bool operator==( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
51432     {
51433 #    if defined( VULKAN_HPP_USE_REFLECT )
51434       return this->reflect() == rhs.reflect();
51435 #    else
51436       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory );
51437 #    endif
51438     }
51439 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51440     bool operator!=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
51441     {
51442       return !operator==( rhs );
51443     }
51444 #  endif
51445 
51446   public:
51447     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID;
51448     const void *                        pNext  = {};
51449     VULKAN_HPP_NAMESPACE::DeviceMemory  memory = {};
51450   };
51451 
51452   template <>
51453   struct CppType<StructureType, StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID>
51454   {
51455     using Type = MemoryGetAndroidHardwareBufferInfoANDROID;
51456   };
51457 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
51458 
51459   struct MemoryGetFdInfoKHR
51460   {
51461     using NativeType = VkMemoryGetFdInfoKHR;
51462 
51463     static const bool                                  allowDuplicate = false;
51464     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetFdInfoKHR;
51465 
51466 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetFdInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51467     VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR(
51468       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_     = {},
51469       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
51470       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
51471       : pNext{ pNext_ }
51472       , memory{ memory_ }
51473       , handleType{ handleType_ }
51474     {
51475     }
51476 
51477     VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51478 
MemoryGetFdInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51479     MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryGetFdInfoKHR( *reinterpret_cast<MemoryGetFdInfoKHR const *>( &rhs ) ) {}
51480 
51481     MemoryGetFdInfoKHR & operator=( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51482 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51483 
operator =VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51484     MemoryGetFdInfoKHR & operator=( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
51485     {
51486       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR const *>( &rhs );
51487       return *this;
51488     }
51489 
51490 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51491     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51492     {
51493       pNext = pNext_;
51494       return *this;
51495     }
51496 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51497     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51498     {
51499       memory = memory_;
51500       return *this;
51501     }
51502 
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51503     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
51504     {
51505       handleType = handleType_;
51506       return *this;
51507     }
51508 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51509 
operator VkMemoryGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51510     operator VkMemoryGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
51511     {
51512       return *reinterpret_cast<const VkMemoryGetFdInfoKHR *>( this );
51513     }
51514 
operator VkMemoryGetFdInfoKHR&VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51515     operator VkMemoryGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
51516     {
51517       return *reinterpret_cast<VkMemoryGetFdInfoKHR *>( this );
51518     }
51519 
51520 #if defined( VULKAN_HPP_USE_REFLECT )
51521 #  if 14 <= VULKAN_HPP_CPP_VERSION
51522     auto
51523 #  else
51524     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51525                const void * const &,
51526                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
51527                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
51528 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51529       reflect() const VULKAN_HPP_NOEXCEPT
51530     {
51531       return std::tie( sType, pNext, memory, handleType );
51532     }
51533 #endif
51534 
51535 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51536     auto operator<=>( MemoryGetFdInfoKHR const & ) const = default;
51537 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51538     bool operator==( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51539     {
51540 #  if defined( VULKAN_HPP_USE_REFLECT )
51541       return this->reflect() == rhs.reflect();
51542 #  else
51543       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType );
51544 #  endif
51545     }
51546 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51547     bool operator!=( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51548     {
51549       return !operator==( rhs );
51550     }
51551 #endif
51552 
51553   public:
51554     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eMemoryGetFdInfoKHR;
51555     const void *                                           pNext      = {};
51556     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory     = {};
51557     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
51558   };
51559 
51560   template <>
51561   struct CppType<StructureType, StructureType::eMemoryGetFdInfoKHR>
51562   {
51563     using Type = MemoryGetFdInfoKHR;
51564   };
51565 
51566   struct MemoryGetRemoteAddressInfoNV
51567   {
51568     using NativeType = VkMemoryGetRemoteAddressInfoNV;
51569 
51570     static const bool                                  allowDuplicate = false;
51571     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetRemoteAddressInfoNV;
51572 
51573 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetRemoteAddressInfoNVVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51574     VULKAN_HPP_CONSTEXPR MemoryGetRemoteAddressInfoNV(
51575       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_     = {},
51576       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
51577       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
51578       : pNext{ pNext_ }
51579       , memory{ memory_ }
51580       , handleType{ handleType_ }
51581     {
51582     }
51583 
51584     VULKAN_HPP_CONSTEXPR MemoryGetRemoteAddressInfoNV( MemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51585 
MemoryGetRemoteAddressInfoNVVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51586     MemoryGetRemoteAddressInfoNV( VkMemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
51587       : MemoryGetRemoteAddressInfoNV( *reinterpret_cast<MemoryGetRemoteAddressInfoNV const *>( &rhs ) )
51588     {
51589     }
51590 
51591     MemoryGetRemoteAddressInfoNV & operator=( MemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51592 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51593 
operator =VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51594     MemoryGetRemoteAddressInfoNV & operator=( VkMemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
51595     {
51596       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV const *>( &rhs );
51597       return *this;
51598     }
51599 
51600 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51601     VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51602     {
51603       pNext = pNext_;
51604       return *this;
51605     }
51606 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51607     VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51608     {
51609       memory = memory_;
51610       return *this;
51611     }
51612 
51613     VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV &
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51614       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
51615     {
51616       handleType = handleType_;
51617       return *this;
51618     }
51619 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51620 
operator VkMemoryGetRemoteAddressInfoNV const&VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51621     operator VkMemoryGetRemoteAddressInfoNV const &() const VULKAN_HPP_NOEXCEPT
51622     {
51623       return *reinterpret_cast<const VkMemoryGetRemoteAddressInfoNV *>( this );
51624     }
51625 
operator VkMemoryGetRemoteAddressInfoNV&VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51626     operator VkMemoryGetRemoteAddressInfoNV &() VULKAN_HPP_NOEXCEPT
51627     {
51628       return *reinterpret_cast<VkMemoryGetRemoteAddressInfoNV *>( this );
51629     }
51630 
51631 #if defined( VULKAN_HPP_USE_REFLECT )
51632 #  if 14 <= VULKAN_HPP_CPP_VERSION
51633     auto
51634 #  else
51635     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51636                const void * const &,
51637                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
51638                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
51639 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51640       reflect() const VULKAN_HPP_NOEXCEPT
51641     {
51642       return std::tie( sType, pNext, memory, handleType );
51643     }
51644 #endif
51645 
51646 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51647     auto operator<=>( MemoryGetRemoteAddressInfoNV const & ) const = default;
51648 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51649     bool operator==( MemoryGetRemoteAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
51650     {
51651 #  if defined( VULKAN_HPP_USE_REFLECT )
51652       return this->reflect() == rhs.reflect();
51653 #  else
51654       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType );
51655 #  endif
51656     }
51657 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51658     bool operator!=( MemoryGetRemoteAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
51659     {
51660       return !operator==( rhs );
51661     }
51662 #endif
51663 
51664   public:
51665     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eMemoryGetRemoteAddressInfoNV;
51666     const void *                                           pNext      = {};
51667     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory     = {};
51668     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
51669   };
51670 
51671   template <>
51672   struct CppType<StructureType, StructureType::eMemoryGetRemoteAddressInfoNV>
51673   {
51674     using Type = MemoryGetRemoteAddressInfoNV;
51675   };
51676 
51677 #if defined( VK_USE_PLATFORM_WIN32_KHR )
51678   struct MemoryGetWin32HandleInfoKHR
51679   {
51680     using NativeType = VkMemoryGetWin32HandleInfoKHR;
51681 
51682     static const bool                                  allowDuplicate = false;
51683     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetWin32HandleInfoKHR;
51684 
51685 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51686     VULKAN_HPP_CONSTEXPR MemoryGetWin32HandleInfoKHR(
51687       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_     = {},
51688       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
51689       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
51690       : pNext{ pNext_ }
51691       , memory{ memory_ }
51692       , handleType{ handleType_ }
51693     {
51694     }
51695 
51696     VULKAN_HPP_CONSTEXPR MemoryGetWin32HandleInfoKHR( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51697 
MemoryGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51698     MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
51699       : MemoryGetWin32HandleInfoKHR( *reinterpret_cast<MemoryGetWin32HandleInfoKHR const *>( &rhs ) )
51700     {
51701     }
51702 
51703     MemoryGetWin32HandleInfoKHR & operator=( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51704 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51705 
operator =VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51706     MemoryGetWin32HandleInfoKHR & operator=( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
51707     {
51708       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR const *>( &rhs );
51709       return *this;
51710     }
51711 
51712 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51713     VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51714     {
51715       pNext = pNext_;
51716       return *this;
51717     }
51718 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51719     VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51720     {
51721       memory = memory_;
51722       return *this;
51723     }
51724 
51725     VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51726       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
51727     {
51728       handleType = handleType_;
51729       return *this;
51730     }
51731 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51732 
operator VkMemoryGetWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51733     operator VkMemoryGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
51734     {
51735       return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR *>( this );
51736     }
51737 
operator VkMemoryGetWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51738     operator VkMemoryGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
51739     {
51740       return *reinterpret_cast<VkMemoryGetWin32HandleInfoKHR *>( this );
51741     }
51742 
51743 #  if defined( VULKAN_HPP_USE_REFLECT )
51744 #    if 14 <= VULKAN_HPP_CPP_VERSION
51745     auto
51746 #    else
51747     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51748                const void * const &,
51749                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
51750                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
51751 #    endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51752       reflect() const VULKAN_HPP_NOEXCEPT
51753     {
51754       return std::tie( sType, pNext, memory, handleType );
51755     }
51756 #  endif
51757 
51758 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51759     auto operator<=>( MemoryGetWin32HandleInfoKHR const & ) const = default;
51760 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51761     bool operator==( MemoryGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51762     {
51763 #    if defined( VULKAN_HPP_USE_REFLECT )
51764       return this->reflect() == rhs.reflect();
51765 #    else
51766       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType );
51767 #    endif
51768     }
51769 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51770     bool operator!=( MemoryGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51771     {
51772       return !operator==( rhs );
51773     }
51774 #  endif
51775 
51776   public:
51777     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eMemoryGetWin32HandleInfoKHR;
51778     const void *                                           pNext      = {};
51779     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory     = {};
51780     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
51781   };
51782 
51783   template <>
51784   struct CppType<StructureType, StructureType::eMemoryGetWin32HandleInfoKHR>
51785   {
51786     using Type = MemoryGetWin32HandleInfoKHR;
51787   };
51788 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
51789 
51790 #if defined( VK_USE_PLATFORM_FUCHSIA )
51791   struct MemoryGetZirconHandleInfoFUCHSIA
51792   {
51793     using NativeType = VkMemoryGetZirconHandleInfoFUCHSIA;
51794 
51795     static const bool                                  allowDuplicate = false;
51796     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetZirconHandleInfoFUCHSIA;
51797 
51798 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51799     VULKAN_HPP_CONSTEXPR MemoryGetZirconHandleInfoFUCHSIA(
51800       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_     = {},
51801       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
51802       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
51803       : pNext{ pNext_ }
51804       , memory{ memory_ }
51805       , handleType{ handleType_ }
51806     {
51807     }
51808 
51809     VULKAN_HPP_CONSTEXPR MemoryGetZirconHandleInfoFUCHSIA( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51810 
MemoryGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51811     MemoryGetZirconHandleInfoFUCHSIA( VkMemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
51812       : MemoryGetZirconHandleInfoFUCHSIA( *reinterpret_cast<MemoryGetZirconHandleInfoFUCHSIA const *>( &rhs ) )
51813     {
51814     }
51815 
51816     MemoryGetZirconHandleInfoFUCHSIA & operator=( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51817 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51818 
operator =VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51819     MemoryGetZirconHandleInfoFUCHSIA & operator=( VkMemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
51820     {
51821       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA const *>( &rhs );
51822       return *this;
51823     }
51824 
51825 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51826     VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51827     {
51828       pNext = pNext_;
51829       return *this;
51830     }
51831 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51832     VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51833     {
51834       memory = memory_;
51835       return *this;
51836     }
51837 
51838     VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51839       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
51840     {
51841       handleType = handleType_;
51842       return *this;
51843     }
51844 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51845 
operator VkMemoryGetZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51846     operator VkMemoryGetZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
51847     {
51848       return *reinterpret_cast<const VkMemoryGetZirconHandleInfoFUCHSIA *>( this );
51849     }
51850 
operator VkMemoryGetZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51851     operator VkMemoryGetZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
51852     {
51853       return *reinterpret_cast<VkMemoryGetZirconHandleInfoFUCHSIA *>( this );
51854     }
51855 
51856 #  if defined( VULKAN_HPP_USE_REFLECT )
51857 #    if 14 <= VULKAN_HPP_CPP_VERSION
51858     auto
51859 #    else
51860     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51861                const void * const &,
51862                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
51863                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
51864 #    endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51865       reflect() const VULKAN_HPP_NOEXCEPT
51866     {
51867       return std::tie( sType, pNext, memory, handleType );
51868     }
51869 #  endif
51870 
51871 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51872     auto operator<=>( MemoryGetZirconHandleInfoFUCHSIA const & ) const = default;
51873 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51874     bool operator==( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
51875     {
51876 #    if defined( VULKAN_HPP_USE_REFLECT )
51877       return this->reflect() == rhs.reflect();
51878 #    else
51879       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType );
51880 #    endif
51881     }
51882 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51883     bool operator!=( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
51884     {
51885       return !operator==( rhs );
51886     }
51887 #  endif
51888 
51889   public:
51890     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eMemoryGetZirconHandleInfoFUCHSIA;
51891     const void *                                           pNext      = {};
51892     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory     = {};
51893     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
51894   };
51895 
51896   template <>
51897   struct CppType<StructureType, StructureType::eMemoryGetZirconHandleInfoFUCHSIA>
51898   {
51899     using Type = MemoryGetZirconHandleInfoFUCHSIA;
51900   };
51901 #endif /*VK_USE_PLATFORM_FUCHSIA*/
51902 
51903   struct MemoryHeap
51904   {
51905     using NativeType = VkMemoryHeap;
51906 
51907 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryHeapVULKAN_HPP_NAMESPACE::MemoryHeap51908     VULKAN_HPP_CONSTEXPR MemoryHeap( VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT
51909       : size{ size_ }
51910       , flags{ flags_ }
51911     {
51912     }
51913 
51914     VULKAN_HPP_CONSTEXPR MemoryHeap( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51915 
MemoryHeapVULKAN_HPP_NAMESPACE::MemoryHeap51916     MemoryHeap( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryHeap( *reinterpret_cast<MemoryHeap const *>( &rhs ) ) {}
51917 
51918     MemoryHeap & operator=( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51919 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51920 
operator =VULKAN_HPP_NAMESPACE::MemoryHeap51921     MemoryHeap & operator=( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT
51922     {
51923       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryHeap const *>( &rhs );
51924       return *this;
51925     }
51926 
operator VkMemoryHeap const&VULKAN_HPP_NAMESPACE::MemoryHeap51927     operator VkMemoryHeap const &() const VULKAN_HPP_NOEXCEPT
51928     {
51929       return *reinterpret_cast<const VkMemoryHeap *>( this );
51930     }
51931 
operator VkMemoryHeap&VULKAN_HPP_NAMESPACE::MemoryHeap51932     operator VkMemoryHeap &() VULKAN_HPP_NOEXCEPT
51933     {
51934       return *reinterpret_cast<VkMemoryHeap *>( this );
51935     }
51936 
51937 #if defined( VULKAN_HPP_USE_REFLECT )
51938 #  if 14 <= VULKAN_HPP_CPP_VERSION
51939     auto
51940 #  else
51941     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::MemoryHeapFlags const &>
51942 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryHeap51943       reflect() const VULKAN_HPP_NOEXCEPT
51944     {
51945       return std::tie( size, flags );
51946     }
51947 #endif
51948 
51949 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51950     auto operator<=>( MemoryHeap const & ) const = default;
51951 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryHeap51952     bool operator==( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT
51953     {
51954 #  if defined( VULKAN_HPP_USE_REFLECT )
51955       return this->reflect() == rhs.reflect();
51956 #  else
51957       return ( size == rhs.size ) && ( flags == rhs.flags );
51958 #  endif
51959     }
51960 
operator !=VULKAN_HPP_NAMESPACE::MemoryHeap51961     bool operator!=( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT
51962     {
51963       return !operator==( rhs );
51964     }
51965 #endif
51966 
51967   public:
51968     VULKAN_HPP_NAMESPACE::DeviceSize      size  = {};
51969     VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags = {};
51970   };
51971 
51972   struct MemoryHostPointerPropertiesEXT
51973   {
51974     using NativeType = VkMemoryHostPointerPropertiesEXT;
51975 
51976     static const bool                                  allowDuplicate = false;
51977     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryHostPointerPropertiesEXT;
51978 
51979 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryHostPointerPropertiesEXTVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51980     VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
51981       : pNext{ pNext_ }
51982       , memoryTypeBits{ memoryTypeBits_ }
51983     {
51984     }
51985 
51986     VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51987 
MemoryHostPointerPropertiesEXTVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51988     MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51989       : MemoryHostPointerPropertiesEXT( *reinterpret_cast<MemoryHostPointerPropertiesEXT const *>( &rhs ) )
51990     {
51991     }
51992 
51993     MemoryHostPointerPropertiesEXT & operator=( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51994 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51995 
operator =VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51996     MemoryHostPointerPropertiesEXT & operator=( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51997     {
51998       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT const *>( &rhs );
51999       return *this;
52000     }
52001 
operator VkMemoryHostPointerPropertiesEXT const&VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT52002     operator VkMemoryHostPointerPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
52003     {
52004       return *reinterpret_cast<const VkMemoryHostPointerPropertiesEXT *>( this );
52005     }
52006 
operator VkMemoryHostPointerPropertiesEXT&VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT52007     operator VkMemoryHostPointerPropertiesEXT &() VULKAN_HPP_NOEXCEPT
52008     {
52009       return *reinterpret_cast<VkMemoryHostPointerPropertiesEXT *>( this );
52010     }
52011 
52012 #if defined( VULKAN_HPP_USE_REFLECT )
52013 #  if 14 <= VULKAN_HPP_CPP_VERSION
52014     auto
52015 #  else
52016     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
52017 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT52018       reflect() const VULKAN_HPP_NOEXCEPT
52019     {
52020       return std::tie( sType, pNext, memoryTypeBits );
52021     }
52022 #endif
52023 
52024 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52025     auto operator<=>( MemoryHostPointerPropertiesEXT const & ) const = default;
52026 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT52027     bool operator==( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52028     {
52029 #  if defined( VULKAN_HPP_USE_REFLECT )
52030       return this->reflect() == rhs.reflect();
52031 #  else
52032       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits );
52033 #  endif
52034     }
52035 
operator !=VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT52036     bool operator!=( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52037     {
52038       return !operator==( rhs );
52039     }
52040 #endif
52041 
52042   public:
52043     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryHostPointerPropertiesEXT;
52044     void *                              pNext          = {};
52045     uint32_t                            memoryTypeBits = {};
52046   };
52047 
52048   template <>
52049   struct CppType<StructureType, StructureType::eMemoryHostPointerPropertiesEXT>
52050   {
52051     using Type = MemoryHostPointerPropertiesEXT;
52052   };
52053 
52054   struct MemoryMapInfo
52055   {
52056     using NativeType = VkMemoryMapInfo;
52057 
52058     static const bool                                  allowDuplicate = false;
52059     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryMapInfo;
52060 
52061 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryMapInfoVULKAN_HPP_NAMESPACE::MemoryMapInfo52062     VULKAN_HPP_CONSTEXPR MemoryMapInfo( VULKAN_HPP_NAMESPACE::MemoryMapFlags flags_  = {},
52063                                         VULKAN_HPP_NAMESPACE::DeviceMemory   memory_ = {},
52064                                         VULKAN_HPP_NAMESPACE::DeviceSize     offset_ = {},
52065                                         VULKAN_HPP_NAMESPACE::DeviceSize     size_   = {},
52066                                         const void *                         pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
52067       : pNext{ pNext_ }
52068       , flags{ flags_ }
52069       , memory{ memory_ }
52070       , offset{ offset_ }
52071       , size{ size_ }
52072     {
52073     }
52074 
52075     VULKAN_HPP_CONSTEXPR MemoryMapInfo( MemoryMapInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52076 
MemoryMapInfoVULKAN_HPP_NAMESPACE::MemoryMapInfo52077     MemoryMapInfo( VkMemoryMapInfo const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryMapInfo( *reinterpret_cast<MemoryMapInfo const *>( &rhs ) ) {}
52078 
52079     MemoryMapInfo & operator=( MemoryMapInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52080 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52081 
operator =VULKAN_HPP_NAMESPACE::MemoryMapInfo52082     MemoryMapInfo & operator=( VkMemoryMapInfo const & rhs ) VULKAN_HPP_NOEXCEPT
52083     {
52084       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryMapInfo const *>( &rhs );
52085       return *this;
52086     }
52087 
52088 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryMapInfo52089     VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52090     {
52091       pNext = pNext_;
52092       return *this;
52093     }
52094 
setFlagsVULKAN_HPP_NAMESPACE::MemoryMapInfo52095     VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo & setFlags( VULKAN_HPP_NAMESPACE::MemoryMapFlags flags_ ) VULKAN_HPP_NOEXCEPT
52096     {
52097       flags = flags_;
52098       return *this;
52099     }
52100 
setMemoryVULKAN_HPP_NAMESPACE::MemoryMapInfo52101     VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
52102     {
52103       memory = memory_;
52104       return *this;
52105     }
52106 
setOffsetVULKAN_HPP_NAMESPACE::MemoryMapInfo52107     VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
52108     {
52109       offset = offset_;
52110       return *this;
52111     }
52112 
setSizeVULKAN_HPP_NAMESPACE::MemoryMapInfo52113     VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
52114     {
52115       size = size_;
52116       return *this;
52117     }
52118 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52119 
operator VkMemoryMapInfo const&VULKAN_HPP_NAMESPACE::MemoryMapInfo52120     operator VkMemoryMapInfo const &() const VULKAN_HPP_NOEXCEPT
52121     {
52122       return *reinterpret_cast<const VkMemoryMapInfo *>( this );
52123     }
52124 
operator VkMemoryMapInfo&VULKAN_HPP_NAMESPACE::MemoryMapInfo52125     operator VkMemoryMapInfo &() VULKAN_HPP_NOEXCEPT
52126     {
52127       return *reinterpret_cast<VkMemoryMapInfo *>( this );
52128     }
52129 
52130 #if defined( VULKAN_HPP_USE_REFLECT )
52131 #  if 14 <= VULKAN_HPP_CPP_VERSION
52132     auto
52133 #  else
52134     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
52135                const void * const &,
52136                VULKAN_HPP_NAMESPACE::MemoryMapFlags const &,
52137                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
52138                VULKAN_HPP_NAMESPACE::DeviceSize const &,
52139                VULKAN_HPP_NAMESPACE::DeviceSize const &>
52140 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryMapInfo52141       reflect() const VULKAN_HPP_NOEXCEPT
52142     {
52143       return std::tie( sType, pNext, flags, memory, offset, size );
52144     }
52145 #endif
52146 
52147 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52148     auto operator<=>( MemoryMapInfo const & ) const = default;
52149 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryMapInfo52150     bool operator==( MemoryMapInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
52151     {
52152 #  if defined( VULKAN_HPP_USE_REFLECT )
52153       return this->reflect() == rhs.reflect();
52154 #  else
52155       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( memory == rhs.memory ) && ( offset == rhs.offset ) &&
52156              ( size == rhs.size );
52157 #  endif
52158     }
52159 
operator !=VULKAN_HPP_NAMESPACE::MemoryMapInfo52160     bool operator!=( MemoryMapInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
52161     {
52162       return !operator==( rhs );
52163     }
52164 #endif
52165 
52166   public:
52167     VULKAN_HPP_NAMESPACE::StructureType  sType  = StructureType::eMemoryMapInfo;
52168     const void *                         pNext  = {};
52169     VULKAN_HPP_NAMESPACE::MemoryMapFlags flags  = {};
52170     VULKAN_HPP_NAMESPACE::DeviceMemory   memory = {};
52171     VULKAN_HPP_NAMESPACE::DeviceSize     offset = {};
52172     VULKAN_HPP_NAMESPACE::DeviceSize     size   = {};
52173   };
52174 
52175   template <>
52176   struct CppType<StructureType, StructureType::eMemoryMapInfo>
52177   {
52178     using Type = MemoryMapInfo;
52179   };
52180 
52181   using MemoryMapInfoKHR = MemoryMapInfo;
52182 
52183   struct MemoryMapPlacedInfoEXT
52184   {
52185     using NativeType = VkMemoryMapPlacedInfoEXT;
52186 
52187     static const bool                                  allowDuplicate = false;
52188     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryMapPlacedInfoEXT;
52189 
52190 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryMapPlacedInfoEXTVULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT52191     VULKAN_HPP_CONSTEXPR MemoryMapPlacedInfoEXT( void * pPlacedAddress_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
52192       : pNext{ pNext_ }
52193       , pPlacedAddress{ pPlacedAddress_ }
52194     {
52195     }
52196 
52197     VULKAN_HPP_CONSTEXPR MemoryMapPlacedInfoEXT( MemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52198 
MemoryMapPlacedInfoEXTVULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT52199     MemoryMapPlacedInfoEXT( VkMemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52200       : MemoryMapPlacedInfoEXT( *reinterpret_cast<MemoryMapPlacedInfoEXT const *>( &rhs ) )
52201     {
52202     }
52203 
52204     MemoryMapPlacedInfoEXT & operator=( MemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52205 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52206 
operator =VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT52207     MemoryMapPlacedInfoEXT & operator=( VkMemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52208     {
52209       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT const *>( &rhs );
52210       return *this;
52211     }
52212 
52213 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT52214     VULKAN_HPP_CONSTEXPR_14 MemoryMapPlacedInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52215     {
52216       pNext = pNext_;
52217       return *this;
52218     }
52219 
setPPlacedAddressVULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT52220     VULKAN_HPP_CONSTEXPR_14 MemoryMapPlacedInfoEXT & setPPlacedAddress( void * pPlacedAddress_ ) VULKAN_HPP_NOEXCEPT
52221     {
52222       pPlacedAddress = pPlacedAddress_;
52223       return *this;
52224     }
52225 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52226 
operator VkMemoryMapPlacedInfoEXT const&VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT52227     operator VkMemoryMapPlacedInfoEXT const &() const VULKAN_HPP_NOEXCEPT
52228     {
52229       return *reinterpret_cast<const VkMemoryMapPlacedInfoEXT *>( this );
52230     }
52231 
operator VkMemoryMapPlacedInfoEXT&VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT52232     operator VkMemoryMapPlacedInfoEXT &() VULKAN_HPP_NOEXCEPT
52233     {
52234       return *reinterpret_cast<VkMemoryMapPlacedInfoEXT *>( this );
52235     }
52236 
52237 #if defined( VULKAN_HPP_USE_REFLECT )
52238 #  if 14 <= VULKAN_HPP_CPP_VERSION
52239     auto
52240 #  else
52241     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, void * const &>
52242 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT52243       reflect() const VULKAN_HPP_NOEXCEPT
52244     {
52245       return std::tie( sType, pNext, pPlacedAddress );
52246     }
52247 #endif
52248 
52249 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52250     auto operator<=>( MemoryMapPlacedInfoEXT const & ) const = default;
52251 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT52252     bool operator==( MemoryMapPlacedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52253     {
52254 #  if defined( VULKAN_HPP_USE_REFLECT )
52255       return this->reflect() == rhs.reflect();
52256 #  else
52257       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pPlacedAddress == rhs.pPlacedAddress );
52258 #  endif
52259     }
52260 
operator !=VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT52261     bool operator!=( MemoryMapPlacedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52262     {
52263       return !operator==( rhs );
52264     }
52265 #endif
52266 
52267   public:
52268     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryMapPlacedInfoEXT;
52269     const void *                        pNext          = {};
52270     void *                              pPlacedAddress = {};
52271   };
52272 
52273   template <>
52274   struct CppType<StructureType, StructureType::eMemoryMapPlacedInfoEXT>
52275   {
52276     using Type = MemoryMapPlacedInfoEXT;
52277   };
52278 
52279   struct MemoryOpaqueCaptureAddressAllocateInfo
52280   {
52281     using NativeType = VkMemoryOpaqueCaptureAddressAllocateInfo;
52282 
52283     static const bool                                  allowDuplicate = false;
52284     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo;
52285 
52286 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryOpaqueCaptureAddressAllocateInfoVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo52287     VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( uint64_t opaqueCaptureAddress_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
52288       : pNext{ pNext_ }
52289       , opaqueCaptureAddress{ opaqueCaptureAddress_ }
52290     {
52291     }
52292 
52293     VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52294 
MemoryOpaqueCaptureAddressAllocateInfoVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo52295     MemoryOpaqueCaptureAddressAllocateInfo( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
52296       : MemoryOpaqueCaptureAddressAllocateInfo( *reinterpret_cast<MemoryOpaqueCaptureAddressAllocateInfo const *>( &rhs ) )
52297     {
52298     }
52299 
52300     MemoryOpaqueCaptureAddressAllocateInfo & operator=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52301 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52302 
operator =VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo52303     MemoryOpaqueCaptureAddressAllocateInfo & operator=( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
52304     {
52305       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo const *>( &rhs );
52306       return *this;
52307     }
52308 
52309 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo52310     VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52311     {
52312       pNext = pNext_;
52313       return *this;
52314     }
52315 
setOpaqueCaptureAddressVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo52316     VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT
52317     {
52318       opaqueCaptureAddress = opaqueCaptureAddress_;
52319       return *this;
52320     }
52321 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52322 
operator VkMemoryOpaqueCaptureAddressAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo52323     operator VkMemoryOpaqueCaptureAddressAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
52324     {
52325       return *reinterpret_cast<const VkMemoryOpaqueCaptureAddressAllocateInfo *>( this );
52326     }
52327 
operator VkMemoryOpaqueCaptureAddressAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo52328     operator VkMemoryOpaqueCaptureAddressAllocateInfo &() VULKAN_HPP_NOEXCEPT
52329     {
52330       return *reinterpret_cast<VkMemoryOpaqueCaptureAddressAllocateInfo *>( this );
52331     }
52332 
52333 #if defined( VULKAN_HPP_USE_REFLECT )
52334 #  if 14 <= VULKAN_HPP_CPP_VERSION
52335     auto
52336 #  else
52337     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
52338 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo52339       reflect() const VULKAN_HPP_NOEXCEPT
52340     {
52341       return std::tie( sType, pNext, opaqueCaptureAddress );
52342     }
52343 #endif
52344 
52345 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52346     auto operator<=>( MemoryOpaqueCaptureAddressAllocateInfo const & ) const = default;
52347 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo52348     bool operator==( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
52349     {
52350 #  if defined( VULKAN_HPP_USE_REFLECT )
52351       return this->reflect() == rhs.reflect();
52352 #  else
52353       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress );
52354 #  endif
52355     }
52356 
operator !=VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo52357     bool operator!=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
52358     {
52359       return !operator==( rhs );
52360     }
52361 #endif
52362 
52363   public:
52364     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo;
52365     const void *                        pNext                = {};
52366     uint64_t                            opaqueCaptureAddress = {};
52367   };
52368 
52369   template <>
52370   struct CppType<StructureType, StructureType::eMemoryOpaqueCaptureAddressAllocateInfo>
52371   {
52372     using Type = MemoryOpaqueCaptureAddressAllocateInfo;
52373   };
52374 
52375   using MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
52376 
52377   struct MemoryPriorityAllocateInfoEXT
52378   {
52379     using NativeType = VkMemoryPriorityAllocateInfoEXT;
52380 
52381     static const bool                                  allowDuplicate = false;
52382     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryPriorityAllocateInfoEXT;
52383 
52384 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryPriorityAllocateInfoEXTVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52385     VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT( float priority_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
52386       : pNext{ pNext_ }
52387       , priority{ priority_ }
52388     {
52389     }
52390 
52391     VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52392 
MemoryPriorityAllocateInfoEXTVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52393     MemoryPriorityAllocateInfoEXT( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52394       : MemoryPriorityAllocateInfoEXT( *reinterpret_cast<MemoryPriorityAllocateInfoEXT const *>( &rhs ) )
52395     {
52396     }
52397 
52398     MemoryPriorityAllocateInfoEXT & operator=( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52399 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52400 
operator =VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52401     MemoryPriorityAllocateInfoEXT & operator=( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52402     {
52403       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT const *>( &rhs );
52404       return *this;
52405     }
52406 
52407 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52408     VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52409     {
52410       pNext = pNext_;
52411       return *this;
52412     }
52413 
setPriorityVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52414     VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & setPriority( float priority_ ) VULKAN_HPP_NOEXCEPT
52415     {
52416       priority = priority_;
52417       return *this;
52418     }
52419 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52420 
operator VkMemoryPriorityAllocateInfoEXT const&VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52421     operator VkMemoryPriorityAllocateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
52422     {
52423       return *reinterpret_cast<const VkMemoryPriorityAllocateInfoEXT *>( this );
52424     }
52425 
operator VkMemoryPriorityAllocateInfoEXT&VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52426     operator VkMemoryPriorityAllocateInfoEXT &() VULKAN_HPP_NOEXCEPT
52427     {
52428       return *reinterpret_cast<VkMemoryPriorityAllocateInfoEXT *>( this );
52429     }
52430 
52431 #if defined( VULKAN_HPP_USE_REFLECT )
52432 #  if 14 <= VULKAN_HPP_CPP_VERSION
52433     auto
52434 #  else
52435     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, float const &>
52436 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52437       reflect() const VULKAN_HPP_NOEXCEPT
52438     {
52439       return std::tie( sType, pNext, priority );
52440     }
52441 #endif
52442 
52443 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52444     auto operator<=>( MemoryPriorityAllocateInfoEXT const & ) const = default;
52445 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52446     bool operator==( MemoryPriorityAllocateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52447     {
52448 #  if defined( VULKAN_HPP_USE_REFLECT )
52449       return this->reflect() == rhs.reflect();
52450 #  else
52451       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( priority == rhs.priority );
52452 #  endif
52453     }
52454 
operator !=VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52455     bool operator!=( MemoryPriorityAllocateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52456     {
52457       return !operator==( rhs );
52458     }
52459 #endif
52460 
52461   public:
52462     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eMemoryPriorityAllocateInfoEXT;
52463     const void *                        pNext    = {};
52464     float                               priority = {};
52465   };
52466 
52467   template <>
52468   struct CppType<StructureType, StructureType::eMemoryPriorityAllocateInfoEXT>
52469   {
52470     using Type = MemoryPriorityAllocateInfoEXT;
52471   };
52472 
52473   struct MemoryRequirements
52474   {
52475     using NativeType = VkMemoryRequirements;
52476 
52477 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryRequirementsVULKAN_HPP_NAMESPACE::MemoryRequirements52478     VULKAN_HPP_CONSTEXPR MemoryRequirements( VULKAN_HPP_NAMESPACE::DeviceSize size_           = {},
52479                                              VULKAN_HPP_NAMESPACE::DeviceSize alignment_      = {},
52480                                              uint32_t                         memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT
52481       : size{ size_ }
52482       , alignment{ alignment_ }
52483       , memoryTypeBits{ memoryTypeBits_ }
52484     {
52485     }
52486 
52487     VULKAN_HPP_CONSTEXPR MemoryRequirements( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52488 
MemoryRequirementsVULKAN_HPP_NAMESPACE::MemoryRequirements52489     MemoryRequirements( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryRequirements( *reinterpret_cast<MemoryRequirements const *>( &rhs ) ) {}
52490 
52491     MemoryRequirements & operator=( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52492 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52493 
operator =VULKAN_HPP_NAMESPACE::MemoryRequirements52494     MemoryRequirements & operator=( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
52495     {
52496       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryRequirements const *>( &rhs );
52497       return *this;
52498     }
52499 
operator VkMemoryRequirements const&VULKAN_HPP_NAMESPACE::MemoryRequirements52500     operator VkMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
52501     {
52502       return *reinterpret_cast<const VkMemoryRequirements *>( this );
52503     }
52504 
operator VkMemoryRequirements&VULKAN_HPP_NAMESPACE::MemoryRequirements52505     operator VkMemoryRequirements &() VULKAN_HPP_NOEXCEPT
52506     {
52507       return *reinterpret_cast<VkMemoryRequirements *>( this );
52508     }
52509 
52510 #if defined( VULKAN_HPP_USE_REFLECT )
52511 #  if 14 <= VULKAN_HPP_CPP_VERSION
52512     auto
52513 #  else
52514     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
52515 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryRequirements52516       reflect() const VULKAN_HPP_NOEXCEPT
52517     {
52518       return std::tie( size, alignment, memoryTypeBits );
52519     }
52520 #endif
52521 
52522 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52523     auto operator<=>( MemoryRequirements const & ) const = default;
52524 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryRequirements52525     bool operator==( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
52526     {
52527 #  if defined( VULKAN_HPP_USE_REFLECT )
52528       return this->reflect() == rhs.reflect();
52529 #  else
52530       return ( size == rhs.size ) && ( alignment == rhs.alignment ) && ( memoryTypeBits == rhs.memoryTypeBits );
52531 #  endif
52532     }
52533 
operator !=VULKAN_HPP_NAMESPACE::MemoryRequirements52534     bool operator!=( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
52535     {
52536       return !operator==( rhs );
52537     }
52538 #endif
52539 
52540   public:
52541     VULKAN_HPP_NAMESPACE::DeviceSize size           = {};
52542     VULKAN_HPP_NAMESPACE::DeviceSize alignment      = {};
52543     uint32_t                         memoryTypeBits = {};
52544   };
52545 
52546   struct MemoryRequirements2
52547   {
52548     using NativeType = VkMemoryRequirements2;
52549 
52550     static const bool                                  allowDuplicate = false;
52551     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryRequirements2;
52552 
52553 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryRequirements2VULKAN_HPP_NAMESPACE::MemoryRequirements252554     VULKAN_HPP_CONSTEXPR MemoryRequirements2( VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
52555       : pNext{ pNext_ }
52556       , memoryRequirements{ memoryRequirements_ }
52557     {
52558     }
52559 
52560     VULKAN_HPP_CONSTEXPR MemoryRequirements2( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52561 
MemoryRequirements2VULKAN_HPP_NAMESPACE::MemoryRequirements252562     MemoryRequirements2( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryRequirements2( *reinterpret_cast<MemoryRequirements2 const *>( &rhs ) )
52563     {
52564     }
52565 
52566     MemoryRequirements2 & operator=( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52567 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52568 
operator =VULKAN_HPP_NAMESPACE::MemoryRequirements252569     MemoryRequirements2 & operator=( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
52570     {
52571       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryRequirements2 const *>( &rhs );
52572       return *this;
52573     }
52574 
operator VkMemoryRequirements2 const&VULKAN_HPP_NAMESPACE::MemoryRequirements252575     operator VkMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT
52576     {
52577       return *reinterpret_cast<const VkMemoryRequirements2 *>( this );
52578     }
52579 
operator VkMemoryRequirements2&VULKAN_HPP_NAMESPACE::MemoryRequirements252580     operator VkMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT
52581     {
52582       return *reinterpret_cast<VkMemoryRequirements2 *>( this );
52583     }
52584 
52585 #if defined( VULKAN_HPP_USE_REFLECT )
52586 #  if 14 <= VULKAN_HPP_CPP_VERSION
52587     auto
52588 #  else
52589     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::MemoryRequirements const &>
52590 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryRequirements252591       reflect() const VULKAN_HPP_NOEXCEPT
52592     {
52593       return std::tie( sType, pNext, memoryRequirements );
52594     }
52595 #endif
52596 
52597 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52598     auto operator<=>( MemoryRequirements2 const & ) const = default;
52599 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryRequirements252600     bool operator==( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
52601     {
52602 #  if defined( VULKAN_HPP_USE_REFLECT )
52603       return this->reflect() == rhs.reflect();
52604 #  else
52605       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryRequirements == rhs.memoryRequirements );
52606 #  endif
52607     }
52608 
operator !=VULKAN_HPP_NAMESPACE::MemoryRequirements252609     bool operator!=( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
52610     {
52611       return !operator==( rhs );
52612     }
52613 #endif
52614 
52615   public:
52616     VULKAN_HPP_NAMESPACE::StructureType      sType              = StructureType::eMemoryRequirements2;
52617     void *                                   pNext              = {};
52618     VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements = {};
52619   };
52620 
52621   template <>
52622   struct CppType<StructureType, StructureType::eMemoryRequirements2>
52623   {
52624     using Type = MemoryRequirements2;
52625   };
52626 
52627   using MemoryRequirements2KHR = MemoryRequirements2;
52628 
52629   struct MemoryType
52630   {
52631     using NativeType = VkMemoryType;
52632 
52633 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryTypeVULKAN_HPP_NAMESPACE::MemoryType52634     VULKAN_HPP_CONSTEXPR MemoryType( VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags_ = {}, uint32_t heapIndex_ = {} ) VULKAN_HPP_NOEXCEPT
52635       : propertyFlags{ propertyFlags_ }
52636       , heapIndex{ heapIndex_ }
52637     {
52638     }
52639 
52640     VULKAN_HPP_CONSTEXPR MemoryType( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52641 
MemoryTypeVULKAN_HPP_NAMESPACE::MemoryType52642     MemoryType( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryType( *reinterpret_cast<MemoryType const *>( &rhs ) ) {}
52643 
52644     MemoryType & operator=( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52645 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52646 
operator =VULKAN_HPP_NAMESPACE::MemoryType52647     MemoryType & operator=( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT
52648     {
52649       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryType const *>( &rhs );
52650       return *this;
52651     }
52652 
operator VkMemoryType const&VULKAN_HPP_NAMESPACE::MemoryType52653     operator VkMemoryType const &() const VULKAN_HPP_NOEXCEPT
52654     {
52655       return *reinterpret_cast<const VkMemoryType *>( this );
52656     }
52657 
operator VkMemoryType&VULKAN_HPP_NAMESPACE::MemoryType52658     operator VkMemoryType &() VULKAN_HPP_NOEXCEPT
52659     {
52660       return *reinterpret_cast<VkMemoryType *>( this );
52661     }
52662 
52663 #if defined( VULKAN_HPP_USE_REFLECT )
52664 #  if 14 <= VULKAN_HPP_CPP_VERSION
52665     auto
52666 #  else
52667     std::tuple<VULKAN_HPP_NAMESPACE::MemoryPropertyFlags const &, uint32_t const &>
52668 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryType52669       reflect() const VULKAN_HPP_NOEXCEPT
52670     {
52671       return std::tie( propertyFlags, heapIndex );
52672     }
52673 #endif
52674 
52675 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52676     auto operator<=>( MemoryType const & ) const = default;
52677 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryType52678     bool operator==( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT
52679     {
52680 #  if defined( VULKAN_HPP_USE_REFLECT )
52681       return this->reflect() == rhs.reflect();
52682 #  else
52683       return ( propertyFlags == rhs.propertyFlags ) && ( heapIndex == rhs.heapIndex );
52684 #  endif
52685     }
52686 
operator !=VULKAN_HPP_NAMESPACE::MemoryType52687     bool operator!=( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT
52688     {
52689       return !operator==( rhs );
52690     }
52691 #endif
52692 
52693   public:
52694     VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags = {};
52695     uint32_t                                  heapIndex     = {};
52696   };
52697 
52698   struct MemoryUnmapInfo
52699   {
52700     using NativeType = VkMemoryUnmapInfo;
52701 
52702     static const bool                                  allowDuplicate = false;
52703     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryUnmapInfo;
52704 
52705 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryUnmapInfoVULKAN_HPP_NAMESPACE::MemoryUnmapInfo52706     VULKAN_HPP_CONSTEXPR MemoryUnmapInfo( VULKAN_HPP_NAMESPACE::MemoryUnmapFlags flags_  = {},
52707                                           VULKAN_HPP_NAMESPACE::DeviceMemory     memory_ = {},
52708                                           const void *                           pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
52709       : pNext{ pNext_ }
52710       , flags{ flags_ }
52711       , memory{ memory_ }
52712     {
52713     }
52714 
52715     VULKAN_HPP_CONSTEXPR MemoryUnmapInfo( MemoryUnmapInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52716 
MemoryUnmapInfoVULKAN_HPP_NAMESPACE::MemoryUnmapInfo52717     MemoryUnmapInfo( VkMemoryUnmapInfo const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryUnmapInfo( *reinterpret_cast<MemoryUnmapInfo const *>( &rhs ) ) {}
52718 
52719     MemoryUnmapInfo & operator=( MemoryUnmapInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52720 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52721 
operator =VULKAN_HPP_NAMESPACE::MemoryUnmapInfo52722     MemoryUnmapInfo & operator=( VkMemoryUnmapInfo const & rhs ) VULKAN_HPP_NOEXCEPT
52723     {
52724       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryUnmapInfo const *>( &rhs );
52725       return *this;
52726     }
52727 
52728 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryUnmapInfo52729     VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52730     {
52731       pNext = pNext_;
52732       return *this;
52733     }
52734 
setFlagsVULKAN_HPP_NAMESPACE::MemoryUnmapInfo52735     VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfo & setFlags( VULKAN_HPP_NAMESPACE::MemoryUnmapFlags flags_ ) VULKAN_HPP_NOEXCEPT
52736     {
52737       flags = flags_;
52738       return *this;
52739     }
52740 
setMemoryVULKAN_HPP_NAMESPACE::MemoryUnmapInfo52741     VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
52742     {
52743       memory = memory_;
52744       return *this;
52745     }
52746 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52747 
operator VkMemoryUnmapInfo const&VULKAN_HPP_NAMESPACE::MemoryUnmapInfo52748     operator VkMemoryUnmapInfo const &() const VULKAN_HPP_NOEXCEPT
52749     {
52750       return *reinterpret_cast<const VkMemoryUnmapInfo *>( this );
52751     }
52752 
operator VkMemoryUnmapInfo&VULKAN_HPP_NAMESPACE::MemoryUnmapInfo52753     operator VkMemoryUnmapInfo &() VULKAN_HPP_NOEXCEPT
52754     {
52755       return *reinterpret_cast<VkMemoryUnmapInfo *>( this );
52756     }
52757 
52758 #if defined( VULKAN_HPP_USE_REFLECT )
52759 #  if 14 <= VULKAN_HPP_CPP_VERSION
52760     auto
52761 #  else
52762     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
52763                const void * const &,
52764                VULKAN_HPP_NAMESPACE::MemoryUnmapFlags const &,
52765                VULKAN_HPP_NAMESPACE::DeviceMemory const &>
52766 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryUnmapInfo52767       reflect() const VULKAN_HPP_NOEXCEPT
52768     {
52769       return std::tie( sType, pNext, flags, memory );
52770     }
52771 #endif
52772 
52773 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52774     auto operator<=>( MemoryUnmapInfo const & ) const = default;
52775 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryUnmapInfo52776     bool operator==( MemoryUnmapInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
52777     {
52778 #  if defined( VULKAN_HPP_USE_REFLECT )
52779       return this->reflect() == rhs.reflect();
52780 #  else
52781       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( memory == rhs.memory );
52782 #  endif
52783     }
52784 
operator !=VULKAN_HPP_NAMESPACE::MemoryUnmapInfo52785     bool operator!=( MemoryUnmapInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
52786     {
52787       return !operator==( rhs );
52788     }
52789 #endif
52790 
52791   public:
52792     VULKAN_HPP_NAMESPACE::StructureType    sType  = StructureType::eMemoryUnmapInfo;
52793     const void *                           pNext  = {};
52794     VULKAN_HPP_NAMESPACE::MemoryUnmapFlags flags  = {};
52795     VULKAN_HPP_NAMESPACE::DeviceMemory     memory = {};
52796   };
52797 
52798   template <>
52799   struct CppType<StructureType, StructureType::eMemoryUnmapInfo>
52800   {
52801     using Type = MemoryUnmapInfo;
52802   };
52803 
52804   using MemoryUnmapInfoKHR = MemoryUnmapInfo;
52805 
52806 #if defined( VK_USE_PLATFORM_WIN32_KHR )
52807   struct MemoryWin32HandlePropertiesKHR
52808   {
52809     using NativeType = VkMemoryWin32HandlePropertiesKHR;
52810 
52811     static const bool                                  allowDuplicate = false;
52812     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryWin32HandlePropertiesKHR;
52813 
52814 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryWin32HandlePropertiesKHRVULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52815     VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
52816       : pNext{ pNext_ }
52817       , memoryTypeBits{ memoryTypeBits_ }
52818     {
52819     }
52820 
52821     VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52822 
MemoryWin32HandlePropertiesKHRVULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52823     MemoryWin32HandlePropertiesKHR( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
52824       : MemoryWin32HandlePropertiesKHR( *reinterpret_cast<MemoryWin32HandlePropertiesKHR const *>( &rhs ) )
52825     {
52826     }
52827 
52828     MemoryWin32HandlePropertiesKHR & operator=( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52829 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52830 
operator =VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52831     MemoryWin32HandlePropertiesKHR & operator=( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
52832     {
52833       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR const *>( &rhs );
52834       return *this;
52835     }
52836 
operator VkMemoryWin32HandlePropertiesKHR const&VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52837     operator VkMemoryWin32HandlePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
52838     {
52839       return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR *>( this );
52840     }
52841 
operator VkMemoryWin32HandlePropertiesKHR&VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52842     operator VkMemoryWin32HandlePropertiesKHR &() VULKAN_HPP_NOEXCEPT
52843     {
52844       return *reinterpret_cast<VkMemoryWin32HandlePropertiesKHR *>( this );
52845     }
52846 
52847 #  if defined( VULKAN_HPP_USE_REFLECT )
52848 #    if 14 <= VULKAN_HPP_CPP_VERSION
52849     auto
52850 #    else
52851     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
52852 #    endif
reflectVULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52853       reflect() const VULKAN_HPP_NOEXCEPT
52854     {
52855       return std::tie( sType, pNext, memoryTypeBits );
52856     }
52857 #  endif
52858 
52859 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52860     auto operator<=>( MemoryWin32HandlePropertiesKHR const & ) const = default;
52861 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52862     bool operator==( MemoryWin32HandlePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
52863     {
52864 #    if defined( VULKAN_HPP_USE_REFLECT )
52865       return this->reflect() == rhs.reflect();
52866 #    else
52867       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits );
52868 #    endif
52869     }
52870 
operator !=VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52871     bool operator!=( MemoryWin32HandlePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
52872     {
52873       return !operator==( rhs );
52874     }
52875 #  endif
52876 
52877   public:
52878     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryWin32HandlePropertiesKHR;
52879     void *                              pNext          = {};
52880     uint32_t                            memoryTypeBits = {};
52881   };
52882 
52883   template <>
52884   struct CppType<StructureType, StructureType::eMemoryWin32HandlePropertiesKHR>
52885   {
52886     using Type = MemoryWin32HandlePropertiesKHR;
52887   };
52888 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
52889 
52890 #if defined( VK_USE_PLATFORM_FUCHSIA )
52891   struct MemoryZirconHandlePropertiesFUCHSIA
52892   {
52893     using NativeType = VkMemoryZirconHandlePropertiesFUCHSIA;
52894 
52895     static const bool                                  allowDuplicate = false;
52896     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryZirconHandlePropertiesFUCHSIA;
52897 
52898 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryZirconHandlePropertiesFUCHSIAVULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52899     VULKAN_HPP_CONSTEXPR MemoryZirconHandlePropertiesFUCHSIA( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
52900       : pNext{ pNext_ }
52901       , memoryTypeBits{ memoryTypeBits_ }
52902     {
52903     }
52904 
52905     VULKAN_HPP_CONSTEXPR MemoryZirconHandlePropertiesFUCHSIA( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52906 
MemoryZirconHandlePropertiesFUCHSIAVULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52907     MemoryZirconHandlePropertiesFUCHSIA( VkMemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
52908       : MemoryZirconHandlePropertiesFUCHSIA( *reinterpret_cast<MemoryZirconHandlePropertiesFUCHSIA const *>( &rhs ) )
52909     {
52910     }
52911 
52912     MemoryZirconHandlePropertiesFUCHSIA & operator=( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52913 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52914 
operator =VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52915     MemoryZirconHandlePropertiesFUCHSIA & operator=( VkMemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
52916     {
52917       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA const *>( &rhs );
52918       return *this;
52919     }
52920 
operator VkMemoryZirconHandlePropertiesFUCHSIA const&VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52921     operator VkMemoryZirconHandlePropertiesFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
52922     {
52923       return *reinterpret_cast<const VkMemoryZirconHandlePropertiesFUCHSIA *>( this );
52924     }
52925 
operator VkMemoryZirconHandlePropertiesFUCHSIA&VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52926     operator VkMemoryZirconHandlePropertiesFUCHSIA &() VULKAN_HPP_NOEXCEPT
52927     {
52928       return *reinterpret_cast<VkMemoryZirconHandlePropertiesFUCHSIA *>( this );
52929     }
52930 
52931 #  if defined( VULKAN_HPP_USE_REFLECT )
52932 #    if 14 <= VULKAN_HPP_CPP_VERSION
52933     auto
52934 #    else
52935     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
52936 #    endif
reflectVULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52937       reflect() const VULKAN_HPP_NOEXCEPT
52938     {
52939       return std::tie( sType, pNext, memoryTypeBits );
52940     }
52941 #  endif
52942 
52943 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52944     auto operator<=>( MemoryZirconHandlePropertiesFUCHSIA const & ) const = default;
52945 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52946     bool operator==( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
52947     {
52948 #    if defined( VULKAN_HPP_USE_REFLECT )
52949       return this->reflect() == rhs.reflect();
52950 #    else
52951       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits );
52952 #    endif
52953     }
52954 
operator !=VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52955     bool operator!=( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
52956     {
52957       return !operator==( rhs );
52958     }
52959 #  endif
52960 
52961   public:
52962     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryZirconHandlePropertiesFUCHSIA;
52963     void *                              pNext          = {};
52964     uint32_t                            memoryTypeBits = {};
52965   };
52966 
52967   template <>
52968   struct CppType<StructureType, StructureType::eMemoryZirconHandlePropertiesFUCHSIA>
52969   {
52970     using Type = MemoryZirconHandlePropertiesFUCHSIA;
52971   };
52972 #endif /*VK_USE_PLATFORM_FUCHSIA*/
52973 
52974 #if defined( VK_USE_PLATFORM_METAL_EXT )
52975   struct MetalSurfaceCreateInfoEXT
52976   {
52977     using NativeType = VkMetalSurfaceCreateInfoEXT;
52978 
52979     static const bool                                  allowDuplicate = false;
52980     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMetalSurfaceCreateInfoEXT;
52981 
52982 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MetalSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52983     VULKAN_HPP_CONSTEXPR MetalSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags_  = {},
52984                                                     const CAMetalLayer *                             pLayer_ = {},
52985                                                     const void *                                     pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
52986       : pNext{ pNext_ }
52987       , flags{ flags_ }
52988       , pLayer{ pLayer_ }
52989     {
52990     }
52991 
52992     VULKAN_HPP_CONSTEXPR MetalSurfaceCreateInfoEXT( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52993 
MetalSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52994     MetalSurfaceCreateInfoEXT( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52995       : MetalSurfaceCreateInfoEXT( *reinterpret_cast<MetalSurfaceCreateInfoEXT const *>( &rhs ) )
52996     {
52997     }
52998 
52999     MetalSurfaceCreateInfoEXT & operator=( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53000 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53001 
operator =VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT53002     MetalSurfaceCreateInfoEXT & operator=( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53003     {
53004       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const *>( &rhs );
53005       return *this;
53006     }
53007 
53008 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT53009     VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
53010     {
53011       pNext = pNext_;
53012       return *this;
53013     }
53014 
setFlagsVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT53015     VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
53016     {
53017       flags = flags_;
53018       return *this;
53019     }
53020 
setPLayerVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT53021     VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setPLayer( const CAMetalLayer * pLayer_ ) VULKAN_HPP_NOEXCEPT
53022     {
53023       pLayer = pLayer_;
53024       return *this;
53025     }
53026 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53027 
operator VkMetalSurfaceCreateInfoEXT const&VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT53028     operator VkMetalSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53029     {
53030       return *reinterpret_cast<const VkMetalSurfaceCreateInfoEXT *>( this );
53031     }
53032 
operator VkMetalSurfaceCreateInfoEXT&VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT53033     operator VkMetalSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
53034     {
53035       return *reinterpret_cast<VkMetalSurfaceCreateInfoEXT *>( this );
53036     }
53037 
53038 #  if defined( VULKAN_HPP_USE_REFLECT )
53039 #    if 14 <= VULKAN_HPP_CPP_VERSION
53040     auto
53041 #    else
53042     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
53043                const void * const &,
53044                VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT const &,
53045                const CAMetalLayer * const &>
53046 #    endif
reflectVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT53047       reflect() const VULKAN_HPP_NOEXCEPT
53048     {
53049       return std::tie( sType, pNext, flags, pLayer );
53050     }
53051 #  endif
53052 
53053 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53054     auto operator<=>( MetalSurfaceCreateInfoEXT const & ) const = default;
53055 #  else
operator ==VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT53056     bool operator==( MetalSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53057     {
53058 #    if defined( VULKAN_HPP_USE_REFLECT )
53059       return this->reflect() == rhs.reflect();
53060 #    else
53061       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pLayer == rhs.pLayer );
53062 #    endif
53063     }
53064 
operator !=VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT53065     bool operator!=( MetalSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53066     {
53067       return !operator==( rhs );
53068     }
53069 #  endif
53070 
53071   public:
53072     VULKAN_HPP_NAMESPACE::StructureType              sType  = StructureType::eMetalSurfaceCreateInfoEXT;
53073     const void *                                     pNext  = {};
53074     VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags  = {};
53075     const CAMetalLayer *                             pLayer = {};
53076   };
53077 
53078   template <>
53079   struct CppType<StructureType, StructureType::eMetalSurfaceCreateInfoEXT>
53080   {
53081     using Type = MetalSurfaceCreateInfoEXT;
53082   };
53083 #endif /*VK_USE_PLATFORM_METAL_EXT*/
53084 
53085   struct MicromapBuildInfoEXT
53086   {
53087     using NativeType = VkMicromapBuildInfoEXT;
53088 
53089     static const bool                                  allowDuplicate = false;
53090     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMicromapBuildInfoEXT;
53091 
53092 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapBuildInfoEXTVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53093     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT( VULKAN_HPP_NAMESPACE::MicromapTypeEXT       type_  = VULKAN_HPP_NAMESPACE::MicromapTypeEXT::eOpacityMicromap,
53094                                                   VULKAN_HPP_NAMESPACE::BuildMicromapFlagsEXT flags_ = {},
53095                                                   VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT  mode_  = VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT::eBuild,
53096                                                   VULKAN_HPP_NAMESPACE::MicromapEXT           dstMicromap_                    = {},
53097                                                   uint32_t                                    usageCountsCount_               = {},
53098                                                   const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *         pUsageCounts_        = {},
53099                                                   const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_       = {},
53100                                                   VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      data_                = {},
53101                                                   VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR           scratchData_         = {},
53102                                                   VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      triangleArray_       = {},
53103                                                   VULKAN_HPP_NAMESPACE::DeviceSize                       triangleArrayStride_ = {},
53104                                                   const void *                                           pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
53105       : pNext{ pNext_ }
53106       , type{ type_ }
53107       , flags{ flags_ }
53108       , mode{ mode_ }
53109       , dstMicromap{ dstMicromap_ }
53110       , usageCountsCount{ usageCountsCount_ }
53111       , pUsageCounts{ pUsageCounts_ }
53112       , ppUsageCounts{ ppUsageCounts_ }
53113       , data{ data_ }
53114       , scratchData{ scratchData_ }
53115       , triangleArray{ triangleArray_ }
53116       , triangleArrayStride{ triangleArrayStride_ }
53117     {
53118     }
53119 
53120     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT( MicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53121 
MicromapBuildInfoEXTVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53122     MicromapBuildInfoEXT( VkMicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53123       : MicromapBuildInfoEXT( *reinterpret_cast<MicromapBuildInfoEXT const *>( &rhs ) )
53124     {
53125     }
53126 
53127 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
MicromapBuildInfoEXTVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53128     MicromapBuildInfoEXT( VULKAN_HPP_NAMESPACE::MicromapTypeEXT                                                                       type_,
53129                           VULKAN_HPP_NAMESPACE::BuildMicromapFlagsEXT                                                                 flags_,
53130                           VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT                                                                  mode_,
53131                           VULKAN_HPP_NAMESPACE::MicromapEXT                                                                           dstMicromap_,
53132                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const &         usageCounts_,
53133                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_        = {},
53134                           VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           data_                = {},
53135                           VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                                                                scratchData_         = {},
53136                           VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           triangleArray_       = {},
53137                           VULKAN_HPP_NAMESPACE::DeviceSize                                                                            triangleArrayStride_ = {},
53138                           const void *                                                                                                pNext_ = nullptr )
53139       : pNext( pNext_ )
53140       , type( type_ )
53141       , flags( flags_ )
53142       , mode( mode_ )
53143       , dstMicromap( dstMicromap_ )
53144       , usageCountsCount( static_cast<uint32_t>( !usageCounts_.empty() ? usageCounts_.size() : pUsageCounts_.size() ) )
53145       , pUsageCounts( usageCounts_.data() )
53146       , ppUsageCounts( pUsageCounts_.data() )
53147       , data( data_ )
53148       , scratchData( scratchData_ )
53149       , triangleArray( triangleArray_ )
53150       , triangleArrayStride( triangleArrayStride_ )
53151     {
53152 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
53153       VULKAN_HPP_ASSERT( ( !usageCounts_.empty() + !pUsageCounts_.empty() ) <= 1 );
53154 #    else
53155       if ( 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() ) )
53156       {
53157         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::MicromapBuildInfoEXT::MicromapBuildInfoEXT: 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() )" );
53158       }
53159 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
53160     }
53161 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
53162 
53163     MicromapBuildInfoEXT & operator=( MicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53164 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53165 
operator =VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53166     MicromapBuildInfoEXT & operator=( VkMicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53167     {
53168       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT const *>( &rhs );
53169       return *this;
53170     }
53171 
53172 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53173     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
53174     {
53175       pNext = pNext_;
53176       return *this;
53177     }
53178 
setTypeVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53179     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setType( VULKAN_HPP_NAMESPACE::MicromapTypeEXT type_ ) VULKAN_HPP_NOEXCEPT
53180     {
53181       type = type_;
53182       return *this;
53183     }
53184 
setFlagsVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53185     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::BuildMicromapFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
53186     {
53187       flags = flags_;
53188       return *this;
53189     }
53190 
setModeVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53191     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setMode( VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT mode_ ) VULKAN_HPP_NOEXCEPT
53192     {
53193       mode = mode_;
53194       return *this;
53195     }
53196 
setDstMicromapVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53197     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setDstMicromap( VULKAN_HPP_NAMESPACE::MicromapEXT dstMicromap_ ) VULKAN_HPP_NOEXCEPT
53198     {
53199       dstMicromap = dstMicromap_;
53200       return *this;
53201     }
53202 
setUsageCountsCountVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53203     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setUsageCountsCount( uint32_t usageCountsCount_ ) VULKAN_HPP_NOEXCEPT
53204     {
53205       usageCountsCount = usageCountsCount_;
53206       return *this;
53207     }
53208 
setPUsageCountsVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53209     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setPUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
53210     {
53211       pUsageCounts = pUsageCounts_;
53212       return *this;
53213     }
53214 
53215 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
53216     MicromapBuildInfoEXT &
setUsageCountsVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53217       setUsageCounts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const & usageCounts_ ) VULKAN_HPP_NOEXCEPT
53218     {
53219       usageCountsCount = static_cast<uint32_t>( usageCounts_.size() );
53220       pUsageCounts     = usageCounts_.data();
53221       return *this;
53222     }
53223 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
53224 
setPpUsageCountsVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53225     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setPpUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_ ) VULKAN_HPP_NOEXCEPT
53226     {
53227       ppUsageCounts = ppUsageCounts_;
53228       return *this;
53229     }
53230 
53231 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPUsageCountsVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53232     MicromapBuildInfoEXT & setPUsageCounts(
53233       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
53234     {
53235       usageCountsCount = static_cast<uint32_t>( pUsageCounts_.size() );
53236       ppUsageCounts    = pUsageCounts_.data();
53237       return *this;
53238     }
53239 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
53240 
setDataVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53241     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT
53242     {
53243       data = data_;
53244       return *this;
53245     }
53246 
setScratchDataVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53247     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setScratchData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & scratchData_ ) VULKAN_HPP_NOEXCEPT
53248     {
53249       scratchData = scratchData_;
53250       return *this;
53251     }
53252 
53253     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT &
setTriangleArrayVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53254       setTriangleArray( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & triangleArray_ ) VULKAN_HPP_NOEXCEPT
53255     {
53256       triangleArray = triangleArray_;
53257       return *this;
53258     }
53259 
setTriangleArrayStrideVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53260     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setTriangleArrayStride( VULKAN_HPP_NAMESPACE::DeviceSize triangleArrayStride_ ) VULKAN_HPP_NOEXCEPT
53261     {
53262       triangleArrayStride = triangleArrayStride_;
53263       return *this;
53264     }
53265 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53266 
operator VkMicromapBuildInfoEXT const&VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53267     operator VkMicromapBuildInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53268     {
53269       return *reinterpret_cast<const VkMicromapBuildInfoEXT *>( this );
53270     }
53271 
operator VkMicromapBuildInfoEXT&VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53272     operator VkMicromapBuildInfoEXT &() VULKAN_HPP_NOEXCEPT
53273     {
53274       return *reinterpret_cast<VkMicromapBuildInfoEXT *>( this );
53275     }
53276 
53277 #if defined( VULKAN_HPP_USE_REFLECT )
53278 #  if 14 <= VULKAN_HPP_CPP_VERSION
53279     auto
53280 #  else
53281     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
53282                const void * const &,
53283                VULKAN_HPP_NAMESPACE::MicromapTypeEXT const &,
53284                VULKAN_HPP_NAMESPACE::BuildMicromapFlagsEXT const &,
53285                VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT const &,
53286                VULKAN_HPP_NAMESPACE::MicromapEXT const &,
53287                uint32_t const &,
53288                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const &,
53289                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * const &,
53290                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
53291                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const &,
53292                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
53293                VULKAN_HPP_NAMESPACE::DeviceSize const &>
53294 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT53295       reflect() const VULKAN_HPP_NOEXCEPT
53296     {
53297       return std::tie(
53298         sType, pNext, type, flags, mode, dstMicromap, usageCountsCount, pUsageCounts, ppUsageCounts, data, scratchData, triangleArray, triangleArrayStride );
53299     }
53300 #endif
53301 
53302   public:
53303     VULKAN_HPP_NAMESPACE::StructureType                    sType               = StructureType::eMicromapBuildInfoEXT;
53304     const void *                                           pNext               = {};
53305     VULKAN_HPP_NAMESPACE::MicromapTypeEXT                  type                = VULKAN_HPP_NAMESPACE::MicromapTypeEXT::eOpacityMicromap;
53306     VULKAN_HPP_NAMESPACE::BuildMicromapFlagsEXT            flags               = {};
53307     VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT             mode                = VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT::eBuild;
53308     VULKAN_HPP_NAMESPACE::MicromapEXT                      dstMicromap         = {};
53309     uint32_t                                               usageCountsCount    = {};
53310     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *         pUsageCounts        = {};
53311     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts       = {};
53312     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      data                = {};
53313     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR           scratchData         = {};
53314     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      triangleArray       = {};
53315     VULKAN_HPP_NAMESPACE::DeviceSize                       triangleArrayStride = {};
53316   };
53317 
53318   template <>
53319   struct CppType<StructureType, StructureType::eMicromapBuildInfoEXT>
53320   {
53321     using Type = MicromapBuildInfoEXT;
53322   };
53323 
53324   struct MicromapBuildSizesInfoEXT
53325   {
53326     using NativeType = VkMicromapBuildSizesInfoEXT;
53327 
53328     static const bool                                  allowDuplicate = false;
53329     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMicromapBuildSizesInfoEXT;
53330 
53331 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapBuildSizesInfoEXTVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53332     VULKAN_HPP_CONSTEXPR MicromapBuildSizesInfoEXT( VULKAN_HPP_NAMESPACE::DeviceSize micromapSize_     = {},
53333                                                     VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_ = {},
53334                                                     VULKAN_HPP_NAMESPACE::Bool32     discardable_      = {},
53335                                                     const void *                     pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
53336       : pNext{ pNext_ }
53337       , micromapSize{ micromapSize_ }
53338       , buildScratchSize{ buildScratchSize_ }
53339       , discardable{ discardable_ }
53340     {
53341     }
53342 
53343     VULKAN_HPP_CONSTEXPR MicromapBuildSizesInfoEXT( MicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53344 
MicromapBuildSizesInfoEXTVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53345     MicromapBuildSizesInfoEXT( VkMicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53346       : MicromapBuildSizesInfoEXT( *reinterpret_cast<MicromapBuildSizesInfoEXT const *>( &rhs ) )
53347     {
53348     }
53349 
53350     MicromapBuildSizesInfoEXT & operator=( MicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53351 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53352 
operator =VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53353     MicromapBuildSizesInfoEXT & operator=( VkMicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53354     {
53355       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT const *>( &rhs );
53356       return *this;
53357     }
53358 
53359 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53360     VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
53361     {
53362       pNext = pNext_;
53363       return *this;
53364     }
53365 
setMicromapSizeVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53366     VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setMicromapSize( VULKAN_HPP_NAMESPACE::DeviceSize micromapSize_ ) VULKAN_HPP_NOEXCEPT
53367     {
53368       micromapSize = micromapSize_;
53369       return *this;
53370     }
53371 
setBuildScratchSizeVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53372     VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setBuildScratchSize( VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_ ) VULKAN_HPP_NOEXCEPT
53373     {
53374       buildScratchSize = buildScratchSize_;
53375       return *this;
53376     }
53377 
setDiscardableVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53378     VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setDiscardable( VULKAN_HPP_NAMESPACE::Bool32 discardable_ ) VULKAN_HPP_NOEXCEPT
53379     {
53380       discardable = discardable_;
53381       return *this;
53382     }
53383 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53384 
operator VkMicromapBuildSizesInfoEXT const&VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53385     operator VkMicromapBuildSizesInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53386     {
53387       return *reinterpret_cast<const VkMicromapBuildSizesInfoEXT *>( this );
53388     }
53389 
operator VkMicromapBuildSizesInfoEXT&VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53390     operator VkMicromapBuildSizesInfoEXT &() VULKAN_HPP_NOEXCEPT
53391     {
53392       return *reinterpret_cast<VkMicromapBuildSizesInfoEXT *>( this );
53393     }
53394 
53395 #if defined( VULKAN_HPP_USE_REFLECT )
53396 #  if 14 <= VULKAN_HPP_CPP_VERSION
53397     auto
53398 #  else
53399     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
53400                const void * const &,
53401                VULKAN_HPP_NAMESPACE::DeviceSize const &,
53402                VULKAN_HPP_NAMESPACE::DeviceSize const &,
53403                VULKAN_HPP_NAMESPACE::Bool32 const &>
53404 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53405       reflect() const VULKAN_HPP_NOEXCEPT
53406     {
53407       return std::tie( sType, pNext, micromapSize, buildScratchSize, discardable );
53408     }
53409 #endif
53410 
53411 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53412     auto operator<=>( MicromapBuildSizesInfoEXT const & ) const = default;
53413 #else
operator ==VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53414     bool operator==( MicromapBuildSizesInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53415     {
53416 #  if defined( VULKAN_HPP_USE_REFLECT )
53417       return this->reflect() == rhs.reflect();
53418 #  else
53419       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( micromapSize == rhs.micromapSize ) && ( buildScratchSize == rhs.buildScratchSize ) &&
53420              ( discardable == rhs.discardable );
53421 #  endif
53422     }
53423 
operator !=VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53424     bool operator!=( MicromapBuildSizesInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53425     {
53426       return !operator==( rhs );
53427     }
53428 #endif
53429 
53430   public:
53431     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eMicromapBuildSizesInfoEXT;
53432     const void *                        pNext            = {};
53433     VULKAN_HPP_NAMESPACE::DeviceSize    micromapSize     = {};
53434     VULKAN_HPP_NAMESPACE::DeviceSize    buildScratchSize = {};
53435     VULKAN_HPP_NAMESPACE::Bool32        discardable      = {};
53436   };
53437 
53438   template <>
53439   struct CppType<StructureType, StructureType::eMicromapBuildSizesInfoEXT>
53440   {
53441     using Type = MicromapBuildSizesInfoEXT;
53442   };
53443 
53444   struct MicromapCreateInfoEXT
53445   {
53446     using NativeType = VkMicromapCreateInfoEXT;
53447 
53448     static const bool                                  allowDuplicate = false;
53449     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMicromapCreateInfoEXT;
53450 
53451 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapCreateInfoEXTVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53452     VULKAN_HPP_CONSTEXPR MicromapCreateInfoEXT( VULKAN_HPP_NAMESPACE::MicromapCreateFlagsEXT createFlags_ = {},
53453                                                 VULKAN_HPP_NAMESPACE::Buffer                 buffer_      = {},
53454                                                 VULKAN_HPP_NAMESPACE::DeviceSize             offset_      = {},
53455                                                 VULKAN_HPP_NAMESPACE::DeviceSize             size_        = {},
53456                                                 VULKAN_HPP_NAMESPACE::MicromapTypeEXT        type_ = VULKAN_HPP_NAMESPACE::MicromapTypeEXT::eOpacityMicromap,
53457                                                 VULKAN_HPP_NAMESPACE::DeviceAddress          deviceAddress_ = {},
53458                                                 const void *                                 pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
53459       : pNext{ pNext_ }
53460       , createFlags{ createFlags_ }
53461       , buffer{ buffer_ }
53462       , offset{ offset_ }
53463       , size{ size_ }
53464       , type{ type_ }
53465       , deviceAddress{ deviceAddress_ }
53466     {
53467     }
53468 
53469     VULKAN_HPP_CONSTEXPR MicromapCreateInfoEXT( MicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53470 
MicromapCreateInfoEXTVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53471     MicromapCreateInfoEXT( VkMicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53472       : MicromapCreateInfoEXT( *reinterpret_cast<MicromapCreateInfoEXT const *>( &rhs ) )
53473     {
53474     }
53475 
53476     MicromapCreateInfoEXT & operator=( MicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53477 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53478 
operator =VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53479     MicromapCreateInfoEXT & operator=( VkMicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53480     {
53481       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT const *>( &rhs );
53482       return *this;
53483     }
53484 
53485 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53486     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
53487     {
53488       pNext = pNext_;
53489       return *this;
53490     }
53491 
setCreateFlagsVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53492     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setCreateFlags( VULKAN_HPP_NAMESPACE::MicromapCreateFlagsEXT createFlags_ ) VULKAN_HPP_NOEXCEPT
53493     {
53494       createFlags = createFlags_;
53495       return *this;
53496     }
53497 
setBufferVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53498     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
53499     {
53500       buffer = buffer_;
53501       return *this;
53502     }
53503 
setOffsetVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53504     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
53505     {
53506       offset = offset_;
53507       return *this;
53508     }
53509 
setSizeVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53510     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
53511     {
53512       size = size_;
53513       return *this;
53514     }
53515 
setTypeVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53516     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setType( VULKAN_HPP_NAMESPACE::MicromapTypeEXT type_ ) VULKAN_HPP_NOEXCEPT
53517     {
53518       type = type_;
53519       return *this;
53520     }
53521 
setDeviceAddressVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53522     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
53523     {
53524       deviceAddress = deviceAddress_;
53525       return *this;
53526     }
53527 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53528 
operator VkMicromapCreateInfoEXT const&VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53529     operator VkMicromapCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53530     {
53531       return *reinterpret_cast<const VkMicromapCreateInfoEXT *>( this );
53532     }
53533 
operator VkMicromapCreateInfoEXT&VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53534     operator VkMicromapCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
53535     {
53536       return *reinterpret_cast<VkMicromapCreateInfoEXT *>( this );
53537     }
53538 
53539 #if defined( VULKAN_HPP_USE_REFLECT )
53540 #  if 14 <= VULKAN_HPP_CPP_VERSION
53541     auto
53542 #  else
53543     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
53544                const void * const &,
53545                VULKAN_HPP_NAMESPACE::MicromapCreateFlagsEXT const &,
53546                VULKAN_HPP_NAMESPACE::Buffer const &,
53547                VULKAN_HPP_NAMESPACE::DeviceSize const &,
53548                VULKAN_HPP_NAMESPACE::DeviceSize const &,
53549                VULKAN_HPP_NAMESPACE::MicromapTypeEXT const &,
53550                VULKAN_HPP_NAMESPACE::DeviceAddress const &>
53551 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53552       reflect() const VULKAN_HPP_NOEXCEPT
53553     {
53554       return std::tie( sType, pNext, createFlags, buffer, offset, size, type, deviceAddress );
53555     }
53556 #endif
53557 
53558 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53559     auto operator<=>( MicromapCreateInfoEXT const & ) const = default;
53560 #else
operator ==VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53561     bool operator==( MicromapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53562     {
53563 #  if defined( VULKAN_HPP_USE_REFLECT )
53564       return this->reflect() == rhs.reflect();
53565 #  else
53566       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createFlags == rhs.createFlags ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) &&
53567              ( size == rhs.size ) && ( type == rhs.type ) && ( deviceAddress == rhs.deviceAddress );
53568 #  endif
53569     }
53570 
operator !=VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53571     bool operator!=( MicromapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53572     {
53573       return !operator==( rhs );
53574     }
53575 #endif
53576 
53577   public:
53578     VULKAN_HPP_NAMESPACE::StructureType          sType         = StructureType::eMicromapCreateInfoEXT;
53579     const void *                                 pNext         = {};
53580     VULKAN_HPP_NAMESPACE::MicromapCreateFlagsEXT createFlags   = {};
53581     VULKAN_HPP_NAMESPACE::Buffer                 buffer        = {};
53582     VULKAN_HPP_NAMESPACE::DeviceSize             offset        = {};
53583     VULKAN_HPP_NAMESPACE::DeviceSize             size          = {};
53584     VULKAN_HPP_NAMESPACE::MicromapTypeEXT        type          = VULKAN_HPP_NAMESPACE::MicromapTypeEXT::eOpacityMicromap;
53585     VULKAN_HPP_NAMESPACE::DeviceAddress          deviceAddress = {};
53586   };
53587 
53588   template <>
53589   struct CppType<StructureType, StructureType::eMicromapCreateInfoEXT>
53590   {
53591     using Type = MicromapCreateInfoEXT;
53592   };
53593 
53594   struct MicromapTriangleEXT
53595   {
53596     using NativeType = VkMicromapTriangleEXT;
53597 
53598 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapTriangleEXTVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53599     VULKAN_HPP_CONSTEXPR MicromapTriangleEXT( uint32_t dataOffset_ = {}, uint16_t subdivisionLevel_ = {}, uint16_t format_ = {} ) VULKAN_HPP_NOEXCEPT
53600       : dataOffset{ dataOffset_ }
53601       , subdivisionLevel{ subdivisionLevel_ }
53602       , format{ format_ }
53603     {
53604     }
53605 
53606     VULKAN_HPP_CONSTEXPR MicromapTriangleEXT( MicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53607 
MicromapTriangleEXTVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53608     MicromapTriangleEXT( VkMicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT : MicromapTriangleEXT( *reinterpret_cast<MicromapTriangleEXT const *>( &rhs ) )
53609     {
53610     }
53611 
53612     MicromapTriangleEXT & operator=( MicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53613 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53614 
operator =VULKAN_HPP_NAMESPACE::MicromapTriangleEXT53615     MicromapTriangleEXT & operator=( VkMicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53616     {
53617       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapTriangleEXT const *>( &rhs );
53618       return *this;
53619     }
53620 
53621 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDataOffsetVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53622     VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT & setDataOffset( uint32_t dataOffset_ ) VULKAN_HPP_NOEXCEPT
53623     {
53624       dataOffset = dataOffset_;
53625       return *this;
53626     }
53627 
setSubdivisionLevelVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53628     VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT & setSubdivisionLevel( uint16_t subdivisionLevel_ ) VULKAN_HPP_NOEXCEPT
53629     {
53630       subdivisionLevel = subdivisionLevel_;
53631       return *this;
53632     }
53633 
setFormatVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53634     VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT & setFormat( uint16_t format_ ) VULKAN_HPP_NOEXCEPT
53635     {
53636       format = format_;
53637       return *this;
53638     }
53639 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53640 
operator VkMicromapTriangleEXT const&VULKAN_HPP_NAMESPACE::MicromapTriangleEXT53641     operator VkMicromapTriangleEXT const &() const VULKAN_HPP_NOEXCEPT
53642     {
53643       return *reinterpret_cast<const VkMicromapTriangleEXT *>( this );
53644     }
53645 
operator VkMicromapTriangleEXT&VULKAN_HPP_NAMESPACE::MicromapTriangleEXT53646     operator VkMicromapTriangleEXT &() VULKAN_HPP_NOEXCEPT
53647     {
53648       return *reinterpret_cast<VkMicromapTriangleEXT *>( this );
53649     }
53650 
53651 #if defined( VULKAN_HPP_USE_REFLECT )
53652 #  if 14 <= VULKAN_HPP_CPP_VERSION
53653     auto
53654 #  else
53655     std::tuple<uint32_t const &, uint16_t const &, uint16_t const &>
53656 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53657       reflect() const VULKAN_HPP_NOEXCEPT
53658     {
53659       return std::tie( dataOffset, subdivisionLevel, format );
53660     }
53661 #endif
53662 
53663 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53664     auto operator<=>( MicromapTriangleEXT const & ) const = default;
53665 #else
operator ==VULKAN_HPP_NAMESPACE::MicromapTriangleEXT53666     bool operator==( MicromapTriangleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53667     {
53668 #  if defined( VULKAN_HPP_USE_REFLECT )
53669       return this->reflect() == rhs.reflect();
53670 #  else
53671       return ( dataOffset == rhs.dataOffset ) && ( subdivisionLevel == rhs.subdivisionLevel ) && ( format == rhs.format );
53672 #  endif
53673     }
53674 
operator !=VULKAN_HPP_NAMESPACE::MicromapTriangleEXT53675     bool operator!=( MicromapTriangleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53676     {
53677       return !operator==( rhs );
53678     }
53679 #endif
53680 
53681   public:
53682     uint32_t dataOffset       = {};
53683     uint16_t subdivisionLevel = {};
53684     uint16_t format           = {};
53685   };
53686 
53687   struct MicromapVersionInfoEXT
53688   {
53689     using NativeType = VkMicromapVersionInfoEXT;
53690 
53691     static const bool                                  allowDuplicate = false;
53692     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMicromapVersionInfoEXT;
53693 
53694 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapVersionInfoEXTVULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53695     VULKAN_HPP_CONSTEXPR MicromapVersionInfoEXT( const uint8_t * pVersionData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
53696       : pNext{ pNext_ }
53697       , pVersionData{ pVersionData_ }
53698     {
53699     }
53700 
53701     VULKAN_HPP_CONSTEXPR MicromapVersionInfoEXT( MicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53702 
MicromapVersionInfoEXTVULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53703     MicromapVersionInfoEXT( VkMicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53704       : MicromapVersionInfoEXT( *reinterpret_cast<MicromapVersionInfoEXT const *>( &rhs ) )
53705     {
53706     }
53707 
53708     MicromapVersionInfoEXT & operator=( MicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53709 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53710 
operator =VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53711     MicromapVersionInfoEXT & operator=( VkMicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53712     {
53713       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT const *>( &rhs );
53714       return *this;
53715     }
53716 
53717 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53718     VULKAN_HPP_CONSTEXPR_14 MicromapVersionInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
53719     {
53720       pNext = pNext_;
53721       return *this;
53722     }
53723 
setPVersionDataVULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53724     VULKAN_HPP_CONSTEXPR_14 MicromapVersionInfoEXT & setPVersionData( const uint8_t * pVersionData_ ) VULKAN_HPP_NOEXCEPT
53725     {
53726       pVersionData = pVersionData_;
53727       return *this;
53728     }
53729 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53730 
operator VkMicromapVersionInfoEXT const&VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53731     operator VkMicromapVersionInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53732     {
53733       return *reinterpret_cast<const VkMicromapVersionInfoEXT *>( this );
53734     }
53735 
operator VkMicromapVersionInfoEXT&VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53736     operator VkMicromapVersionInfoEXT &() VULKAN_HPP_NOEXCEPT
53737     {
53738       return *reinterpret_cast<VkMicromapVersionInfoEXT *>( this );
53739     }
53740 
53741 #if defined( VULKAN_HPP_USE_REFLECT )
53742 #  if 14 <= VULKAN_HPP_CPP_VERSION
53743     auto
53744 #  else
53745     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const uint8_t * const &>
53746 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53747       reflect() const VULKAN_HPP_NOEXCEPT
53748     {
53749       return std::tie( sType, pNext, pVersionData );
53750     }
53751 #endif
53752 
53753 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53754     auto operator<=>( MicromapVersionInfoEXT const & ) const = default;
53755 #else
operator ==VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53756     bool operator==( MicromapVersionInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53757     {
53758 #  if defined( VULKAN_HPP_USE_REFLECT )
53759       return this->reflect() == rhs.reflect();
53760 #  else
53761       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pVersionData == rhs.pVersionData );
53762 #  endif
53763     }
53764 
operator !=VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53765     bool operator!=( MicromapVersionInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53766     {
53767       return !operator==( rhs );
53768     }
53769 #endif
53770 
53771   public:
53772     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eMicromapVersionInfoEXT;
53773     const void *                        pNext        = {};
53774     const uint8_t *                     pVersionData = {};
53775   };
53776 
53777   template <>
53778   struct CppType<StructureType, StructureType::eMicromapVersionInfoEXT>
53779   {
53780     using Type = MicromapVersionInfoEXT;
53781   };
53782 
53783   struct MultiDrawIndexedInfoEXT
53784   {
53785     using NativeType = VkMultiDrawIndexedInfoEXT;
53786 
53787 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiDrawIndexedInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53788     VULKAN_HPP_CONSTEXPR MultiDrawIndexedInfoEXT( uint32_t firstIndex_ = {}, uint32_t indexCount_ = {}, int32_t vertexOffset_ = {} ) VULKAN_HPP_NOEXCEPT
53789       : firstIndex{ firstIndex_ }
53790       , indexCount{ indexCount_ }
53791       , vertexOffset{ vertexOffset_ }
53792     {
53793     }
53794 
53795     VULKAN_HPP_CONSTEXPR MultiDrawIndexedInfoEXT( MultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53796 
MultiDrawIndexedInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53797     MultiDrawIndexedInfoEXT( VkMultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53798       : MultiDrawIndexedInfoEXT( *reinterpret_cast<MultiDrawIndexedInfoEXT const *>( &rhs ) )
53799     {
53800     }
53801 
53802     MultiDrawIndexedInfoEXT & operator=( MultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53803 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53804 
operator =VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53805     MultiDrawIndexedInfoEXT & operator=( VkMultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53806     {
53807       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT const *>( &rhs );
53808       return *this;
53809     }
53810 
53811 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFirstIndexVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53812     VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setFirstIndex( uint32_t firstIndex_ ) VULKAN_HPP_NOEXCEPT
53813     {
53814       firstIndex = firstIndex_;
53815       return *this;
53816     }
53817 
setIndexCountVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53818     VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
53819     {
53820       indexCount = indexCount_;
53821       return *this;
53822     }
53823 
setVertexOffsetVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53824     VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setVertexOffset( int32_t vertexOffset_ ) VULKAN_HPP_NOEXCEPT
53825     {
53826       vertexOffset = vertexOffset_;
53827       return *this;
53828     }
53829 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53830 
operator VkMultiDrawIndexedInfoEXT const&VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53831     operator VkMultiDrawIndexedInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53832     {
53833       return *reinterpret_cast<const VkMultiDrawIndexedInfoEXT *>( this );
53834     }
53835 
operator VkMultiDrawIndexedInfoEXT&VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53836     operator VkMultiDrawIndexedInfoEXT &() VULKAN_HPP_NOEXCEPT
53837     {
53838       return *reinterpret_cast<VkMultiDrawIndexedInfoEXT *>( this );
53839     }
53840 
53841 #if defined( VULKAN_HPP_USE_REFLECT )
53842 #  if 14 <= VULKAN_HPP_CPP_VERSION
53843     auto
53844 #  else
53845     std::tuple<uint32_t const &, uint32_t const &, int32_t const &>
53846 #  endif
reflectVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53847       reflect() const VULKAN_HPP_NOEXCEPT
53848     {
53849       return std::tie( firstIndex, indexCount, vertexOffset );
53850     }
53851 #endif
53852 
53853 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53854     auto operator<=>( MultiDrawIndexedInfoEXT const & ) const = default;
53855 #else
operator ==VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53856     bool operator==( MultiDrawIndexedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53857     {
53858 #  if defined( VULKAN_HPP_USE_REFLECT )
53859       return this->reflect() == rhs.reflect();
53860 #  else
53861       return ( firstIndex == rhs.firstIndex ) && ( indexCount == rhs.indexCount ) && ( vertexOffset == rhs.vertexOffset );
53862 #  endif
53863     }
53864 
operator !=VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53865     bool operator!=( MultiDrawIndexedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53866     {
53867       return !operator==( rhs );
53868     }
53869 #endif
53870 
53871   public:
53872     uint32_t firstIndex   = {};
53873     uint32_t indexCount   = {};
53874     int32_t  vertexOffset = {};
53875   };
53876 
53877   struct MultiDrawInfoEXT
53878   {
53879     using NativeType = VkMultiDrawInfoEXT;
53880 
53881 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiDrawInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53882     VULKAN_HPP_CONSTEXPR MultiDrawInfoEXT( uint32_t firstVertex_ = {}, uint32_t vertexCount_ = {} ) VULKAN_HPP_NOEXCEPT
53883       : firstVertex{ firstVertex_ }
53884       , vertexCount{ vertexCount_ }
53885     {
53886     }
53887 
53888     VULKAN_HPP_CONSTEXPR MultiDrawInfoEXT( MultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53889 
MultiDrawInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53890     MultiDrawInfoEXT( VkMultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : MultiDrawInfoEXT( *reinterpret_cast<MultiDrawInfoEXT const *>( &rhs ) ) {}
53891 
53892     MultiDrawInfoEXT & operator=( MultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53893 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53894 
operator =VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53895     MultiDrawInfoEXT & operator=( VkMultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53896     {
53897       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT const *>( &rhs );
53898       return *this;
53899     }
53900 
53901 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFirstVertexVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53902     VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT
53903     {
53904       firstVertex = firstVertex_;
53905       return *this;
53906     }
53907 
setVertexCountVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53908     VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
53909     {
53910       vertexCount = vertexCount_;
53911       return *this;
53912     }
53913 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53914 
operator VkMultiDrawInfoEXT const&VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53915     operator VkMultiDrawInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53916     {
53917       return *reinterpret_cast<const VkMultiDrawInfoEXT *>( this );
53918     }
53919 
operator VkMultiDrawInfoEXT&VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53920     operator VkMultiDrawInfoEXT &() VULKAN_HPP_NOEXCEPT
53921     {
53922       return *reinterpret_cast<VkMultiDrawInfoEXT *>( this );
53923     }
53924 
53925 #if defined( VULKAN_HPP_USE_REFLECT )
53926 #  if 14 <= VULKAN_HPP_CPP_VERSION
53927     auto
53928 #  else
53929     std::tuple<uint32_t const &, uint32_t const &>
53930 #  endif
reflectVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53931       reflect() const VULKAN_HPP_NOEXCEPT
53932     {
53933       return std::tie( firstVertex, vertexCount );
53934     }
53935 #endif
53936 
53937 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53938     auto operator<=>( MultiDrawInfoEXT const & ) const = default;
53939 #else
operator ==VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53940     bool operator==( MultiDrawInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53941     {
53942 #  if defined( VULKAN_HPP_USE_REFLECT )
53943       return this->reflect() == rhs.reflect();
53944 #  else
53945       return ( firstVertex == rhs.firstVertex ) && ( vertexCount == rhs.vertexCount );
53946 #  endif
53947     }
53948 
operator !=VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53949     bool operator!=( MultiDrawInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53950     {
53951       return !operator==( rhs );
53952     }
53953 #endif
53954 
53955   public:
53956     uint32_t firstVertex = {};
53957     uint32_t vertexCount = {};
53958   };
53959 
53960   struct MultisamplePropertiesEXT
53961   {
53962     using NativeType = VkMultisamplePropertiesEXT;
53963 
53964     static const bool                                  allowDuplicate = false;
53965     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMultisamplePropertiesEXT;
53966 
53967 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultisamplePropertiesEXTVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53968     VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
53969       : pNext{ pNext_ }
53970       , maxSampleLocationGridSize{ maxSampleLocationGridSize_ }
53971     {
53972     }
53973 
53974     VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53975 
MultisamplePropertiesEXTVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53976     MultisamplePropertiesEXT( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53977       : MultisamplePropertiesEXT( *reinterpret_cast<MultisamplePropertiesEXT const *>( &rhs ) )
53978     {
53979     }
53980 
53981     MultisamplePropertiesEXT & operator=( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53982 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53983 
operator =VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53984     MultisamplePropertiesEXT & operator=( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53985     {
53986       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT const *>( &rhs );
53987       return *this;
53988     }
53989 
operator VkMultisamplePropertiesEXT const&VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53990     operator VkMultisamplePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
53991     {
53992       return *reinterpret_cast<const VkMultisamplePropertiesEXT *>( this );
53993     }
53994 
operator VkMultisamplePropertiesEXT&VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53995     operator VkMultisamplePropertiesEXT &() VULKAN_HPP_NOEXCEPT
53996     {
53997       return *reinterpret_cast<VkMultisamplePropertiesEXT *>( this );
53998     }
53999 
54000 #if defined( VULKAN_HPP_USE_REFLECT )
54001 #  if 14 <= VULKAN_HPP_CPP_VERSION
54002     auto
54003 #  else
54004     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
54005 #  endif
reflectVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT54006       reflect() const VULKAN_HPP_NOEXCEPT
54007     {
54008       return std::tie( sType, pNext, maxSampleLocationGridSize );
54009     }
54010 #endif
54011 
54012 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54013     auto operator<=>( MultisamplePropertiesEXT const & ) const = default;
54014 #else
operator ==VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT54015     bool operator==( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54016     {
54017 #  if defined( VULKAN_HPP_USE_REFLECT )
54018       return this->reflect() == rhs.reflect();
54019 #  else
54020       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
54021 #  endif
54022     }
54023 
operator !=VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT54024     bool operator!=( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54025     {
54026       return !operator==( rhs );
54027     }
54028 #endif
54029 
54030   public:
54031     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eMultisamplePropertiesEXT;
54032     void *                              pNext                     = {};
54033     VULKAN_HPP_NAMESPACE::Extent2D      maxSampleLocationGridSize = {};
54034   };
54035 
54036   template <>
54037   struct CppType<StructureType, StructureType::eMultisamplePropertiesEXT>
54038   {
54039     using Type = MultisamplePropertiesEXT;
54040   };
54041 
54042   struct MultisampledRenderToSingleSampledInfoEXT
54043   {
54044     using NativeType = VkMultisampledRenderToSingleSampledInfoEXT;
54045 
54046     static const bool                                  allowDuplicate = false;
54047     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMultisampledRenderToSingleSampledInfoEXT;
54048 
54049 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
54050     VULKAN_HPP_CONSTEXPR
MultisampledRenderToSingleSampledInfoEXTVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54051       MultisampledRenderToSingleSampledInfoEXT( VULKAN_HPP_NAMESPACE::Bool32              multisampledRenderToSingleSampledEnable_ = {},
54052                                                 VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
54053                                                 const void *                              pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
54054       : pNext{ pNext_ }
54055       , multisampledRenderToSingleSampledEnable{ multisampledRenderToSingleSampledEnable_ }
54056       , rasterizationSamples{ rasterizationSamples_ }
54057     {
54058     }
54059 
54060     VULKAN_HPP_CONSTEXPR MultisampledRenderToSingleSampledInfoEXT( MultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54061 
MultisampledRenderToSingleSampledInfoEXTVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54062     MultisampledRenderToSingleSampledInfoEXT( VkMultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54063       : MultisampledRenderToSingleSampledInfoEXT( *reinterpret_cast<MultisampledRenderToSingleSampledInfoEXT const *>( &rhs ) )
54064     {
54065     }
54066 
54067     MultisampledRenderToSingleSampledInfoEXT & operator=( MultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54068 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54069 
operator =VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54070     MultisampledRenderToSingleSampledInfoEXT & operator=( VkMultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54071     {
54072       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT const *>( &rhs );
54073       return *this;
54074     }
54075 
54076 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54077     VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
54078     {
54079       pNext = pNext_;
54080       return *this;
54081     }
54082 
54083     VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT &
setMultisampledRenderToSingleSampledEnableVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54084       setMultisampledRenderToSingleSampledEnable( VULKAN_HPP_NAMESPACE::Bool32 multisampledRenderToSingleSampledEnable_ ) VULKAN_HPP_NOEXCEPT
54085     {
54086       multisampledRenderToSingleSampledEnable = multisampledRenderToSingleSampledEnable_;
54087       return *this;
54088     }
54089 
54090     VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT &
setRasterizationSamplesVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54091       setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
54092     {
54093       rasterizationSamples = rasterizationSamples_;
54094       return *this;
54095     }
54096 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54097 
operator VkMultisampledRenderToSingleSampledInfoEXT const&VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54098     operator VkMultisampledRenderToSingleSampledInfoEXT const &() const VULKAN_HPP_NOEXCEPT
54099     {
54100       return *reinterpret_cast<const VkMultisampledRenderToSingleSampledInfoEXT *>( this );
54101     }
54102 
operator VkMultisampledRenderToSingleSampledInfoEXT&VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54103     operator VkMultisampledRenderToSingleSampledInfoEXT &() VULKAN_HPP_NOEXCEPT
54104     {
54105       return *reinterpret_cast<VkMultisampledRenderToSingleSampledInfoEXT *>( this );
54106     }
54107 
54108 #if defined( VULKAN_HPP_USE_REFLECT )
54109 #  if 14 <= VULKAN_HPP_CPP_VERSION
54110     auto
54111 #  else
54112     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54113                const void * const &,
54114                VULKAN_HPP_NAMESPACE::Bool32 const &,
54115                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
54116 #  endif
reflectVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54117       reflect() const VULKAN_HPP_NOEXCEPT
54118     {
54119       return std::tie( sType, pNext, multisampledRenderToSingleSampledEnable, rasterizationSamples );
54120     }
54121 #endif
54122 
54123 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54124     auto operator<=>( MultisampledRenderToSingleSampledInfoEXT const & ) const = default;
54125 #else
operator ==VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54126     bool operator==( MultisampledRenderToSingleSampledInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54127     {
54128 #  if defined( VULKAN_HPP_USE_REFLECT )
54129       return this->reflect() == rhs.reflect();
54130 #  else
54131       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multisampledRenderToSingleSampledEnable == rhs.multisampledRenderToSingleSampledEnable ) &&
54132              ( rasterizationSamples == rhs.rasterizationSamples );
54133 #  endif
54134     }
54135 
operator !=VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT54136     bool operator!=( MultisampledRenderToSingleSampledInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54137     {
54138       return !operator==( rhs );
54139     }
54140 #endif
54141 
54142   public:
54143     VULKAN_HPP_NAMESPACE::StructureType       sType                                   = StructureType::eMultisampledRenderToSingleSampledInfoEXT;
54144     const void *                              pNext                                   = {};
54145     VULKAN_HPP_NAMESPACE::Bool32              multisampledRenderToSingleSampledEnable = {};
54146     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples                    = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
54147   };
54148 
54149   template <>
54150   struct CppType<StructureType, StructureType::eMultisampledRenderToSingleSampledInfoEXT>
54151   {
54152     using Type = MultisampledRenderToSingleSampledInfoEXT;
54153   };
54154 
54155   struct MultiviewPerViewAttributesInfoNVX
54156   {
54157     using NativeType = VkMultiviewPerViewAttributesInfoNVX;
54158 
54159     static const bool                                  allowDuplicate = false;
54160     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMultiviewPerViewAttributesInfoNVX;
54161 
54162 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiviewPerViewAttributesInfoNVXVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54163     VULKAN_HPP_CONSTEXPR MultiviewPerViewAttributesInfoNVX( VULKAN_HPP_NAMESPACE::Bool32 perViewAttributes_              = {},
54164                                                             VULKAN_HPP_NAMESPACE::Bool32 perViewAttributesPositionXOnly_ = {},
54165                                                             const void *                 pNext_                          = nullptr ) VULKAN_HPP_NOEXCEPT
54166       : pNext{ pNext_ }
54167       , perViewAttributes{ perViewAttributes_ }
54168       , perViewAttributesPositionXOnly{ perViewAttributesPositionXOnly_ }
54169     {
54170     }
54171 
54172     VULKAN_HPP_CONSTEXPR MultiviewPerViewAttributesInfoNVX( MultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54173 
MultiviewPerViewAttributesInfoNVXVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54174     MultiviewPerViewAttributesInfoNVX( VkMultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
54175       : MultiviewPerViewAttributesInfoNVX( *reinterpret_cast<MultiviewPerViewAttributesInfoNVX const *>( &rhs ) )
54176     {
54177     }
54178 
54179     MultiviewPerViewAttributesInfoNVX & operator=( MultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54180 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54181 
operator =VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54182     MultiviewPerViewAttributesInfoNVX & operator=( VkMultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
54183     {
54184       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX const *>( &rhs );
54185       return *this;
54186     }
54187 
54188 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54189     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
54190     {
54191       pNext = pNext_;
54192       return *this;
54193     }
54194 
setPerViewAttributesVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54195     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPerViewAttributes( VULKAN_HPP_NAMESPACE::Bool32 perViewAttributes_ ) VULKAN_HPP_NOEXCEPT
54196     {
54197       perViewAttributes = perViewAttributes_;
54198       return *this;
54199     }
54200 
54201     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX &
setPerViewAttributesPositionXOnlyVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54202       setPerViewAttributesPositionXOnly( VULKAN_HPP_NAMESPACE::Bool32 perViewAttributesPositionXOnly_ ) VULKAN_HPP_NOEXCEPT
54203     {
54204       perViewAttributesPositionXOnly = perViewAttributesPositionXOnly_;
54205       return *this;
54206     }
54207 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54208 
operator VkMultiviewPerViewAttributesInfoNVX const&VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54209     operator VkMultiviewPerViewAttributesInfoNVX const &() const VULKAN_HPP_NOEXCEPT
54210     {
54211       return *reinterpret_cast<const VkMultiviewPerViewAttributesInfoNVX *>( this );
54212     }
54213 
operator VkMultiviewPerViewAttributesInfoNVX&VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54214     operator VkMultiviewPerViewAttributesInfoNVX &() VULKAN_HPP_NOEXCEPT
54215     {
54216       return *reinterpret_cast<VkMultiviewPerViewAttributesInfoNVX *>( this );
54217     }
54218 
54219 #if defined( VULKAN_HPP_USE_REFLECT )
54220 #  if 14 <= VULKAN_HPP_CPP_VERSION
54221     auto
54222 #  else
54223     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
54224 #  endif
reflectVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54225       reflect() const VULKAN_HPP_NOEXCEPT
54226     {
54227       return std::tie( sType, pNext, perViewAttributes, perViewAttributesPositionXOnly );
54228     }
54229 #endif
54230 
54231 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54232     auto operator<=>( MultiviewPerViewAttributesInfoNVX const & ) const = default;
54233 #else
operator ==VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54234     bool operator==( MultiviewPerViewAttributesInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
54235     {
54236 #  if defined( VULKAN_HPP_USE_REFLECT )
54237       return this->reflect() == rhs.reflect();
54238 #  else
54239       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perViewAttributes == rhs.perViewAttributes ) &&
54240              ( perViewAttributesPositionXOnly == rhs.perViewAttributesPositionXOnly );
54241 #  endif
54242     }
54243 
operator !=VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX54244     bool operator!=( MultiviewPerViewAttributesInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
54245     {
54246       return !operator==( rhs );
54247     }
54248 #endif
54249 
54250   public:
54251     VULKAN_HPP_NAMESPACE::StructureType sType                          = StructureType::eMultiviewPerViewAttributesInfoNVX;
54252     const void *                        pNext                          = {};
54253     VULKAN_HPP_NAMESPACE::Bool32        perViewAttributes              = {};
54254     VULKAN_HPP_NAMESPACE::Bool32        perViewAttributesPositionXOnly = {};
54255   };
54256 
54257   template <>
54258   struct CppType<StructureType, StructureType::eMultiviewPerViewAttributesInfoNVX>
54259   {
54260     using Type = MultiviewPerViewAttributesInfoNVX;
54261   };
54262 
54263   struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
54264   {
54265     using NativeType = VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
54266 
54267     static const bool                                  allowDuplicate = false;
54268     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
54269 
54270 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54271     VULKAN_HPP_CONSTEXPR MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( uint32_t                             perViewRenderAreaCount_ = {},
54272                                                                              const VULKAN_HPP_NAMESPACE::Rect2D * pPerViewRenderAreas_    = {},
54273                                                                              const void *                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
54274       : pNext{ pNext_ }
54275       , perViewRenderAreaCount{ perViewRenderAreaCount_ }
54276       , pPerViewRenderAreas{ pPerViewRenderAreas_ }
54277     {
54278     }
54279 
54280     VULKAN_HPP_CONSTEXPR
54281       MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54282 
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54283     MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
54284       : MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( *reinterpret_cast<MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const *>( &rhs ) )
54285     {
54286     }
54287 
54288 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54289     MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM(
54290       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & perViewRenderAreas_, const void * pNext_ = nullptr )
54291       : pNext( pNext_ ), perViewRenderAreaCount( static_cast<uint32_t>( perViewRenderAreas_.size() ) ), pPerViewRenderAreas( perViewRenderAreas_.data() )
54292     {
54293     }
54294 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54295 
54296     MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &
54297       operator=( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54298 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54299 
operator =VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54300     MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM & operator=( VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
54301     {
54302       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const *>( &rhs );
54303       return *this;
54304     }
54305 
54306 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54307     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
54308     {
54309       pNext = pNext_;
54310       return *this;
54311     }
54312 
54313     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &
setPerViewRenderAreaCountVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54314       setPerViewRenderAreaCount( uint32_t perViewRenderAreaCount_ ) VULKAN_HPP_NOEXCEPT
54315     {
54316       perViewRenderAreaCount = perViewRenderAreaCount_;
54317       return *this;
54318     }
54319 
54320     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &
setPPerViewRenderAreasVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54321       setPPerViewRenderAreas( const VULKAN_HPP_NAMESPACE::Rect2D * pPerViewRenderAreas_ ) VULKAN_HPP_NOEXCEPT
54322     {
54323       pPerViewRenderAreas = pPerViewRenderAreas_;
54324       return *this;
54325     }
54326 
54327 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
54328     MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &
setPerViewRenderAreasVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54329       setPerViewRenderAreas( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & perViewRenderAreas_ ) VULKAN_HPP_NOEXCEPT
54330     {
54331       perViewRenderAreaCount = static_cast<uint32_t>( perViewRenderAreas_.size() );
54332       pPerViewRenderAreas    = perViewRenderAreas_.data();
54333       return *this;
54334     }
54335 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54336 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54337 
operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const&VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54338     operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
54339     {
54340       return *reinterpret_cast<const VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM *>( this );
54341     }
54342 
operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM&VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54343     operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &() VULKAN_HPP_NOEXCEPT
54344     {
54345       return *reinterpret_cast<VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM *>( this );
54346     }
54347 
54348 #if defined( VULKAN_HPP_USE_REFLECT )
54349 #  if 14 <= VULKAN_HPP_CPP_VERSION
54350     auto
54351 #  else
54352     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Rect2D * const &>
54353 #  endif
reflectVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54354       reflect() const VULKAN_HPP_NOEXCEPT
54355     {
54356       return std::tie( sType, pNext, perViewRenderAreaCount, pPerViewRenderAreas );
54357     }
54358 #endif
54359 
54360 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54361     auto operator<=>( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & ) const = default;
54362 #else
operator ==VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54363     bool operator==( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
54364     {
54365 #  if defined( VULKAN_HPP_USE_REFLECT )
54366       return this->reflect() == rhs.reflect();
54367 #  else
54368       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perViewRenderAreaCount == rhs.perViewRenderAreaCount ) &&
54369              ( pPerViewRenderAreas == rhs.pPerViewRenderAreas );
54370 #  endif
54371     }
54372 
operator !=VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM54373     bool operator!=( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
54374     {
54375       return !operator==( rhs );
54376     }
54377 #endif
54378 
54379   public:
54380     VULKAN_HPP_NAMESPACE::StructureType  sType                  = StructureType::eMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
54381     const void *                         pNext                  = {};
54382     uint32_t                             perViewRenderAreaCount = {};
54383     const VULKAN_HPP_NAMESPACE::Rect2D * pPerViewRenderAreas    = {};
54384   };
54385 
54386   template <>
54387   struct CppType<StructureType, StructureType::eMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM>
54388   {
54389     using Type = MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
54390   };
54391 
54392   struct MutableDescriptorTypeListEXT
54393   {
54394     using NativeType = VkMutableDescriptorTypeListEXT;
54395 
54396 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MutableDescriptorTypeListEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54397     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListEXT( uint32_t                                     descriptorTypeCount_ = {},
54398                                                        const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes_    = {} ) VULKAN_HPP_NOEXCEPT
54399       : descriptorTypeCount{ descriptorTypeCount_ }
54400       , pDescriptorTypes{ pDescriptorTypes_ }
54401     {
54402     }
54403 
54404     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListEXT( MutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54405 
MutableDescriptorTypeListEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54406     MutableDescriptorTypeListEXT( VkMutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54407       : MutableDescriptorTypeListEXT( *reinterpret_cast<MutableDescriptorTypeListEXT const *>( &rhs ) )
54408     {
54409     }
54410 
54411 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
MutableDescriptorTypeListEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54412     MutableDescriptorTypeListEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorType> const & descriptorTypes_ )
54413       : descriptorTypeCount( static_cast<uint32_t>( descriptorTypes_.size() ) ), pDescriptorTypes( descriptorTypes_.data() )
54414     {
54415     }
54416 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54417 
54418     MutableDescriptorTypeListEXT & operator=( MutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54419 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54420 
operator =VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54421     MutableDescriptorTypeListEXT & operator=( VkMutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54422     {
54423       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT const *>( &rhs );
54424       return *this;
54425     }
54426 
54427 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDescriptorTypeCountVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54428     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListEXT & setDescriptorTypeCount( uint32_t descriptorTypeCount_ ) VULKAN_HPP_NOEXCEPT
54429     {
54430       descriptorTypeCount = descriptorTypeCount_;
54431       return *this;
54432     }
54433 
54434     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListEXT &
setPDescriptorTypesVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54435       setPDescriptorTypes( const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes_ ) VULKAN_HPP_NOEXCEPT
54436     {
54437       pDescriptorTypes = pDescriptorTypes_;
54438       return *this;
54439     }
54440 
54441 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptorTypesVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54442     MutableDescriptorTypeListEXT & setDescriptorTypes(
54443       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorType> const & descriptorTypes_ ) VULKAN_HPP_NOEXCEPT
54444     {
54445       descriptorTypeCount = static_cast<uint32_t>( descriptorTypes_.size() );
54446       pDescriptorTypes    = descriptorTypes_.data();
54447       return *this;
54448     }
54449 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54450 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54451 
operator VkMutableDescriptorTypeListEXT const&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54452     operator VkMutableDescriptorTypeListEXT const &() const VULKAN_HPP_NOEXCEPT
54453     {
54454       return *reinterpret_cast<const VkMutableDescriptorTypeListEXT *>( this );
54455     }
54456 
operator VkMutableDescriptorTypeListEXT&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54457     operator VkMutableDescriptorTypeListEXT &() VULKAN_HPP_NOEXCEPT
54458     {
54459       return *reinterpret_cast<VkMutableDescriptorTypeListEXT *>( this );
54460     }
54461 
54462 #if defined( VULKAN_HPP_USE_REFLECT )
54463 #  if 14 <= VULKAN_HPP_CPP_VERSION
54464     auto
54465 #  else
54466     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorType * const &>
54467 #  endif
reflectVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54468       reflect() const VULKAN_HPP_NOEXCEPT
54469     {
54470       return std::tie( descriptorTypeCount, pDescriptorTypes );
54471     }
54472 #endif
54473 
54474 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54475     auto operator<=>( MutableDescriptorTypeListEXT const & ) const = default;
54476 #else
operator ==VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54477     bool operator==( MutableDescriptorTypeListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54478     {
54479 #  if defined( VULKAN_HPP_USE_REFLECT )
54480       return this->reflect() == rhs.reflect();
54481 #  else
54482       return ( descriptorTypeCount == rhs.descriptorTypeCount ) && ( pDescriptorTypes == rhs.pDescriptorTypes );
54483 #  endif
54484     }
54485 
operator !=VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54486     bool operator!=( MutableDescriptorTypeListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54487     {
54488       return !operator==( rhs );
54489     }
54490 #endif
54491 
54492   public:
54493     uint32_t                                     descriptorTypeCount = {};
54494     const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes    = {};
54495   };
54496 
54497   using MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT;
54498 
54499   struct MutableDescriptorTypeCreateInfoEXT
54500   {
54501     using NativeType = VkMutableDescriptorTypeCreateInfoEXT;
54502 
54503     static const bool                                  allowDuplicate = false;
54504     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMutableDescriptorTypeCreateInfoEXT;
54505 
54506 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MutableDescriptorTypeCreateInfoEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54507     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoEXT( uint32_t                                                   mutableDescriptorTypeListCount_ = {},
54508                                                              const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT * pMutableDescriptorTypeLists_    = {},
54509                                                              const void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
54510       : pNext{ pNext_ }
54511       , mutableDescriptorTypeListCount{ mutableDescriptorTypeListCount_ }
54512       , pMutableDescriptorTypeLists{ pMutableDescriptorTypeLists_ }
54513     {
54514     }
54515 
54516     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoEXT( MutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54517 
MutableDescriptorTypeCreateInfoEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54518     MutableDescriptorTypeCreateInfoEXT( VkMutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54519       : MutableDescriptorTypeCreateInfoEXT( *reinterpret_cast<MutableDescriptorTypeCreateInfoEXT const *>( &rhs ) )
54520     {
54521     }
54522 
54523 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
MutableDescriptorTypeCreateInfoEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54524     MutableDescriptorTypeCreateInfoEXT(
54525       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT> const & mutableDescriptorTypeLists_,
54526       const void *                                                                                                    pNext_ = nullptr )
54527       : pNext( pNext_ )
54528       , mutableDescriptorTypeListCount( static_cast<uint32_t>( mutableDescriptorTypeLists_.size() ) )
54529       , pMutableDescriptorTypeLists( mutableDescriptorTypeLists_.data() )
54530     {
54531     }
54532 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54533 
54534     MutableDescriptorTypeCreateInfoEXT & operator=( MutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54535 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54536 
operator =VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54537     MutableDescriptorTypeCreateInfoEXT & operator=( VkMutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54538     {
54539       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT const *>( &rhs );
54540       return *this;
54541     }
54542 
54543 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54544     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
54545     {
54546       pNext = pNext_;
54547       return *this;
54548     }
54549 
54550     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT &
setMutableDescriptorTypeListCountVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54551       setMutableDescriptorTypeListCount( uint32_t mutableDescriptorTypeListCount_ ) VULKAN_HPP_NOEXCEPT
54552     {
54553       mutableDescriptorTypeListCount = mutableDescriptorTypeListCount_;
54554       return *this;
54555     }
54556 
54557     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT &
setPMutableDescriptorTypeListsVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54558       setPMutableDescriptorTypeLists( const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT * pMutableDescriptorTypeLists_ ) VULKAN_HPP_NOEXCEPT
54559     {
54560       pMutableDescriptorTypeLists = pMutableDescriptorTypeLists_;
54561       return *this;
54562     }
54563 
54564 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setMutableDescriptorTypeListsVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54565     MutableDescriptorTypeCreateInfoEXT & setMutableDescriptorTypeLists(
54566       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT> const & mutableDescriptorTypeLists_ )
54567       VULKAN_HPP_NOEXCEPT
54568     {
54569       mutableDescriptorTypeListCount = static_cast<uint32_t>( mutableDescriptorTypeLists_.size() );
54570       pMutableDescriptorTypeLists    = mutableDescriptorTypeLists_.data();
54571       return *this;
54572     }
54573 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54574 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54575 
operator VkMutableDescriptorTypeCreateInfoEXT const&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54576     operator VkMutableDescriptorTypeCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
54577     {
54578       return *reinterpret_cast<const VkMutableDescriptorTypeCreateInfoEXT *>( this );
54579     }
54580 
operator VkMutableDescriptorTypeCreateInfoEXT&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54581     operator VkMutableDescriptorTypeCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
54582     {
54583       return *reinterpret_cast<VkMutableDescriptorTypeCreateInfoEXT *>( this );
54584     }
54585 
54586 #if defined( VULKAN_HPP_USE_REFLECT )
54587 #  if 14 <= VULKAN_HPP_CPP_VERSION
54588     auto
54589 #  else
54590     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54591                const void * const &,
54592                uint32_t const &,
54593                const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT * const &>
54594 #  endif
reflectVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54595       reflect() const VULKAN_HPP_NOEXCEPT
54596     {
54597       return std::tie( sType, pNext, mutableDescriptorTypeListCount, pMutableDescriptorTypeLists );
54598     }
54599 #endif
54600 
54601 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54602     auto operator<=>( MutableDescriptorTypeCreateInfoEXT const & ) const = default;
54603 #else
operator ==VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54604     bool operator==( MutableDescriptorTypeCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54605     {
54606 #  if defined( VULKAN_HPP_USE_REFLECT )
54607       return this->reflect() == rhs.reflect();
54608 #  else
54609       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mutableDescriptorTypeListCount == rhs.mutableDescriptorTypeListCount ) &&
54610              ( pMutableDescriptorTypeLists == rhs.pMutableDescriptorTypeLists );
54611 #  endif
54612     }
54613 
operator !=VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54614     bool operator!=( MutableDescriptorTypeCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54615     {
54616       return !operator==( rhs );
54617     }
54618 #endif
54619 
54620   public:
54621     VULKAN_HPP_NAMESPACE::StructureType                        sType                          = StructureType::eMutableDescriptorTypeCreateInfoEXT;
54622     const void *                                               pNext                          = {};
54623     uint32_t                                                   mutableDescriptorTypeListCount = {};
54624     const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT * pMutableDescriptorTypeLists    = {};
54625   };
54626 
54627   template <>
54628   struct CppType<StructureType, StructureType::eMutableDescriptorTypeCreateInfoEXT>
54629   {
54630     using Type = MutableDescriptorTypeCreateInfoEXT;
54631   };
54632 
54633   using MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT;
54634 
54635   struct OpaqueCaptureDescriptorDataCreateInfoEXT
54636   {
54637     using NativeType = VkOpaqueCaptureDescriptorDataCreateInfoEXT;
54638 
54639     static const bool                                  allowDuplicate = false;
54640     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpaqueCaptureDescriptorDataCreateInfoEXT;
54641 
54642 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpaqueCaptureDescriptorDataCreateInfoEXTVULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54643     VULKAN_HPP_CONSTEXPR OpaqueCaptureDescriptorDataCreateInfoEXT( const void * opaqueCaptureDescriptorData_ = {},
54644                                                                    const void * pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
54645       : pNext{ pNext_ }
54646       , opaqueCaptureDescriptorData{ opaqueCaptureDescriptorData_ }
54647     {
54648     }
54649 
54650     VULKAN_HPP_CONSTEXPR OpaqueCaptureDescriptorDataCreateInfoEXT( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54651 
OpaqueCaptureDescriptorDataCreateInfoEXTVULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54652     OpaqueCaptureDescriptorDataCreateInfoEXT( VkOpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54653       : OpaqueCaptureDescriptorDataCreateInfoEXT( *reinterpret_cast<OpaqueCaptureDescriptorDataCreateInfoEXT const *>( &rhs ) )
54654     {
54655     }
54656 
54657     OpaqueCaptureDescriptorDataCreateInfoEXT & operator=( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54658 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54659 
operator =VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54660     OpaqueCaptureDescriptorDataCreateInfoEXT & operator=( VkOpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54661     {
54662       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT const *>( &rhs );
54663       return *this;
54664     }
54665 
54666 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54667     VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDescriptorDataCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
54668     {
54669       pNext = pNext_;
54670       return *this;
54671     }
54672 
54673     VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDescriptorDataCreateInfoEXT &
setOpaqueCaptureDescriptorDataVULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54674       setOpaqueCaptureDescriptorData( const void * opaqueCaptureDescriptorData_ ) VULKAN_HPP_NOEXCEPT
54675     {
54676       opaqueCaptureDescriptorData = opaqueCaptureDescriptorData_;
54677       return *this;
54678     }
54679 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54680 
operator VkOpaqueCaptureDescriptorDataCreateInfoEXT const&VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54681     operator VkOpaqueCaptureDescriptorDataCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
54682     {
54683       return *reinterpret_cast<const VkOpaqueCaptureDescriptorDataCreateInfoEXT *>( this );
54684     }
54685 
operator VkOpaqueCaptureDescriptorDataCreateInfoEXT&VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54686     operator VkOpaqueCaptureDescriptorDataCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
54687     {
54688       return *reinterpret_cast<VkOpaqueCaptureDescriptorDataCreateInfoEXT *>( this );
54689     }
54690 
54691 #if defined( VULKAN_HPP_USE_REFLECT )
54692 #  if 14 <= VULKAN_HPP_CPP_VERSION
54693     auto
54694 #  else
54695     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const void * const &>
54696 #  endif
reflectVULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54697       reflect() const VULKAN_HPP_NOEXCEPT
54698     {
54699       return std::tie( sType, pNext, opaqueCaptureDescriptorData );
54700     }
54701 #endif
54702 
54703 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54704     auto operator<=>( OpaqueCaptureDescriptorDataCreateInfoEXT const & ) const = default;
54705 #else
operator ==VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54706     bool operator==( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54707     {
54708 #  if defined( VULKAN_HPP_USE_REFLECT )
54709       return this->reflect() == rhs.reflect();
54710 #  else
54711       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureDescriptorData == rhs.opaqueCaptureDescriptorData );
54712 #  endif
54713     }
54714 
operator !=VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54715     bool operator!=( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54716     {
54717       return !operator==( rhs );
54718     }
54719 #endif
54720 
54721   public:
54722     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::eOpaqueCaptureDescriptorDataCreateInfoEXT;
54723     const void *                        pNext                       = {};
54724     const void *                        opaqueCaptureDescriptorData = {};
54725   };
54726 
54727   template <>
54728   struct CppType<StructureType, StructureType::eOpaqueCaptureDescriptorDataCreateInfoEXT>
54729   {
54730     using Type = OpaqueCaptureDescriptorDataCreateInfoEXT;
54731   };
54732 
54733   struct OpticalFlowExecuteInfoNV
54734   {
54735     using NativeType = VkOpticalFlowExecuteInfoNV;
54736 
54737     static const bool                                  allowDuplicate = false;
54738     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpticalFlowExecuteInfoNV;
54739 
54740 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpticalFlowExecuteInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54741     VULKAN_HPP_CONSTEXPR OpticalFlowExecuteInfoNV( VULKAN_HPP_NAMESPACE::OpticalFlowExecuteFlagsNV flags_       = {},
54742                                                    uint32_t                                        regionCount_ = {},
54743                                                    const VULKAN_HPP_NAMESPACE::Rect2D *            pRegions_    = {},
54744                                                    void *                                          pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
54745       : pNext{ pNext_ }
54746       , flags{ flags_ }
54747       , regionCount{ regionCount_ }
54748       , pRegions{ pRegions_ }
54749     {
54750     }
54751 
54752     VULKAN_HPP_CONSTEXPR OpticalFlowExecuteInfoNV( OpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54753 
OpticalFlowExecuteInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54754     OpticalFlowExecuteInfoNV( VkOpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54755       : OpticalFlowExecuteInfoNV( *reinterpret_cast<OpticalFlowExecuteInfoNV const *>( &rhs ) )
54756     {
54757     }
54758 
54759 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
OpticalFlowExecuteInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54760     OpticalFlowExecuteInfoNV( VULKAN_HPP_NAMESPACE::OpticalFlowExecuteFlagsNV                                           flags_,
54761                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & regions_,
54762                               void *                                                                                    pNext_ = nullptr )
54763       : pNext( pNext_ ), flags( flags_ ), regionCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
54764     {
54765     }
54766 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54767 
54768     OpticalFlowExecuteInfoNV & operator=( OpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54769 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54770 
operator =VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54771     OpticalFlowExecuteInfoNV & operator=( VkOpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54772     {
54773       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV const *>( &rhs );
54774       return *this;
54775     }
54776 
54777 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54778     VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
54779     {
54780       pNext = pNext_;
54781       return *this;
54782     }
54783 
setFlagsVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54784     VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setFlags( VULKAN_HPP_NAMESPACE::OpticalFlowExecuteFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
54785     {
54786       flags = flags_;
54787       return *this;
54788     }
54789 
setRegionCountVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54790     VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
54791     {
54792       regionCount = regionCount_;
54793       return *this;
54794     }
54795 
setPRegionsVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54796     VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setPRegions( const VULKAN_HPP_NAMESPACE::Rect2D * pRegions_ ) VULKAN_HPP_NOEXCEPT
54797     {
54798       pRegions = pRegions_;
54799       return *this;
54800     }
54801 
54802 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
54803     OpticalFlowExecuteInfoNV &
setRegionsVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54804       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & regions_ ) VULKAN_HPP_NOEXCEPT
54805     {
54806       regionCount = static_cast<uint32_t>( regions_.size() );
54807       pRegions    = regions_.data();
54808       return *this;
54809     }
54810 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54811 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54812 
operator VkOpticalFlowExecuteInfoNV const&VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54813     operator VkOpticalFlowExecuteInfoNV const &() const VULKAN_HPP_NOEXCEPT
54814     {
54815       return *reinterpret_cast<const VkOpticalFlowExecuteInfoNV *>( this );
54816     }
54817 
operator VkOpticalFlowExecuteInfoNV&VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54818     operator VkOpticalFlowExecuteInfoNV &() VULKAN_HPP_NOEXCEPT
54819     {
54820       return *reinterpret_cast<VkOpticalFlowExecuteInfoNV *>( this );
54821     }
54822 
54823 #if defined( VULKAN_HPP_USE_REFLECT )
54824 #  if 14 <= VULKAN_HPP_CPP_VERSION
54825     auto
54826 #  else
54827     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54828                void * const &,
54829                VULKAN_HPP_NAMESPACE::OpticalFlowExecuteFlagsNV const &,
54830                uint32_t const &,
54831                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
54832 #  endif
reflectVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54833       reflect() const VULKAN_HPP_NOEXCEPT
54834     {
54835       return std::tie( sType, pNext, flags, regionCount, pRegions );
54836     }
54837 #endif
54838 
54839 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54840     auto operator<=>( OpticalFlowExecuteInfoNV const & ) const = default;
54841 #else
operator ==VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54842     bool operator==( OpticalFlowExecuteInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54843     {
54844 #  if defined( VULKAN_HPP_USE_REFLECT )
54845       return this->reflect() == rhs.reflect();
54846 #  else
54847       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
54848 #  endif
54849     }
54850 
operator !=VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54851     bool operator!=( OpticalFlowExecuteInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54852     {
54853       return !operator==( rhs );
54854     }
54855 #endif
54856 
54857   public:
54858     VULKAN_HPP_NAMESPACE::StructureType             sType       = StructureType::eOpticalFlowExecuteInfoNV;
54859     void *                                          pNext       = {};
54860     VULKAN_HPP_NAMESPACE::OpticalFlowExecuteFlagsNV flags       = {};
54861     uint32_t                                        regionCount = {};
54862     const VULKAN_HPP_NAMESPACE::Rect2D *            pRegions    = {};
54863   };
54864 
54865   template <>
54866   struct CppType<StructureType, StructureType::eOpticalFlowExecuteInfoNV>
54867   {
54868     using Type = OpticalFlowExecuteInfoNV;
54869   };
54870 
54871   struct OpticalFlowImageFormatInfoNV
54872   {
54873     using NativeType = VkOpticalFlowImageFormatInfoNV;
54874 
54875     static const bool                                  allowDuplicate = false;
54876     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpticalFlowImageFormatInfoNV;
54877 
54878 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpticalFlowImageFormatInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54879     VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatInfoNV( VULKAN_HPP_NAMESPACE::OpticalFlowUsageFlagsNV usage_ = {},
54880                                                        const void *                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
54881       : pNext{ pNext_ }
54882       , usage{ usage_ }
54883     {
54884     }
54885 
54886     VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatInfoNV( OpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54887 
OpticalFlowImageFormatInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54888     OpticalFlowImageFormatInfoNV( VkOpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54889       : OpticalFlowImageFormatInfoNV( *reinterpret_cast<OpticalFlowImageFormatInfoNV const *>( &rhs ) )
54890     {
54891     }
54892 
54893     OpticalFlowImageFormatInfoNV & operator=( OpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54894 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54895 
operator =VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54896     OpticalFlowImageFormatInfoNV & operator=( VkOpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54897     {
54898       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV const *>( &rhs );
54899       return *this;
54900     }
54901 
54902 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54903     VULKAN_HPP_CONSTEXPR_14 OpticalFlowImageFormatInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
54904     {
54905       pNext = pNext_;
54906       return *this;
54907     }
54908 
setUsageVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54909     VULKAN_HPP_CONSTEXPR_14 OpticalFlowImageFormatInfoNV & setUsage( VULKAN_HPP_NAMESPACE::OpticalFlowUsageFlagsNV usage_ ) VULKAN_HPP_NOEXCEPT
54910     {
54911       usage = usage_;
54912       return *this;
54913     }
54914 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54915 
operator VkOpticalFlowImageFormatInfoNV const&VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54916     operator VkOpticalFlowImageFormatInfoNV const &() const VULKAN_HPP_NOEXCEPT
54917     {
54918       return *reinterpret_cast<const VkOpticalFlowImageFormatInfoNV *>( this );
54919     }
54920 
operator VkOpticalFlowImageFormatInfoNV&VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54921     operator VkOpticalFlowImageFormatInfoNV &() VULKAN_HPP_NOEXCEPT
54922     {
54923       return *reinterpret_cast<VkOpticalFlowImageFormatInfoNV *>( this );
54924     }
54925 
54926 #if defined( VULKAN_HPP_USE_REFLECT )
54927 #  if 14 <= VULKAN_HPP_CPP_VERSION
54928     auto
54929 #  else
54930     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::OpticalFlowUsageFlagsNV const &>
54931 #  endif
reflectVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54932       reflect() const VULKAN_HPP_NOEXCEPT
54933     {
54934       return std::tie( sType, pNext, usage );
54935     }
54936 #endif
54937 
54938 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54939     auto operator<=>( OpticalFlowImageFormatInfoNV const & ) const = default;
54940 #else
operator ==VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54941     bool operator==( OpticalFlowImageFormatInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54942     {
54943 #  if defined( VULKAN_HPP_USE_REFLECT )
54944       return this->reflect() == rhs.reflect();
54945 #  else
54946       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( usage == rhs.usage );
54947 #  endif
54948     }
54949 
operator !=VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54950     bool operator!=( OpticalFlowImageFormatInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54951     {
54952       return !operator==( rhs );
54953     }
54954 #endif
54955 
54956   public:
54957     VULKAN_HPP_NAMESPACE::StructureType           sType = StructureType::eOpticalFlowImageFormatInfoNV;
54958     const void *                                  pNext = {};
54959     VULKAN_HPP_NAMESPACE::OpticalFlowUsageFlagsNV usage = {};
54960   };
54961 
54962   template <>
54963   struct CppType<StructureType, StructureType::eOpticalFlowImageFormatInfoNV>
54964   {
54965     using Type = OpticalFlowImageFormatInfoNV;
54966   };
54967 
54968   struct OpticalFlowImageFormatPropertiesNV
54969   {
54970     using NativeType = VkOpticalFlowImageFormatPropertiesNV;
54971 
54972     static const bool                                  allowDuplicate = false;
54973     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpticalFlowImageFormatPropertiesNV;
54974 
54975 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpticalFlowImageFormatPropertiesNVVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54976     VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatPropertiesNV( VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
54977                                                              const void *                 pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
54978       : pNext{ pNext_ }
54979       , format{ format_ }
54980     {
54981     }
54982 
54983     VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatPropertiesNV( OpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54984 
OpticalFlowImageFormatPropertiesNVVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54985     OpticalFlowImageFormatPropertiesNV( VkOpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
54986       : OpticalFlowImageFormatPropertiesNV( *reinterpret_cast<OpticalFlowImageFormatPropertiesNV const *>( &rhs ) )
54987     {
54988     }
54989 
54990     OpticalFlowImageFormatPropertiesNV & operator=( OpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54991 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54992 
operator =VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54993     OpticalFlowImageFormatPropertiesNV & operator=( VkOpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
54994     {
54995       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV const *>( &rhs );
54996       return *this;
54997     }
54998 
operator VkOpticalFlowImageFormatPropertiesNV const&VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54999     operator VkOpticalFlowImageFormatPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
55000     {
55001       return *reinterpret_cast<const VkOpticalFlowImageFormatPropertiesNV *>( this );
55002     }
55003 
operator VkOpticalFlowImageFormatPropertiesNV&VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV55004     operator VkOpticalFlowImageFormatPropertiesNV &() VULKAN_HPP_NOEXCEPT
55005     {
55006       return *reinterpret_cast<VkOpticalFlowImageFormatPropertiesNV *>( this );
55007     }
55008 
55009 #if defined( VULKAN_HPP_USE_REFLECT )
55010 #  if 14 <= VULKAN_HPP_CPP_VERSION
55011     auto
55012 #  else
55013     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Format const &>
55014 #  endif
reflectVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV55015       reflect() const VULKAN_HPP_NOEXCEPT
55016     {
55017       return std::tie( sType, pNext, format );
55018     }
55019 #endif
55020 
55021 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55022     auto operator<=>( OpticalFlowImageFormatPropertiesNV const & ) const = default;
55023 #else
operator ==VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV55024     bool operator==( OpticalFlowImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
55025     {
55026 #  if defined( VULKAN_HPP_USE_REFLECT )
55027       return this->reflect() == rhs.reflect();
55028 #  else
55029       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format );
55030 #  endif
55031     }
55032 
operator !=VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV55033     bool operator!=( OpticalFlowImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
55034     {
55035       return !operator==( rhs );
55036     }
55037 #endif
55038 
55039   public:
55040     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eOpticalFlowImageFormatPropertiesNV;
55041     const void *                        pNext  = {};
55042     VULKAN_HPP_NAMESPACE::Format        format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
55043   };
55044 
55045   template <>
55046   struct CppType<StructureType, StructureType::eOpticalFlowImageFormatPropertiesNV>
55047   {
55048     using Type = OpticalFlowImageFormatPropertiesNV;
55049   };
55050 
55051   struct OpticalFlowSessionCreateInfoNV
55052   {
55053     using NativeType = VkOpticalFlowSessionCreateInfoNV;
55054 
55055     static const bool                                  allowDuplicate = false;
55056     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpticalFlowSessionCreateInfoNV;
55057 
55058 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpticalFlowSessionCreateInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55059     VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreateInfoNV(
55060       uint32_t                                              width_            = {},
55061       uint32_t                                              height_           = {},
55062       VULKAN_HPP_NAMESPACE::Format                          imageFormat_      = VULKAN_HPP_NAMESPACE::Format::eUndefined,
55063       VULKAN_HPP_NAMESPACE::Format                          flowVectorFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
55064       VULKAN_HPP_NAMESPACE::Format                          costFormat_       = VULKAN_HPP_NAMESPACE::Format::eUndefined,
55065       VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV      outputGridSize_   = {},
55066       VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV      hintGridSize_     = {},
55067       VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV   performanceLevel_ = VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV::eUnknown,
55068       VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateFlagsNV flags_            = {},
55069       void *                                                pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
55070       : pNext{ pNext_ }
55071       , width{ width_ }
55072       , height{ height_ }
55073       , imageFormat{ imageFormat_ }
55074       , flowVectorFormat{ flowVectorFormat_ }
55075       , costFormat{ costFormat_ }
55076       , outputGridSize{ outputGridSize_ }
55077       , hintGridSize{ hintGridSize_ }
55078       , performanceLevel{ performanceLevel_ }
55079       , flags{ flags_ }
55080     {
55081     }
55082 
55083     VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreateInfoNV( OpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55084 
OpticalFlowSessionCreateInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55085     OpticalFlowSessionCreateInfoNV( VkOpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
55086       : OpticalFlowSessionCreateInfoNV( *reinterpret_cast<OpticalFlowSessionCreateInfoNV const *>( &rhs ) )
55087     {
55088     }
55089 
55090     OpticalFlowSessionCreateInfoNV & operator=( OpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55091 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55092 
operator =VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55093     OpticalFlowSessionCreateInfoNV & operator=( VkOpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
55094     {
55095       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV const *>( &rhs );
55096       return *this;
55097     }
55098 
55099 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55100     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
55101     {
55102       pNext = pNext_;
55103       return *this;
55104     }
55105 
setWidthVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55106     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
55107     {
55108       width = width_;
55109       return *this;
55110     }
55111 
setHeightVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55112     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
55113     {
55114       height = height_;
55115       return *this;
55116     }
55117 
setImageFormatVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55118     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setImageFormat( VULKAN_HPP_NAMESPACE::Format imageFormat_ ) VULKAN_HPP_NOEXCEPT
55119     {
55120       imageFormat = imageFormat_;
55121       return *this;
55122     }
55123 
setFlowVectorFormatVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55124     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setFlowVectorFormat( VULKAN_HPP_NAMESPACE::Format flowVectorFormat_ ) VULKAN_HPP_NOEXCEPT
55125     {
55126       flowVectorFormat = flowVectorFormat_;
55127       return *this;
55128     }
55129 
setCostFormatVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55130     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setCostFormat( VULKAN_HPP_NAMESPACE::Format costFormat_ ) VULKAN_HPP_NOEXCEPT
55131     {
55132       costFormat = costFormat_;
55133       return *this;
55134     }
55135 
55136     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV &
setOutputGridSizeVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55137       setOutputGridSize( VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV outputGridSize_ ) VULKAN_HPP_NOEXCEPT
55138     {
55139       outputGridSize = outputGridSize_;
55140       return *this;
55141     }
55142 
55143     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV &
setHintGridSizeVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55144       setHintGridSize( VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV hintGridSize_ ) VULKAN_HPP_NOEXCEPT
55145     {
55146       hintGridSize = hintGridSize_;
55147       return *this;
55148     }
55149 
55150     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV &
setPerformanceLevelVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55151       setPerformanceLevel( VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV performanceLevel_ ) VULKAN_HPP_NOEXCEPT
55152     {
55153       performanceLevel = performanceLevel_;
55154       return *this;
55155     }
55156 
setFlagsVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55157     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
55158     {
55159       flags = flags_;
55160       return *this;
55161     }
55162 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55163 
operator VkOpticalFlowSessionCreateInfoNV const&VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55164     operator VkOpticalFlowSessionCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
55165     {
55166       return *reinterpret_cast<const VkOpticalFlowSessionCreateInfoNV *>( this );
55167     }
55168 
operator VkOpticalFlowSessionCreateInfoNV&VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55169     operator VkOpticalFlowSessionCreateInfoNV &() VULKAN_HPP_NOEXCEPT
55170     {
55171       return *reinterpret_cast<VkOpticalFlowSessionCreateInfoNV *>( this );
55172     }
55173 
55174 #if defined( VULKAN_HPP_USE_REFLECT )
55175 #  if 14 <= VULKAN_HPP_CPP_VERSION
55176     auto
55177 #  else
55178     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
55179                void * const &,
55180                uint32_t const &,
55181                uint32_t const &,
55182                VULKAN_HPP_NAMESPACE::Format const &,
55183                VULKAN_HPP_NAMESPACE::Format const &,
55184                VULKAN_HPP_NAMESPACE::Format const &,
55185                VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV const &,
55186                VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV const &,
55187                VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV const &,
55188                VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateFlagsNV const &>
55189 #  endif
reflectVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55190       reflect() const VULKAN_HPP_NOEXCEPT
55191     {
55192       return std::tie( sType, pNext, width, height, imageFormat, flowVectorFormat, costFormat, outputGridSize, hintGridSize, performanceLevel, flags );
55193     }
55194 #endif
55195 
55196 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55197     auto operator<=>( OpticalFlowSessionCreateInfoNV const & ) const = default;
55198 #else
operator ==VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55199     bool operator==( OpticalFlowSessionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
55200     {
55201 #  if defined( VULKAN_HPP_USE_REFLECT )
55202       return this->reflect() == rhs.reflect();
55203 #  else
55204       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( width == rhs.width ) && ( height == rhs.height ) && ( imageFormat == rhs.imageFormat ) &&
55205              ( flowVectorFormat == rhs.flowVectorFormat ) && ( costFormat == rhs.costFormat ) && ( outputGridSize == rhs.outputGridSize ) &&
55206              ( hintGridSize == rhs.hintGridSize ) && ( performanceLevel == rhs.performanceLevel ) && ( flags == rhs.flags );
55207 #  endif
55208     }
55209 
operator !=VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV55210     bool operator!=( OpticalFlowSessionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
55211     {
55212       return !operator==( rhs );
55213     }
55214 #endif
55215 
55216   public:
55217     VULKAN_HPP_NAMESPACE::StructureType                   sType            = StructureType::eOpticalFlowSessionCreateInfoNV;
55218     void *                                                pNext            = {};
55219     uint32_t                                              width            = {};
55220     uint32_t                                              height           = {};
55221     VULKAN_HPP_NAMESPACE::Format                          imageFormat      = VULKAN_HPP_NAMESPACE::Format::eUndefined;
55222     VULKAN_HPP_NAMESPACE::Format                          flowVectorFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
55223     VULKAN_HPP_NAMESPACE::Format                          costFormat       = VULKAN_HPP_NAMESPACE::Format::eUndefined;
55224     VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV      outputGridSize   = {};
55225     VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV      hintGridSize     = {};
55226     VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV   performanceLevel = VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV::eUnknown;
55227     VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateFlagsNV flags            = {};
55228   };
55229 
55230   template <>
55231   struct CppType<StructureType, StructureType::eOpticalFlowSessionCreateInfoNV>
55232   {
55233     using Type = OpticalFlowSessionCreateInfoNV;
55234   };
55235 
55236   struct OpticalFlowSessionCreatePrivateDataInfoNV
55237   {
55238     using NativeType = VkOpticalFlowSessionCreatePrivateDataInfoNV;
55239 
55240     static const bool                                  allowDuplicate = false;
55241     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpticalFlowSessionCreatePrivateDataInfoNV;
55242 
55243 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpticalFlowSessionCreatePrivateDataInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55244     VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreatePrivateDataInfoNV( uint32_t     id_           = {},
55245                                                                     uint32_t     size_         = {},
55246                                                                     const void * pPrivateData_ = {},
55247                                                                     void *       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
55248       : pNext{ pNext_ }
55249       , id{ id_ }
55250       , size{ size_ }
55251       , pPrivateData{ pPrivateData_ }
55252     {
55253     }
55254 
55255     VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreatePrivateDataInfoNV( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55256 
OpticalFlowSessionCreatePrivateDataInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55257     OpticalFlowSessionCreatePrivateDataInfoNV( VkOpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
55258       : OpticalFlowSessionCreatePrivateDataInfoNV( *reinterpret_cast<OpticalFlowSessionCreatePrivateDataInfoNV const *>( &rhs ) )
55259     {
55260     }
55261 
55262     OpticalFlowSessionCreatePrivateDataInfoNV & operator=( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55263 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55264 
operator =VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55265     OpticalFlowSessionCreatePrivateDataInfoNV & operator=( VkOpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
55266     {
55267       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV const *>( &rhs );
55268       return *this;
55269     }
55270 
55271 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55272     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
55273     {
55274       pNext = pNext_;
55275       return *this;
55276     }
55277 
setIdVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55278     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setId( uint32_t id_ ) VULKAN_HPP_NOEXCEPT
55279     {
55280       id = id_;
55281       return *this;
55282     }
55283 
setSizeVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55284     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
55285     {
55286       size = size_;
55287       return *this;
55288     }
55289 
setPPrivateDataVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55290     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setPPrivateData( const void * pPrivateData_ ) VULKAN_HPP_NOEXCEPT
55291     {
55292       pPrivateData = pPrivateData_;
55293       return *this;
55294     }
55295 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55296 
operator VkOpticalFlowSessionCreatePrivateDataInfoNV const&VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55297     operator VkOpticalFlowSessionCreatePrivateDataInfoNV const &() const VULKAN_HPP_NOEXCEPT
55298     {
55299       return *reinterpret_cast<const VkOpticalFlowSessionCreatePrivateDataInfoNV *>( this );
55300     }
55301 
operator VkOpticalFlowSessionCreatePrivateDataInfoNV&VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55302     operator VkOpticalFlowSessionCreatePrivateDataInfoNV &() VULKAN_HPP_NOEXCEPT
55303     {
55304       return *reinterpret_cast<VkOpticalFlowSessionCreatePrivateDataInfoNV *>( this );
55305     }
55306 
55307 #if defined( VULKAN_HPP_USE_REFLECT )
55308 #  if 14 <= VULKAN_HPP_CPP_VERSION
55309     auto
55310 #  else
55311     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, const void * const &>
55312 #  endif
reflectVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55313       reflect() const VULKAN_HPP_NOEXCEPT
55314     {
55315       return std::tie( sType, pNext, id, size, pPrivateData );
55316     }
55317 #endif
55318 
55319 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55320     auto operator<=>( OpticalFlowSessionCreatePrivateDataInfoNV const & ) const = default;
55321 #else
operator ==VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55322     bool operator==( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
55323     {
55324 #  if defined( VULKAN_HPP_USE_REFLECT )
55325       return this->reflect() == rhs.reflect();
55326 #  else
55327       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( id == rhs.id ) && ( size == rhs.size ) && ( pPrivateData == rhs.pPrivateData );
55328 #  endif
55329     }
55330 
operator !=VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV55331     bool operator!=( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
55332     {
55333       return !operator==( rhs );
55334     }
55335 #endif
55336 
55337   public:
55338     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eOpticalFlowSessionCreatePrivateDataInfoNV;
55339     void *                              pNext        = {};
55340     uint32_t                            id           = {};
55341     uint32_t                            size         = {};
55342     const void *                        pPrivateData = {};
55343   };
55344 
55345   template <>
55346   struct CppType<StructureType, StructureType::eOpticalFlowSessionCreatePrivateDataInfoNV>
55347   {
55348     using Type = OpticalFlowSessionCreatePrivateDataInfoNV;
55349   };
55350 
55351   struct OutOfBandQueueTypeInfoNV
55352   {
55353     using NativeType = VkOutOfBandQueueTypeInfoNV;
55354 
55355     static const bool                                  allowDuplicate = false;
55356     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOutOfBandQueueTypeInfoNV;
55357 
55358 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OutOfBandQueueTypeInfoNVVULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55359     VULKAN_HPP_CONSTEXPR OutOfBandQueueTypeInfoNV( VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV queueType_ = VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV::eRender,
55360                                                    const void *                               pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
55361       : pNext{ pNext_ }
55362       , queueType{ queueType_ }
55363     {
55364     }
55365 
55366     VULKAN_HPP_CONSTEXPR OutOfBandQueueTypeInfoNV( OutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55367 
OutOfBandQueueTypeInfoNVVULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55368     OutOfBandQueueTypeInfoNV( VkOutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
55369       : OutOfBandQueueTypeInfoNV( *reinterpret_cast<OutOfBandQueueTypeInfoNV const *>( &rhs ) )
55370     {
55371     }
55372 
55373     OutOfBandQueueTypeInfoNV & operator=( OutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55374 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55375 
operator =VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55376     OutOfBandQueueTypeInfoNV & operator=( VkOutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
55377     {
55378       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV const *>( &rhs );
55379       return *this;
55380     }
55381 
55382 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55383     VULKAN_HPP_CONSTEXPR_14 OutOfBandQueueTypeInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
55384     {
55385       pNext = pNext_;
55386       return *this;
55387     }
55388 
setQueueTypeVULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55389     VULKAN_HPP_CONSTEXPR_14 OutOfBandQueueTypeInfoNV & setQueueType( VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV queueType_ ) VULKAN_HPP_NOEXCEPT
55390     {
55391       queueType = queueType_;
55392       return *this;
55393     }
55394 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55395 
operator VkOutOfBandQueueTypeInfoNV const&VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55396     operator VkOutOfBandQueueTypeInfoNV const &() const VULKAN_HPP_NOEXCEPT
55397     {
55398       return *reinterpret_cast<const VkOutOfBandQueueTypeInfoNV *>( this );
55399     }
55400 
operator VkOutOfBandQueueTypeInfoNV&VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55401     operator VkOutOfBandQueueTypeInfoNV &() VULKAN_HPP_NOEXCEPT
55402     {
55403       return *reinterpret_cast<VkOutOfBandQueueTypeInfoNV *>( this );
55404     }
55405 
55406 #if defined( VULKAN_HPP_USE_REFLECT )
55407 #  if 14 <= VULKAN_HPP_CPP_VERSION
55408     auto
55409 #  else
55410     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV const &>
55411 #  endif
reflectVULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55412       reflect() const VULKAN_HPP_NOEXCEPT
55413     {
55414       return std::tie( sType, pNext, queueType );
55415     }
55416 #endif
55417 
55418 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55419     auto operator<=>( OutOfBandQueueTypeInfoNV const & ) const = default;
55420 #else
operator ==VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55421     bool operator==( OutOfBandQueueTypeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
55422     {
55423 #  if defined( VULKAN_HPP_USE_REFLECT )
55424       return this->reflect() == rhs.reflect();
55425 #  else
55426       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueType == rhs.queueType );
55427 #  endif
55428     }
55429 
operator !=VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55430     bool operator!=( OutOfBandQueueTypeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
55431     {
55432       return !operator==( rhs );
55433     }
55434 #endif
55435 
55436   public:
55437     VULKAN_HPP_NAMESPACE::StructureType        sType     = StructureType::eOutOfBandQueueTypeInfoNV;
55438     const void *                               pNext     = {};
55439     VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV queueType = VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV::eRender;
55440   };
55441 
55442   template <>
55443   struct CppType<StructureType, StructureType::eOutOfBandQueueTypeInfoNV>
55444   {
55445     using Type = OutOfBandQueueTypeInfoNV;
55446   };
55447 
55448   struct PastPresentationTimingGOOGLE
55449   {
55450     using NativeType = VkPastPresentationTimingGOOGLE;
55451 
55452 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PastPresentationTimingGOOGLEVULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55453     VULKAN_HPP_CONSTEXPR PastPresentationTimingGOOGLE( uint32_t presentID_           = {},
55454                                                        uint64_t desiredPresentTime_  = {},
55455                                                        uint64_t actualPresentTime_   = {},
55456                                                        uint64_t earliestPresentTime_ = {},
55457                                                        uint64_t presentMargin_       = {} ) VULKAN_HPP_NOEXCEPT
55458       : presentID{ presentID_ }
55459       , desiredPresentTime{ desiredPresentTime_ }
55460       , actualPresentTime{ actualPresentTime_ }
55461       , earliestPresentTime{ earliestPresentTime_ }
55462       , presentMargin{ presentMargin_ }
55463     {
55464     }
55465 
55466     VULKAN_HPP_CONSTEXPR PastPresentationTimingGOOGLE( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55467 
PastPresentationTimingGOOGLEVULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55468     PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
55469       : PastPresentationTimingGOOGLE( *reinterpret_cast<PastPresentationTimingGOOGLE const *>( &rhs ) )
55470     {
55471     }
55472 
55473     PastPresentationTimingGOOGLE & operator=( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55474 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55475 
operator =VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55476     PastPresentationTimingGOOGLE & operator=( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
55477     {
55478       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE const *>( &rhs );
55479       return *this;
55480     }
55481 
operator VkPastPresentationTimingGOOGLE const&VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55482     operator VkPastPresentationTimingGOOGLE const &() const VULKAN_HPP_NOEXCEPT
55483     {
55484       return *reinterpret_cast<const VkPastPresentationTimingGOOGLE *>( this );
55485     }
55486 
operator VkPastPresentationTimingGOOGLE&VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55487     operator VkPastPresentationTimingGOOGLE &() VULKAN_HPP_NOEXCEPT
55488     {
55489       return *reinterpret_cast<VkPastPresentationTimingGOOGLE *>( this );
55490     }
55491 
55492 #if defined( VULKAN_HPP_USE_REFLECT )
55493 #  if 14 <= VULKAN_HPP_CPP_VERSION
55494     auto
55495 #  else
55496     std::tuple<uint32_t const &, uint64_t const &, uint64_t const &, uint64_t const &, uint64_t const &>
55497 #  endif
reflectVULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55498       reflect() const VULKAN_HPP_NOEXCEPT
55499     {
55500       return std::tie( presentID, desiredPresentTime, actualPresentTime, earliestPresentTime, presentMargin );
55501     }
55502 #endif
55503 
55504 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55505     auto operator<=>( PastPresentationTimingGOOGLE const & ) const = default;
55506 #else
operator ==VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55507     bool operator==( PastPresentationTimingGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
55508     {
55509 #  if defined( VULKAN_HPP_USE_REFLECT )
55510       return this->reflect() == rhs.reflect();
55511 #  else
55512       return ( presentID == rhs.presentID ) && ( desiredPresentTime == rhs.desiredPresentTime ) && ( actualPresentTime == rhs.actualPresentTime ) &&
55513              ( earliestPresentTime == rhs.earliestPresentTime ) && ( presentMargin == rhs.presentMargin );
55514 #  endif
55515     }
55516 
operator !=VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55517     bool operator!=( PastPresentationTimingGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
55518     {
55519       return !operator==( rhs );
55520     }
55521 #endif
55522 
55523   public:
55524     uint32_t presentID           = {};
55525     uint64_t desiredPresentTime  = {};
55526     uint64_t actualPresentTime   = {};
55527     uint64_t earliestPresentTime = {};
55528     uint64_t presentMargin       = {};
55529   };
55530 
55531   struct PerformanceConfigurationAcquireInfoINTEL
55532   {
55533     using NativeType = VkPerformanceConfigurationAcquireInfoINTEL;
55534 
55535     static const bool                                  allowDuplicate = false;
55536     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceConfigurationAcquireInfoINTEL;
55537 
55538 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
55539     VULKAN_HPP_CONSTEXPR
PerformanceConfigurationAcquireInfoINTELVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55540       PerformanceConfigurationAcquireInfoINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type_ =
55541                                                   VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated,
55542                                                 const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
55543       : pNext{ pNext_ }
55544       , type{ type_ }
55545     {
55546     }
55547 
55548     VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55549 
PerformanceConfigurationAcquireInfoINTELVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55550     PerformanceConfigurationAcquireInfoINTEL( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55551       : PerformanceConfigurationAcquireInfoINTEL( *reinterpret_cast<PerformanceConfigurationAcquireInfoINTEL const *>( &rhs ) )
55552     {
55553     }
55554 
55555     PerformanceConfigurationAcquireInfoINTEL & operator=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55556 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55557 
operator =VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55558     PerformanceConfigurationAcquireInfoINTEL & operator=( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55559     {
55560       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const *>( &rhs );
55561       return *this;
55562     }
55563 
55564 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55565     VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
55566     {
55567       pNext = pNext_;
55568       return *this;
55569     }
55570 
55571     VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL &
setTypeVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55572       setType( VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT
55573     {
55574       type = type_;
55575       return *this;
55576     }
55577 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55578 
operator VkPerformanceConfigurationAcquireInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55579     operator VkPerformanceConfigurationAcquireInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
55580     {
55581       return *reinterpret_cast<const VkPerformanceConfigurationAcquireInfoINTEL *>( this );
55582     }
55583 
operator VkPerformanceConfigurationAcquireInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55584     operator VkPerformanceConfigurationAcquireInfoINTEL &() VULKAN_HPP_NOEXCEPT
55585     {
55586       return *reinterpret_cast<VkPerformanceConfigurationAcquireInfoINTEL *>( this );
55587     }
55588 
55589 #if defined( VULKAN_HPP_USE_REFLECT )
55590 #  if 14 <= VULKAN_HPP_CPP_VERSION
55591     auto
55592 #  else
55593     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL const &>
55594 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55595       reflect() const VULKAN_HPP_NOEXCEPT
55596     {
55597       return std::tie( sType, pNext, type );
55598     }
55599 #endif
55600 
55601 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55602     auto operator<=>( PerformanceConfigurationAcquireInfoINTEL const & ) const = default;
55603 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55604     bool operator==( PerformanceConfigurationAcquireInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55605     {
55606 #  if defined( VULKAN_HPP_USE_REFLECT )
55607       return this->reflect() == rhs.reflect();
55608 #  else
55609       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type );
55610 #  endif
55611     }
55612 
operator !=VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55613     bool operator!=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55614     {
55615       return !operator==( rhs );
55616     }
55617 #endif
55618 
55619   public:
55620     VULKAN_HPP_NAMESPACE::StructureType                     sType = StructureType::ePerformanceConfigurationAcquireInfoINTEL;
55621     const void *                                            pNext = {};
55622     VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type =
55623       VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated;
55624   };
55625 
55626   template <>
55627   struct CppType<StructureType, StructureType::ePerformanceConfigurationAcquireInfoINTEL>
55628   {
55629     using Type = PerformanceConfigurationAcquireInfoINTEL;
55630   };
55631 
55632   struct PerformanceCounterDescriptionKHR
55633   {
55634     using NativeType = VkPerformanceCounterDescriptionKHR;
55635 
55636     static const bool                                  allowDuplicate = false;
55637     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceCounterDescriptionKHR;
55638 
55639 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceCounterDescriptionKHRVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55640     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR( VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags_       = {},
55641                                                               std::array<char, VK_MAX_DESCRIPTION_SIZE> const &           name_        = {},
55642                                                               std::array<char, VK_MAX_DESCRIPTION_SIZE> const &           category_    = {},
55643                                                               std::array<char, VK_MAX_DESCRIPTION_SIZE> const &           description_ = {},
55644                                                               void *                                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
55645       : pNext{ pNext_ }
55646       , flags{ flags_ }
55647       , name{ name_ }
55648       , category{ category_ }
55649       , description{ description_ }
55650     {
55651     }
55652 
55653     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55654 
PerformanceCounterDescriptionKHRVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55655     PerformanceCounterDescriptionKHR( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55656       : PerformanceCounterDescriptionKHR( *reinterpret_cast<PerformanceCounterDescriptionKHR const *>( &rhs ) )
55657     {
55658     }
55659 
55660     PerformanceCounterDescriptionKHR & operator=( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55661 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55662 
operator =VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55663     PerformanceCounterDescriptionKHR & operator=( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55664     {
55665       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR const *>( &rhs );
55666       return *this;
55667     }
55668 
operator VkPerformanceCounterDescriptionKHR const&VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55669     operator VkPerformanceCounterDescriptionKHR const &() const VULKAN_HPP_NOEXCEPT
55670     {
55671       return *reinterpret_cast<const VkPerformanceCounterDescriptionKHR *>( this );
55672     }
55673 
operator VkPerformanceCounterDescriptionKHR&VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55674     operator VkPerformanceCounterDescriptionKHR &() VULKAN_HPP_NOEXCEPT
55675     {
55676       return *reinterpret_cast<VkPerformanceCounterDescriptionKHR *>( this );
55677     }
55678 
55679 #if defined( VULKAN_HPP_USE_REFLECT )
55680 #  if 14 <= VULKAN_HPP_CPP_VERSION
55681     auto
55682 #  else
55683     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
55684                void * const &,
55685                VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR const &,
55686                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
55687                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
55688                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &>
55689 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55690       reflect() const VULKAN_HPP_NOEXCEPT
55691     {
55692       return std::tie( sType, pNext, flags, name, category, description );
55693     }
55694 #endif
55695 
55696 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55697     std::strong_ordering operator<=>( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55698     {
55699       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
55700         return cmp;
55701       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
55702         return cmp;
55703       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
55704         return cmp;
55705       if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 )
55706         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
55707       if ( auto cmp = strcmp( category, rhs.category ); cmp != 0 )
55708         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
55709       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
55710         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
55711 
55712       return std::strong_ordering::equivalent;
55713     }
55714 #endif
55715 
operator ==VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55716     bool operator==( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55717     {
55718       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( strcmp( name, rhs.name ) == 0 ) &&
55719              ( strcmp( category, rhs.category ) == 0 ) && ( strcmp( description, rhs.description ) == 0 );
55720     }
55721 
operator !=VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55722     bool operator!=( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55723     {
55724       return !operator==( rhs );
55725     }
55726 
55727   public:
55728     VULKAN_HPP_NAMESPACE::StructureType                                 sType       = StructureType::ePerformanceCounterDescriptionKHR;
55729     void *                                                              pNext       = {};
55730     VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR         flags       = {};
55731     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name        = {};
55732     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> category    = {};
55733     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
55734   };
55735 
55736   template <>
55737   struct CppType<StructureType, StructureType::ePerformanceCounterDescriptionKHR>
55738   {
55739     using Type = PerformanceCounterDescriptionKHR;
55740   };
55741 
55742   struct PerformanceCounterKHR
55743   {
55744     using NativeType = VkPerformanceCounterKHR;
55745 
55746     static const bool                                  allowDuplicate = false;
55747     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceCounterKHR;
55748 
55749 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
55750     VULKAN_HPP_CONSTEXPR_14
PerformanceCounterKHRVULKAN_HPP_NAMESPACE::PerformanceCounterKHR55751       PerformanceCounterKHR( VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR    unit_    = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric,
55752                              VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR   scope_   = VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer,
55753                              VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR storage_ = VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32,
55754                              std::array<uint8_t, VK_UUID_SIZE> const &          uuid_    = {},
55755                              void *                                             pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
55756       : pNext{ pNext_ }
55757       , unit{ unit_ }
55758       , scope{ scope_ }
55759       , storage{ storage_ }
55760       , uuid{ uuid_ }
55761     {
55762     }
55763 
55764     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55765 
PerformanceCounterKHRVULKAN_HPP_NAMESPACE::PerformanceCounterKHR55766     PerformanceCounterKHR( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55767       : PerformanceCounterKHR( *reinterpret_cast<PerformanceCounterKHR const *>( &rhs ) )
55768     {
55769     }
55770 
55771     PerformanceCounterKHR & operator=( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55772 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55773 
operator =VULKAN_HPP_NAMESPACE::PerformanceCounterKHR55774     PerformanceCounterKHR & operator=( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55775     {
55776       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR const *>( &rhs );
55777       return *this;
55778     }
55779 
operator VkPerformanceCounterKHR const&VULKAN_HPP_NAMESPACE::PerformanceCounterKHR55780     operator VkPerformanceCounterKHR const &() const VULKAN_HPP_NOEXCEPT
55781     {
55782       return *reinterpret_cast<const VkPerformanceCounterKHR *>( this );
55783     }
55784 
operator VkPerformanceCounterKHR&VULKAN_HPP_NAMESPACE::PerformanceCounterKHR55785     operator VkPerformanceCounterKHR &() VULKAN_HPP_NOEXCEPT
55786     {
55787       return *reinterpret_cast<VkPerformanceCounterKHR *>( this );
55788     }
55789 
55790 #if defined( VULKAN_HPP_USE_REFLECT )
55791 #  if 14 <= VULKAN_HPP_CPP_VERSION
55792     auto
55793 #  else
55794     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
55795                void * const &,
55796                VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR const &,
55797                VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR const &,
55798                VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR const &,
55799                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
55800 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceCounterKHR55801       reflect() const VULKAN_HPP_NOEXCEPT
55802     {
55803       return std::tie( sType, pNext, unit, scope, storage, uuid );
55804     }
55805 #endif
55806 
55807 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55808     auto operator<=>( PerformanceCounterKHR const & ) const = default;
55809 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceCounterKHR55810     bool operator==( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55811     {
55812 #  if defined( VULKAN_HPP_USE_REFLECT )
55813       return this->reflect() == rhs.reflect();
55814 #  else
55815       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( unit == rhs.unit ) && ( scope == rhs.scope ) && ( storage == rhs.storage ) &&
55816              ( uuid == rhs.uuid );
55817 #  endif
55818     }
55819 
operator !=VULKAN_HPP_NAMESPACE::PerformanceCounterKHR55820     bool operator!=( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55821     {
55822       return !operator==( rhs );
55823     }
55824 #endif
55825 
55826   public:
55827     VULKAN_HPP_NAMESPACE::StructureType                         sType   = StructureType::ePerformanceCounterKHR;
55828     void *                                                      pNext   = {};
55829     VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR             unit    = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric;
55830     VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR            scope   = VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer;
55831     VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR          storage = VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32;
55832     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> uuid    = {};
55833   };
55834 
55835   template <>
55836   struct CppType<StructureType, StructureType::ePerformanceCounterKHR>
55837   {
55838     using Type = PerformanceCounterKHR;
55839   };
55840 
55841   union PerformanceCounterResultKHR
55842   {
55843     using NativeType = VkPerformanceCounterResultKHR;
55844 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
55845 
PerformanceCounterResultKHR(int32_t int32_={} )55846     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int32_t int32_ = {} ) : int32( int32_ ) {}
55847 
PerformanceCounterResultKHR(int64_t int64_)55848     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int64_t int64_ ) : int64( int64_ ) {}
55849 
PerformanceCounterResultKHR(uint32_t uint32_)55850     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint32_t uint32_ ) : uint32( uint32_ ) {}
55851 
PerformanceCounterResultKHR(uint64_t uint64_)55852     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint64_t uint64_ ) : uint64( uint64_ ) {}
55853 
PerformanceCounterResultKHR(float float32_)55854     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( float float32_ ) : float32( float32_ ) {}
55855 
PerformanceCounterResultKHR(double float64_)55856     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( double float64_ ) : float64( float64_ ) {}
55857 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
55858 
55859 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setInt32(int32_t int32_)55860     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt32( int32_t int32_ ) VULKAN_HPP_NOEXCEPT
55861     {
55862       int32 = int32_;
55863       return *this;
55864     }
55865 
setInt64(int64_t int64_)55866     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt64( int64_t int64_ ) VULKAN_HPP_NOEXCEPT
55867     {
55868       int64 = int64_;
55869       return *this;
55870     }
55871 
setUint32(uint32_t uint32_)55872     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint32( uint32_t uint32_ ) VULKAN_HPP_NOEXCEPT
55873     {
55874       uint32 = uint32_;
55875       return *this;
55876     }
55877 
setUint64(uint64_t uint64_)55878     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint64( uint64_t uint64_ ) VULKAN_HPP_NOEXCEPT
55879     {
55880       uint64 = uint64_;
55881       return *this;
55882     }
55883 
setFloat32(float float32_)55884     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat32( float float32_ ) VULKAN_HPP_NOEXCEPT
55885     {
55886       float32 = float32_;
55887       return *this;
55888     }
55889 
setFloat64(double float64_)55890     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat64( double float64_ ) VULKAN_HPP_NOEXCEPT
55891     {
55892       float64 = float64_;
55893       return *this;
55894     }
55895 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
55896 
operator VkPerformanceCounterResultKHR const&() const55897     operator VkPerformanceCounterResultKHR const &() const
55898     {
55899       return *reinterpret_cast<const VkPerformanceCounterResultKHR *>( this );
55900     }
55901 
operator VkPerformanceCounterResultKHR&()55902     operator VkPerformanceCounterResultKHR &()
55903     {
55904       return *reinterpret_cast<VkPerformanceCounterResultKHR *>( this );
55905     }
55906 
55907     int32_t  int32;
55908     int64_t  int64;
55909     uint32_t uint32;
55910     uint64_t uint64;
55911     float    float32;
55912     double   float64;
55913   };
55914 
55915   struct PerformanceMarkerInfoINTEL
55916   {
55917     using NativeType = VkPerformanceMarkerInfoINTEL;
55918 
55919     static const bool                                  allowDuplicate = false;
55920     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceMarkerInfoINTEL;
55921 
55922 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55923     VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL( uint64_t marker_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
55924       : pNext{ pNext_ }
55925       , marker{ marker_ }
55926     {
55927     }
55928 
55929     VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55930 
PerformanceMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55931     PerformanceMarkerInfoINTEL( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55932       : PerformanceMarkerInfoINTEL( *reinterpret_cast<PerformanceMarkerInfoINTEL const *>( &rhs ) )
55933     {
55934     }
55935 
55936     PerformanceMarkerInfoINTEL & operator=( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55937 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55938 
operator =VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55939     PerformanceMarkerInfoINTEL & operator=( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55940     {
55941       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL const *>( &rhs );
55942       return *this;
55943     }
55944 
55945 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55946     VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
55947     {
55948       pNext = pNext_;
55949       return *this;
55950     }
55951 
setMarkerVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55952     VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & setMarker( uint64_t marker_ ) VULKAN_HPP_NOEXCEPT
55953     {
55954       marker = marker_;
55955       return *this;
55956     }
55957 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55958 
operator VkPerformanceMarkerInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55959     operator VkPerformanceMarkerInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
55960     {
55961       return *reinterpret_cast<const VkPerformanceMarkerInfoINTEL *>( this );
55962     }
55963 
operator VkPerformanceMarkerInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55964     operator VkPerformanceMarkerInfoINTEL &() VULKAN_HPP_NOEXCEPT
55965     {
55966       return *reinterpret_cast<VkPerformanceMarkerInfoINTEL *>( this );
55967     }
55968 
55969 #if defined( VULKAN_HPP_USE_REFLECT )
55970 #  if 14 <= VULKAN_HPP_CPP_VERSION
55971     auto
55972 #  else
55973     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
55974 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55975       reflect() const VULKAN_HPP_NOEXCEPT
55976     {
55977       return std::tie( sType, pNext, marker );
55978     }
55979 #endif
55980 
55981 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55982     auto operator<=>( PerformanceMarkerInfoINTEL const & ) const = default;
55983 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55984     bool operator==( PerformanceMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55985     {
55986 #  if defined( VULKAN_HPP_USE_REFLECT )
55987       return this->reflect() == rhs.reflect();
55988 #  else
55989       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( marker == rhs.marker );
55990 #  endif
55991     }
55992 
operator !=VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55993     bool operator!=( PerformanceMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55994     {
55995       return !operator==( rhs );
55996     }
55997 #endif
55998 
55999   public:
56000     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::ePerformanceMarkerInfoINTEL;
56001     const void *                        pNext  = {};
56002     uint64_t                            marker = {};
56003   };
56004 
56005   template <>
56006   struct CppType<StructureType, StructureType::ePerformanceMarkerInfoINTEL>
56007   {
56008     using Type = PerformanceMarkerInfoINTEL;
56009   };
56010 
56011   struct PerformanceOverrideInfoINTEL
56012   {
56013     using NativeType = VkPerformanceOverrideInfoINTEL;
56014 
56015     static const bool                                  allowDuplicate = false;
56016     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceOverrideInfoINTEL;
56017 
56018 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceOverrideInfoINTELVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56019     VULKAN_HPP_CONSTEXPR PerformanceOverrideInfoINTEL(
56020       VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type_      = VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware,
56021       VULKAN_HPP_NAMESPACE::Bool32                       enable_    = {},
56022       uint64_t                                           parameter_ = {},
56023       const void *                                       pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
56024       : pNext{ pNext_ }
56025       , type{ type_ }
56026       , enable{ enable_ }
56027       , parameter{ parameter_ }
56028     {
56029     }
56030 
56031     VULKAN_HPP_CONSTEXPR PerformanceOverrideInfoINTEL( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56032 
PerformanceOverrideInfoINTELVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56033     PerformanceOverrideInfoINTEL( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
56034       : PerformanceOverrideInfoINTEL( *reinterpret_cast<PerformanceOverrideInfoINTEL const *>( &rhs ) )
56035     {
56036     }
56037 
56038     PerformanceOverrideInfoINTEL & operator=( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56039 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56040 
operator =VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56041     PerformanceOverrideInfoINTEL & operator=( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
56042     {
56043       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL const *>( &rhs );
56044       return *this;
56045     }
56046 
56047 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56048     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
56049     {
56050       pNext = pNext_;
56051       return *this;
56052     }
56053 
setTypeVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56054     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setType( VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT
56055     {
56056       type = type_;
56057       return *this;
56058     }
56059 
setEnableVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56060     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setEnable( VULKAN_HPP_NAMESPACE::Bool32 enable_ ) VULKAN_HPP_NOEXCEPT
56061     {
56062       enable = enable_;
56063       return *this;
56064     }
56065 
setParameterVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56066     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setParameter( uint64_t parameter_ ) VULKAN_HPP_NOEXCEPT
56067     {
56068       parameter = parameter_;
56069       return *this;
56070     }
56071 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56072 
operator VkPerformanceOverrideInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56073     operator VkPerformanceOverrideInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
56074     {
56075       return *reinterpret_cast<const VkPerformanceOverrideInfoINTEL *>( this );
56076     }
56077 
operator VkPerformanceOverrideInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56078     operator VkPerformanceOverrideInfoINTEL &() VULKAN_HPP_NOEXCEPT
56079     {
56080       return *reinterpret_cast<VkPerformanceOverrideInfoINTEL *>( this );
56081     }
56082 
56083 #if defined( VULKAN_HPP_USE_REFLECT )
56084 #  if 14 <= VULKAN_HPP_CPP_VERSION
56085     auto
56086 #  else
56087     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
56088                const void * const &,
56089                VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL const &,
56090                VULKAN_HPP_NAMESPACE::Bool32 const &,
56091                uint64_t const &>
56092 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56093       reflect() const VULKAN_HPP_NOEXCEPT
56094     {
56095       return std::tie( sType, pNext, type, enable, parameter );
56096     }
56097 #endif
56098 
56099 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56100     auto operator<=>( PerformanceOverrideInfoINTEL const & ) const = default;
56101 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56102     bool operator==( PerformanceOverrideInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
56103     {
56104 #  if defined( VULKAN_HPP_USE_REFLECT )
56105       return this->reflect() == rhs.reflect();
56106 #  else
56107       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( enable == rhs.enable ) && ( parameter == rhs.parameter );
56108 #  endif
56109     }
56110 
operator !=VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL56111     bool operator!=( PerformanceOverrideInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
56112     {
56113       return !operator==( rhs );
56114     }
56115 #endif
56116 
56117   public:
56118     VULKAN_HPP_NAMESPACE::StructureType                sType     = StructureType::ePerformanceOverrideInfoINTEL;
56119     const void *                                       pNext     = {};
56120     VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type      = VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware;
56121     VULKAN_HPP_NAMESPACE::Bool32                       enable    = {};
56122     uint64_t                                           parameter = {};
56123   };
56124 
56125   template <>
56126   struct CppType<StructureType, StructureType::ePerformanceOverrideInfoINTEL>
56127   {
56128     using Type = PerformanceOverrideInfoINTEL;
56129   };
56130 
56131   struct PerformanceQuerySubmitInfoKHR
56132   {
56133     using NativeType = VkPerformanceQuerySubmitInfoKHR;
56134 
56135     static const bool                                  allowDuplicate = false;
56136     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceQuerySubmitInfoKHR;
56137 
56138 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceQuerySubmitInfoKHRVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR56139     VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( uint32_t counterPassIndex_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
56140       : pNext{ pNext_ }
56141       , counterPassIndex{ counterPassIndex_ }
56142     {
56143     }
56144 
56145     VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56146 
PerformanceQuerySubmitInfoKHRVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR56147     PerformanceQuerySubmitInfoKHR( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56148       : PerformanceQuerySubmitInfoKHR( *reinterpret_cast<PerformanceQuerySubmitInfoKHR const *>( &rhs ) )
56149     {
56150     }
56151 
56152     PerformanceQuerySubmitInfoKHR & operator=( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56153 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56154 
operator =VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR56155     PerformanceQuerySubmitInfoKHR & operator=( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56156     {
56157       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR const *>( &rhs );
56158       return *this;
56159     }
56160 
56161 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR56162     VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
56163     {
56164       pNext = pNext_;
56165       return *this;
56166     }
56167 
setCounterPassIndexVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR56168     VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & setCounterPassIndex( uint32_t counterPassIndex_ ) VULKAN_HPP_NOEXCEPT
56169     {
56170       counterPassIndex = counterPassIndex_;
56171       return *this;
56172     }
56173 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56174 
operator VkPerformanceQuerySubmitInfoKHR const&VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR56175     operator VkPerformanceQuerySubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT
56176     {
56177       return *reinterpret_cast<const VkPerformanceQuerySubmitInfoKHR *>( this );
56178     }
56179 
operator VkPerformanceQuerySubmitInfoKHR&VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR56180     operator VkPerformanceQuerySubmitInfoKHR &() VULKAN_HPP_NOEXCEPT
56181     {
56182       return *reinterpret_cast<VkPerformanceQuerySubmitInfoKHR *>( this );
56183     }
56184 
56185 #if defined( VULKAN_HPP_USE_REFLECT )
56186 #  if 14 <= VULKAN_HPP_CPP_VERSION
56187     auto
56188 #  else
56189     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
56190 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR56191       reflect() const VULKAN_HPP_NOEXCEPT
56192     {
56193       return std::tie( sType, pNext, counterPassIndex );
56194     }
56195 #endif
56196 
56197 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56198     auto operator<=>( PerformanceQuerySubmitInfoKHR const & ) const = default;
56199 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR56200     bool operator==( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
56201     {
56202 #  if defined( VULKAN_HPP_USE_REFLECT )
56203       return this->reflect() == rhs.reflect();
56204 #  else
56205       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( counterPassIndex == rhs.counterPassIndex );
56206 #  endif
56207     }
56208 
operator !=VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR56209     bool operator!=( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
56210     {
56211       return !operator==( rhs );
56212     }
56213 #endif
56214 
56215   public:
56216     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePerformanceQuerySubmitInfoKHR;
56217     const void *                        pNext            = {};
56218     uint32_t                            counterPassIndex = {};
56219   };
56220 
56221   template <>
56222   struct CppType<StructureType, StructureType::ePerformanceQuerySubmitInfoKHR>
56223   {
56224     using Type = PerformanceQuerySubmitInfoKHR;
56225   };
56226 
56227   struct PerformanceStreamMarkerInfoINTEL
56228   {
56229     using NativeType = VkPerformanceStreamMarkerInfoINTEL;
56230 
56231     static const bool                                  allowDuplicate = false;
56232     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceStreamMarkerInfoINTEL;
56233 
56234 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceStreamMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL56235     VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL( uint32_t marker_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
56236       : pNext{ pNext_ }
56237       , marker{ marker_ }
56238     {
56239     }
56240 
56241     VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56242 
PerformanceStreamMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL56243     PerformanceStreamMarkerInfoINTEL( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
56244       : PerformanceStreamMarkerInfoINTEL( *reinterpret_cast<PerformanceStreamMarkerInfoINTEL const *>( &rhs ) )
56245     {
56246     }
56247 
56248     PerformanceStreamMarkerInfoINTEL & operator=( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56249 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56250 
operator =VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL56251     PerformanceStreamMarkerInfoINTEL & operator=( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
56252     {
56253       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL const *>( &rhs );
56254       return *this;
56255     }
56256 
56257 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL56258     VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
56259     {
56260       pNext = pNext_;
56261       return *this;
56262     }
56263 
setMarkerVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL56264     VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & setMarker( uint32_t marker_ ) VULKAN_HPP_NOEXCEPT
56265     {
56266       marker = marker_;
56267       return *this;
56268     }
56269 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56270 
operator VkPerformanceStreamMarkerInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL56271     operator VkPerformanceStreamMarkerInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
56272     {
56273       return *reinterpret_cast<const VkPerformanceStreamMarkerInfoINTEL *>( this );
56274     }
56275 
operator VkPerformanceStreamMarkerInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL56276     operator VkPerformanceStreamMarkerInfoINTEL &() VULKAN_HPP_NOEXCEPT
56277     {
56278       return *reinterpret_cast<VkPerformanceStreamMarkerInfoINTEL *>( this );
56279     }
56280 
56281 #if defined( VULKAN_HPP_USE_REFLECT )
56282 #  if 14 <= VULKAN_HPP_CPP_VERSION
56283     auto
56284 #  else
56285     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
56286 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL56287       reflect() const VULKAN_HPP_NOEXCEPT
56288     {
56289       return std::tie( sType, pNext, marker );
56290     }
56291 #endif
56292 
56293 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56294     auto operator<=>( PerformanceStreamMarkerInfoINTEL const & ) const = default;
56295 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL56296     bool operator==( PerformanceStreamMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
56297     {
56298 #  if defined( VULKAN_HPP_USE_REFLECT )
56299       return this->reflect() == rhs.reflect();
56300 #  else
56301       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( marker == rhs.marker );
56302 #  endif
56303     }
56304 
operator !=VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL56305     bool operator!=( PerformanceStreamMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
56306     {
56307       return !operator==( rhs );
56308     }
56309 #endif
56310 
56311   public:
56312     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::ePerformanceStreamMarkerInfoINTEL;
56313     const void *                        pNext  = {};
56314     uint32_t                            marker = {};
56315   };
56316 
56317   template <>
56318   struct CppType<StructureType, StructureType::ePerformanceStreamMarkerInfoINTEL>
56319   {
56320     using Type = PerformanceStreamMarkerInfoINTEL;
56321   };
56322 
56323   union PerformanceValueDataINTEL
56324   {
56325     using NativeType = VkPerformanceValueDataINTEL;
56326 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
56327 
PerformanceValueDataINTEL(uint32_t value32_={} )56328     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( uint32_t value32_ = {} ) : value32( value32_ ) {}
56329 
PerformanceValueDataINTEL(uint64_t value64_)56330     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( uint64_t value64_ ) : value64( value64_ ) {}
56331 
PerformanceValueDataINTEL(float valueFloat_)56332     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( float valueFloat_ ) : valueFloat( valueFloat_ ) {}
56333 
PerformanceValueDataINTEL(const char * valueString_)56334     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( const char * valueString_ ) : valueString( valueString_ ) {}
56335 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
56336 
56337 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setValue32(uint32_t value32_)56338     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValue32( uint32_t value32_ ) VULKAN_HPP_NOEXCEPT
56339     {
56340       value32 = value32_;
56341       return *this;
56342     }
56343 
setValue64(uint64_t value64_)56344     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValue64( uint64_t value64_ ) VULKAN_HPP_NOEXCEPT
56345     {
56346       value64 = value64_;
56347       return *this;
56348     }
56349 
setValueFloat(float valueFloat_)56350     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueFloat( float valueFloat_ ) VULKAN_HPP_NOEXCEPT
56351     {
56352       valueFloat = valueFloat_;
56353       return *this;
56354     }
56355 
setValueBool(VULKAN_HPP_NAMESPACE::Bool32 valueBool_)56356     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueBool( VULKAN_HPP_NAMESPACE::Bool32 valueBool_ ) VULKAN_HPP_NOEXCEPT
56357     {
56358       valueBool = valueBool_;
56359       return *this;
56360     }
56361 
setValueString(const char * valueString_)56362     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueString( const char * valueString_ ) VULKAN_HPP_NOEXCEPT
56363     {
56364       valueString = valueString_;
56365       return *this;
56366     }
56367 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
56368 
operator VkPerformanceValueDataINTEL const&() const56369     operator VkPerformanceValueDataINTEL const &() const
56370     {
56371       return *reinterpret_cast<const VkPerformanceValueDataINTEL *>( this );
56372     }
56373 
operator VkPerformanceValueDataINTEL&()56374     operator VkPerformanceValueDataINTEL &()
56375     {
56376       return *reinterpret_cast<VkPerformanceValueDataINTEL *>( this );
56377     }
56378 
56379 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
56380     uint32_t                     value32;
56381     uint64_t                     value64;
56382     float                        valueFloat;
56383     VULKAN_HPP_NAMESPACE::Bool32 valueBool;
56384     const char *                 valueString;
56385 #else
56386     uint32_t     value32;
56387     uint64_t     value64;
56388     float        valueFloat;
56389     VkBool32     valueBool;
56390     const char * valueString;
56391 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
56392   };
56393 
56394   struct PerformanceValueINTEL
56395   {
56396     using NativeType = VkPerformanceValueINTEL;
56397 
56398 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
56399     VULKAN_HPP_CONSTEXPR_14
PerformanceValueINTELVULKAN_HPP_NAMESPACE::PerformanceValueINTEL56400       PerformanceValueINTEL( VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type_ = VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL::eUint32,
56401                              VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL data_ = {} ) VULKAN_HPP_NOEXCEPT
56402       : type{ type_ }
56403       , data{ data_ }
56404     {
56405     }
56406 
56407     VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56408 
PerformanceValueINTELVULKAN_HPP_NAMESPACE::PerformanceValueINTEL56409     PerformanceValueINTEL( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
56410       : PerformanceValueINTEL( *reinterpret_cast<PerformanceValueINTEL const *>( &rhs ) )
56411     {
56412     }
56413 
56414     PerformanceValueINTEL & operator=( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56415 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56416 
operator =VULKAN_HPP_NAMESPACE::PerformanceValueINTEL56417     PerformanceValueINTEL & operator=( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
56418     {
56419       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceValueINTEL const *>( &rhs );
56420       return *this;
56421     }
56422 
operator VkPerformanceValueINTEL const&VULKAN_HPP_NAMESPACE::PerformanceValueINTEL56423     operator VkPerformanceValueINTEL const &() const VULKAN_HPP_NOEXCEPT
56424     {
56425       return *reinterpret_cast<const VkPerformanceValueINTEL *>( this );
56426     }
56427 
operator VkPerformanceValueINTEL&VULKAN_HPP_NAMESPACE::PerformanceValueINTEL56428     operator VkPerformanceValueINTEL &() VULKAN_HPP_NOEXCEPT
56429     {
56430       return *reinterpret_cast<VkPerformanceValueINTEL *>( this );
56431     }
56432 
56433 #if defined( VULKAN_HPP_USE_REFLECT )
56434 #  if 14 <= VULKAN_HPP_CPP_VERSION
56435     auto
56436 #  else
56437     std::tuple<VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL const &, VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL const &>
56438 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceValueINTEL56439       reflect() const VULKAN_HPP_NOEXCEPT
56440     {
56441       return std::tie( type, data );
56442     }
56443 #endif
56444 
56445   public:
56446     VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type = VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL::eUint32;
56447     VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL data = {};
56448   };
56449 
56450   struct PhysicalDevice16BitStorageFeatures
56451   {
56452     using NativeType = VkPhysicalDevice16BitStorageFeatures;
56453 
56454     static const bool                                  allowDuplicate = false;
56455     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevice16BitStorageFeatures;
56456 
56457 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevice16BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56458     VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_           = {},
56459                                                              VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {},
56460                                                              VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_              = {},
56461                                                              VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_               = {},
56462                                                              void *                       pNext_                              = nullptr ) VULKAN_HPP_NOEXCEPT
56463       : pNext{ pNext_ }
56464       , storageBuffer16BitAccess{ storageBuffer16BitAccess_ }
56465       , uniformAndStorageBuffer16BitAccess{ uniformAndStorageBuffer16BitAccess_ }
56466       , storagePushConstant16{ storagePushConstant16_ }
56467       , storageInputOutput16{ storageInputOutput16_ }
56468     {
56469     }
56470 
56471     VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56472 
PhysicalDevice16BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56473     PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
56474       : PhysicalDevice16BitStorageFeatures( *reinterpret_cast<PhysicalDevice16BitStorageFeatures const *>( &rhs ) )
56475     {
56476     }
56477 
56478     PhysicalDevice16BitStorageFeatures & operator=( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56479 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56480 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56481     PhysicalDevice16BitStorageFeatures & operator=( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
56482     {
56483       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures const *>( &rhs );
56484       return *this;
56485     }
56486 
56487 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56488     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56489     {
56490       pNext = pNext_;
56491       return *this;
56492     }
56493 
56494     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56495       setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
56496     {
56497       storageBuffer16BitAccess = storageBuffer16BitAccess_;
56498       return *this;
56499     }
56500 
56501     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setUniformAndStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56502       setUniformAndStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
56503     {
56504       uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
56505       return *this;
56506     }
56507 
56508     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setStoragePushConstant16VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56509       setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT
56510     {
56511       storagePushConstant16 = storagePushConstant16_;
56512       return *this;
56513     }
56514 
56515     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setStorageInputOutput16VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56516       setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT
56517     {
56518       storageInputOutput16 = storageInputOutput16_;
56519       return *this;
56520     }
56521 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56522 
operator VkPhysicalDevice16BitStorageFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56523     operator VkPhysicalDevice16BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT
56524     {
56525       return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures *>( this );
56526     }
56527 
operator VkPhysicalDevice16BitStorageFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56528     operator VkPhysicalDevice16BitStorageFeatures &() VULKAN_HPP_NOEXCEPT
56529     {
56530       return *reinterpret_cast<VkPhysicalDevice16BitStorageFeatures *>( this );
56531     }
56532 
56533 #if defined( VULKAN_HPP_USE_REFLECT )
56534 #  if 14 <= VULKAN_HPP_CPP_VERSION
56535     auto
56536 #  else
56537     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
56538                void * const &,
56539                VULKAN_HPP_NAMESPACE::Bool32 const &,
56540                VULKAN_HPP_NAMESPACE::Bool32 const &,
56541                VULKAN_HPP_NAMESPACE::Bool32 const &,
56542                VULKAN_HPP_NAMESPACE::Bool32 const &>
56543 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56544       reflect() const VULKAN_HPP_NOEXCEPT
56545     {
56546       return std::tie( sType, pNext, storageBuffer16BitAccess, uniformAndStorageBuffer16BitAccess, storagePushConstant16, storageInputOutput16 );
56547     }
56548 #endif
56549 
56550 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56551     auto operator<=>( PhysicalDevice16BitStorageFeatures const & ) const = default;
56552 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56553     bool         operator==( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
56554     {
56555 #  if defined( VULKAN_HPP_USE_REFLECT )
56556       return this->reflect() == rhs.reflect();
56557 #  else
56558       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess ) &&
56559              ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess ) && ( storagePushConstant16 == rhs.storagePushConstant16 ) &&
56560              ( storageInputOutput16 == rhs.storageInputOutput16 );
56561 #  endif
56562     }
56563 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56564     bool operator!=( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
56565     {
56566       return !operator==( rhs );
56567     }
56568 #endif
56569 
56570   public:
56571     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDevice16BitStorageFeatures;
56572     void *                              pNext                              = {};
56573     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer16BitAccess           = {};
56574     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer16BitAccess = {};
56575     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant16              = {};
56576     VULKAN_HPP_NAMESPACE::Bool32        storageInputOutput16               = {};
56577   };
56578 
56579   template <>
56580   struct CppType<StructureType, StructureType::ePhysicalDevice16BitStorageFeatures>
56581   {
56582     using Type = PhysicalDevice16BitStorageFeatures;
56583   };
56584 
56585   using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
56586 
56587   struct PhysicalDevice4444FormatsFeaturesEXT
56588   {
56589     using NativeType = VkPhysicalDevice4444FormatsFeaturesEXT;
56590 
56591     static const bool                                  allowDuplicate = false;
56592     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevice4444FormatsFeaturesEXT;
56593 
56594 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevice4444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56595     VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ = {},
56596                                                                VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ = {},
56597                                                                void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
56598       : pNext{ pNext_ }
56599       , formatA4R4G4B4{ formatA4R4G4B4_ }
56600       , formatA4B4G4R4{ formatA4B4G4R4_ }
56601     {
56602     }
56603 
56604     VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56605 
PhysicalDevice4444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56606     PhysicalDevice4444FormatsFeaturesEXT( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56607       : PhysicalDevice4444FormatsFeaturesEXT( *reinterpret_cast<PhysicalDevice4444FormatsFeaturesEXT const *>( &rhs ) )
56608     {
56609     }
56610 
56611     PhysicalDevice4444FormatsFeaturesEXT & operator=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56612 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56613 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56614     PhysicalDevice4444FormatsFeaturesEXT & operator=( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56615     {
56616       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT const *>( &rhs );
56617       return *this;
56618     }
56619 
56620 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56621     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56622     {
56623       pNext = pNext_;
56624       return *this;
56625     }
56626 
setFormatA4R4G4B4VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56627     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setFormatA4R4G4B4( VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ ) VULKAN_HPP_NOEXCEPT
56628     {
56629       formatA4R4G4B4 = formatA4R4G4B4_;
56630       return *this;
56631     }
56632 
setFormatA4B4G4R4VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56633     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setFormatA4B4G4R4( VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ ) VULKAN_HPP_NOEXCEPT
56634     {
56635       formatA4B4G4R4 = formatA4B4G4R4_;
56636       return *this;
56637     }
56638 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56639 
operator VkPhysicalDevice4444FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56640     operator VkPhysicalDevice4444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
56641     {
56642       return *reinterpret_cast<const VkPhysicalDevice4444FormatsFeaturesEXT *>( this );
56643     }
56644 
operator VkPhysicalDevice4444FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56645     operator VkPhysicalDevice4444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
56646     {
56647       return *reinterpret_cast<VkPhysicalDevice4444FormatsFeaturesEXT *>( this );
56648     }
56649 
56650 #if defined( VULKAN_HPP_USE_REFLECT )
56651 #  if 14 <= VULKAN_HPP_CPP_VERSION
56652     auto
56653 #  else
56654     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56655 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56656       reflect() const VULKAN_HPP_NOEXCEPT
56657     {
56658       return std::tie( sType, pNext, formatA4R4G4B4, formatA4B4G4R4 );
56659     }
56660 #endif
56661 
56662 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56663     auto operator<=>( PhysicalDevice4444FormatsFeaturesEXT const & ) const = default;
56664 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56665     bool operator==( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56666     {
56667 #  if defined( VULKAN_HPP_USE_REFLECT )
56668       return this->reflect() == rhs.reflect();
56669 #  else
56670       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatA4R4G4B4 == rhs.formatA4R4G4B4 ) && ( formatA4B4G4R4 == rhs.formatA4B4G4R4 );
56671 #  endif
56672     }
56673 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56674     bool operator!=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56675     {
56676       return !operator==( rhs );
56677     }
56678 #endif
56679 
56680   public:
56681     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDevice4444FormatsFeaturesEXT;
56682     void *                              pNext          = {};
56683     VULKAN_HPP_NAMESPACE::Bool32        formatA4R4G4B4 = {};
56684     VULKAN_HPP_NAMESPACE::Bool32        formatA4B4G4R4 = {};
56685   };
56686 
56687   template <>
56688   struct CppType<StructureType, StructureType::ePhysicalDevice4444FormatsFeaturesEXT>
56689   {
56690     using Type = PhysicalDevice4444FormatsFeaturesEXT;
56691   };
56692 
56693   struct PhysicalDevice8BitStorageFeatures
56694   {
56695     using NativeType = VkPhysicalDevice8BitStorageFeatures;
56696 
56697     static const bool                                  allowDuplicate = false;
56698     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevice8BitStorageFeatures;
56699 
56700 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevice8BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56701     VULKAN_HPP_CONSTEXPR PhysicalDevice8BitStorageFeatures( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_           = {},
56702                                                             VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ = {},
56703                                                             VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_              = {},
56704                                                             void *                       pNext_                             = nullptr ) VULKAN_HPP_NOEXCEPT
56705       : pNext{ pNext_ }
56706       , storageBuffer8BitAccess{ storageBuffer8BitAccess_ }
56707       , uniformAndStorageBuffer8BitAccess{ uniformAndStorageBuffer8BitAccess_ }
56708       , storagePushConstant8{ storagePushConstant8_ }
56709     {
56710     }
56711 
56712     VULKAN_HPP_CONSTEXPR PhysicalDevice8BitStorageFeatures( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56713 
PhysicalDevice8BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56714     PhysicalDevice8BitStorageFeatures( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
56715       : PhysicalDevice8BitStorageFeatures( *reinterpret_cast<PhysicalDevice8BitStorageFeatures const *>( &rhs ) )
56716     {
56717     }
56718 
56719     PhysicalDevice8BitStorageFeatures & operator=( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56720 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56721 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56722     PhysicalDevice8BitStorageFeatures & operator=( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
56723     {
56724       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures const *>( &rhs );
56725       return *this;
56726     }
56727 
56728 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56729     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56730     {
56731       pNext = pNext_;
56732       return *this;
56733     }
56734 
56735     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures &
setStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56736       setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
56737     {
56738       storageBuffer8BitAccess = storageBuffer8BitAccess_;
56739       return *this;
56740     }
56741 
56742     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures &
setUniformAndStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56743       setUniformAndStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
56744     {
56745       uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_;
56746       return *this;
56747     }
56748 
56749     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures &
setStoragePushConstant8VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56750       setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT
56751     {
56752       storagePushConstant8 = storagePushConstant8_;
56753       return *this;
56754     }
56755 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56756 
operator VkPhysicalDevice8BitStorageFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56757     operator VkPhysicalDevice8BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT
56758     {
56759       return *reinterpret_cast<const VkPhysicalDevice8BitStorageFeatures *>( this );
56760     }
56761 
operator VkPhysicalDevice8BitStorageFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56762     operator VkPhysicalDevice8BitStorageFeatures &() VULKAN_HPP_NOEXCEPT
56763     {
56764       return *reinterpret_cast<VkPhysicalDevice8BitStorageFeatures *>( this );
56765     }
56766 
56767 #if defined( VULKAN_HPP_USE_REFLECT )
56768 #  if 14 <= VULKAN_HPP_CPP_VERSION
56769     auto
56770 #  else
56771     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
56772                void * const &,
56773                VULKAN_HPP_NAMESPACE::Bool32 const &,
56774                VULKAN_HPP_NAMESPACE::Bool32 const &,
56775                VULKAN_HPP_NAMESPACE::Bool32 const &>
56776 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56777       reflect() const VULKAN_HPP_NOEXCEPT
56778     {
56779       return std::tie( sType, pNext, storageBuffer8BitAccess, uniformAndStorageBuffer8BitAccess, storagePushConstant8 );
56780     }
56781 #endif
56782 
56783 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56784     auto operator<=>( PhysicalDevice8BitStorageFeatures const & ) const = default;
56785 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56786     bool operator==( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
56787     {
56788 #  if defined( VULKAN_HPP_USE_REFLECT )
56789       return this->reflect() == rhs.reflect();
56790 #  else
56791       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess ) &&
56792              ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess ) && ( storagePushConstant8 == rhs.storagePushConstant8 );
56793 #  endif
56794     }
56795 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56796     bool operator!=( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
56797     {
56798       return !operator==( rhs );
56799     }
56800 #endif
56801 
56802   public:
56803     VULKAN_HPP_NAMESPACE::StructureType sType                             = StructureType::ePhysicalDevice8BitStorageFeatures;
56804     void *                              pNext                             = {};
56805     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer8BitAccess           = {};
56806     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer8BitAccess = {};
56807     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant8              = {};
56808   };
56809 
56810   template <>
56811   struct CppType<StructureType, StructureType::ePhysicalDevice8BitStorageFeatures>
56812   {
56813     using Type = PhysicalDevice8BitStorageFeatures;
56814   };
56815 
56816   using PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
56817 
56818   struct PhysicalDeviceASTCDecodeFeaturesEXT
56819   {
56820     using NativeType = VkPhysicalDeviceASTCDecodeFeaturesEXT;
56821 
56822     static const bool                                  allowDuplicate = false;
56823     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
56824 
56825 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceASTCDecodeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56826     VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ = {},
56827                                                               void *                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
56828       : pNext{ pNext_ }
56829       , decodeModeSharedExponent{ decodeModeSharedExponent_ }
56830     {
56831     }
56832 
56833     VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56834 
PhysicalDeviceASTCDecodeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56835     PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56836       : PhysicalDeviceASTCDecodeFeaturesEXT( *reinterpret_cast<PhysicalDeviceASTCDecodeFeaturesEXT const *>( &rhs ) )
56837     {
56838     }
56839 
56840     PhysicalDeviceASTCDecodeFeaturesEXT & operator=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56841 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56842 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56843     PhysicalDeviceASTCDecodeFeaturesEXT & operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56844     {
56845       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT const *>( &rhs );
56846       return *this;
56847     }
56848 
56849 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56850     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56851     {
56852       pNext = pNext_;
56853       return *this;
56854     }
56855 
56856     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT &
setDecodeModeSharedExponentVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56857       setDecodeModeSharedExponent( VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ ) VULKAN_HPP_NOEXCEPT
56858     {
56859       decodeModeSharedExponent = decodeModeSharedExponent_;
56860       return *this;
56861     }
56862 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56863 
operator VkPhysicalDeviceASTCDecodeFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56864     operator VkPhysicalDeviceASTCDecodeFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
56865     {
56866       return *reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT *>( this );
56867     }
56868 
operator VkPhysicalDeviceASTCDecodeFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56869     operator VkPhysicalDeviceASTCDecodeFeaturesEXT &() VULKAN_HPP_NOEXCEPT
56870     {
56871       return *reinterpret_cast<VkPhysicalDeviceASTCDecodeFeaturesEXT *>( this );
56872     }
56873 
56874 #if defined( VULKAN_HPP_USE_REFLECT )
56875 #  if 14 <= VULKAN_HPP_CPP_VERSION
56876     auto
56877 #  else
56878     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56879 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56880       reflect() const VULKAN_HPP_NOEXCEPT
56881     {
56882       return std::tie( sType, pNext, decodeModeSharedExponent );
56883     }
56884 #endif
56885 
56886 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56887     auto operator<=>( PhysicalDeviceASTCDecodeFeaturesEXT const & ) const = default;
56888 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56889     bool operator==( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56890     {
56891 #  if defined( VULKAN_HPP_USE_REFLECT )
56892       return this->reflect() == rhs.reflect();
56893 #  else
56894       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decodeModeSharedExponent == rhs.decodeModeSharedExponent );
56895 #  endif
56896     }
56897 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56898     bool operator!=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56899     {
56900       return !operator==( rhs );
56901     }
56902 #endif
56903 
56904   public:
56905     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
56906     void *                              pNext                    = {};
56907     VULKAN_HPP_NAMESPACE::Bool32        decodeModeSharedExponent = {};
56908   };
56909 
56910   template <>
56911   struct CppType<StructureType, StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT>
56912   {
56913     using Type = PhysicalDeviceASTCDecodeFeaturesEXT;
56914   };
56915 
56916   struct PhysicalDeviceAccelerationStructureFeaturesKHR
56917   {
56918     using NativeType = VkPhysicalDeviceAccelerationStructureFeaturesKHR;
56919 
56920     static const bool                                  allowDuplicate = false;
56921     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR;
56922 
56923 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
56924     VULKAN_HPP_CONSTEXPR
PhysicalDeviceAccelerationStructureFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56925       PhysicalDeviceAccelerationStructureFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure_                                 = {},
56926                                                       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay_                    = {},
56927                                                       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild_                    = {},
56928                                                       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands_                     = {},
56929                                                       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ = {},
56930                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
56931       : pNext{ pNext_ }
56932       , accelerationStructure{ accelerationStructure_ }
56933       , accelerationStructureCaptureReplay{ accelerationStructureCaptureReplay_ }
56934       , accelerationStructureIndirectBuild{ accelerationStructureIndirectBuild_ }
56935       , accelerationStructureHostCommands{ accelerationStructureHostCommands_ }
56936       , descriptorBindingAccelerationStructureUpdateAfterBind{ descriptorBindingAccelerationStructureUpdateAfterBind_ }
56937     {
56938     }
56939 
56940     VULKAN_HPP_CONSTEXPR
56941       PhysicalDeviceAccelerationStructureFeaturesKHR( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56942 
PhysicalDeviceAccelerationStructureFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56943     PhysicalDeviceAccelerationStructureFeaturesKHR( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56944       : PhysicalDeviceAccelerationStructureFeaturesKHR( *reinterpret_cast<PhysicalDeviceAccelerationStructureFeaturesKHR const *>( &rhs ) )
56945     {
56946     }
56947 
56948     PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56949 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56950 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56951     PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56952     {
56953       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR const *>( &rhs );
56954       return *this;
56955     }
56956 
56957 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56958     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56959     {
56960       pNext = pNext_;
56961       return *this;
56962     }
56963 
56964     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setAccelerationStructureVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56965       setAccelerationStructure( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
56966     {
56967       accelerationStructure = accelerationStructure_;
56968       return *this;
56969     }
56970 
56971     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setAccelerationStructureCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56972       setAccelerationStructureCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
56973     {
56974       accelerationStructureCaptureReplay = accelerationStructureCaptureReplay_;
56975       return *this;
56976     }
56977 
56978     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setAccelerationStructureIndirectBuildVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56979       setAccelerationStructureIndirectBuild( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild_ ) VULKAN_HPP_NOEXCEPT
56980     {
56981       accelerationStructureIndirectBuild = accelerationStructureIndirectBuild_;
56982       return *this;
56983     }
56984 
56985     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setAccelerationStructureHostCommandsVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56986       setAccelerationStructureHostCommands( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands_ ) VULKAN_HPP_NOEXCEPT
56987     {
56988       accelerationStructureHostCommands = accelerationStructureHostCommands_;
56989       return *this;
56990     }
56991 
setDescriptorBindingAccelerationStructureUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56992     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setDescriptorBindingAccelerationStructureUpdateAfterBind(
56993       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
56994     {
56995       descriptorBindingAccelerationStructureUpdateAfterBind = descriptorBindingAccelerationStructureUpdateAfterBind_;
56996       return *this;
56997     }
56998 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56999 
operator VkPhysicalDeviceAccelerationStructureFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR57000     operator VkPhysicalDeviceAccelerationStructureFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
57001     {
57002       return *reinterpret_cast<const VkPhysicalDeviceAccelerationStructureFeaturesKHR *>( this );
57003     }
57004 
operator VkPhysicalDeviceAccelerationStructureFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR57005     operator VkPhysicalDeviceAccelerationStructureFeaturesKHR &() VULKAN_HPP_NOEXCEPT
57006     {
57007       return *reinterpret_cast<VkPhysicalDeviceAccelerationStructureFeaturesKHR *>( this );
57008     }
57009 
57010 #if defined( VULKAN_HPP_USE_REFLECT )
57011 #  if 14 <= VULKAN_HPP_CPP_VERSION
57012     auto
57013 #  else
57014     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57015                void * const &,
57016                VULKAN_HPP_NAMESPACE::Bool32 const &,
57017                VULKAN_HPP_NAMESPACE::Bool32 const &,
57018                VULKAN_HPP_NAMESPACE::Bool32 const &,
57019                VULKAN_HPP_NAMESPACE::Bool32 const &,
57020                VULKAN_HPP_NAMESPACE::Bool32 const &>
57021 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR57022       reflect() const VULKAN_HPP_NOEXCEPT
57023     {
57024       return std::tie( sType,
57025                        pNext,
57026                        accelerationStructure,
57027                        accelerationStructureCaptureReplay,
57028                        accelerationStructureIndirectBuild,
57029                        accelerationStructureHostCommands,
57030                        descriptorBindingAccelerationStructureUpdateAfterBind );
57031     }
57032 #endif
57033 
57034 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57035     auto operator<=>( PhysicalDeviceAccelerationStructureFeaturesKHR const & ) const = default;
57036 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR57037     bool operator==( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57038     {
57039 #  if defined( VULKAN_HPP_USE_REFLECT )
57040       return this->reflect() == rhs.reflect();
57041 #  else
57042       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ) &&
57043              ( accelerationStructureCaptureReplay == rhs.accelerationStructureCaptureReplay ) &&
57044              ( accelerationStructureIndirectBuild == rhs.accelerationStructureIndirectBuild ) &&
57045              ( accelerationStructureHostCommands == rhs.accelerationStructureHostCommands ) &&
57046              ( descriptorBindingAccelerationStructureUpdateAfterBind == rhs.descriptorBindingAccelerationStructureUpdateAfterBind );
57047 #  endif
57048     }
57049 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR57050     bool operator!=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57051     {
57052       return !operator==( rhs );
57053     }
57054 #endif
57055 
57056   public:
57057     VULKAN_HPP_NAMESPACE::StructureType sType                                                 = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR;
57058     void *                              pNext                                                 = {};
57059     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructure                                 = {};
57060     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructureCaptureReplay                    = {};
57061     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructureIndirectBuild                    = {};
57062     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructureHostCommands                     = {};
57063     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingAccelerationStructureUpdateAfterBind = {};
57064   };
57065 
57066   template <>
57067   struct CppType<StructureType, StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR>
57068   {
57069     using Type = PhysicalDeviceAccelerationStructureFeaturesKHR;
57070   };
57071 
57072   struct PhysicalDeviceAccelerationStructurePropertiesKHR
57073   {
57074     using NativeType = VkPhysicalDeviceAccelerationStructurePropertiesKHR;
57075 
57076     static const bool                                  allowDuplicate = false;
57077     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR;
57078 
57079 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAccelerationStructurePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR57080     VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructurePropertiesKHR( uint64_t maxGeometryCount_                                           = {},
57081                                                                            uint64_t maxInstanceCount_                                           = {},
57082                                                                            uint64_t maxPrimitiveCount_                                          = {},
57083                                                                            uint32_t maxPerStageDescriptorAccelerationStructures_                = {},
57084                                                                            uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures_ = {},
57085                                                                            uint32_t maxDescriptorSetAccelerationStructures_                     = {},
57086                                                                            uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures_      = {},
57087                                                                            uint32_t minAccelerationStructureScratchOffsetAlignment_             = {},
57088                                                                            void *   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57089       : pNext{ pNext_ }
57090       , maxGeometryCount{ maxGeometryCount_ }
57091       , maxInstanceCount{ maxInstanceCount_ }
57092       , maxPrimitiveCount{ maxPrimitiveCount_ }
57093       , maxPerStageDescriptorAccelerationStructures{ maxPerStageDescriptorAccelerationStructures_ }
57094       , maxPerStageDescriptorUpdateAfterBindAccelerationStructures{ maxPerStageDescriptorUpdateAfterBindAccelerationStructures_ }
57095       , maxDescriptorSetAccelerationStructures{ maxDescriptorSetAccelerationStructures_ }
57096       , maxDescriptorSetUpdateAfterBindAccelerationStructures{ maxDescriptorSetUpdateAfterBindAccelerationStructures_ }
57097       , minAccelerationStructureScratchOffsetAlignment{ minAccelerationStructureScratchOffsetAlignment_ }
57098     {
57099     }
57100 
57101     VULKAN_HPP_CONSTEXPR
57102       PhysicalDeviceAccelerationStructurePropertiesKHR( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57103 
PhysicalDeviceAccelerationStructurePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR57104     PhysicalDeviceAccelerationStructurePropertiesKHR( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
57105       : PhysicalDeviceAccelerationStructurePropertiesKHR( *reinterpret_cast<PhysicalDeviceAccelerationStructurePropertiesKHR const *>( &rhs ) )
57106     {
57107     }
57108 
57109     PhysicalDeviceAccelerationStructurePropertiesKHR & operator=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57110 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57111 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR57112     PhysicalDeviceAccelerationStructurePropertiesKHR & operator=( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
57113     {
57114       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR const *>( &rhs );
57115       return *this;
57116     }
57117 
operator VkPhysicalDeviceAccelerationStructurePropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR57118     operator VkPhysicalDeviceAccelerationStructurePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
57119     {
57120       return *reinterpret_cast<const VkPhysicalDeviceAccelerationStructurePropertiesKHR *>( this );
57121     }
57122 
operator VkPhysicalDeviceAccelerationStructurePropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR57123     operator VkPhysicalDeviceAccelerationStructurePropertiesKHR &() VULKAN_HPP_NOEXCEPT
57124     {
57125       return *reinterpret_cast<VkPhysicalDeviceAccelerationStructurePropertiesKHR *>( this );
57126     }
57127 
57128 #if defined( VULKAN_HPP_USE_REFLECT )
57129 #  if 14 <= VULKAN_HPP_CPP_VERSION
57130     auto
57131 #  else
57132     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57133                void * const &,
57134                uint64_t const &,
57135                uint64_t const &,
57136                uint64_t const &,
57137                uint32_t const &,
57138                uint32_t const &,
57139                uint32_t const &,
57140                uint32_t const &,
57141                uint32_t const &>
57142 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR57143       reflect() const VULKAN_HPP_NOEXCEPT
57144     {
57145       return std::tie( sType,
57146                        pNext,
57147                        maxGeometryCount,
57148                        maxInstanceCount,
57149                        maxPrimitiveCount,
57150                        maxPerStageDescriptorAccelerationStructures,
57151                        maxPerStageDescriptorUpdateAfterBindAccelerationStructures,
57152                        maxDescriptorSetAccelerationStructures,
57153                        maxDescriptorSetUpdateAfterBindAccelerationStructures,
57154                        minAccelerationStructureScratchOffsetAlignment );
57155     }
57156 #endif
57157 
57158 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57159     auto operator<=>( PhysicalDeviceAccelerationStructurePropertiesKHR const & ) const = default;
57160 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR57161     bool operator==( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57162     {
57163 #  if defined( VULKAN_HPP_USE_REFLECT )
57164       return this->reflect() == rhs.reflect();
57165 #  else
57166       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxGeometryCount == rhs.maxGeometryCount ) && ( maxInstanceCount == rhs.maxInstanceCount ) &&
57167              ( maxPrimitiveCount == rhs.maxPrimitiveCount ) &&
57168              ( maxPerStageDescriptorAccelerationStructures == rhs.maxPerStageDescriptorAccelerationStructures ) &&
57169              ( maxPerStageDescriptorUpdateAfterBindAccelerationStructures == rhs.maxPerStageDescriptorUpdateAfterBindAccelerationStructures ) &&
57170              ( maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures ) &&
57171              ( maxDescriptorSetUpdateAfterBindAccelerationStructures == rhs.maxDescriptorSetUpdateAfterBindAccelerationStructures ) &&
57172              ( minAccelerationStructureScratchOffsetAlignment == rhs.minAccelerationStructureScratchOffsetAlignment );
57173 #  endif
57174     }
57175 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR57176     bool operator!=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
57177     {
57178       return !operator==( rhs );
57179     }
57180 #endif
57181 
57182   public:
57183     VULKAN_HPP_NAMESPACE::StructureType sType                                       = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR;
57184     void *                              pNext                                       = {};
57185     uint64_t                            maxGeometryCount                            = {};
57186     uint64_t                            maxInstanceCount                            = {};
57187     uint64_t                            maxPrimitiveCount                           = {};
57188     uint32_t                            maxPerStageDescriptorAccelerationStructures = {};
57189     uint32_t                            maxPerStageDescriptorUpdateAfterBindAccelerationStructures = {};
57190     uint32_t                            maxDescriptorSetAccelerationStructures                     = {};
57191     uint32_t                            maxDescriptorSetUpdateAfterBindAccelerationStructures      = {};
57192     uint32_t                            minAccelerationStructureScratchOffsetAlignment             = {};
57193   };
57194 
57195   template <>
57196   struct CppType<StructureType, StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR>
57197   {
57198     using Type = PhysicalDeviceAccelerationStructurePropertiesKHR;
57199   };
57200 
57201   struct PhysicalDeviceAddressBindingReportFeaturesEXT
57202   {
57203     using NativeType = VkPhysicalDeviceAddressBindingReportFeaturesEXT;
57204 
57205     static const bool                                  allowDuplicate = false;
57206     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAddressBindingReportFeaturesEXT;
57207 
57208 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAddressBindingReportFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT57209     VULKAN_HPP_CONSTEXPR PhysicalDeviceAddressBindingReportFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 reportAddressBinding_ = {},
57210                                                                         void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
57211       : pNext{ pNext_ }
57212       , reportAddressBinding{ reportAddressBinding_ }
57213     {
57214     }
57215 
57216     VULKAN_HPP_CONSTEXPR
57217       PhysicalDeviceAddressBindingReportFeaturesEXT( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57218 
PhysicalDeviceAddressBindingReportFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT57219     PhysicalDeviceAddressBindingReportFeaturesEXT( VkPhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57220       : PhysicalDeviceAddressBindingReportFeaturesEXT( *reinterpret_cast<PhysicalDeviceAddressBindingReportFeaturesEXT const *>( &rhs ) )
57221     {
57222     }
57223 
57224     PhysicalDeviceAddressBindingReportFeaturesEXT & operator=( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57225 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57226 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT57227     PhysicalDeviceAddressBindingReportFeaturesEXT & operator=( VkPhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57228     {
57229       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT const *>( &rhs );
57230       return *this;
57231     }
57232 
57233 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT57234     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAddressBindingReportFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57235     {
57236       pNext = pNext_;
57237       return *this;
57238     }
57239 
57240     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAddressBindingReportFeaturesEXT &
setReportAddressBindingVULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT57241       setReportAddressBinding( VULKAN_HPP_NAMESPACE::Bool32 reportAddressBinding_ ) VULKAN_HPP_NOEXCEPT
57242     {
57243       reportAddressBinding = reportAddressBinding_;
57244       return *this;
57245     }
57246 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57247 
operator VkPhysicalDeviceAddressBindingReportFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT57248     operator VkPhysicalDeviceAddressBindingReportFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57249     {
57250       return *reinterpret_cast<const VkPhysicalDeviceAddressBindingReportFeaturesEXT *>( this );
57251     }
57252 
operator VkPhysicalDeviceAddressBindingReportFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT57253     operator VkPhysicalDeviceAddressBindingReportFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57254     {
57255       return *reinterpret_cast<VkPhysicalDeviceAddressBindingReportFeaturesEXT *>( this );
57256     }
57257 
57258 #if defined( VULKAN_HPP_USE_REFLECT )
57259 #  if 14 <= VULKAN_HPP_CPP_VERSION
57260     auto
57261 #  else
57262     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57263 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT57264       reflect() const VULKAN_HPP_NOEXCEPT
57265     {
57266       return std::tie( sType, pNext, reportAddressBinding );
57267     }
57268 #endif
57269 
57270 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57271     auto operator<=>( PhysicalDeviceAddressBindingReportFeaturesEXT const & ) const = default;
57272 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT57273     bool operator==( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57274     {
57275 #  if defined( VULKAN_HPP_USE_REFLECT )
57276       return this->reflect() == rhs.reflect();
57277 #  else
57278       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( reportAddressBinding == rhs.reportAddressBinding );
57279 #  endif
57280     }
57281 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT57282     bool operator!=( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57283     {
57284       return !operator==( rhs );
57285     }
57286 #endif
57287 
57288   public:
57289     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceAddressBindingReportFeaturesEXT;
57290     void *                              pNext                = {};
57291     VULKAN_HPP_NAMESPACE::Bool32        reportAddressBinding = {};
57292   };
57293 
57294   template <>
57295   struct CppType<StructureType, StructureType::ePhysicalDeviceAddressBindingReportFeaturesEXT>
57296   {
57297     using Type = PhysicalDeviceAddressBindingReportFeaturesEXT;
57298   };
57299 
57300   struct PhysicalDeviceAmigoProfilingFeaturesSEC
57301   {
57302     using NativeType = VkPhysicalDeviceAmigoProfilingFeaturesSEC;
57303 
57304     static const bool                                  allowDuplicate = false;
57305     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAmigoProfilingFeaturesSEC;
57306 
57307 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAmigoProfilingFeaturesSECVULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57308     VULKAN_HPP_CONSTEXPR PhysicalDeviceAmigoProfilingFeaturesSEC( VULKAN_HPP_NAMESPACE::Bool32 amigoProfiling_ = {},
57309                                                                   void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
57310       : pNext{ pNext_ }
57311       , amigoProfiling{ amigoProfiling_ }
57312     {
57313     }
57314 
57315     VULKAN_HPP_CONSTEXPR PhysicalDeviceAmigoProfilingFeaturesSEC( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57316 
PhysicalDeviceAmigoProfilingFeaturesSECVULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57317     PhysicalDeviceAmigoProfilingFeaturesSEC( VkPhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT
57318       : PhysicalDeviceAmigoProfilingFeaturesSEC( *reinterpret_cast<PhysicalDeviceAmigoProfilingFeaturesSEC const *>( &rhs ) )
57319     {
57320     }
57321 
57322     PhysicalDeviceAmigoProfilingFeaturesSEC & operator=( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57323 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57324 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57325     PhysicalDeviceAmigoProfilingFeaturesSEC & operator=( VkPhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT
57326     {
57327       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC const *>( &rhs );
57328       return *this;
57329     }
57330 
57331 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57332     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAmigoProfilingFeaturesSEC & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57333     {
57334       pNext = pNext_;
57335       return *this;
57336     }
57337 
setAmigoProfilingVULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57338     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAmigoProfilingFeaturesSEC & setAmigoProfiling( VULKAN_HPP_NAMESPACE::Bool32 amigoProfiling_ ) VULKAN_HPP_NOEXCEPT
57339     {
57340       amigoProfiling = amigoProfiling_;
57341       return *this;
57342     }
57343 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57344 
operator VkPhysicalDeviceAmigoProfilingFeaturesSEC const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57345     operator VkPhysicalDeviceAmigoProfilingFeaturesSEC const &() const VULKAN_HPP_NOEXCEPT
57346     {
57347       return *reinterpret_cast<const VkPhysicalDeviceAmigoProfilingFeaturesSEC *>( this );
57348     }
57349 
operator VkPhysicalDeviceAmigoProfilingFeaturesSEC&VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57350     operator VkPhysicalDeviceAmigoProfilingFeaturesSEC &() VULKAN_HPP_NOEXCEPT
57351     {
57352       return *reinterpret_cast<VkPhysicalDeviceAmigoProfilingFeaturesSEC *>( this );
57353     }
57354 
57355 #if defined( VULKAN_HPP_USE_REFLECT )
57356 #  if 14 <= VULKAN_HPP_CPP_VERSION
57357     auto
57358 #  else
57359     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57360 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57361       reflect() const VULKAN_HPP_NOEXCEPT
57362     {
57363       return std::tie( sType, pNext, amigoProfiling );
57364     }
57365 #endif
57366 
57367 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57368     auto operator<=>( PhysicalDeviceAmigoProfilingFeaturesSEC const & ) const = default;
57369 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57370     bool operator==( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) const VULKAN_HPP_NOEXCEPT
57371     {
57372 #  if defined( VULKAN_HPP_USE_REFLECT )
57373       return this->reflect() == rhs.reflect();
57374 #  else
57375       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( amigoProfiling == rhs.amigoProfiling );
57376 #  endif
57377     }
57378 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57379     bool operator!=( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) const VULKAN_HPP_NOEXCEPT
57380     {
57381       return !operator==( rhs );
57382     }
57383 #endif
57384 
57385   public:
57386     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceAmigoProfilingFeaturesSEC;
57387     void *                              pNext          = {};
57388     VULKAN_HPP_NAMESPACE::Bool32        amigoProfiling = {};
57389   };
57390 
57391   template <>
57392   struct CppType<StructureType, StructureType::ePhysicalDeviceAmigoProfilingFeaturesSEC>
57393   {
57394     using Type = PhysicalDeviceAmigoProfilingFeaturesSEC;
57395   };
57396 
57397   struct PhysicalDeviceAntiLagFeaturesAMD
57398   {
57399     using NativeType = VkPhysicalDeviceAntiLagFeaturesAMD;
57400 
57401     static const bool                                  allowDuplicate = false;
57402     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAntiLagFeaturesAMD;
57403 
57404 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAntiLagFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD57405     VULKAN_HPP_CONSTEXPR PhysicalDeviceAntiLagFeaturesAMD( VULKAN_HPP_NAMESPACE::Bool32 antiLag_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57406       : pNext{ pNext_ }
57407       , antiLag{ antiLag_ }
57408     {
57409     }
57410 
57411     VULKAN_HPP_CONSTEXPR PhysicalDeviceAntiLagFeaturesAMD( PhysicalDeviceAntiLagFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57412 
PhysicalDeviceAntiLagFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD57413     PhysicalDeviceAntiLagFeaturesAMD( VkPhysicalDeviceAntiLagFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
57414       : PhysicalDeviceAntiLagFeaturesAMD( *reinterpret_cast<PhysicalDeviceAntiLagFeaturesAMD const *>( &rhs ) )
57415     {
57416     }
57417 
57418     PhysicalDeviceAntiLagFeaturesAMD & operator=( PhysicalDeviceAntiLagFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57419 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57420 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD57421     PhysicalDeviceAntiLagFeaturesAMD & operator=( VkPhysicalDeviceAntiLagFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
57422     {
57423       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD const *>( &rhs );
57424       return *this;
57425     }
57426 
57427 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD57428     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAntiLagFeaturesAMD & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57429     {
57430       pNext = pNext_;
57431       return *this;
57432     }
57433 
setAntiLagVULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD57434     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAntiLagFeaturesAMD & setAntiLag( VULKAN_HPP_NAMESPACE::Bool32 antiLag_ ) VULKAN_HPP_NOEXCEPT
57435     {
57436       antiLag = antiLag_;
57437       return *this;
57438     }
57439 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57440 
operator VkPhysicalDeviceAntiLagFeaturesAMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD57441     operator VkPhysicalDeviceAntiLagFeaturesAMD const &() const VULKAN_HPP_NOEXCEPT
57442     {
57443       return *reinterpret_cast<const VkPhysicalDeviceAntiLagFeaturesAMD *>( this );
57444     }
57445 
operator VkPhysicalDeviceAntiLagFeaturesAMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD57446     operator VkPhysicalDeviceAntiLagFeaturesAMD &() VULKAN_HPP_NOEXCEPT
57447     {
57448       return *reinterpret_cast<VkPhysicalDeviceAntiLagFeaturesAMD *>( this );
57449     }
57450 
57451 #if defined( VULKAN_HPP_USE_REFLECT )
57452 #  if 14 <= VULKAN_HPP_CPP_VERSION
57453     auto
57454 #  else
57455     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57456 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD57457       reflect() const VULKAN_HPP_NOEXCEPT
57458     {
57459       return std::tie( sType, pNext, antiLag );
57460     }
57461 #endif
57462 
57463 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57464     auto operator<=>( PhysicalDeviceAntiLagFeaturesAMD const & ) const = default;
57465 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD57466     bool operator==( PhysicalDeviceAntiLagFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
57467     {
57468 #  if defined( VULKAN_HPP_USE_REFLECT )
57469       return this->reflect() == rhs.reflect();
57470 #  else
57471       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( antiLag == rhs.antiLag );
57472 #  endif
57473     }
57474 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD57475     bool operator!=( PhysicalDeviceAntiLagFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
57476     {
57477       return !operator==( rhs );
57478     }
57479 #endif
57480 
57481   public:
57482     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::ePhysicalDeviceAntiLagFeaturesAMD;
57483     void *                              pNext   = {};
57484     VULKAN_HPP_NAMESPACE::Bool32        antiLag = {};
57485   };
57486 
57487   template <>
57488   struct CppType<StructureType, StructureType::ePhysicalDeviceAntiLagFeaturesAMD>
57489   {
57490     using Type = PhysicalDeviceAntiLagFeaturesAMD;
57491   };
57492 
57493   struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
57494   {
57495     using NativeType = VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
57496 
57497     static const bool                                  allowDuplicate = false;
57498     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
57499 
57500 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57501     VULKAN_HPP_CONSTEXPR PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 attachmentFeedbackLoopDynamicState_ = {},
57502                                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57503       : pNext{ pNext_ }
57504       , attachmentFeedbackLoopDynamicState{ attachmentFeedbackLoopDynamicState_ }
57505     {
57506     }
57507 
57508     VULKAN_HPP_CONSTEXPR PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs )
57509       VULKAN_HPP_NOEXCEPT = default;
57510 
PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57511     PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57512       : PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT(
57513           *reinterpret_cast<PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const *>( &rhs ) )
57514     {
57515     }
57516 
57517     PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &
57518       operator=( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57519 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57520 
57521     PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57522       operator=( VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57523     {
57524       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const *>( &rhs );
57525       return *this;
57526     }
57527 
57528 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57529     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57530     {
57531       pNext = pNext_;
57532       return *this;
57533     }
57534 
57535     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &
setAttachmentFeedbackLoopDynamicStateVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57536       setAttachmentFeedbackLoopDynamicState( VULKAN_HPP_NAMESPACE::Bool32 attachmentFeedbackLoopDynamicState_ ) VULKAN_HPP_NOEXCEPT
57537     {
57538       attachmentFeedbackLoopDynamicState = attachmentFeedbackLoopDynamicState_;
57539       return *this;
57540     }
57541 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57542 
operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57543     operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57544     {
57545       return *reinterpret_cast<const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT *>( this );
57546     }
57547 
operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57548     operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57549     {
57550       return *reinterpret_cast<VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT *>( this );
57551     }
57552 
57553 #if defined( VULKAN_HPP_USE_REFLECT )
57554 #  if 14 <= VULKAN_HPP_CPP_VERSION
57555     auto
57556 #  else
57557     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57558 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57559       reflect() const VULKAN_HPP_NOEXCEPT
57560     {
57561       return std::tie( sType, pNext, attachmentFeedbackLoopDynamicState );
57562     }
57563 #endif
57564 
57565 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57566     auto operator<=>( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & ) const = default;
57567 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57568     bool operator==( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57569     {
57570 #  if defined( VULKAN_HPP_USE_REFLECT )
57571       return this->reflect() == rhs.reflect();
57572 #  else
57573       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentFeedbackLoopDynamicState == rhs.attachmentFeedbackLoopDynamicState );
57574 #  endif
57575     }
57576 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57577     bool operator!=( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57578     {
57579       return !operator==( rhs );
57580     }
57581 #endif
57582 
57583   public:
57584     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
57585     void *                              pNext                              = {};
57586     VULKAN_HPP_NAMESPACE::Bool32        attachmentFeedbackLoopDynamicState = {};
57587   };
57588 
57589   template <>
57590   struct CppType<StructureType, StructureType::ePhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT>
57591   {
57592     using Type = PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
57593   };
57594 
57595   struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT
57596   {
57597     using NativeType = VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
57598 
57599     static const bool                                  allowDuplicate = false;
57600     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
57601 
57602 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57603     VULKAN_HPP_CONSTEXPR PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 attachmentFeedbackLoopLayout_ = {},
57604                                                                                 void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57605       : pNext{ pNext_ }
57606       , attachmentFeedbackLoopLayout{ attachmentFeedbackLoopLayout_ }
57607     {
57608     }
57609 
57610     VULKAN_HPP_CONSTEXPR
57611       PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57612 
PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57613     PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57614       : PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( *reinterpret_cast<PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const *>( &rhs ) )
57615     {
57616     }
57617 
57618     PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT &
57619       operator=( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57620 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57621 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57622     PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT & operator=( VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57623     {
57624       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const *>( &rhs );
57625       return *this;
57626     }
57627 
57628 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57629     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57630     {
57631       pNext = pNext_;
57632       return *this;
57633     }
57634 
57635     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT &
setAttachmentFeedbackLoopLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57636       setAttachmentFeedbackLoopLayout( VULKAN_HPP_NAMESPACE::Bool32 attachmentFeedbackLoopLayout_ ) VULKAN_HPP_NOEXCEPT
57637     {
57638       attachmentFeedbackLoopLayout = attachmentFeedbackLoopLayout_;
57639       return *this;
57640     }
57641 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57642 
operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57643     operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57644     {
57645       return *reinterpret_cast<const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *>( this );
57646     }
57647 
operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57648     operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57649     {
57650       return *reinterpret_cast<VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *>( this );
57651     }
57652 
57653 #if defined( VULKAN_HPP_USE_REFLECT )
57654 #  if 14 <= VULKAN_HPP_CPP_VERSION
57655     auto
57656 #  else
57657     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57658 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57659       reflect() const VULKAN_HPP_NOEXCEPT
57660     {
57661       return std::tie( sType, pNext, attachmentFeedbackLoopLayout );
57662     }
57663 #endif
57664 
57665 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57666     auto operator<=>( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & ) const = default;
57667 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57668     bool operator==( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57669     {
57670 #  if defined( VULKAN_HPP_USE_REFLECT )
57671       return this->reflect() == rhs.reflect();
57672 #  else
57673       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentFeedbackLoopLayout == rhs.attachmentFeedbackLoopLayout );
57674 #  endif
57675     }
57676 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57677     bool operator!=( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57678     {
57679       return !operator==( rhs );
57680     }
57681 #endif
57682 
57683   public:
57684     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
57685     void *                              pNext                        = {};
57686     VULKAN_HPP_NAMESPACE::Bool32        attachmentFeedbackLoopLayout = {};
57687   };
57688 
57689   template <>
57690   struct CppType<StructureType, StructureType::ePhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>
57691   {
57692     using Type = PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
57693   };
57694 
57695   struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
57696   {
57697     using NativeType = VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
57698 
57699     static const bool                                  allowDuplicate = false;
57700     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
57701 
57702 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBlendOperationAdvancedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57703     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ = {},
57704                                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57705       : pNext{ pNext_ }
57706       , advancedBlendCoherentOperations{ advancedBlendCoherentOperations_ }
57707     {
57708     }
57709 
57710     VULKAN_HPP_CONSTEXPR
57711       PhysicalDeviceBlendOperationAdvancedFeaturesEXT( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57712 
PhysicalDeviceBlendOperationAdvancedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57713     PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57714       : PhysicalDeviceBlendOperationAdvancedFeaturesEXT( *reinterpret_cast<PhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>( &rhs ) )
57715     {
57716     }
57717 
57718     PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57719 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57720 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57721     PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57722     {
57723       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>( &rhs );
57724       return *this;
57725     }
57726 
57727 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57728     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57729     {
57730       pNext = pNext_;
57731       return *this;
57732     }
57733 
57734     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT &
setAdvancedBlendCoherentOperationsVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57735       setAdvancedBlendCoherentOperations( VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ ) VULKAN_HPP_NOEXCEPT
57736     {
57737       advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
57738       return *this;
57739     }
57740 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57741 
operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57742     operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57743     {
57744       return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *>( this );
57745     }
57746 
operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57747     operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57748     {
57749       return *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *>( this );
57750     }
57751 
57752 #if defined( VULKAN_HPP_USE_REFLECT )
57753 #  if 14 <= VULKAN_HPP_CPP_VERSION
57754     auto
57755 #  else
57756     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57757 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57758       reflect() const VULKAN_HPP_NOEXCEPT
57759     {
57760       return std::tie( sType, pNext, advancedBlendCoherentOperations );
57761     }
57762 #endif
57763 
57764 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57765     auto operator<=>( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & ) const = default;
57766 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57767     bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57768     {
57769 #  if defined( VULKAN_HPP_USE_REFLECT )
57770       return this->reflect() == rhs.reflect();
57771 #  else
57772       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
57773 #  endif
57774     }
57775 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57776     bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57777     {
57778       return !operator==( rhs );
57779     }
57780 #endif
57781 
57782   public:
57783     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
57784     void *                              pNext                           = {};
57785     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendCoherentOperations = {};
57786   };
57787 
57788   template <>
57789   struct CppType<StructureType, StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT>
57790   {
57791     using Type = PhysicalDeviceBlendOperationAdvancedFeaturesEXT;
57792   };
57793 
57794   struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
57795   {
57796     using NativeType = VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
57797 
57798     static const bool                                  allowDuplicate = false;
57799     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
57800 
57801 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBlendOperationAdvancedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57802     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT( uint32_t                     advancedBlendMaxColorAttachments_      = {},
57803                                                                             VULKAN_HPP_NAMESPACE::Bool32 advancedBlendIndependentBlend_         = {},
57804                                                                             VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedSrcColor_ = {},
57805                                                                             VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedDstColor_ = {},
57806                                                                             VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCorrelatedOverlap_        = {},
57807                                                                             VULKAN_HPP_NAMESPACE::Bool32 advancedBlendAllOperations_            = {},
57808                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57809       : pNext{ pNext_ }
57810       , advancedBlendMaxColorAttachments{ advancedBlendMaxColorAttachments_ }
57811       , advancedBlendIndependentBlend{ advancedBlendIndependentBlend_ }
57812       , advancedBlendNonPremultipliedSrcColor{ advancedBlendNonPremultipliedSrcColor_ }
57813       , advancedBlendNonPremultipliedDstColor{ advancedBlendNonPremultipliedDstColor_ }
57814       , advancedBlendCorrelatedOverlap{ advancedBlendCorrelatedOverlap_ }
57815       , advancedBlendAllOperations{ advancedBlendAllOperations_ }
57816     {
57817     }
57818 
57819     VULKAN_HPP_CONSTEXPR
57820       PhysicalDeviceBlendOperationAdvancedPropertiesEXT( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57821 
PhysicalDeviceBlendOperationAdvancedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57822     PhysicalDeviceBlendOperationAdvancedPropertiesEXT( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57823       : PhysicalDeviceBlendOperationAdvancedPropertiesEXT( *reinterpret_cast<PhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>( &rhs ) )
57824     {
57825     }
57826 
57827     PhysicalDeviceBlendOperationAdvancedPropertiesEXT &
57828       operator=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57829 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57830 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57831     PhysicalDeviceBlendOperationAdvancedPropertiesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57832     {
57833       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>( &rhs );
57834       return *this;
57835     }
57836 
operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57837     operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
57838     {
57839       return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *>( this );
57840     }
57841 
operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57842     operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &() VULKAN_HPP_NOEXCEPT
57843     {
57844       return *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *>( this );
57845     }
57846 
57847 #if defined( VULKAN_HPP_USE_REFLECT )
57848 #  if 14 <= VULKAN_HPP_CPP_VERSION
57849     auto
57850 #  else
57851     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57852                void * const &,
57853                uint32_t const &,
57854                VULKAN_HPP_NAMESPACE::Bool32 const &,
57855                VULKAN_HPP_NAMESPACE::Bool32 const &,
57856                VULKAN_HPP_NAMESPACE::Bool32 const &,
57857                VULKAN_HPP_NAMESPACE::Bool32 const &,
57858                VULKAN_HPP_NAMESPACE::Bool32 const &>
57859 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57860       reflect() const VULKAN_HPP_NOEXCEPT
57861     {
57862       return std::tie( sType,
57863                        pNext,
57864                        advancedBlendMaxColorAttachments,
57865                        advancedBlendIndependentBlend,
57866                        advancedBlendNonPremultipliedSrcColor,
57867                        advancedBlendNonPremultipliedDstColor,
57868                        advancedBlendCorrelatedOverlap,
57869                        advancedBlendAllOperations );
57870     }
57871 #endif
57872 
57873 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57874     auto operator<=>( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & ) const = default;
57875 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57876     bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57877     {
57878 #  if defined( VULKAN_HPP_USE_REFLECT )
57879       return this->reflect() == rhs.reflect();
57880 #  else
57881       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments ) &&
57882              ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend ) &&
57883              ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor ) &&
57884              ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor ) &&
57885              ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap ) && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
57886 #  endif
57887     }
57888 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57889     bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57890     {
57891       return !operator==( rhs );
57892     }
57893 #endif
57894 
57895   public:
57896     VULKAN_HPP_NAMESPACE::StructureType sType                                 = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
57897     void *                              pNext                                 = {};
57898     uint32_t                            advancedBlendMaxColorAttachments      = {};
57899     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendIndependentBlend         = {};
57900     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendNonPremultipliedSrcColor = {};
57901     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendNonPremultipliedDstColor = {};
57902     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendCorrelatedOverlap        = {};
57903     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendAllOperations            = {};
57904   };
57905 
57906   template <>
57907   struct CppType<StructureType, StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT>
57908   {
57909     using Type = PhysicalDeviceBlendOperationAdvancedPropertiesEXT;
57910   };
57911 
57912   struct PhysicalDeviceBorderColorSwizzleFeaturesEXT
57913   {
57914     using NativeType = VkPhysicalDeviceBorderColorSwizzleFeaturesEXT;
57915 
57916     static const bool                                  allowDuplicate = false;
57917     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT;
57918 
57919 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBorderColorSwizzleFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57920     VULKAN_HPP_CONSTEXPR PhysicalDeviceBorderColorSwizzleFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzle_          = {},
57921                                                                       VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzleFromImage_ = {},
57922                                                                       void *                       pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
57923       : pNext{ pNext_ }
57924       , borderColorSwizzle{ borderColorSwizzle_ }
57925       , borderColorSwizzleFromImage{ borderColorSwizzleFromImage_ }
57926     {
57927     }
57928 
57929     VULKAN_HPP_CONSTEXPR PhysicalDeviceBorderColorSwizzleFeaturesEXT( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57930 
PhysicalDeviceBorderColorSwizzleFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57931     PhysicalDeviceBorderColorSwizzleFeaturesEXT( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57932       : PhysicalDeviceBorderColorSwizzleFeaturesEXT( *reinterpret_cast<PhysicalDeviceBorderColorSwizzleFeaturesEXT const *>( &rhs ) )
57933     {
57934     }
57935 
57936     PhysicalDeviceBorderColorSwizzleFeaturesEXT & operator=( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57937 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57938 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57939     PhysicalDeviceBorderColorSwizzleFeaturesEXT & operator=( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57940     {
57941       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT const *>( &rhs );
57942       return *this;
57943     }
57944 
57945 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57946     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57947     {
57948       pNext = pNext_;
57949       return *this;
57950     }
57951 
57952     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT &
setBorderColorSwizzleVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57953       setBorderColorSwizzle( VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzle_ ) VULKAN_HPP_NOEXCEPT
57954     {
57955       borderColorSwizzle = borderColorSwizzle_;
57956       return *this;
57957     }
57958 
57959     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT &
setBorderColorSwizzleFromImageVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57960       setBorderColorSwizzleFromImage( VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzleFromImage_ ) VULKAN_HPP_NOEXCEPT
57961     {
57962       borderColorSwizzleFromImage = borderColorSwizzleFromImage_;
57963       return *this;
57964     }
57965 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57966 
operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57967     operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57968     {
57969       return *reinterpret_cast<const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *>( this );
57970     }
57971 
operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57972     operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57973     {
57974       return *reinterpret_cast<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *>( this );
57975     }
57976 
57977 #if defined( VULKAN_HPP_USE_REFLECT )
57978 #  if 14 <= VULKAN_HPP_CPP_VERSION
57979     auto
57980 #  else
57981     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57982 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57983       reflect() const VULKAN_HPP_NOEXCEPT
57984     {
57985       return std::tie( sType, pNext, borderColorSwizzle, borderColorSwizzleFromImage );
57986     }
57987 #endif
57988 
57989 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57990     auto operator<=>( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & ) const = default;
57991 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57992     bool operator==( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57993     {
57994 #  if defined( VULKAN_HPP_USE_REFLECT )
57995       return this->reflect() == rhs.reflect();
57996 #  else
57997       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( borderColorSwizzle == rhs.borderColorSwizzle ) &&
57998              ( borderColorSwizzleFromImage == rhs.borderColorSwizzleFromImage );
57999 #  endif
58000     }
58001 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT58002     bool operator!=( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58003     {
58004       return !operator==( rhs );
58005     }
58006 #endif
58007 
58008   public:
58009     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT;
58010     void *                              pNext                       = {};
58011     VULKAN_HPP_NAMESPACE::Bool32        borderColorSwizzle          = {};
58012     VULKAN_HPP_NAMESPACE::Bool32        borderColorSwizzleFromImage = {};
58013   };
58014 
58015   template <>
58016   struct CppType<StructureType, StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT>
58017   {
58018     using Type = PhysicalDeviceBorderColorSwizzleFeaturesEXT;
58019   };
58020 
58021   struct PhysicalDeviceBufferDeviceAddressFeatures
58022   {
58023     using NativeType = VkPhysicalDeviceBufferDeviceAddressFeatures;
58024 
58025     static const bool                                  allowDuplicate = false;
58026     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures;
58027 
58028 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBufferDeviceAddressFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58029     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_              = {},
58030                                                                     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {},
58031                                                                     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_   = {},
58032                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58033       : pNext{ pNext_ }
58034       , bufferDeviceAddress{ bufferDeviceAddress_ }
58035       , bufferDeviceAddressCaptureReplay{ bufferDeviceAddressCaptureReplay_ }
58036       , bufferDeviceAddressMultiDevice{ bufferDeviceAddressMultiDevice_ }
58037     {
58038     }
58039 
58040     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58041 
PhysicalDeviceBufferDeviceAddressFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58042     PhysicalDeviceBufferDeviceAddressFeatures( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
58043       : PhysicalDeviceBufferDeviceAddressFeatures( *reinterpret_cast<PhysicalDeviceBufferDeviceAddressFeatures const *>( &rhs ) )
58044     {
58045     }
58046 
58047     PhysicalDeviceBufferDeviceAddressFeatures & operator=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58048 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58049 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58050     PhysicalDeviceBufferDeviceAddressFeatures & operator=( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
58051     {
58052       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures const *>( &rhs );
58053       return *this;
58054     }
58055 
58056 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58057     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58058     {
58059       pNext = pNext_;
58060       return *this;
58061     }
58062 
58063     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures &
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58064       setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
58065     {
58066       bufferDeviceAddress = bufferDeviceAddress_;
58067       return *this;
58068     }
58069 
58070     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures &
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58071       setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
58072     {
58073       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
58074       return *this;
58075     }
58076 
58077     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures &
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58078       setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
58079     {
58080       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
58081       return *this;
58082     }
58083 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58084 
operator VkPhysicalDeviceBufferDeviceAddressFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58085     operator VkPhysicalDeviceBufferDeviceAddressFeatures const &() const VULKAN_HPP_NOEXCEPT
58086     {
58087       return *reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeatures *>( this );
58088     }
58089 
operator VkPhysicalDeviceBufferDeviceAddressFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58090     operator VkPhysicalDeviceBufferDeviceAddressFeatures &() VULKAN_HPP_NOEXCEPT
58091     {
58092       return *reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeatures *>( this );
58093     }
58094 
58095 #if defined( VULKAN_HPP_USE_REFLECT )
58096 #  if 14 <= VULKAN_HPP_CPP_VERSION
58097     auto
58098 #  else
58099     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
58100                void * const &,
58101                VULKAN_HPP_NAMESPACE::Bool32 const &,
58102                VULKAN_HPP_NAMESPACE::Bool32 const &,
58103                VULKAN_HPP_NAMESPACE::Bool32 const &>
58104 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58105       reflect() const VULKAN_HPP_NOEXCEPT
58106     {
58107       return std::tie( sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice );
58108     }
58109 #endif
58110 
58111 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58112     auto operator<=>( PhysicalDeviceBufferDeviceAddressFeatures const & ) const = default;
58113 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58114     bool operator==( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
58115     {
58116 #  if defined( VULKAN_HPP_USE_REFLECT )
58117       return this->reflect() == rhs.reflect();
58118 #  else
58119       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) &&
58120              ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) &&
58121              ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice );
58122 #  endif
58123     }
58124 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures58125     bool operator!=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
58126     {
58127       return !operator==( rhs );
58128     }
58129 #endif
58130 
58131   public:
58132     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures;
58133     void *                              pNext                            = {};
58134     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddress              = {};
58135     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressCaptureReplay = {};
58136     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressMultiDevice   = {};
58137   };
58138 
58139   template <>
58140   struct CppType<StructureType, StructureType::ePhysicalDeviceBufferDeviceAddressFeatures>
58141   {
58142     using Type = PhysicalDeviceBufferDeviceAddressFeatures;
58143   };
58144 
58145   using PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
58146 
58147   struct PhysicalDeviceBufferDeviceAddressFeaturesEXT
58148   {
58149     using NativeType = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
58150 
58151     static const bool                                  allowDuplicate = false;
58152     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT;
58153 
58154 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBufferDeviceAddressFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58155     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_              = {},
58156                                                                        VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {},
58157                                                                        VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_   = {},
58158                                                                        void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58159       : pNext{ pNext_ }
58160       , bufferDeviceAddress{ bufferDeviceAddress_ }
58161       , bufferDeviceAddressCaptureReplay{ bufferDeviceAddressCaptureReplay_ }
58162       , bufferDeviceAddressMultiDevice{ bufferDeviceAddressMultiDevice_ }
58163     {
58164     }
58165 
58166     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58167 
PhysicalDeviceBufferDeviceAddressFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58168     PhysicalDeviceBufferDeviceAddressFeaturesEXT( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58169       : PhysicalDeviceBufferDeviceAddressFeaturesEXT( *reinterpret_cast<PhysicalDeviceBufferDeviceAddressFeaturesEXT const *>( &rhs ) )
58170     {
58171     }
58172 
58173     PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58174 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58175 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58176     PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58177     {
58178       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT const *>( &rhs );
58179       return *this;
58180     }
58181 
58182 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58183     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58184     {
58185       pNext = pNext_;
58186       return *this;
58187     }
58188 
58189     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT &
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58190       setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
58191     {
58192       bufferDeviceAddress = bufferDeviceAddress_;
58193       return *this;
58194     }
58195 
58196     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT &
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58197       setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
58198     {
58199       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
58200       return *this;
58201     }
58202 
58203     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT &
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58204       setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
58205     {
58206       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
58207       return *this;
58208     }
58209 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58210 
operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58211     operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
58212     {
58213       return *reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *>( this );
58214     }
58215 
operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58216     operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT &() VULKAN_HPP_NOEXCEPT
58217     {
58218       return *reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *>( this );
58219     }
58220 
58221 #if defined( VULKAN_HPP_USE_REFLECT )
58222 #  if 14 <= VULKAN_HPP_CPP_VERSION
58223     auto
58224 #  else
58225     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
58226                void * const &,
58227                VULKAN_HPP_NAMESPACE::Bool32 const &,
58228                VULKAN_HPP_NAMESPACE::Bool32 const &,
58229                VULKAN_HPP_NAMESPACE::Bool32 const &>
58230 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58231       reflect() const VULKAN_HPP_NOEXCEPT
58232     {
58233       return std::tie( sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice );
58234     }
58235 #endif
58236 
58237 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58238     auto operator<=>( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & ) const = default;
58239 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58240     bool operator==( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58241     {
58242 #  if defined( VULKAN_HPP_USE_REFLECT )
58243       return this->reflect() == rhs.reflect();
58244 #  else
58245       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) &&
58246              ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) &&
58247              ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice );
58248 #  endif
58249     }
58250 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT58251     bool operator!=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58252     {
58253       return !operator==( rhs );
58254     }
58255 #endif
58256 
58257   public:
58258     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT;
58259     void *                              pNext                            = {};
58260     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddress              = {};
58261     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressCaptureReplay = {};
58262     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressMultiDevice   = {};
58263   };
58264 
58265   template <>
58266   struct CppType<StructureType, StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT>
58267   {
58268     using Type = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
58269   };
58270 
58271   using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
58272 
58273   struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI
58274   {
58275     using NativeType = VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
58276 
58277     static const bool                                  allowDuplicate = false;
58278     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
58279 
58280 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceClusterCullingShaderFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58281     VULKAN_HPP_CONSTEXPR PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 clustercullingShader_          = {},
58282                                                                            VULKAN_HPP_NAMESPACE::Bool32 multiviewClusterCullingShader_ = {},
58283                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58284       : pNext{ pNext_ }
58285       , clustercullingShader{ clustercullingShader_ }
58286       , multiviewClusterCullingShader{ multiviewClusterCullingShader_ }
58287     {
58288     }
58289 
58290     VULKAN_HPP_CONSTEXPR
58291       PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58292 
PhysicalDeviceClusterCullingShaderFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58293     PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
58294       : PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( *reinterpret_cast<PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const *>( &rhs ) )
58295     {
58296     }
58297 
58298     PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & operator=( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58299 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58300 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58301     PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & operator=( VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
58302     {
58303       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const *>( &rhs );
58304       return *this;
58305     }
58306 
58307 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58308     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58309     {
58310       pNext = pNext_;
58311       return *this;
58312     }
58313 
58314     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI &
setClustercullingShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58315       setClustercullingShader( VULKAN_HPP_NAMESPACE::Bool32 clustercullingShader_ ) VULKAN_HPP_NOEXCEPT
58316     {
58317       clustercullingShader = clustercullingShader_;
58318       return *this;
58319     }
58320 
58321     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI &
setMultiviewClusterCullingShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58322       setMultiviewClusterCullingShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewClusterCullingShader_ ) VULKAN_HPP_NOEXCEPT
58323     {
58324       multiviewClusterCullingShader = multiviewClusterCullingShader_;
58325       return *this;
58326     }
58327 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58328 
operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58329     operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
58330     {
58331       return *reinterpret_cast<const VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI *>( this );
58332     }
58333 
operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58334     operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
58335     {
58336       return *reinterpret_cast<VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI *>( this );
58337     }
58338 
58339 #if defined( VULKAN_HPP_USE_REFLECT )
58340 #  if 14 <= VULKAN_HPP_CPP_VERSION
58341     auto
58342 #  else
58343     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58344 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58345       reflect() const VULKAN_HPP_NOEXCEPT
58346     {
58347       return std::tie( sType, pNext, clustercullingShader, multiviewClusterCullingShader );
58348     }
58349 #endif
58350 
58351 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58352     auto operator<=>( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & ) const = default;
58353 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58354     bool operator==( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
58355     {
58356 #  if defined( VULKAN_HPP_USE_REFLECT )
58357       return this->reflect() == rhs.reflect();
58358 #  else
58359       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( clustercullingShader == rhs.clustercullingShader ) &&
58360              ( multiviewClusterCullingShader == rhs.multiviewClusterCullingShader );
58361 #  endif
58362     }
58363 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI58364     bool operator!=( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
58365     {
58366       return !operator==( rhs );
58367     }
58368 #endif
58369 
58370   public:
58371     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
58372     void *                              pNext                         = {};
58373     VULKAN_HPP_NAMESPACE::Bool32        clustercullingShader          = {};
58374     VULKAN_HPP_NAMESPACE::Bool32        multiviewClusterCullingShader = {};
58375   };
58376 
58377   template <>
58378   struct CppType<StructureType, StructureType::ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI>
58379   {
58380     using Type = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
58381   };
58382 
58383   struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
58384   {
58385     using NativeType = VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
58386 
58387     static const bool                                  allowDuplicate = false;
58388     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
58389 
58390 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceClusterCullingShaderPropertiesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI58391     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( std::array<uint32_t, 3> const &  maxWorkGroupCount_             = {},
58392                                                                                 std::array<uint32_t, 3> const &  maxWorkGroupSize_              = {},
58393                                                                                 uint32_t                         maxOutputClusterCount_         = {},
58394                                                                                 VULKAN_HPP_NAMESPACE::DeviceSize indirectBufferOffsetAlignment_ = {},
58395                                                                                 void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58396       : pNext{ pNext_ }
58397       , maxWorkGroupCount{ maxWorkGroupCount_ }
58398       , maxWorkGroupSize{ maxWorkGroupSize_ }
58399       , maxOutputClusterCount{ maxOutputClusterCount_ }
58400       , indirectBufferOffsetAlignment{ indirectBufferOffsetAlignment_ }
58401     {
58402     }
58403 
58404     VULKAN_HPP_CONSTEXPR_14
58405       PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58406 
PhysicalDeviceClusterCullingShaderPropertiesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI58407     PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
58408       : PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( *reinterpret_cast<PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const *>( &rhs ) )
58409     {
58410     }
58411 
58412     PhysicalDeviceClusterCullingShaderPropertiesHUAWEI &
58413       operator=( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58414 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58415 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI58416     PhysicalDeviceClusterCullingShaderPropertiesHUAWEI & operator=( VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
58417     {
58418       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const *>( &rhs );
58419       return *this;
58420     }
58421 
operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI58422     operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
58423     {
58424       return *reinterpret_cast<const VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI *>( this );
58425     }
58426 
operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI58427     operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI &() VULKAN_HPP_NOEXCEPT
58428     {
58429       return *reinterpret_cast<VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI *>( this );
58430     }
58431 
58432 #if defined( VULKAN_HPP_USE_REFLECT )
58433 #  if 14 <= VULKAN_HPP_CPP_VERSION
58434     auto
58435 #  else
58436     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
58437                void * const &,
58438                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
58439                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
58440                uint32_t const &,
58441                VULKAN_HPP_NAMESPACE::DeviceSize const &>
58442 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI58443       reflect() const VULKAN_HPP_NOEXCEPT
58444     {
58445       return std::tie( sType, pNext, maxWorkGroupCount, maxWorkGroupSize, maxOutputClusterCount, indirectBufferOffsetAlignment );
58446     }
58447 #endif
58448 
58449 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58450     auto operator<=>( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & ) const = default;
58451 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI58452     bool operator==( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
58453     {
58454 #  if defined( VULKAN_HPP_USE_REFLECT )
58455       return this->reflect() == rhs.reflect();
58456 #  else
58457       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxWorkGroupCount == rhs.maxWorkGroupCount ) &&
58458              ( maxWorkGroupSize == rhs.maxWorkGroupSize ) && ( maxOutputClusterCount == rhs.maxOutputClusterCount ) &&
58459              ( indirectBufferOffsetAlignment == rhs.indirectBufferOffsetAlignment );
58460 #  endif
58461     }
58462 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI58463     bool operator!=( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
58464     {
58465       return !operator==( rhs );
58466     }
58467 #endif
58468 
58469   public:
58470     VULKAN_HPP_NAMESPACE::StructureType               sType                         = StructureType::ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
58471     void *                                            pNext                         = {};
58472     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxWorkGroupCount             = {};
58473     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxWorkGroupSize              = {};
58474     uint32_t                                          maxOutputClusterCount         = {};
58475     VULKAN_HPP_NAMESPACE::DeviceSize                  indirectBufferOffsetAlignment = {};
58476   };
58477 
58478   template <>
58479   struct CppType<StructureType, StructureType::ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI>
58480   {
58481     using Type = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
58482   };
58483 
58484   struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI
58485   {
58486     using NativeType = VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
58487 
58488     static const bool                                  allowDuplicate = false;
58489     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
58490 
58491 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58492     VULKAN_HPP_CONSTEXPR PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 clusterShadingRate_ = {},
58493                                                                               void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
58494       : pNext{ pNext_ }
58495       , clusterShadingRate{ clusterShadingRate_ }
58496     {
58497     }
58498 
58499     VULKAN_HPP_CONSTEXPR
58500       PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58501 
PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58502     PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
58503       : PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( *reinterpret_cast<PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const *>( &rhs ) )
58504     {
58505     }
58506 
58507     PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI &
58508       operator=( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58509 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58510 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58511     PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI & operator=( VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
58512     {
58513       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const *>( &rhs );
58514       return *this;
58515     }
58516 
58517 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58518     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58519     {
58520       pNext = pNext_;
58521       return *this;
58522     }
58523 
58524     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI &
setClusterShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58525       setClusterShadingRate( VULKAN_HPP_NAMESPACE::Bool32 clusterShadingRate_ ) VULKAN_HPP_NOEXCEPT
58526     {
58527       clusterShadingRate = clusterShadingRate_;
58528       return *this;
58529     }
58530 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58531 
operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58532     operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
58533     {
58534       return *reinterpret_cast<const VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI *>( this );
58535     }
58536 
operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58537     operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
58538     {
58539       return *reinterpret_cast<VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI *>( this );
58540     }
58541 
58542 #if defined( VULKAN_HPP_USE_REFLECT )
58543 #  if 14 <= VULKAN_HPP_CPP_VERSION
58544     auto
58545 #  else
58546     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58547 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58548       reflect() const VULKAN_HPP_NOEXCEPT
58549     {
58550       return std::tie( sType, pNext, clusterShadingRate );
58551     }
58552 #endif
58553 
58554 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58555     auto operator<=>( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & ) const = default;
58556 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58557     bool operator==( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
58558     {
58559 #  if defined( VULKAN_HPP_USE_REFLECT )
58560       return this->reflect() == rhs.reflect();
58561 #  else
58562       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( clusterShadingRate == rhs.clusterShadingRate );
58563 #  endif
58564     }
58565 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58566     bool operator!=( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
58567     {
58568       return !operator==( rhs );
58569     }
58570 #endif
58571 
58572   public:
58573     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
58574     void *                              pNext              = {};
58575     VULKAN_HPP_NAMESPACE::Bool32        clusterShadingRate = {};
58576   };
58577 
58578   template <>
58579   struct CppType<StructureType, StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI>
58580   {
58581     using Type = PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
58582   };
58583 
58584   struct PhysicalDeviceCoherentMemoryFeaturesAMD
58585   {
58586     using NativeType = VkPhysicalDeviceCoherentMemoryFeaturesAMD;
58587 
58588     static const bool                                  allowDuplicate = false;
58589     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD;
58590 
58591 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCoherentMemoryFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58592     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory_ = {},
58593                                                                   void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
58594       : pNext{ pNext_ }
58595       , deviceCoherentMemory{ deviceCoherentMemory_ }
58596     {
58597     }
58598 
58599     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58600 
PhysicalDeviceCoherentMemoryFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58601     PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
58602       : PhysicalDeviceCoherentMemoryFeaturesAMD( *reinterpret_cast<PhysicalDeviceCoherentMemoryFeaturesAMD const *>( &rhs ) )
58603     {
58604     }
58605 
58606     PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58607 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58608 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58609     PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
58610     {
58611       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD const *>( &rhs );
58612       return *this;
58613     }
58614 
58615 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58616     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58617     {
58618       pNext = pNext_;
58619       return *this;
58620     }
58621 
58622     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD &
setDeviceCoherentMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58623       setDeviceCoherentMemory( VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory_ ) VULKAN_HPP_NOEXCEPT
58624     {
58625       deviceCoherentMemory = deviceCoherentMemory_;
58626       return *this;
58627     }
58628 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58629 
operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58630     operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const &() const VULKAN_HPP_NOEXCEPT
58631     {
58632       return *reinterpret_cast<const VkPhysicalDeviceCoherentMemoryFeaturesAMD *>( this );
58633     }
58634 
operator VkPhysicalDeviceCoherentMemoryFeaturesAMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58635     operator VkPhysicalDeviceCoherentMemoryFeaturesAMD &() VULKAN_HPP_NOEXCEPT
58636     {
58637       return *reinterpret_cast<VkPhysicalDeviceCoherentMemoryFeaturesAMD *>( this );
58638     }
58639 
58640 #if defined( VULKAN_HPP_USE_REFLECT )
58641 #  if 14 <= VULKAN_HPP_CPP_VERSION
58642     auto
58643 #  else
58644     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58645 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58646       reflect() const VULKAN_HPP_NOEXCEPT
58647     {
58648       return std::tie( sType, pNext, deviceCoherentMemory );
58649     }
58650 #endif
58651 
58652 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58653     auto operator<=>( PhysicalDeviceCoherentMemoryFeaturesAMD const & ) const = default;
58654 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58655     bool operator==( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
58656     {
58657 #  if defined( VULKAN_HPP_USE_REFLECT )
58658       return this->reflect() == rhs.reflect();
58659 #  else
58660       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceCoherentMemory == rhs.deviceCoherentMemory );
58661 #  endif
58662     }
58663 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58664     bool operator!=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
58665     {
58666       return !operator==( rhs );
58667     }
58668 #endif
58669 
58670   public:
58671     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD;
58672     void *                              pNext                = {};
58673     VULKAN_HPP_NAMESPACE::Bool32        deviceCoherentMemory = {};
58674   };
58675 
58676   template <>
58677   struct CppType<StructureType, StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD>
58678   {
58679     using Type = PhysicalDeviceCoherentMemoryFeaturesAMD;
58680   };
58681 
58682   struct PhysicalDeviceColorWriteEnableFeaturesEXT
58683   {
58684     using NativeType = VkPhysicalDeviceColorWriteEnableFeaturesEXT;
58685 
58686     static const bool                                  allowDuplicate = false;
58687     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT;
58688 
58689 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceColorWriteEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58690     VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable_ = {},
58691                                                                     void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
58692       : pNext{ pNext_ }
58693       , colorWriteEnable{ colorWriteEnable_ }
58694     {
58695     }
58696 
58697     VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58698 
PhysicalDeviceColorWriteEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58699     PhysicalDeviceColorWriteEnableFeaturesEXT( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58700       : PhysicalDeviceColorWriteEnableFeaturesEXT( *reinterpret_cast<PhysicalDeviceColorWriteEnableFeaturesEXT const *>( &rhs ) )
58701     {
58702     }
58703 
58704     PhysicalDeviceColorWriteEnableFeaturesEXT & operator=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58705 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58706 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58707     PhysicalDeviceColorWriteEnableFeaturesEXT & operator=( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58708     {
58709       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT const *>( &rhs );
58710       return *this;
58711     }
58712 
58713 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58714     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58715     {
58716       pNext = pNext_;
58717       return *this;
58718     }
58719 
58720     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT &
setColorWriteEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58721       setColorWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable_ ) VULKAN_HPP_NOEXCEPT
58722     {
58723       colorWriteEnable = colorWriteEnable_;
58724       return *this;
58725     }
58726 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58727 
operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58728     operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
58729     {
58730       return *reinterpret_cast<const VkPhysicalDeviceColorWriteEnableFeaturesEXT *>( this );
58731     }
58732 
operator VkPhysicalDeviceColorWriteEnableFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58733     operator VkPhysicalDeviceColorWriteEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT
58734     {
58735       return *reinterpret_cast<VkPhysicalDeviceColorWriteEnableFeaturesEXT *>( this );
58736     }
58737 
58738 #if defined( VULKAN_HPP_USE_REFLECT )
58739 #  if 14 <= VULKAN_HPP_CPP_VERSION
58740     auto
58741 #  else
58742     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58743 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58744       reflect() const VULKAN_HPP_NOEXCEPT
58745     {
58746       return std::tie( sType, pNext, colorWriteEnable );
58747     }
58748 #endif
58749 
58750 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58751     auto operator<=>( PhysicalDeviceColorWriteEnableFeaturesEXT const & ) const = default;
58752 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58753     bool operator==( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58754     {
58755 #  if defined( VULKAN_HPP_USE_REFLECT )
58756       return this->reflect() == rhs.reflect();
58757 #  else
58758       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorWriteEnable == rhs.colorWriteEnable );
58759 #  endif
58760     }
58761 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58762     bool operator!=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58763     {
58764       return !operator==( rhs );
58765     }
58766 #endif
58767 
58768   public:
58769     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT;
58770     void *                              pNext            = {};
58771     VULKAN_HPP_NAMESPACE::Bool32        colorWriteEnable = {};
58772   };
58773 
58774   template <>
58775   struct CppType<StructureType, StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT>
58776   {
58777     using Type = PhysicalDeviceColorWriteEnableFeaturesEXT;
58778   };
58779 
58780   struct PhysicalDeviceCommandBufferInheritanceFeaturesNV
58781   {
58782     using NativeType = VkPhysicalDeviceCommandBufferInheritanceFeaturesNV;
58783 
58784     static const bool                                  allowDuplicate = false;
58785     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCommandBufferInheritanceFeaturesNV;
58786 
58787 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCommandBufferInheritanceFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV58788     VULKAN_HPP_CONSTEXPR PhysicalDeviceCommandBufferInheritanceFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 commandBufferInheritance_ = {},
58789                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58790       : pNext{ pNext_ }
58791       , commandBufferInheritance{ commandBufferInheritance_ }
58792     {
58793     }
58794 
58795     VULKAN_HPP_CONSTEXPR
58796       PhysicalDeviceCommandBufferInheritanceFeaturesNV( PhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58797 
PhysicalDeviceCommandBufferInheritanceFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV58798     PhysicalDeviceCommandBufferInheritanceFeaturesNV( VkPhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58799       : PhysicalDeviceCommandBufferInheritanceFeaturesNV( *reinterpret_cast<PhysicalDeviceCommandBufferInheritanceFeaturesNV const *>( &rhs ) )
58800     {
58801     }
58802 
58803     PhysicalDeviceCommandBufferInheritanceFeaturesNV & operator=( PhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58804 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58805 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV58806     PhysicalDeviceCommandBufferInheritanceFeaturesNV & operator=( VkPhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58807     {
58808       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV const *>( &rhs );
58809       return *this;
58810     }
58811 
58812 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV58813     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCommandBufferInheritanceFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58814     {
58815       pNext = pNext_;
58816       return *this;
58817     }
58818 
58819     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCommandBufferInheritanceFeaturesNV &
setCommandBufferInheritanceVULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV58820       setCommandBufferInheritance( VULKAN_HPP_NAMESPACE::Bool32 commandBufferInheritance_ ) VULKAN_HPP_NOEXCEPT
58821     {
58822       commandBufferInheritance = commandBufferInheritance_;
58823       return *this;
58824     }
58825 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58826 
operator VkPhysicalDeviceCommandBufferInheritanceFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV58827     operator VkPhysicalDeviceCommandBufferInheritanceFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
58828     {
58829       return *reinterpret_cast<const VkPhysicalDeviceCommandBufferInheritanceFeaturesNV *>( this );
58830     }
58831 
operator VkPhysicalDeviceCommandBufferInheritanceFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV58832     operator VkPhysicalDeviceCommandBufferInheritanceFeaturesNV &() VULKAN_HPP_NOEXCEPT
58833     {
58834       return *reinterpret_cast<VkPhysicalDeviceCommandBufferInheritanceFeaturesNV *>( this );
58835     }
58836 
58837 #if defined( VULKAN_HPP_USE_REFLECT )
58838 #  if 14 <= VULKAN_HPP_CPP_VERSION
58839     auto
58840 #  else
58841     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58842 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV58843       reflect() const VULKAN_HPP_NOEXCEPT
58844     {
58845       return std::tie( sType, pNext, commandBufferInheritance );
58846     }
58847 #endif
58848 
58849 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58850     auto operator<=>( PhysicalDeviceCommandBufferInheritanceFeaturesNV const & ) const = default;
58851 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV58852     bool operator==( PhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58853     {
58854 #  if defined( VULKAN_HPP_USE_REFLECT )
58855       return this->reflect() == rhs.reflect();
58856 #  else
58857       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( commandBufferInheritance == rhs.commandBufferInheritance );
58858 #  endif
58859     }
58860 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV58861     bool operator!=( PhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58862     {
58863       return !operator==( rhs );
58864     }
58865 #endif
58866 
58867   public:
58868     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceCommandBufferInheritanceFeaturesNV;
58869     void *                              pNext                    = {};
58870     VULKAN_HPP_NAMESPACE::Bool32        commandBufferInheritance = {};
58871   };
58872 
58873   template <>
58874   struct CppType<StructureType, StructureType::ePhysicalDeviceCommandBufferInheritanceFeaturesNV>
58875   {
58876     using Type = PhysicalDeviceCommandBufferInheritanceFeaturesNV;
58877   };
58878 
58879   struct PhysicalDeviceComputeShaderDerivativesFeaturesNV
58880   {
58881     using NativeType = VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
58882 
58883     static const bool                                  allowDuplicate = false;
58884     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV;
58885 
58886 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceComputeShaderDerivativesFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58887     VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads_  = {},
58888                                                                            VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear_ = {},
58889                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58890       : pNext{ pNext_ }
58891       , computeDerivativeGroupQuads{ computeDerivativeGroupQuads_ }
58892       , computeDerivativeGroupLinear{ computeDerivativeGroupLinear_ }
58893     {
58894     }
58895 
58896     VULKAN_HPP_CONSTEXPR
58897       PhysicalDeviceComputeShaderDerivativesFeaturesNV( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58898 
PhysicalDeviceComputeShaderDerivativesFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58899     PhysicalDeviceComputeShaderDerivativesFeaturesNV( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58900       : PhysicalDeviceComputeShaderDerivativesFeaturesNV( *reinterpret_cast<PhysicalDeviceComputeShaderDerivativesFeaturesNV const *>( &rhs ) )
58901     {
58902     }
58903 
58904     PhysicalDeviceComputeShaderDerivativesFeaturesNV & operator=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58905 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58906 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58907     PhysicalDeviceComputeShaderDerivativesFeaturesNV & operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58908     {
58909       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV const *>( &rhs );
58910       return *this;
58911     }
58912 
58913 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58914     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58915     {
58916       pNext = pNext_;
58917       return *this;
58918     }
58919 
58920     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV &
setComputeDerivativeGroupQuadsVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58921       setComputeDerivativeGroupQuads( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads_ ) VULKAN_HPP_NOEXCEPT
58922     {
58923       computeDerivativeGroupQuads = computeDerivativeGroupQuads_;
58924       return *this;
58925     }
58926 
58927     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV &
setComputeDerivativeGroupLinearVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58928       setComputeDerivativeGroupLinear( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear_ ) VULKAN_HPP_NOEXCEPT
58929     {
58930       computeDerivativeGroupLinear = computeDerivativeGroupLinear_;
58931       return *this;
58932     }
58933 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58934 
operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58935     operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
58936     {
58937       return *reinterpret_cast<const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *>( this );
58938     }
58939 
operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58940     operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV &() VULKAN_HPP_NOEXCEPT
58941     {
58942       return *reinterpret_cast<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *>( this );
58943     }
58944 
58945 #if defined( VULKAN_HPP_USE_REFLECT )
58946 #  if 14 <= VULKAN_HPP_CPP_VERSION
58947     auto
58948 #  else
58949     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58950 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58951       reflect() const VULKAN_HPP_NOEXCEPT
58952     {
58953       return std::tie( sType, pNext, computeDerivativeGroupQuads, computeDerivativeGroupLinear );
58954     }
58955 #endif
58956 
58957 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58958     auto operator<=>( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & ) const = default;
58959 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58960     bool operator==( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58961     {
58962 #  if defined( VULKAN_HPP_USE_REFLECT )
58963       return this->reflect() == rhs.reflect();
58964 #  else
58965       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( computeDerivativeGroupQuads == rhs.computeDerivativeGroupQuads ) &&
58966              ( computeDerivativeGroupLinear == rhs.computeDerivativeGroupLinear );
58967 #  endif
58968     }
58969 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58970     bool operator!=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58971     {
58972       return !operator==( rhs );
58973     }
58974 #endif
58975 
58976   public:
58977     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV;
58978     void *                              pNext                        = {};
58979     VULKAN_HPP_NAMESPACE::Bool32        computeDerivativeGroupQuads  = {};
58980     VULKAN_HPP_NAMESPACE::Bool32        computeDerivativeGroupLinear = {};
58981   };
58982 
58983   template <>
58984   struct CppType<StructureType, StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV>
58985   {
58986     using Type = PhysicalDeviceComputeShaderDerivativesFeaturesNV;
58987   };
58988 
58989   struct PhysicalDeviceConditionalRenderingFeaturesEXT
58990   {
58991     using NativeType = VkPhysicalDeviceConditionalRenderingFeaturesEXT;
58992 
58993     static const bool                                  allowDuplicate = false;
58994     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT;
58995 
58996 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceConditionalRenderingFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58997     VULKAN_HPP_CONSTEXPR PhysicalDeviceConditionalRenderingFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering_          = {},
58998                                                                         VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering_ = {},
58999                                                                         void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
59000       : pNext{ pNext_ }
59001       , conditionalRendering{ conditionalRendering_ }
59002       , inheritedConditionalRendering{ inheritedConditionalRendering_ }
59003     {
59004     }
59005 
59006     VULKAN_HPP_CONSTEXPR
59007       PhysicalDeviceConditionalRenderingFeaturesEXT( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59008 
PhysicalDeviceConditionalRenderingFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT59009     PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59010       : PhysicalDeviceConditionalRenderingFeaturesEXT( *reinterpret_cast<PhysicalDeviceConditionalRenderingFeaturesEXT const *>( &rhs ) )
59011     {
59012     }
59013 
59014     PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59015 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59016 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT59017     PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59018     {
59019       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT const *>( &rhs );
59020       return *this;
59021     }
59022 
59023 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT59024     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59025     {
59026       pNext = pNext_;
59027       return *this;
59028     }
59029 
59030     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT &
setConditionalRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT59031       setConditionalRendering( VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering_ ) VULKAN_HPP_NOEXCEPT
59032     {
59033       conditionalRendering = conditionalRendering_;
59034       return *this;
59035     }
59036 
59037     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT &
setInheritedConditionalRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT59038       setInheritedConditionalRendering( VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering_ ) VULKAN_HPP_NOEXCEPT
59039     {
59040       inheritedConditionalRendering = inheritedConditionalRendering_;
59041       return *this;
59042     }
59043 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59044 
operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT59045     operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
59046     {
59047       return *reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT *>( this );
59048     }
59049 
operator VkPhysicalDeviceConditionalRenderingFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT59050     operator VkPhysicalDeviceConditionalRenderingFeaturesEXT &() VULKAN_HPP_NOEXCEPT
59051     {
59052       return *reinterpret_cast<VkPhysicalDeviceConditionalRenderingFeaturesEXT *>( this );
59053     }
59054 
59055 #if defined( VULKAN_HPP_USE_REFLECT )
59056 #  if 14 <= VULKAN_HPP_CPP_VERSION
59057     auto
59058 #  else
59059     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59060 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT59061       reflect() const VULKAN_HPP_NOEXCEPT
59062     {
59063       return std::tie( sType, pNext, conditionalRendering, inheritedConditionalRendering );
59064     }
59065 #endif
59066 
59067 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59068     auto operator<=>( PhysicalDeviceConditionalRenderingFeaturesEXT const & ) const = default;
59069 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT59070     bool operator==( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59071     {
59072 #  if defined( VULKAN_HPP_USE_REFLECT )
59073       return this->reflect() == rhs.reflect();
59074 #  else
59075       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conditionalRendering == rhs.conditionalRendering ) &&
59076              ( inheritedConditionalRendering == rhs.inheritedConditionalRendering );
59077 #  endif
59078     }
59079 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT59080     bool operator!=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59081     {
59082       return !operator==( rhs );
59083     }
59084 #endif
59085 
59086   public:
59087     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT;
59088     void *                              pNext                         = {};
59089     VULKAN_HPP_NAMESPACE::Bool32        conditionalRendering          = {};
59090     VULKAN_HPP_NAMESPACE::Bool32        inheritedConditionalRendering = {};
59091   };
59092 
59093   template <>
59094   struct CppType<StructureType, StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT>
59095   {
59096     using Type = PhysicalDeviceConditionalRenderingFeaturesEXT;
59097   };
59098 
59099   struct PhysicalDeviceConservativeRasterizationPropertiesEXT
59100   {
59101     using NativeType = VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
59102 
59103     static const bool                                  allowDuplicate = false;
59104     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
59105 
59106 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceConservativeRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT59107     VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT( float                        primitiveOverestimationSize_                 = {},
59108                                                                                float                        maxExtraPrimitiveOverestimationSize_         = {},
59109                                                                                float                        extraPrimitiveOverestimationSizeGranularity_ = {},
59110                                                                                VULKAN_HPP_NAMESPACE::Bool32 primitiveUnderestimation_                    = {},
59111                                                                                VULKAN_HPP_NAMESPACE::Bool32 conservativePointAndLineRasterization_       = {},
59112                                                                                VULKAN_HPP_NAMESPACE::Bool32 degenerateTrianglesRasterized_               = {},
59113                                                                                VULKAN_HPP_NAMESPACE::Bool32 degenerateLinesRasterized_                   = {},
59114                                                                                VULKAN_HPP_NAMESPACE::Bool32 fullyCoveredFragmentShaderInputVariable_     = {},
59115                                                                                VULKAN_HPP_NAMESPACE::Bool32 conservativeRasterizationPostDepthCoverage_  = {},
59116                                                                                void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
59117       : pNext{ pNext_ }
59118       , primitiveOverestimationSize{ primitiveOverestimationSize_ }
59119       , maxExtraPrimitiveOverestimationSize{ maxExtraPrimitiveOverestimationSize_ }
59120       , extraPrimitiveOverestimationSizeGranularity{ extraPrimitiveOverestimationSizeGranularity_ }
59121       , primitiveUnderestimation{ primitiveUnderestimation_ }
59122       , conservativePointAndLineRasterization{ conservativePointAndLineRasterization_ }
59123       , degenerateTrianglesRasterized{ degenerateTrianglesRasterized_ }
59124       , degenerateLinesRasterized{ degenerateLinesRasterized_ }
59125       , fullyCoveredFragmentShaderInputVariable{ fullyCoveredFragmentShaderInputVariable_ }
59126       , conservativeRasterizationPostDepthCoverage{ conservativeRasterizationPostDepthCoverage_ }
59127     {
59128     }
59129 
59130     VULKAN_HPP_CONSTEXPR
59131       PhysicalDeviceConservativeRasterizationPropertiesEXT( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59132 
PhysicalDeviceConservativeRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT59133     PhysicalDeviceConservativeRasterizationPropertiesEXT( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59134       : PhysicalDeviceConservativeRasterizationPropertiesEXT( *reinterpret_cast<PhysicalDeviceConservativeRasterizationPropertiesEXT const *>( &rhs ) )
59135     {
59136     }
59137 
59138     PhysicalDeviceConservativeRasterizationPropertiesEXT &
59139       operator=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59140 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59141 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT59142     PhysicalDeviceConservativeRasterizationPropertiesEXT & operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59143     {
59144       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT const *>( &rhs );
59145       return *this;
59146     }
59147 
operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT59148     operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
59149     {
59150       return *reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT *>( this );
59151     }
59152 
operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT59153     operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT &() VULKAN_HPP_NOEXCEPT
59154     {
59155       return *reinterpret_cast<VkPhysicalDeviceConservativeRasterizationPropertiesEXT *>( this );
59156     }
59157 
59158 #if defined( VULKAN_HPP_USE_REFLECT )
59159 #  if 14 <= VULKAN_HPP_CPP_VERSION
59160     auto
59161 #  else
59162     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
59163                void * const &,
59164                float const &,
59165                float const &,
59166                float const &,
59167                VULKAN_HPP_NAMESPACE::Bool32 const &,
59168                VULKAN_HPP_NAMESPACE::Bool32 const &,
59169                VULKAN_HPP_NAMESPACE::Bool32 const &,
59170                VULKAN_HPP_NAMESPACE::Bool32 const &,
59171                VULKAN_HPP_NAMESPACE::Bool32 const &,
59172                VULKAN_HPP_NAMESPACE::Bool32 const &>
59173 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT59174       reflect() const VULKAN_HPP_NOEXCEPT
59175     {
59176       return std::tie( sType,
59177                        pNext,
59178                        primitiveOverestimationSize,
59179                        maxExtraPrimitiveOverestimationSize,
59180                        extraPrimitiveOverestimationSizeGranularity,
59181                        primitiveUnderestimation,
59182                        conservativePointAndLineRasterization,
59183                        degenerateTrianglesRasterized,
59184                        degenerateLinesRasterized,
59185                        fullyCoveredFragmentShaderInputVariable,
59186                        conservativeRasterizationPostDepthCoverage );
59187     }
59188 #endif
59189 
59190 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59191     auto operator<=>( PhysicalDeviceConservativeRasterizationPropertiesEXT const & ) const = default;
59192 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT59193     bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59194     {
59195 #  if defined( VULKAN_HPP_USE_REFLECT )
59196       return this->reflect() == rhs.reflect();
59197 #  else
59198       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( primitiveOverestimationSize == rhs.primitiveOverestimationSize ) &&
59199              ( maxExtraPrimitiveOverestimationSize == rhs.maxExtraPrimitiveOverestimationSize ) &&
59200              ( extraPrimitiveOverestimationSizeGranularity == rhs.extraPrimitiveOverestimationSizeGranularity ) &&
59201              ( primitiveUnderestimation == rhs.primitiveUnderestimation ) &&
59202              ( conservativePointAndLineRasterization == rhs.conservativePointAndLineRasterization ) &&
59203              ( degenerateTrianglesRasterized == rhs.degenerateTrianglesRasterized ) && ( degenerateLinesRasterized == rhs.degenerateLinesRasterized ) &&
59204              ( fullyCoveredFragmentShaderInputVariable == rhs.fullyCoveredFragmentShaderInputVariable ) &&
59205              ( conservativeRasterizationPostDepthCoverage == rhs.conservativeRasterizationPostDepthCoverage );
59206 #  endif
59207     }
59208 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT59209     bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59210     {
59211       return !operator==( rhs );
59212     }
59213 #endif
59214 
59215   public:
59216     VULKAN_HPP_NAMESPACE::StructureType sType                                       = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
59217     void *                              pNext                                       = {};
59218     float                               primitiveOverestimationSize                 = {};
59219     float                               maxExtraPrimitiveOverestimationSize         = {};
59220     float                               extraPrimitiveOverestimationSizeGranularity = {};
59221     VULKAN_HPP_NAMESPACE::Bool32        primitiveUnderestimation                    = {};
59222     VULKAN_HPP_NAMESPACE::Bool32        conservativePointAndLineRasterization       = {};
59223     VULKAN_HPP_NAMESPACE::Bool32        degenerateTrianglesRasterized               = {};
59224     VULKAN_HPP_NAMESPACE::Bool32        degenerateLinesRasterized                   = {};
59225     VULKAN_HPP_NAMESPACE::Bool32        fullyCoveredFragmentShaderInputVariable     = {};
59226     VULKAN_HPP_NAMESPACE::Bool32        conservativeRasterizationPostDepthCoverage  = {};
59227   };
59228 
59229   template <>
59230   struct CppType<StructureType, StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT>
59231   {
59232     using Type = PhysicalDeviceConservativeRasterizationPropertiesEXT;
59233   };
59234 
59235   struct PhysicalDeviceCooperativeMatrixFeaturesKHR
59236   {
59237     using NativeType = VkPhysicalDeviceCooperativeMatrixFeaturesKHR;
59238 
59239     static const bool                                  allowDuplicate = false;
59240     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesKHR;
59241 
59242 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCooperativeMatrixFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59243     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_                   = {},
59244                                                                      VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ = {},
59245                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
59246       : pNext{ pNext_ }
59247       , cooperativeMatrix{ cooperativeMatrix_ }
59248       , cooperativeMatrixRobustBufferAccess{ cooperativeMatrixRobustBufferAccess_ }
59249     {
59250     }
59251 
59252     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesKHR( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59253 
PhysicalDeviceCooperativeMatrixFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59254     PhysicalDeviceCooperativeMatrixFeaturesKHR( VkPhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
59255       : PhysicalDeviceCooperativeMatrixFeaturesKHR( *reinterpret_cast<PhysicalDeviceCooperativeMatrixFeaturesKHR const *>( &rhs ) )
59256     {
59257     }
59258 
59259     PhysicalDeviceCooperativeMatrixFeaturesKHR & operator=( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59260 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59261 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59262     PhysicalDeviceCooperativeMatrixFeaturesKHR & operator=( VkPhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
59263     {
59264       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR const *>( &rhs );
59265       return *this;
59266     }
59267 
59268 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59269     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59270     {
59271       pNext = pNext_;
59272       return *this;
59273     }
59274 
59275     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR &
setCooperativeMatrixVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59276       setCooperativeMatrix( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_ ) VULKAN_HPP_NOEXCEPT
59277     {
59278       cooperativeMatrix = cooperativeMatrix_;
59279       return *this;
59280     }
59281 
59282     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR &
setCooperativeMatrixRobustBufferAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59283       setCooperativeMatrixRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ ) VULKAN_HPP_NOEXCEPT
59284     {
59285       cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_;
59286       return *this;
59287     }
59288 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59289 
operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59290     operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
59291     {
59292       return *reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesKHR *>( this );
59293     }
59294 
operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59295     operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR &() VULKAN_HPP_NOEXCEPT
59296     {
59297       return *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixFeaturesKHR *>( this );
59298     }
59299 
59300 #if defined( VULKAN_HPP_USE_REFLECT )
59301 #  if 14 <= VULKAN_HPP_CPP_VERSION
59302     auto
59303 #  else
59304     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59305 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59306       reflect() const VULKAN_HPP_NOEXCEPT
59307     {
59308       return std::tie( sType, pNext, cooperativeMatrix, cooperativeMatrixRobustBufferAccess );
59309     }
59310 #endif
59311 
59312 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59313     auto operator<=>( PhysicalDeviceCooperativeMatrixFeaturesKHR const & ) const = default;
59314 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59315     bool operator==( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
59316     {
59317 #  if defined( VULKAN_HPP_USE_REFLECT )
59318       return this->reflect() == rhs.reflect();
59319 #  else
59320       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrix == rhs.cooperativeMatrix ) &&
59321              ( cooperativeMatrixRobustBufferAccess == rhs.cooperativeMatrixRobustBufferAccess );
59322 #  endif
59323     }
59324 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR59325     bool operator!=( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
59326     {
59327       return !operator==( rhs );
59328     }
59329 #endif
59330 
59331   public:
59332     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesKHR;
59333     void *                              pNext                               = {};
59334     VULKAN_HPP_NAMESPACE::Bool32        cooperativeMatrix                   = {};
59335     VULKAN_HPP_NAMESPACE::Bool32        cooperativeMatrixRobustBufferAccess = {};
59336   };
59337 
59338   template <>
59339   struct CppType<StructureType, StructureType::ePhysicalDeviceCooperativeMatrixFeaturesKHR>
59340   {
59341     using Type = PhysicalDeviceCooperativeMatrixFeaturesKHR;
59342   };
59343 
59344   struct PhysicalDeviceCooperativeMatrixFeaturesNV
59345   {
59346     using NativeType = VkPhysicalDeviceCooperativeMatrixFeaturesNV;
59347 
59348     static const bool                                  allowDuplicate = false;
59349     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV;
59350 
59351 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCooperativeMatrixFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59352     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_                   = {},
59353                                                                     VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ = {},
59354                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
59355       : pNext{ pNext_ }
59356       , cooperativeMatrix{ cooperativeMatrix_ }
59357       , cooperativeMatrixRobustBufferAccess{ cooperativeMatrixRobustBufferAccess_ }
59358     {
59359     }
59360 
59361     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59362 
PhysicalDeviceCooperativeMatrixFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59363     PhysicalDeviceCooperativeMatrixFeaturesNV( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59364       : PhysicalDeviceCooperativeMatrixFeaturesNV( *reinterpret_cast<PhysicalDeviceCooperativeMatrixFeaturesNV const *>( &rhs ) )
59365     {
59366     }
59367 
59368     PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59369 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59370 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59371     PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59372     {
59373       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV const *>( &rhs );
59374       return *this;
59375     }
59376 
59377 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59378     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59379     {
59380       pNext = pNext_;
59381       return *this;
59382     }
59383 
59384     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV &
setCooperativeMatrixVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59385       setCooperativeMatrix( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_ ) VULKAN_HPP_NOEXCEPT
59386     {
59387       cooperativeMatrix = cooperativeMatrix_;
59388       return *this;
59389     }
59390 
59391     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV &
setCooperativeMatrixRobustBufferAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59392       setCooperativeMatrixRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ ) VULKAN_HPP_NOEXCEPT
59393     {
59394       cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_;
59395       return *this;
59396     }
59397 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59398 
operator VkPhysicalDeviceCooperativeMatrixFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59399     operator VkPhysicalDeviceCooperativeMatrixFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
59400     {
59401       return *reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesNV *>( this );
59402     }
59403 
operator VkPhysicalDeviceCooperativeMatrixFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59404     operator VkPhysicalDeviceCooperativeMatrixFeaturesNV &() VULKAN_HPP_NOEXCEPT
59405     {
59406       return *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixFeaturesNV *>( this );
59407     }
59408 
59409 #if defined( VULKAN_HPP_USE_REFLECT )
59410 #  if 14 <= VULKAN_HPP_CPP_VERSION
59411     auto
59412 #  else
59413     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59414 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59415       reflect() const VULKAN_HPP_NOEXCEPT
59416     {
59417       return std::tie( sType, pNext, cooperativeMatrix, cooperativeMatrixRobustBufferAccess );
59418     }
59419 #endif
59420 
59421 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59422     auto operator<=>( PhysicalDeviceCooperativeMatrixFeaturesNV const & ) const = default;
59423 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59424     bool operator==( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59425     {
59426 #  if defined( VULKAN_HPP_USE_REFLECT )
59427       return this->reflect() == rhs.reflect();
59428 #  else
59429       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrix == rhs.cooperativeMatrix ) &&
59430              ( cooperativeMatrixRobustBufferAccess == rhs.cooperativeMatrixRobustBufferAccess );
59431 #  endif
59432     }
59433 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV59434     bool operator!=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59435     {
59436       return !operator==( rhs );
59437     }
59438 #endif
59439 
59440   public:
59441     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV;
59442     void *                              pNext                               = {};
59443     VULKAN_HPP_NAMESPACE::Bool32        cooperativeMatrix                   = {};
59444     VULKAN_HPP_NAMESPACE::Bool32        cooperativeMatrixRobustBufferAccess = {};
59445   };
59446 
59447   template <>
59448   struct CppType<StructureType, StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV>
59449   {
59450     using Type = PhysicalDeviceCooperativeMatrixFeaturesNV;
59451   };
59452 
59453   struct PhysicalDeviceCooperativeMatrixPropertiesKHR
59454   {
59455     using NativeType = VkPhysicalDeviceCooperativeMatrixPropertiesKHR;
59456 
59457     static const bool                                  allowDuplicate = false;
59458     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesKHR;
59459 
59460 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCooperativeMatrixPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR59461     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages_ = {},
59462                                                                        void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
59463       : pNext{ pNext_ }
59464       , cooperativeMatrixSupportedStages{ cooperativeMatrixSupportedStages_ }
59465     {
59466     }
59467 
59468     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesKHR( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59469 
PhysicalDeviceCooperativeMatrixPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR59470     PhysicalDeviceCooperativeMatrixPropertiesKHR( VkPhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
59471       : PhysicalDeviceCooperativeMatrixPropertiesKHR( *reinterpret_cast<PhysicalDeviceCooperativeMatrixPropertiesKHR const *>( &rhs ) )
59472     {
59473     }
59474 
59475     PhysicalDeviceCooperativeMatrixPropertiesKHR & operator=( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59476 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59477 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR59478     PhysicalDeviceCooperativeMatrixPropertiesKHR & operator=( VkPhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
59479     {
59480       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR const *>( &rhs );
59481       return *this;
59482     }
59483 
operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR59484     operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
59485     {
59486       return *reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixPropertiesKHR *>( this );
59487     }
59488 
operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR59489     operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR &() VULKAN_HPP_NOEXCEPT
59490     {
59491       return *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixPropertiesKHR *>( this );
59492     }
59493 
59494 #if defined( VULKAN_HPP_USE_REFLECT )
59495 #  if 14 <= VULKAN_HPP_CPP_VERSION
59496     auto
59497 #  else
59498     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &>
59499 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR59500       reflect() const VULKAN_HPP_NOEXCEPT
59501     {
59502       return std::tie( sType, pNext, cooperativeMatrixSupportedStages );
59503     }
59504 #endif
59505 
59506 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59507     auto operator<=>( PhysicalDeviceCooperativeMatrixPropertiesKHR const & ) const = default;
59508 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR59509     bool operator==( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
59510     {
59511 #  if defined( VULKAN_HPP_USE_REFLECT )
59512       return this->reflect() == rhs.reflect();
59513 #  else
59514       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrixSupportedStages == rhs.cooperativeMatrixSupportedStages );
59515 #  endif
59516     }
59517 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR59518     bool operator!=( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
59519     {
59520       return !operator==( rhs );
59521     }
59522 #endif
59523 
59524   public:
59525     VULKAN_HPP_NAMESPACE::StructureType    sType                            = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesKHR;
59526     void *                                 pNext                            = {};
59527     VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages = {};
59528   };
59529 
59530   template <>
59531   struct CppType<StructureType, StructureType::ePhysicalDeviceCooperativeMatrixPropertiesKHR>
59532   {
59533     using Type = PhysicalDeviceCooperativeMatrixPropertiesKHR;
59534   };
59535 
59536   struct PhysicalDeviceCooperativeMatrixPropertiesNV
59537   {
59538     using NativeType = VkPhysicalDeviceCooperativeMatrixPropertiesNV;
59539 
59540     static const bool                                  allowDuplicate = false;
59541     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV;
59542 
59543 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59544     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV( VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages_ = {},
59545                                                                       void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
59546       : pNext{ pNext_ }
59547       , cooperativeMatrixSupportedStages{ cooperativeMatrixSupportedStages_ }
59548     {
59549     }
59550 
59551     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59552 
PhysicalDeviceCooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59553     PhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59554       : PhysicalDeviceCooperativeMatrixPropertiesNV( *reinterpret_cast<PhysicalDeviceCooperativeMatrixPropertiesNV const *>( &rhs ) )
59555     {
59556     }
59557 
59558     PhysicalDeviceCooperativeMatrixPropertiesNV & operator=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59559 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59560 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59561     PhysicalDeviceCooperativeMatrixPropertiesNV & operator=( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59562     {
59563       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV const *>( &rhs );
59564       return *this;
59565     }
59566 
operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59567     operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
59568     {
59569       return *reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixPropertiesNV *>( this );
59570     }
59571 
operator VkPhysicalDeviceCooperativeMatrixPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59572     operator VkPhysicalDeviceCooperativeMatrixPropertiesNV &() VULKAN_HPP_NOEXCEPT
59573     {
59574       return *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixPropertiesNV *>( this );
59575     }
59576 
59577 #if defined( VULKAN_HPP_USE_REFLECT )
59578 #  if 14 <= VULKAN_HPP_CPP_VERSION
59579     auto
59580 #  else
59581     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &>
59582 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59583       reflect() const VULKAN_HPP_NOEXCEPT
59584     {
59585       return std::tie( sType, pNext, cooperativeMatrixSupportedStages );
59586     }
59587 #endif
59588 
59589 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59590     auto operator<=>( PhysicalDeviceCooperativeMatrixPropertiesNV const & ) const = default;
59591 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59592     bool operator==( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59593     {
59594 #  if defined( VULKAN_HPP_USE_REFLECT )
59595       return this->reflect() == rhs.reflect();
59596 #  else
59597       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrixSupportedStages == rhs.cooperativeMatrixSupportedStages );
59598 #  endif
59599     }
59600 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59601     bool operator!=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59602     {
59603       return !operator==( rhs );
59604     }
59605 #endif
59606 
59607   public:
59608     VULKAN_HPP_NAMESPACE::StructureType    sType                            = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV;
59609     void *                                 pNext                            = {};
59610     VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages = {};
59611   };
59612 
59613   template <>
59614   struct CppType<StructureType, StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV>
59615   {
59616     using Type = PhysicalDeviceCooperativeMatrixPropertiesNV;
59617   };
59618 
59619   struct PhysicalDeviceCopyMemoryIndirectFeaturesNV
59620   {
59621     using NativeType = VkPhysicalDeviceCopyMemoryIndirectFeaturesNV;
59622 
59623     static const bool                                  allowDuplicate = false;
59624     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesNV;
59625 
59626 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCopyMemoryIndirectFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59627     VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 indirectCopy_ = {},
59628                                                                      void *                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
59629       : pNext{ pNext_ }
59630       , indirectCopy{ indirectCopy_ }
59631     {
59632     }
59633 
59634     VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectFeaturesNV( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59635 
PhysicalDeviceCopyMemoryIndirectFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59636     PhysicalDeviceCopyMemoryIndirectFeaturesNV( VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59637       : PhysicalDeviceCopyMemoryIndirectFeaturesNV( *reinterpret_cast<PhysicalDeviceCopyMemoryIndirectFeaturesNV const *>( &rhs ) )
59638     {
59639     }
59640 
59641     PhysicalDeviceCopyMemoryIndirectFeaturesNV & operator=( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59642 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59643 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59644     PhysicalDeviceCopyMemoryIndirectFeaturesNV & operator=( VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59645     {
59646       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV const *>( &rhs );
59647       return *this;
59648     }
59649 
59650 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59651     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59652     {
59653       pNext = pNext_;
59654       return *this;
59655     }
59656 
setIndirectCopyVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59657     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesNV & setIndirectCopy( VULKAN_HPP_NAMESPACE::Bool32 indirectCopy_ ) VULKAN_HPP_NOEXCEPT
59658     {
59659       indirectCopy = indirectCopy_;
59660       return *this;
59661     }
59662 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59663 
operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59664     operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
59665     {
59666       return *reinterpret_cast<const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *>( this );
59667     }
59668 
operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59669     operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV &() VULKAN_HPP_NOEXCEPT
59670     {
59671       return *reinterpret_cast<VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *>( this );
59672     }
59673 
59674 #if defined( VULKAN_HPP_USE_REFLECT )
59675 #  if 14 <= VULKAN_HPP_CPP_VERSION
59676     auto
59677 #  else
59678     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59679 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59680       reflect() const VULKAN_HPP_NOEXCEPT
59681     {
59682       return std::tie( sType, pNext, indirectCopy );
59683     }
59684 #endif
59685 
59686 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59687     auto operator<=>( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & ) const = default;
59688 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59689     bool operator==( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59690     {
59691 #  if defined( VULKAN_HPP_USE_REFLECT )
59692       return this->reflect() == rhs.reflect();
59693 #  else
59694       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( indirectCopy == rhs.indirectCopy );
59695 #  endif
59696     }
59697 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59698     bool operator!=( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59699     {
59700       return !operator==( rhs );
59701     }
59702 #endif
59703 
59704   public:
59705     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesNV;
59706     void *                              pNext        = {};
59707     VULKAN_HPP_NAMESPACE::Bool32        indirectCopy = {};
59708   };
59709 
59710   template <>
59711   struct CppType<StructureType, StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesNV>
59712   {
59713     using Type = PhysicalDeviceCopyMemoryIndirectFeaturesNV;
59714   };
59715 
59716   struct PhysicalDeviceCopyMemoryIndirectPropertiesNV
59717   {
59718     using NativeType = VkPhysicalDeviceCopyMemoryIndirectPropertiesNV;
59719 
59720     static const bool                                  allowDuplicate = false;
59721     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCopyMemoryIndirectPropertiesNV;
59722 
59723 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCopyMemoryIndirectPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59724     VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectPropertiesNV( VULKAN_HPP_NAMESPACE::QueueFlags supportedQueues_ = {},
59725                                                                        void *                           pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
59726       : pNext{ pNext_ }
59727       , supportedQueues{ supportedQueues_ }
59728     {
59729     }
59730 
59731     VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectPropertiesNV( PhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59732 
PhysicalDeviceCopyMemoryIndirectPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59733     PhysicalDeviceCopyMemoryIndirectPropertiesNV( VkPhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59734       : PhysicalDeviceCopyMemoryIndirectPropertiesNV( *reinterpret_cast<PhysicalDeviceCopyMemoryIndirectPropertiesNV const *>( &rhs ) )
59735     {
59736     }
59737 
59738     PhysicalDeviceCopyMemoryIndirectPropertiesNV & operator=( PhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59739 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59740 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59741     PhysicalDeviceCopyMemoryIndirectPropertiesNV & operator=( VkPhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59742     {
59743       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV const *>( &rhs );
59744       return *this;
59745     }
59746 
operator VkPhysicalDeviceCopyMemoryIndirectPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59747     operator VkPhysicalDeviceCopyMemoryIndirectPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
59748     {
59749       return *reinterpret_cast<const VkPhysicalDeviceCopyMemoryIndirectPropertiesNV *>( this );
59750     }
59751 
operator VkPhysicalDeviceCopyMemoryIndirectPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59752     operator VkPhysicalDeviceCopyMemoryIndirectPropertiesNV &() VULKAN_HPP_NOEXCEPT
59753     {
59754       return *reinterpret_cast<VkPhysicalDeviceCopyMemoryIndirectPropertiesNV *>( this );
59755     }
59756 
59757 #if defined( VULKAN_HPP_USE_REFLECT )
59758 #  if 14 <= VULKAN_HPP_CPP_VERSION
59759     auto
59760 #  else
59761     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::QueueFlags const &>
59762 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59763       reflect() const VULKAN_HPP_NOEXCEPT
59764     {
59765       return std::tie( sType, pNext, supportedQueues );
59766     }
59767 #endif
59768 
59769 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59770     auto operator<=>( PhysicalDeviceCopyMemoryIndirectPropertiesNV const & ) const = default;
59771 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59772     bool operator==( PhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59773     {
59774 #  if defined( VULKAN_HPP_USE_REFLECT )
59775       return this->reflect() == rhs.reflect();
59776 #  else
59777       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedQueues == rhs.supportedQueues );
59778 #  endif
59779     }
59780 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59781     bool operator!=( PhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59782     {
59783       return !operator==( rhs );
59784     }
59785 #endif
59786 
59787   public:
59788     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceCopyMemoryIndirectPropertiesNV;
59789     void *                              pNext           = {};
59790     VULKAN_HPP_NAMESPACE::QueueFlags    supportedQueues = {};
59791   };
59792 
59793   template <>
59794   struct CppType<StructureType, StructureType::ePhysicalDeviceCopyMemoryIndirectPropertiesNV>
59795   {
59796     using Type = PhysicalDeviceCopyMemoryIndirectPropertiesNV;
59797   };
59798 
59799   struct PhysicalDeviceCornerSampledImageFeaturesNV
59800   {
59801     using NativeType = VkPhysicalDeviceCornerSampledImageFeaturesNV;
59802 
59803     static const bool                                  allowDuplicate = false;
59804     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV;
59805 
59806 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCornerSampledImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59807     VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage_ = {},
59808                                                                      void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
59809       : pNext{ pNext_ }
59810       , cornerSampledImage{ cornerSampledImage_ }
59811     {
59812     }
59813 
59814     VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59815 
PhysicalDeviceCornerSampledImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59816     PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59817       : PhysicalDeviceCornerSampledImageFeaturesNV( *reinterpret_cast<PhysicalDeviceCornerSampledImageFeaturesNV const *>( &rhs ) )
59818     {
59819     }
59820 
59821     PhysicalDeviceCornerSampledImageFeaturesNV & operator=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59822 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59823 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59824     PhysicalDeviceCornerSampledImageFeaturesNV & operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59825     {
59826       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV const *>( &rhs );
59827       return *this;
59828     }
59829 
59830 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59831     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59832     {
59833       pNext = pNext_;
59834       return *this;
59835     }
59836 
59837     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV &
setCornerSampledImageVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59838       setCornerSampledImage( VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage_ ) VULKAN_HPP_NOEXCEPT
59839     {
59840       cornerSampledImage = cornerSampledImage_;
59841       return *this;
59842     }
59843 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59844 
operator VkPhysicalDeviceCornerSampledImageFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59845     operator VkPhysicalDeviceCornerSampledImageFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
59846     {
59847       return *reinterpret_cast<const VkPhysicalDeviceCornerSampledImageFeaturesNV *>( this );
59848     }
59849 
operator VkPhysicalDeviceCornerSampledImageFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59850     operator VkPhysicalDeviceCornerSampledImageFeaturesNV &() VULKAN_HPP_NOEXCEPT
59851     {
59852       return *reinterpret_cast<VkPhysicalDeviceCornerSampledImageFeaturesNV *>( this );
59853     }
59854 
59855 #if defined( VULKAN_HPP_USE_REFLECT )
59856 #  if 14 <= VULKAN_HPP_CPP_VERSION
59857     auto
59858 #  else
59859     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59860 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59861       reflect() const VULKAN_HPP_NOEXCEPT
59862     {
59863       return std::tie( sType, pNext, cornerSampledImage );
59864     }
59865 #endif
59866 
59867 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59868     auto operator<=>( PhysicalDeviceCornerSampledImageFeaturesNV const & ) const = default;
59869 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59870     bool operator==( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59871     {
59872 #  if defined( VULKAN_HPP_USE_REFLECT )
59873       return this->reflect() == rhs.reflect();
59874 #  else
59875       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cornerSampledImage == rhs.cornerSampledImage );
59876 #  endif
59877     }
59878 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59879     bool operator!=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59880     {
59881       return !operator==( rhs );
59882     }
59883 #endif
59884 
59885   public:
59886     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV;
59887     void *                              pNext              = {};
59888     VULKAN_HPP_NAMESPACE::Bool32        cornerSampledImage = {};
59889   };
59890 
59891   template <>
59892   struct CppType<StructureType, StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV>
59893   {
59894     using Type = PhysicalDeviceCornerSampledImageFeaturesNV;
59895   };
59896 
59897   struct PhysicalDeviceCoverageReductionModeFeaturesNV
59898   {
59899     using NativeType = VkPhysicalDeviceCoverageReductionModeFeaturesNV;
59900 
59901     static const bool                                  allowDuplicate = false;
59902     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV;
59903 
59904 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCoverageReductionModeFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59905     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoverageReductionModeFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode_ = {},
59906                                                                         void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
59907       : pNext{ pNext_ }
59908       , coverageReductionMode{ coverageReductionMode_ }
59909     {
59910     }
59911 
59912     VULKAN_HPP_CONSTEXPR
59913       PhysicalDeviceCoverageReductionModeFeaturesNV( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59914 
PhysicalDeviceCoverageReductionModeFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59915     PhysicalDeviceCoverageReductionModeFeaturesNV( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59916       : PhysicalDeviceCoverageReductionModeFeaturesNV( *reinterpret_cast<PhysicalDeviceCoverageReductionModeFeaturesNV const *>( &rhs ) )
59917     {
59918     }
59919 
59920     PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59921 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59922 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59923     PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59924     {
59925       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV const *>( &rhs );
59926       return *this;
59927     }
59928 
59929 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59930     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59931     {
59932       pNext = pNext_;
59933       return *this;
59934     }
59935 
59936     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV &
setCoverageReductionModeVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59937       setCoverageReductionMode( VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode_ ) VULKAN_HPP_NOEXCEPT
59938     {
59939       coverageReductionMode = coverageReductionMode_;
59940       return *this;
59941     }
59942 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59943 
operator VkPhysicalDeviceCoverageReductionModeFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59944     operator VkPhysicalDeviceCoverageReductionModeFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
59945     {
59946       return *reinterpret_cast<const VkPhysicalDeviceCoverageReductionModeFeaturesNV *>( this );
59947     }
59948 
operator VkPhysicalDeviceCoverageReductionModeFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59949     operator VkPhysicalDeviceCoverageReductionModeFeaturesNV &() VULKAN_HPP_NOEXCEPT
59950     {
59951       return *reinterpret_cast<VkPhysicalDeviceCoverageReductionModeFeaturesNV *>( this );
59952     }
59953 
59954 #if defined( VULKAN_HPP_USE_REFLECT )
59955 #  if 14 <= VULKAN_HPP_CPP_VERSION
59956     auto
59957 #  else
59958     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59959 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59960       reflect() const VULKAN_HPP_NOEXCEPT
59961     {
59962       return std::tie( sType, pNext, coverageReductionMode );
59963     }
59964 #endif
59965 
59966 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59967     auto operator<=>( PhysicalDeviceCoverageReductionModeFeaturesNV const & ) const = default;
59968 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59969     bool operator==( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59970     {
59971 #  if defined( VULKAN_HPP_USE_REFLECT )
59972       return this->reflect() == rhs.reflect();
59973 #  else
59974       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( coverageReductionMode == rhs.coverageReductionMode );
59975 #  endif
59976     }
59977 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59978     bool operator!=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59979     {
59980       return !operator==( rhs );
59981     }
59982 #endif
59983 
59984   public:
59985     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV;
59986     void *                              pNext                 = {};
59987     VULKAN_HPP_NAMESPACE::Bool32        coverageReductionMode = {};
59988   };
59989 
59990   template <>
59991   struct CppType<StructureType, StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV>
59992   {
59993     using Type = PhysicalDeviceCoverageReductionModeFeaturesNV;
59994   };
59995 
59996   struct PhysicalDeviceCubicClampFeaturesQCOM
59997   {
59998     using NativeType = VkPhysicalDeviceCubicClampFeaturesQCOM;
59999 
60000     static const bool                                  allowDuplicate = false;
60001     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCubicClampFeaturesQCOM;
60002 
60003 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCubicClampFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM60004     VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicClampFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 cubicRangeClamp_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
60005       : pNext{ pNext_ }
60006       , cubicRangeClamp{ cubicRangeClamp_ }
60007     {
60008     }
60009 
60010     VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicClampFeaturesQCOM( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60011 
PhysicalDeviceCubicClampFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM60012     PhysicalDeviceCubicClampFeaturesQCOM( VkPhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
60013       : PhysicalDeviceCubicClampFeaturesQCOM( *reinterpret_cast<PhysicalDeviceCubicClampFeaturesQCOM const *>( &rhs ) )
60014     {
60015     }
60016 
60017     PhysicalDeviceCubicClampFeaturesQCOM & operator=( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60018 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60019 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM60020     PhysicalDeviceCubicClampFeaturesQCOM & operator=( VkPhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
60021     {
60022       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM const *>( &rhs );
60023       return *this;
60024     }
60025 
60026 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM60027     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicClampFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60028     {
60029       pNext = pNext_;
60030       return *this;
60031     }
60032 
setCubicRangeClampVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM60033     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicClampFeaturesQCOM & setCubicRangeClamp( VULKAN_HPP_NAMESPACE::Bool32 cubicRangeClamp_ ) VULKAN_HPP_NOEXCEPT
60034     {
60035       cubicRangeClamp = cubicRangeClamp_;
60036       return *this;
60037     }
60038 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60039 
operator VkPhysicalDeviceCubicClampFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM60040     operator VkPhysicalDeviceCubicClampFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
60041     {
60042       return *reinterpret_cast<const VkPhysicalDeviceCubicClampFeaturesQCOM *>( this );
60043     }
60044 
operator VkPhysicalDeviceCubicClampFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM60045     operator VkPhysicalDeviceCubicClampFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
60046     {
60047       return *reinterpret_cast<VkPhysicalDeviceCubicClampFeaturesQCOM *>( this );
60048     }
60049 
60050 #if defined( VULKAN_HPP_USE_REFLECT )
60051 #  if 14 <= VULKAN_HPP_CPP_VERSION
60052     auto
60053 #  else
60054     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60055 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM60056       reflect() const VULKAN_HPP_NOEXCEPT
60057     {
60058       return std::tie( sType, pNext, cubicRangeClamp );
60059     }
60060 #endif
60061 
60062 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60063     auto operator<=>( PhysicalDeviceCubicClampFeaturesQCOM const & ) const = default;
60064 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM60065     bool operator==( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
60066     {
60067 #  if defined( VULKAN_HPP_USE_REFLECT )
60068       return this->reflect() == rhs.reflect();
60069 #  else
60070       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cubicRangeClamp == rhs.cubicRangeClamp );
60071 #  endif
60072     }
60073 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM60074     bool operator!=( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
60075     {
60076       return !operator==( rhs );
60077     }
60078 #endif
60079 
60080   public:
60081     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceCubicClampFeaturesQCOM;
60082     void *                              pNext           = {};
60083     VULKAN_HPP_NAMESPACE::Bool32        cubicRangeClamp = {};
60084   };
60085 
60086   template <>
60087   struct CppType<StructureType, StructureType::ePhysicalDeviceCubicClampFeaturesQCOM>
60088   {
60089     using Type = PhysicalDeviceCubicClampFeaturesQCOM;
60090   };
60091 
60092   struct PhysicalDeviceCubicWeightsFeaturesQCOM
60093   {
60094     using NativeType = VkPhysicalDeviceCubicWeightsFeaturesQCOM;
60095 
60096     static const bool                                  allowDuplicate = false;
60097     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCubicWeightsFeaturesQCOM;
60098 
60099 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCubicWeightsFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM60100     VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicWeightsFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 selectableCubicWeights_ = {},
60101                                                                  void *                       pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
60102       : pNext{ pNext_ }
60103       , selectableCubicWeights{ selectableCubicWeights_ }
60104     {
60105     }
60106 
60107     VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicWeightsFeaturesQCOM( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60108 
PhysicalDeviceCubicWeightsFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM60109     PhysicalDeviceCubicWeightsFeaturesQCOM( VkPhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
60110       : PhysicalDeviceCubicWeightsFeaturesQCOM( *reinterpret_cast<PhysicalDeviceCubicWeightsFeaturesQCOM const *>( &rhs ) )
60111     {
60112     }
60113 
60114     PhysicalDeviceCubicWeightsFeaturesQCOM & operator=( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60115 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60116 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM60117     PhysicalDeviceCubicWeightsFeaturesQCOM & operator=( VkPhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
60118     {
60119       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM const *>( &rhs );
60120       return *this;
60121     }
60122 
60123 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM60124     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicWeightsFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60125     {
60126       pNext = pNext_;
60127       return *this;
60128     }
60129 
60130     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicWeightsFeaturesQCOM &
setSelectableCubicWeightsVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM60131       setSelectableCubicWeights( VULKAN_HPP_NAMESPACE::Bool32 selectableCubicWeights_ ) VULKAN_HPP_NOEXCEPT
60132     {
60133       selectableCubicWeights = selectableCubicWeights_;
60134       return *this;
60135     }
60136 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60137 
operator VkPhysicalDeviceCubicWeightsFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM60138     operator VkPhysicalDeviceCubicWeightsFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
60139     {
60140       return *reinterpret_cast<const VkPhysicalDeviceCubicWeightsFeaturesQCOM *>( this );
60141     }
60142 
operator VkPhysicalDeviceCubicWeightsFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM60143     operator VkPhysicalDeviceCubicWeightsFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
60144     {
60145       return *reinterpret_cast<VkPhysicalDeviceCubicWeightsFeaturesQCOM *>( this );
60146     }
60147 
60148 #if defined( VULKAN_HPP_USE_REFLECT )
60149 #  if 14 <= VULKAN_HPP_CPP_VERSION
60150     auto
60151 #  else
60152     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60153 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM60154       reflect() const VULKAN_HPP_NOEXCEPT
60155     {
60156       return std::tie( sType, pNext, selectableCubicWeights );
60157     }
60158 #endif
60159 
60160 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60161     auto operator<=>( PhysicalDeviceCubicWeightsFeaturesQCOM const & ) const = default;
60162 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM60163     bool operator==( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
60164     {
60165 #  if defined( VULKAN_HPP_USE_REFLECT )
60166       return this->reflect() == rhs.reflect();
60167 #  else
60168       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( selectableCubicWeights == rhs.selectableCubicWeights );
60169 #  endif
60170     }
60171 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM60172     bool operator!=( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
60173     {
60174       return !operator==( rhs );
60175     }
60176 #endif
60177 
60178   public:
60179     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceCubicWeightsFeaturesQCOM;
60180     void *                              pNext                  = {};
60181     VULKAN_HPP_NAMESPACE::Bool32        selectableCubicWeights = {};
60182   };
60183 
60184   template <>
60185   struct CppType<StructureType, StructureType::ePhysicalDeviceCubicWeightsFeaturesQCOM>
60186   {
60187     using Type = PhysicalDeviceCubicWeightsFeaturesQCOM;
60188   };
60189 
60190 #if defined( VK_ENABLE_BETA_EXTENSIONS )
60191   struct PhysicalDeviceCudaKernelLaunchFeaturesNV
60192   {
60193     using NativeType = VkPhysicalDeviceCudaKernelLaunchFeaturesNV;
60194 
60195     static const bool                                  allowDuplicate = false;
60196     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV;
60197 
60198 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCudaKernelLaunchFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV60199     VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 cudaKernelLaunchFeatures_ = {},
60200                                                                    void *                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
60201       : pNext{ pNext_ }
60202       , cudaKernelLaunchFeatures{ cudaKernelLaunchFeatures_ }
60203     {
60204     }
60205 
60206     VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchFeaturesNV( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60207 
PhysicalDeviceCudaKernelLaunchFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV60208     PhysicalDeviceCudaKernelLaunchFeaturesNV( VkPhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
60209       : PhysicalDeviceCudaKernelLaunchFeaturesNV( *reinterpret_cast<PhysicalDeviceCudaKernelLaunchFeaturesNV const *>( &rhs ) )
60210     {
60211     }
60212 
60213     PhysicalDeviceCudaKernelLaunchFeaturesNV & operator=( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60214 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60215 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV60216     PhysicalDeviceCudaKernelLaunchFeaturesNV & operator=( VkPhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
60217     {
60218       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV const *>( &rhs );
60219       return *this;
60220     }
60221 
60222 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV60223     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCudaKernelLaunchFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60224     {
60225       pNext = pNext_;
60226       return *this;
60227     }
60228 
60229     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCudaKernelLaunchFeaturesNV &
setCudaKernelLaunchFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV60230       setCudaKernelLaunchFeatures( VULKAN_HPP_NAMESPACE::Bool32 cudaKernelLaunchFeatures_ ) VULKAN_HPP_NOEXCEPT
60231     {
60232       cudaKernelLaunchFeatures = cudaKernelLaunchFeatures_;
60233       return *this;
60234     }
60235 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60236 
operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV60237     operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
60238     {
60239       return *reinterpret_cast<const VkPhysicalDeviceCudaKernelLaunchFeaturesNV *>( this );
60240     }
60241 
operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV60242     operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV &() VULKAN_HPP_NOEXCEPT
60243     {
60244       return *reinterpret_cast<VkPhysicalDeviceCudaKernelLaunchFeaturesNV *>( this );
60245     }
60246 
60247 #  if defined( VULKAN_HPP_USE_REFLECT )
60248 #    if 14 <= VULKAN_HPP_CPP_VERSION
60249     auto
60250 #    else
60251     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60252 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV60253       reflect() const VULKAN_HPP_NOEXCEPT
60254     {
60255       return std::tie( sType, pNext, cudaKernelLaunchFeatures );
60256     }
60257 #  endif
60258 
60259 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60260     auto operator<=>( PhysicalDeviceCudaKernelLaunchFeaturesNV const & ) const = default;
60261 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV60262     bool operator==( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
60263     {
60264 #    if defined( VULKAN_HPP_USE_REFLECT )
60265       return this->reflect() == rhs.reflect();
60266 #    else
60267       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cudaKernelLaunchFeatures == rhs.cudaKernelLaunchFeatures );
60268 #    endif
60269     }
60270 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV60271     bool operator!=( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
60272     {
60273       return !operator==( rhs );
60274     }
60275 #  endif
60276 
60277   public:
60278     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV;
60279     void *                              pNext                    = {};
60280     VULKAN_HPP_NAMESPACE::Bool32        cudaKernelLaunchFeatures = {};
60281   };
60282 
60283   template <>
60284   struct CppType<StructureType, StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV>
60285   {
60286     using Type = PhysicalDeviceCudaKernelLaunchFeaturesNV;
60287   };
60288 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
60289 
60290 #if defined( VK_ENABLE_BETA_EXTENSIONS )
60291   struct PhysicalDeviceCudaKernelLaunchPropertiesNV
60292   {
60293     using NativeType = VkPhysicalDeviceCudaKernelLaunchPropertiesNV;
60294 
60295     static const bool                                  allowDuplicate = false;
60296     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV;
60297 
60298 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCudaKernelLaunchPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV60299     VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchPropertiesNV( uint32_t computeCapabilityMinor_ = {},
60300                                                                      uint32_t computeCapabilityMajor_ = {},
60301                                                                      void *   pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
60302       : pNext{ pNext_ }
60303       , computeCapabilityMinor{ computeCapabilityMinor_ }
60304       , computeCapabilityMajor{ computeCapabilityMajor_ }
60305     {
60306     }
60307 
60308     VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchPropertiesNV( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60309 
PhysicalDeviceCudaKernelLaunchPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV60310     PhysicalDeviceCudaKernelLaunchPropertiesNV( VkPhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
60311       : PhysicalDeviceCudaKernelLaunchPropertiesNV( *reinterpret_cast<PhysicalDeviceCudaKernelLaunchPropertiesNV const *>( &rhs ) )
60312     {
60313     }
60314 
60315     PhysicalDeviceCudaKernelLaunchPropertiesNV & operator=( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60316 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60317 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV60318     PhysicalDeviceCudaKernelLaunchPropertiesNV & operator=( VkPhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
60319     {
60320       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV const *>( &rhs );
60321       return *this;
60322     }
60323 
operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV60324     operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
60325     {
60326       return *reinterpret_cast<const VkPhysicalDeviceCudaKernelLaunchPropertiesNV *>( this );
60327     }
60328 
operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV60329     operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV &() VULKAN_HPP_NOEXCEPT
60330     {
60331       return *reinterpret_cast<VkPhysicalDeviceCudaKernelLaunchPropertiesNV *>( this );
60332     }
60333 
60334 #  if defined( VULKAN_HPP_USE_REFLECT )
60335 #    if 14 <= VULKAN_HPP_CPP_VERSION
60336     auto
60337 #    else
60338     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
60339 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV60340       reflect() const VULKAN_HPP_NOEXCEPT
60341     {
60342       return std::tie( sType, pNext, computeCapabilityMinor, computeCapabilityMajor );
60343     }
60344 #  endif
60345 
60346 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60347     auto operator<=>( PhysicalDeviceCudaKernelLaunchPropertiesNV const & ) const = default;
60348 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV60349     bool operator==( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
60350     {
60351 #    if defined( VULKAN_HPP_USE_REFLECT )
60352       return this->reflect() == rhs.reflect();
60353 #    else
60354       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( computeCapabilityMinor == rhs.computeCapabilityMinor ) &&
60355              ( computeCapabilityMajor == rhs.computeCapabilityMajor );
60356 #    endif
60357     }
60358 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV60359     bool operator!=( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
60360     {
60361       return !operator==( rhs );
60362     }
60363 #  endif
60364 
60365   public:
60366     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV;
60367     void *                              pNext                  = {};
60368     uint32_t                            computeCapabilityMinor = {};
60369     uint32_t                            computeCapabilityMajor = {};
60370   };
60371 
60372   template <>
60373   struct CppType<StructureType, StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV>
60374   {
60375     using Type = PhysicalDeviceCudaKernelLaunchPropertiesNV;
60376   };
60377 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
60378 
60379   struct PhysicalDeviceCustomBorderColorFeaturesEXT
60380   {
60381     using NativeType = VkPhysicalDeviceCustomBorderColorFeaturesEXT;
60382 
60383     static const bool                                  allowDuplicate = false;
60384     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT;
60385 
60386 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCustomBorderColorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60387     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_             = {},
60388                                                                      VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ = {},
60389                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
60390       : pNext{ pNext_ }
60391       , customBorderColors{ customBorderColors_ }
60392       , customBorderColorWithoutFormat{ customBorderColorWithoutFormat_ }
60393     {
60394     }
60395 
60396     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60397 
PhysicalDeviceCustomBorderColorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60398     PhysicalDeviceCustomBorderColorFeaturesEXT( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60399       : PhysicalDeviceCustomBorderColorFeaturesEXT( *reinterpret_cast<PhysicalDeviceCustomBorderColorFeaturesEXT const *>( &rhs ) )
60400     {
60401     }
60402 
60403     PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60404 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60405 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60406     PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60407     {
60408       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT const *>( &rhs );
60409       return *this;
60410     }
60411 
60412 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60413     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60414     {
60415       pNext = pNext_;
60416       return *this;
60417     }
60418 
60419     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT &
setCustomBorderColorsVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60420       setCustomBorderColors( VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_ ) VULKAN_HPP_NOEXCEPT
60421     {
60422       customBorderColors = customBorderColors_;
60423       return *this;
60424     }
60425 
60426     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT &
setCustomBorderColorWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60427       setCustomBorderColorWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
60428     {
60429       customBorderColorWithoutFormat = customBorderColorWithoutFormat_;
60430       return *this;
60431     }
60432 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60433 
operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60434     operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
60435     {
60436       return *reinterpret_cast<const VkPhysicalDeviceCustomBorderColorFeaturesEXT *>( this );
60437     }
60438 
operator VkPhysicalDeviceCustomBorderColorFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60439     operator VkPhysicalDeviceCustomBorderColorFeaturesEXT &() VULKAN_HPP_NOEXCEPT
60440     {
60441       return *reinterpret_cast<VkPhysicalDeviceCustomBorderColorFeaturesEXT *>( this );
60442     }
60443 
60444 #if defined( VULKAN_HPP_USE_REFLECT )
60445 #  if 14 <= VULKAN_HPP_CPP_VERSION
60446     auto
60447 #  else
60448     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60449 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60450       reflect() const VULKAN_HPP_NOEXCEPT
60451     {
60452       return std::tie( sType, pNext, customBorderColors, customBorderColorWithoutFormat );
60453     }
60454 #endif
60455 
60456 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60457     auto operator<=>( PhysicalDeviceCustomBorderColorFeaturesEXT const & ) const = default;
60458 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60459     bool operator==( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60460     {
60461 #  if defined( VULKAN_HPP_USE_REFLECT )
60462       return this->reflect() == rhs.reflect();
60463 #  else
60464       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( customBorderColors == rhs.customBorderColors ) &&
60465              ( customBorderColorWithoutFormat == rhs.customBorderColorWithoutFormat );
60466 #  endif
60467     }
60468 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT60469     bool operator!=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60470     {
60471       return !operator==( rhs );
60472     }
60473 #endif
60474 
60475   public:
60476     VULKAN_HPP_NAMESPACE::StructureType sType                          = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT;
60477     void *                              pNext                          = {};
60478     VULKAN_HPP_NAMESPACE::Bool32        customBorderColors             = {};
60479     VULKAN_HPP_NAMESPACE::Bool32        customBorderColorWithoutFormat = {};
60480   };
60481 
60482   template <>
60483   struct CppType<StructureType, StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT>
60484   {
60485     using Type = PhysicalDeviceCustomBorderColorFeaturesEXT;
60486   };
60487 
60488   struct PhysicalDeviceCustomBorderColorPropertiesEXT
60489   {
60490     using NativeType = VkPhysicalDeviceCustomBorderColorPropertiesEXT;
60491 
60492     static const bool                                  allowDuplicate = false;
60493     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT;
60494 
60495 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCustomBorderColorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT60496     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT( uint32_t maxCustomBorderColorSamplers_ = {},
60497                                                                        void *   pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
60498       : pNext{ pNext_ }
60499       , maxCustomBorderColorSamplers{ maxCustomBorderColorSamplers_ }
60500     {
60501     }
60502 
60503     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60504 
PhysicalDeviceCustomBorderColorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT60505     PhysicalDeviceCustomBorderColorPropertiesEXT( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60506       : PhysicalDeviceCustomBorderColorPropertiesEXT( *reinterpret_cast<PhysicalDeviceCustomBorderColorPropertiesEXT const *>( &rhs ) )
60507     {
60508     }
60509 
60510     PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60511 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60512 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT60513     PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60514     {
60515       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT const *>( &rhs );
60516       return *this;
60517     }
60518 
operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT60519     operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
60520     {
60521       return *reinterpret_cast<const VkPhysicalDeviceCustomBorderColorPropertiesEXT *>( this );
60522     }
60523 
operator VkPhysicalDeviceCustomBorderColorPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT60524     operator VkPhysicalDeviceCustomBorderColorPropertiesEXT &() VULKAN_HPP_NOEXCEPT
60525     {
60526       return *reinterpret_cast<VkPhysicalDeviceCustomBorderColorPropertiesEXT *>( this );
60527     }
60528 
60529 #if defined( VULKAN_HPP_USE_REFLECT )
60530 #  if 14 <= VULKAN_HPP_CPP_VERSION
60531     auto
60532 #  else
60533     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
60534 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT60535       reflect() const VULKAN_HPP_NOEXCEPT
60536     {
60537       return std::tie( sType, pNext, maxCustomBorderColorSamplers );
60538     }
60539 #endif
60540 
60541 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60542     auto operator<=>( PhysicalDeviceCustomBorderColorPropertiesEXT const & ) const = default;
60543 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT60544     bool operator==( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60545     {
60546 #  if defined( VULKAN_HPP_USE_REFLECT )
60547       return this->reflect() == rhs.reflect();
60548 #  else
60549       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxCustomBorderColorSamplers == rhs.maxCustomBorderColorSamplers );
60550 #  endif
60551     }
60552 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT60553     bool operator!=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60554     {
60555       return !operator==( rhs );
60556     }
60557 #endif
60558 
60559   public:
60560     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT;
60561     void *                              pNext                        = {};
60562     uint32_t                            maxCustomBorderColorSamplers = {};
60563   };
60564 
60565   template <>
60566   struct CppType<StructureType, StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT>
60567   {
60568     using Type = PhysicalDeviceCustomBorderColorPropertiesEXT;
60569   };
60570 
60571   struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
60572   {
60573     using NativeType = VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
60574 
60575     static const bool                                  allowDuplicate = false;
60576     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
60577 
60578 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60579     VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing_ = {},
60580                                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
60581       : pNext{ pNext_ }
60582       , dedicatedAllocationImageAliasing{ dedicatedAllocationImageAliasing_ }
60583     {
60584     }
60585 
60586     VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs )
60587       VULKAN_HPP_NOEXCEPT = default;
60588 
PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60589     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
60590       : PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( *reinterpret_cast<PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *>( &rhs ) )
60591     {
60592     }
60593 
60594     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &
60595       operator=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60596 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60597 
60598     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60599       operator=( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
60600     {
60601       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *>( &rhs );
60602       return *this;
60603     }
60604 
60605 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60606     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60607     {
60608       pNext = pNext_;
60609       return *this;
60610     }
60611 
60612     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &
setDedicatedAllocationImageAliasingVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60613       setDedicatedAllocationImageAliasing( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing_ ) VULKAN_HPP_NOEXCEPT
60614     {
60615       dedicatedAllocationImageAliasing = dedicatedAllocationImageAliasing_;
60616       return *this;
60617     }
60618 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60619 
operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60620     operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
60621     {
60622       return *reinterpret_cast<const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *>( this );
60623     }
60624 
operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60625     operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &() VULKAN_HPP_NOEXCEPT
60626     {
60627       return *reinterpret_cast<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *>( this );
60628     }
60629 
60630 #if defined( VULKAN_HPP_USE_REFLECT )
60631 #  if 14 <= VULKAN_HPP_CPP_VERSION
60632     auto
60633 #  else
60634     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60635 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60636       reflect() const VULKAN_HPP_NOEXCEPT
60637     {
60638       return std::tie( sType, pNext, dedicatedAllocationImageAliasing );
60639     }
60640 #endif
60641 
60642 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60643     auto operator<=>( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & ) const = default;
60644 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60645     bool operator==( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
60646     {
60647 #  if defined( VULKAN_HPP_USE_REFLECT )
60648       return this->reflect() == rhs.reflect();
60649 #  else
60650       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocationImageAliasing == rhs.dedicatedAllocationImageAliasing );
60651 #  endif
60652     }
60653 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60654     bool operator!=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
60655     {
60656       return !operator==( rhs );
60657     }
60658 #endif
60659 
60660   public:
60661     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
60662     void *                              pNext                            = {};
60663     VULKAN_HPP_NAMESPACE::Bool32        dedicatedAllocationImageAliasing = {};
60664   };
60665 
60666   template <>
60667   struct CppType<StructureType, StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>
60668   {
60669     using Type = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
60670   };
60671 
60672   struct PhysicalDeviceDepthBiasControlFeaturesEXT
60673   {
60674     using NativeType = VkPhysicalDeviceDepthBiasControlFeaturesEXT;
60675 
60676     static const bool                                  allowDuplicate = false;
60677     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDepthBiasControlFeaturesEXT;
60678 
60679 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthBiasControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60680     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthBiasControlFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasControl_                                = {},
60681                                                                     VULKAN_HPP_NAMESPACE::Bool32 leastRepresentableValueForceUnormRepresentation_ = {},
60682                                                                     VULKAN_HPP_NAMESPACE::Bool32 floatRepresentation_                             = {},
60683                                                                     VULKAN_HPP_NAMESPACE::Bool32 depthBiasExact_                                  = {},
60684                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
60685       : pNext{ pNext_ }
60686       , depthBiasControl{ depthBiasControl_ }
60687       , leastRepresentableValueForceUnormRepresentation{ leastRepresentableValueForceUnormRepresentation_ }
60688       , floatRepresentation{ floatRepresentation_ }
60689       , depthBiasExact{ depthBiasExact_ }
60690     {
60691     }
60692 
60693     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthBiasControlFeaturesEXT( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60694 
PhysicalDeviceDepthBiasControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60695     PhysicalDeviceDepthBiasControlFeaturesEXT( VkPhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60696       : PhysicalDeviceDepthBiasControlFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthBiasControlFeaturesEXT const *>( &rhs ) )
60697     {
60698     }
60699 
60700     PhysicalDeviceDepthBiasControlFeaturesEXT & operator=( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60701 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60702 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60703     PhysicalDeviceDepthBiasControlFeaturesEXT & operator=( VkPhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60704     {
60705       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT const *>( &rhs );
60706       return *this;
60707     }
60708 
60709 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60710     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60711     {
60712       pNext = pNext_;
60713       return *this;
60714     }
60715 
60716     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT &
setDepthBiasControlVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60717       setDepthBiasControl( VULKAN_HPP_NAMESPACE::Bool32 depthBiasControl_ ) VULKAN_HPP_NOEXCEPT
60718     {
60719       depthBiasControl = depthBiasControl_;
60720       return *this;
60721     }
60722 
60723     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT &
setLeastRepresentableValueForceUnormRepresentationVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60724       setLeastRepresentableValueForceUnormRepresentation( VULKAN_HPP_NAMESPACE::Bool32 leastRepresentableValueForceUnormRepresentation_ ) VULKAN_HPP_NOEXCEPT
60725     {
60726       leastRepresentableValueForceUnormRepresentation = leastRepresentableValueForceUnormRepresentation_;
60727       return *this;
60728     }
60729 
60730     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT &
setFloatRepresentationVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60731       setFloatRepresentation( VULKAN_HPP_NAMESPACE::Bool32 floatRepresentation_ ) VULKAN_HPP_NOEXCEPT
60732     {
60733       floatRepresentation = floatRepresentation_;
60734       return *this;
60735     }
60736 
setDepthBiasExactVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60737     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT & setDepthBiasExact( VULKAN_HPP_NAMESPACE::Bool32 depthBiasExact_ ) VULKAN_HPP_NOEXCEPT
60738     {
60739       depthBiasExact = depthBiasExact_;
60740       return *this;
60741     }
60742 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60743 
operator VkPhysicalDeviceDepthBiasControlFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60744     operator VkPhysicalDeviceDepthBiasControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
60745     {
60746       return *reinterpret_cast<const VkPhysicalDeviceDepthBiasControlFeaturesEXT *>( this );
60747     }
60748 
operator VkPhysicalDeviceDepthBiasControlFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60749     operator VkPhysicalDeviceDepthBiasControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT
60750     {
60751       return *reinterpret_cast<VkPhysicalDeviceDepthBiasControlFeaturesEXT *>( this );
60752     }
60753 
60754 #if defined( VULKAN_HPP_USE_REFLECT )
60755 #  if 14 <= VULKAN_HPP_CPP_VERSION
60756     auto
60757 #  else
60758     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
60759                void * const &,
60760                VULKAN_HPP_NAMESPACE::Bool32 const &,
60761                VULKAN_HPP_NAMESPACE::Bool32 const &,
60762                VULKAN_HPP_NAMESPACE::Bool32 const &,
60763                VULKAN_HPP_NAMESPACE::Bool32 const &>
60764 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60765       reflect() const VULKAN_HPP_NOEXCEPT
60766     {
60767       return std::tie( sType, pNext, depthBiasControl, leastRepresentableValueForceUnormRepresentation, floatRepresentation, depthBiasExact );
60768     }
60769 #endif
60770 
60771 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60772     auto operator<=>( PhysicalDeviceDepthBiasControlFeaturesEXT const & ) const = default;
60773 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60774     bool operator==( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60775     {
60776 #  if defined( VULKAN_HPP_USE_REFLECT )
60777       return this->reflect() == rhs.reflect();
60778 #  else
60779       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthBiasControl == rhs.depthBiasControl ) &&
60780              ( leastRepresentableValueForceUnormRepresentation == rhs.leastRepresentableValueForceUnormRepresentation ) &&
60781              ( floatRepresentation == rhs.floatRepresentation ) && ( depthBiasExact == rhs.depthBiasExact );
60782 #  endif
60783     }
60784 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60785     bool operator!=( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60786     {
60787       return !operator==( rhs );
60788     }
60789 #endif
60790 
60791   public:
60792     VULKAN_HPP_NAMESPACE::StructureType sType                                           = StructureType::ePhysicalDeviceDepthBiasControlFeaturesEXT;
60793     void *                              pNext                                           = {};
60794     VULKAN_HPP_NAMESPACE::Bool32        depthBiasControl                                = {};
60795     VULKAN_HPP_NAMESPACE::Bool32        leastRepresentableValueForceUnormRepresentation = {};
60796     VULKAN_HPP_NAMESPACE::Bool32        floatRepresentation                             = {};
60797     VULKAN_HPP_NAMESPACE::Bool32        depthBiasExact                                  = {};
60798   };
60799 
60800   template <>
60801   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthBiasControlFeaturesEXT>
60802   {
60803     using Type = PhysicalDeviceDepthBiasControlFeaturesEXT;
60804   };
60805 
60806   struct PhysicalDeviceDepthClampZeroOneFeaturesEXT
60807   {
60808     using NativeType = VkPhysicalDeviceDepthClampZeroOneFeaturesEXT;
60809 
60810     static const bool                                  allowDuplicate = false;
60811     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDepthClampZeroOneFeaturesEXT;
60812 
60813 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthClampZeroOneFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60814     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClampZeroOneFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClampZeroOne_ = {},
60815                                                                      void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
60816       : pNext{ pNext_ }
60817       , depthClampZeroOne{ depthClampZeroOne_ }
60818     {
60819     }
60820 
60821     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClampZeroOneFeaturesEXT( PhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60822 
PhysicalDeviceDepthClampZeroOneFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60823     PhysicalDeviceDepthClampZeroOneFeaturesEXT( VkPhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60824       : PhysicalDeviceDepthClampZeroOneFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthClampZeroOneFeaturesEXT const *>( &rhs ) )
60825     {
60826     }
60827 
60828     PhysicalDeviceDepthClampZeroOneFeaturesEXT & operator=( PhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60829 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60830 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60831     PhysicalDeviceDepthClampZeroOneFeaturesEXT & operator=( VkPhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60832     {
60833       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT const *>( &rhs );
60834       return *this;
60835     }
60836 
60837 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60838     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampZeroOneFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60839     {
60840       pNext = pNext_;
60841       return *this;
60842     }
60843 
60844     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampZeroOneFeaturesEXT &
setDepthClampZeroOneVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60845       setDepthClampZeroOne( VULKAN_HPP_NAMESPACE::Bool32 depthClampZeroOne_ ) VULKAN_HPP_NOEXCEPT
60846     {
60847       depthClampZeroOne = depthClampZeroOne_;
60848       return *this;
60849     }
60850 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60851 
operator VkPhysicalDeviceDepthClampZeroOneFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60852     operator VkPhysicalDeviceDepthClampZeroOneFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
60853     {
60854       return *reinterpret_cast<const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *>( this );
60855     }
60856 
operator VkPhysicalDeviceDepthClampZeroOneFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60857     operator VkPhysicalDeviceDepthClampZeroOneFeaturesEXT &() VULKAN_HPP_NOEXCEPT
60858     {
60859       return *reinterpret_cast<VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *>( this );
60860     }
60861 
60862 #if defined( VULKAN_HPP_USE_REFLECT )
60863 #  if 14 <= VULKAN_HPP_CPP_VERSION
60864     auto
60865 #  else
60866     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60867 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60868       reflect() const VULKAN_HPP_NOEXCEPT
60869     {
60870       return std::tie( sType, pNext, depthClampZeroOne );
60871     }
60872 #endif
60873 
60874 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60875     auto operator<=>( PhysicalDeviceDepthClampZeroOneFeaturesEXT const & ) const = default;
60876 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60877     bool operator==( PhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60878     {
60879 #  if defined( VULKAN_HPP_USE_REFLECT )
60880       return this->reflect() == rhs.reflect();
60881 #  else
60882       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClampZeroOne == rhs.depthClampZeroOne );
60883 #  endif
60884     }
60885 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60886     bool operator!=( PhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60887     {
60888       return !operator==( rhs );
60889     }
60890 #endif
60891 
60892   public:
60893     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceDepthClampZeroOneFeaturesEXT;
60894     void *                              pNext             = {};
60895     VULKAN_HPP_NAMESPACE::Bool32        depthClampZeroOne = {};
60896   };
60897 
60898   template <>
60899   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthClampZeroOneFeaturesEXT>
60900   {
60901     using Type = PhysicalDeviceDepthClampZeroOneFeaturesEXT;
60902   };
60903 
60904   struct PhysicalDeviceDepthClipControlFeaturesEXT
60905   {
60906     using NativeType = VkPhysicalDeviceDepthClipControlFeaturesEXT;
60907 
60908     static const bool                                  allowDuplicate = false;
60909     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT;
60910 
60911 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthClipControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60912     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipControlFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClipControl_ = {},
60913                                                                     void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
60914       : pNext{ pNext_ }
60915       , depthClipControl{ depthClipControl_ }
60916     {
60917     }
60918 
60919     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipControlFeaturesEXT( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60920 
PhysicalDeviceDepthClipControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60921     PhysicalDeviceDepthClipControlFeaturesEXT( VkPhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60922       : PhysicalDeviceDepthClipControlFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthClipControlFeaturesEXT const *>( &rhs ) )
60923     {
60924     }
60925 
60926     PhysicalDeviceDepthClipControlFeaturesEXT & operator=( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60927 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60928 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60929     PhysicalDeviceDepthClipControlFeaturesEXT & operator=( VkPhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60930     {
60931       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT const *>( &rhs );
60932       return *this;
60933     }
60934 
60935 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60936     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60937     {
60938       pNext = pNext_;
60939       return *this;
60940     }
60941 
60942     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT &
setDepthClipControlVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60943       setDepthClipControl( VULKAN_HPP_NAMESPACE::Bool32 depthClipControl_ ) VULKAN_HPP_NOEXCEPT
60944     {
60945       depthClipControl = depthClipControl_;
60946       return *this;
60947     }
60948 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60949 
operator VkPhysicalDeviceDepthClipControlFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60950     operator VkPhysicalDeviceDepthClipControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
60951     {
60952       return *reinterpret_cast<const VkPhysicalDeviceDepthClipControlFeaturesEXT *>( this );
60953     }
60954 
operator VkPhysicalDeviceDepthClipControlFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60955     operator VkPhysicalDeviceDepthClipControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT
60956     {
60957       return *reinterpret_cast<VkPhysicalDeviceDepthClipControlFeaturesEXT *>( this );
60958     }
60959 
60960 #if defined( VULKAN_HPP_USE_REFLECT )
60961 #  if 14 <= VULKAN_HPP_CPP_VERSION
60962     auto
60963 #  else
60964     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60965 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60966       reflect() const VULKAN_HPP_NOEXCEPT
60967     {
60968       return std::tie( sType, pNext, depthClipControl );
60969     }
60970 #endif
60971 
60972 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60973     auto operator<=>( PhysicalDeviceDepthClipControlFeaturesEXT const & ) const = default;
60974 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60975     bool operator==( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60976     {
60977 #  if defined( VULKAN_HPP_USE_REFLECT )
60978       return this->reflect() == rhs.reflect();
60979 #  else
60980       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClipControl == rhs.depthClipControl );
60981 #  endif
60982     }
60983 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60984     bool operator!=( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60985     {
60986       return !operator==( rhs );
60987     }
60988 #endif
60989 
60990   public:
60991     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT;
60992     void *                              pNext            = {};
60993     VULKAN_HPP_NAMESPACE::Bool32        depthClipControl = {};
60994   };
60995 
60996   template <>
60997   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT>
60998   {
60999     using Type = PhysicalDeviceDepthClipControlFeaturesEXT;
61000   };
61001 
61002   struct PhysicalDeviceDepthClipEnableFeaturesEXT
61003   {
61004     using NativeType = VkPhysicalDeviceDepthClipEnableFeaturesEXT;
61005 
61006     static const bool                                  allowDuplicate = false;
61007     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT;
61008 
61009 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthClipEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT61010     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ = {},
61011                                                                    void *                       pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
61012       : pNext{ pNext_ }
61013       , depthClipEnable{ depthClipEnable_ }
61014     {
61015     }
61016 
61017     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61018 
PhysicalDeviceDepthClipEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT61019     PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
61020       : PhysicalDeviceDepthClipEnableFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthClipEnableFeaturesEXT const *>( &rhs ) )
61021     {
61022     }
61023 
61024     PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61025 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61026 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT61027     PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
61028     {
61029       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT const *>( &rhs );
61030       return *this;
61031     }
61032 
61033 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT61034     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61035     {
61036       pNext = pNext_;
61037       return *this;
61038     }
61039 
setDepthClipEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT61040     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT
61041     {
61042       depthClipEnable = depthClipEnable_;
61043       return *this;
61044     }
61045 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61046 
operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT61047     operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
61048     {
61049       return *reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT *>( this );
61050     }
61051 
operator VkPhysicalDeviceDepthClipEnableFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT61052     operator VkPhysicalDeviceDepthClipEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT
61053     {
61054       return *reinterpret_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT *>( this );
61055     }
61056 
61057 #if defined( VULKAN_HPP_USE_REFLECT )
61058 #  if 14 <= VULKAN_HPP_CPP_VERSION
61059     auto
61060 #  else
61061     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
61062 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT61063       reflect() const VULKAN_HPP_NOEXCEPT
61064     {
61065       return std::tie( sType, pNext, depthClipEnable );
61066     }
61067 #endif
61068 
61069 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61070     auto operator<=>( PhysicalDeviceDepthClipEnableFeaturesEXT const & ) const = default;
61071 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT61072     bool operator==( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
61073     {
61074 #  if defined( VULKAN_HPP_USE_REFLECT )
61075       return this->reflect() == rhs.reflect();
61076 #  else
61077       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClipEnable == rhs.depthClipEnable );
61078 #  endif
61079     }
61080 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT61081     bool operator!=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
61082     {
61083       return !operator==( rhs );
61084     }
61085 #endif
61086 
61087   public:
61088     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT;
61089     void *                              pNext           = {};
61090     VULKAN_HPP_NAMESPACE::Bool32        depthClipEnable = {};
61091   };
61092 
61093   template <>
61094   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT>
61095   {
61096     using Type = PhysicalDeviceDepthClipEnableFeaturesEXT;
61097   };
61098 
61099   struct PhysicalDeviceDepthStencilResolveProperties
61100   {
61101     using NativeType = VkPhysicalDeviceDepthStencilResolveProperties;
61102 
61103     static const bool                                  allowDuplicate = false;
61104     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDepthStencilResolveProperties;
61105 
61106 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthStencilResolvePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties61107     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties( VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes_   = {},
61108                                                                       VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes_ = {},
61109                                                                       VULKAN_HPP_NAMESPACE::Bool32           independentResolveNone_       = {},
61110                                                                       VULKAN_HPP_NAMESPACE::Bool32           independentResolve_           = {},
61111                                                                       void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
61112       : pNext{ pNext_ }
61113       , supportedDepthResolveModes{ supportedDepthResolveModes_ }
61114       , supportedStencilResolveModes{ supportedStencilResolveModes_ }
61115       , independentResolveNone{ independentResolveNone_ }
61116       , independentResolve{ independentResolve_ }
61117     {
61118     }
61119 
61120     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61121 
PhysicalDeviceDepthStencilResolvePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties61122     PhysicalDeviceDepthStencilResolveProperties( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT
61123       : PhysicalDeviceDepthStencilResolveProperties( *reinterpret_cast<PhysicalDeviceDepthStencilResolveProperties const *>( &rhs ) )
61124     {
61125     }
61126 
61127     PhysicalDeviceDepthStencilResolveProperties & operator=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61128 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61129 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties61130     PhysicalDeviceDepthStencilResolveProperties & operator=( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT
61131     {
61132       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties const *>( &rhs );
61133       return *this;
61134     }
61135 
operator VkPhysicalDeviceDepthStencilResolveProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties61136     operator VkPhysicalDeviceDepthStencilResolveProperties const &() const VULKAN_HPP_NOEXCEPT
61137     {
61138       return *reinterpret_cast<const VkPhysicalDeviceDepthStencilResolveProperties *>( this );
61139     }
61140 
operator VkPhysicalDeviceDepthStencilResolveProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties61141     operator VkPhysicalDeviceDepthStencilResolveProperties &() VULKAN_HPP_NOEXCEPT
61142     {
61143       return *reinterpret_cast<VkPhysicalDeviceDepthStencilResolveProperties *>( this );
61144     }
61145 
61146 #if defined( VULKAN_HPP_USE_REFLECT )
61147 #  if 14 <= VULKAN_HPP_CPP_VERSION
61148     auto
61149 #  else
61150     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
61151                void * const &,
61152                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
61153                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
61154                VULKAN_HPP_NAMESPACE::Bool32 const &,
61155                VULKAN_HPP_NAMESPACE::Bool32 const &>
61156 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties61157       reflect() const VULKAN_HPP_NOEXCEPT
61158     {
61159       return std::tie( sType, pNext, supportedDepthResolveModes, supportedStencilResolveModes, independentResolveNone, independentResolve );
61160     }
61161 #endif
61162 
61163 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61164     auto operator<=>( PhysicalDeviceDepthStencilResolveProperties const & ) const = default;
61165 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties61166     bool operator==( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
61167     {
61168 #  if defined( VULKAN_HPP_USE_REFLECT )
61169       return this->reflect() == rhs.reflect();
61170 #  else
61171       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedDepthResolveModes == rhs.supportedDepthResolveModes ) &&
61172              ( supportedStencilResolveModes == rhs.supportedStencilResolveModes ) && ( independentResolveNone == rhs.independentResolveNone ) &&
61173              ( independentResolve == rhs.independentResolve );
61174 #  endif
61175     }
61176 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties61177     bool operator!=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
61178     {
61179       return !operator==( rhs );
61180     }
61181 #endif
61182 
61183   public:
61184     VULKAN_HPP_NAMESPACE::StructureType    sType                        = StructureType::ePhysicalDeviceDepthStencilResolveProperties;
61185     void *                                 pNext                        = {};
61186     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes   = {};
61187     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes = {};
61188     VULKAN_HPP_NAMESPACE::Bool32           independentResolveNone       = {};
61189     VULKAN_HPP_NAMESPACE::Bool32           independentResolve           = {};
61190   };
61191 
61192   template <>
61193   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthStencilResolveProperties>
61194   {
61195     using Type = PhysicalDeviceDepthStencilResolveProperties;
61196   };
61197 
61198   using PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties;
61199 
61200   struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
61201   {
61202     using NativeType = VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
61203 
61204     static const bool                                  allowDuplicate = false;
61205     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
61206 
61207 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorBufferDensityMapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT61208     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( size_t combinedImageSamplerDensityMapDescriptorSize_ = {},
61209                                                                                 void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
61210       : pNext{ pNext_ }
61211       , combinedImageSamplerDensityMapDescriptorSize{ combinedImageSamplerDensityMapDescriptorSize_ }
61212     {
61213     }
61214 
61215     VULKAN_HPP_CONSTEXPR
61216       PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61217 
PhysicalDeviceDescriptorBufferDensityMapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT61218     PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
61219       : PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( *reinterpret_cast<PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const *>( &rhs ) )
61220     {
61221     }
61222 
61223     PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT &
61224       operator=( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61225 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61226 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT61227     PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT & operator=( VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
61228     {
61229       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const *>( &rhs );
61230       return *this;
61231     }
61232 
operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT61233     operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
61234     {
61235       return *reinterpret_cast<const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT *>( this );
61236     }
61237 
operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT61238     operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT &() VULKAN_HPP_NOEXCEPT
61239     {
61240       return *reinterpret_cast<VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT *>( this );
61241     }
61242 
61243 #if defined( VULKAN_HPP_USE_REFLECT )
61244 #  if 14 <= VULKAN_HPP_CPP_VERSION
61245     auto
61246 #  else
61247     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, size_t const &>
61248 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT61249       reflect() const VULKAN_HPP_NOEXCEPT
61250     {
61251       return std::tie( sType, pNext, combinedImageSamplerDensityMapDescriptorSize );
61252     }
61253 #endif
61254 
61255 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61256     auto operator<=>( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & ) const = default;
61257 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT61258     bool operator==( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
61259     {
61260 #  if defined( VULKAN_HPP_USE_REFLECT )
61261       return this->reflect() == rhs.reflect();
61262 #  else
61263       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
61264              ( combinedImageSamplerDensityMapDescriptorSize == rhs.combinedImageSamplerDensityMapDescriptorSize );
61265 #  endif
61266     }
61267 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT61268     bool operator!=( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
61269     {
61270       return !operator==( rhs );
61271     }
61272 #endif
61273 
61274   public:
61275     VULKAN_HPP_NAMESPACE::StructureType sType                                        = StructureType::ePhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
61276     void *                              pNext                                        = {};
61277     size_t                              combinedImageSamplerDensityMapDescriptorSize = {};
61278   };
61279 
61280   template <>
61281   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorBufferDensityMapPropertiesEXT>
61282   {
61283     using Type = PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
61284   };
61285 
61286   struct PhysicalDeviceDescriptorBufferFeaturesEXT
61287   {
61288     using NativeType = VkPhysicalDeviceDescriptorBufferFeaturesEXT;
61289 
61290     static const bool                                  allowDuplicate = false;
61291     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorBufferFeaturesEXT;
61292 
61293 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorBufferFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61294     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 descriptorBuffer_                   = {},
61295                                                                     VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferCaptureReplay_      = {},
61296                                                                     VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferImageLayoutIgnored_ = {},
61297                                                                     VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferPushDescriptors_    = {},
61298                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
61299       : pNext{ pNext_ }
61300       , descriptorBuffer{ descriptorBuffer_ }
61301       , descriptorBufferCaptureReplay{ descriptorBufferCaptureReplay_ }
61302       , descriptorBufferImageLayoutIgnored{ descriptorBufferImageLayoutIgnored_ }
61303       , descriptorBufferPushDescriptors{ descriptorBufferPushDescriptors_ }
61304     {
61305     }
61306 
61307     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferFeaturesEXT( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61308 
PhysicalDeviceDescriptorBufferFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61309     PhysicalDeviceDescriptorBufferFeaturesEXT( VkPhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
61310       : PhysicalDeviceDescriptorBufferFeaturesEXT( *reinterpret_cast<PhysicalDeviceDescriptorBufferFeaturesEXT const *>( &rhs ) )
61311     {
61312     }
61313 
61314     PhysicalDeviceDescriptorBufferFeaturesEXT & operator=( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61315 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61316 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61317     PhysicalDeviceDescriptorBufferFeaturesEXT & operator=( VkPhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
61318     {
61319       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT const *>( &rhs );
61320       return *this;
61321     }
61322 
61323 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61324     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61325     {
61326       pNext = pNext_;
61327       return *this;
61328     }
61329 
61330     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT &
setDescriptorBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61331       setDescriptorBuffer( VULKAN_HPP_NAMESPACE::Bool32 descriptorBuffer_ ) VULKAN_HPP_NOEXCEPT
61332     {
61333       descriptorBuffer = descriptorBuffer_;
61334       return *this;
61335     }
61336 
61337     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT &
setDescriptorBufferCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61338       setDescriptorBufferCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
61339     {
61340       descriptorBufferCaptureReplay = descriptorBufferCaptureReplay_;
61341       return *this;
61342     }
61343 
61344     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT &
setDescriptorBufferImageLayoutIgnoredVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61345       setDescriptorBufferImageLayoutIgnored( VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferImageLayoutIgnored_ ) VULKAN_HPP_NOEXCEPT
61346     {
61347       descriptorBufferImageLayoutIgnored = descriptorBufferImageLayoutIgnored_;
61348       return *this;
61349     }
61350 
61351     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT &
setDescriptorBufferPushDescriptorsVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61352       setDescriptorBufferPushDescriptors( VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferPushDescriptors_ ) VULKAN_HPP_NOEXCEPT
61353     {
61354       descriptorBufferPushDescriptors = descriptorBufferPushDescriptors_;
61355       return *this;
61356     }
61357 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61358 
operator VkPhysicalDeviceDescriptorBufferFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61359     operator VkPhysicalDeviceDescriptorBufferFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
61360     {
61361       return *reinterpret_cast<const VkPhysicalDeviceDescriptorBufferFeaturesEXT *>( this );
61362     }
61363 
operator VkPhysicalDeviceDescriptorBufferFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61364     operator VkPhysicalDeviceDescriptorBufferFeaturesEXT &() VULKAN_HPP_NOEXCEPT
61365     {
61366       return *reinterpret_cast<VkPhysicalDeviceDescriptorBufferFeaturesEXT *>( this );
61367     }
61368 
61369 #if defined( VULKAN_HPP_USE_REFLECT )
61370 #  if 14 <= VULKAN_HPP_CPP_VERSION
61371     auto
61372 #  else
61373     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
61374                void * const &,
61375                VULKAN_HPP_NAMESPACE::Bool32 const &,
61376                VULKAN_HPP_NAMESPACE::Bool32 const &,
61377                VULKAN_HPP_NAMESPACE::Bool32 const &,
61378                VULKAN_HPP_NAMESPACE::Bool32 const &>
61379 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61380       reflect() const VULKAN_HPP_NOEXCEPT
61381     {
61382       return std::tie( sType, pNext, descriptorBuffer, descriptorBufferCaptureReplay, descriptorBufferImageLayoutIgnored, descriptorBufferPushDescriptors );
61383     }
61384 #endif
61385 
61386 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61387     auto operator<=>( PhysicalDeviceDescriptorBufferFeaturesEXT const & ) const = default;
61388 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61389     bool operator==( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
61390     {
61391 #  if defined( VULKAN_HPP_USE_REFLECT )
61392       return this->reflect() == rhs.reflect();
61393 #  else
61394       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorBuffer == rhs.descriptorBuffer ) &&
61395              ( descriptorBufferCaptureReplay == rhs.descriptorBufferCaptureReplay ) &&
61396              ( descriptorBufferImageLayoutIgnored == rhs.descriptorBufferImageLayoutIgnored ) &&
61397              ( descriptorBufferPushDescriptors == rhs.descriptorBufferPushDescriptors );
61398 #  endif
61399     }
61400 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT61401     bool operator!=( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
61402     {
61403       return !operator==( rhs );
61404     }
61405 #endif
61406 
61407   public:
61408     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceDescriptorBufferFeaturesEXT;
61409     void *                              pNext                              = {};
61410     VULKAN_HPP_NAMESPACE::Bool32        descriptorBuffer                   = {};
61411     VULKAN_HPP_NAMESPACE::Bool32        descriptorBufferCaptureReplay      = {};
61412     VULKAN_HPP_NAMESPACE::Bool32        descriptorBufferImageLayoutIgnored = {};
61413     VULKAN_HPP_NAMESPACE::Bool32        descriptorBufferPushDescriptors    = {};
61414   };
61415 
61416   template <>
61417   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorBufferFeaturesEXT>
61418   {
61419     using Type = PhysicalDeviceDescriptorBufferFeaturesEXT;
61420   };
61421 
61422   struct PhysicalDeviceDescriptorBufferPropertiesEXT
61423   {
61424     using NativeType = VkPhysicalDeviceDescriptorBufferPropertiesEXT;
61425 
61426     static const bool                                  allowDuplicate = false;
61427     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorBufferPropertiesEXT;
61428 
61429 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorBufferPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61430     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32     combinedImageSamplerDescriptorSingleArray_ = {},
61431                                                                       VULKAN_HPP_NAMESPACE::Bool32     bufferlessPushDescriptors_                 = {},
61432                                                                       VULKAN_HPP_NAMESPACE::Bool32     allowSamplerImageViewPostSubmitCreation_   = {},
61433                                                                       VULKAN_HPP_NAMESPACE::DeviceSize descriptorBufferOffsetAlignment_           = {},
61434                                                                       uint32_t                         maxDescriptorBufferBindings_               = {},
61435                                                                       uint32_t                         maxResourceDescriptorBufferBindings_       = {},
61436                                                                       uint32_t                         maxSamplerDescriptorBufferBindings_        = {},
61437                                                                       uint32_t                         maxEmbeddedImmutableSamplerBindings_       = {},
61438                                                                       uint32_t                         maxEmbeddedImmutableSamplers_              = {},
61439                                                                       size_t                           bufferCaptureReplayDescriptorDataSize_     = {},
61440                                                                       size_t                           imageCaptureReplayDescriptorDataSize_      = {},
61441                                                                       size_t                           imageViewCaptureReplayDescriptorDataSize_  = {},
61442                                                                       size_t                           samplerCaptureReplayDescriptorDataSize_    = {},
61443                                                                       size_t accelerationStructureCaptureReplayDescriptorDataSize_                = {},
61444                                                                       size_t samplerDescriptorSize_                                               = {},
61445                                                                       size_t combinedImageSamplerDescriptorSize_                                  = {},
61446                                                                       size_t sampledImageDescriptorSize_                                          = {},
61447                                                                       size_t storageImageDescriptorSize_                                          = {},
61448                                                                       size_t uniformTexelBufferDescriptorSize_                                    = {},
61449                                                                       size_t robustUniformTexelBufferDescriptorSize_                              = {},
61450                                                                       size_t storageTexelBufferDescriptorSize_                                    = {},
61451                                                                       size_t robustStorageTexelBufferDescriptorSize_                              = {},
61452                                                                       size_t uniformBufferDescriptorSize_                                         = {},
61453                                                                       size_t robustUniformBufferDescriptorSize_                                   = {},
61454                                                                       size_t storageBufferDescriptorSize_                                         = {},
61455                                                                       size_t robustStorageBufferDescriptorSize_                                   = {},
61456                                                                       size_t inputAttachmentDescriptorSize_                                       = {},
61457                                                                       size_t accelerationStructureDescriptorSize_                                 = {},
61458                                                                       VULKAN_HPP_NAMESPACE::DeviceSize maxSamplerDescriptorBufferRange_           = {},
61459                                                                       VULKAN_HPP_NAMESPACE::DeviceSize maxResourceDescriptorBufferRange_          = {},
61460                                                                       VULKAN_HPP_NAMESPACE::DeviceSize samplerDescriptorBufferAddressSpaceSize_   = {},
61461                                                                       VULKAN_HPP_NAMESPACE::DeviceSize resourceDescriptorBufferAddressSpaceSize_  = {},
61462                                                                       VULKAN_HPP_NAMESPACE::DeviceSize descriptorBufferAddressSpaceSize_          = {},
61463                                                                       void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
61464       : pNext{ pNext_ }
61465       , combinedImageSamplerDescriptorSingleArray{ combinedImageSamplerDescriptorSingleArray_ }
61466       , bufferlessPushDescriptors{ bufferlessPushDescriptors_ }
61467       , allowSamplerImageViewPostSubmitCreation{ allowSamplerImageViewPostSubmitCreation_ }
61468       , descriptorBufferOffsetAlignment{ descriptorBufferOffsetAlignment_ }
61469       , maxDescriptorBufferBindings{ maxDescriptorBufferBindings_ }
61470       , maxResourceDescriptorBufferBindings{ maxResourceDescriptorBufferBindings_ }
61471       , maxSamplerDescriptorBufferBindings{ maxSamplerDescriptorBufferBindings_ }
61472       , maxEmbeddedImmutableSamplerBindings{ maxEmbeddedImmutableSamplerBindings_ }
61473       , maxEmbeddedImmutableSamplers{ maxEmbeddedImmutableSamplers_ }
61474       , bufferCaptureReplayDescriptorDataSize{ bufferCaptureReplayDescriptorDataSize_ }
61475       , imageCaptureReplayDescriptorDataSize{ imageCaptureReplayDescriptorDataSize_ }
61476       , imageViewCaptureReplayDescriptorDataSize{ imageViewCaptureReplayDescriptorDataSize_ }
61477       , samplerCaptureReplayDescriptorDataSize{ samplerCaptureReplayDescriptorDataSize_ }
61478       , accelerationStructureCaptureReplayDescriptorDataSize{ accelerationStructureCaptureReplayDescriptorDataSize_ }
61479       , samplerDescriptorSize{ samplerDescriptorSize_ }
61480       , combinedImageSamplerDescriptorSize{ combinedImageSamplerDescriptorSize_ }
61481       , sampledImageDescriptorSize{ sampledImageDescriptorSize_ }
61482       , storageImageDescriptorSize{ storageImageDescriptorSize_ }
61483       , uniformTexelBufferDescriptorSize{ uniformTexelBufferDescriptorSize_ }
61484       , robustUniformTexelBufferDescriptorSize{ robustUniformTexelBufferDescriptorSize_ }
61485       , storageTexelBufferDescriptorSize{ storageTexelBufferDescriptorSize_ }
61486       , robustStorageTexelBufferDescriptorSize{ robustStorageTexelBufferDescriptorSize_ }
61487       , uniformBufferDescriptorSize{ uniformBufferDescriptorSize_ }
61488       , robustUniformBufferDescriptorSize{ robustUniformBufferDescriptorSize_ }
61489       , storageBufferDescriptorSize{ storageBufferDescriptorSize_ }
61490       , robustStorageBufferDescriptorSize{ robustStorageBufferDescriptorSize_ }
61491       , inputAttachmentDescriptorSize{ inputAttachmentDescriptorSize_ }
61492       , accelerationStructureDescriptorSize{ accelerationStructureDescriptorSize_ }
61493       , maxSamplerDescriptorBufferRange{ maxSamplerDescriptorBufferRange_ }
61494       , maxResourceDescriptorBufferRange{ maxResourceDescriptorBufferRange_ }
61495       , samplerDescriptorBufferAddressSpaceSize{ samplerDescriptorBufferAddressSpaceSize_ }
61496       , resourceDescriptorBufferAddressSpaceSize{ resourceDescriptorBufferAddressSpaceSize_ }
61497       , descriptorBufferAddressSpaceSize{ descriptorBufferAddressSpaceSize_ }
61498     {
61499     }
61500 
61501     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferPropertiesEXT( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61502 
PhysicalDeviceDescriptorBufferPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61503     PhysicalDeviceDescriptorBufferPropertiesEXT( VkPhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
61504       : PhysicalDeviceDescriptorBufferPropertiesEXT( *reinterpret_cast<PhysicalDeviceDescriptorBufferPropertiesEXT const *>( &rhs ) )
61505     {
61506     }
61507 
61508     PhysicalDeviceDescriptorBufferPropertiesEXT & operator=( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61509 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61510 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61511     PhysicalDeviceDescriptorBufferPropertiesEXT & operator=( VkPhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
61512     {
61513       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT const *>( &rhs );
61514       return *this;
61515     }
61516 
operator VkPhysicalDeviceDescriptorBufferPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61517     operator VkPhysicalDeviceDescriptorBufferPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
61518     {
61519       return *reinterpret_cast<const VkPhysicalDeviceDescriptorBufferPropertiesEXT *>( this );
61520     }
61521 
operator VkPhysicalDeviceDescriptorBufferPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61522     operator VkPhysicalDeviceDescriptorBufferPropertiesEXT &() VULKAN_HPP_NOEXCEPT
61523     {
61524       return *reinterpret_cast<VkPhysicalDeviceDescriptorBufferPropertiesEXT *>( this );
61525     }
61526 
61527 #if defined( VULKAN_HPP_USE_REFLECT )
61528 #  if 14 <= VULKAN_HPP_CPP_VERSION
61529     auto
61530 #  else
61531     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
61532                void * const &,
61533                VULKAN_HPP_NAMESPACE::Bool32 const &,
61534                VULKAN_HPP_NAMESPACE::Bool32 const &,
61535                VULKAN_HPP_NAMESPACE::Bool32 const &,
61536                VULKAN_HPP_NAMESPACE::DeviceSize const &,
61537                uint32_t const &,
61538                uint32_t const &,
61539                uint32_t const &,
61540                uint32_t const &,
61541                uint32_t const &,
61542                size_t const &,
61543                size_t const &,
61544                size_t const &,
61545                size_t const &,
61546                size_t const &,
61547                size_t const &,
61548                size_t const &,
61549                size_t const &,
61550                size_t const &,
61551                size_t const &,
61552                size_t const &,
61553                size_t const &,
61554                size_t const &,
61555                size_t const &,
61556                size_t const &,
61557                size_t const &,
61558                size_t const &,
61559                size_t const &,
61560                size_t const &,
61561                VULKAN_HPP_NAMESPACE::DeviceSize const &,
61562                VULKAN_HPP_NAMESPACE::DeviceSize const &,
61563                VULKAN_HPP_NAMESPACE::DeviceSize const &,
61564                VULKAN_HPP_NAMESPACE::DeviceSize const &,
61565                VULKAN_HPP_NAMESPACE::DeviceSize const &>
61566 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61567       reflect() const VULKAN_HPP_NOEXCEPT
61568     {
61569       return std::tie( sType,
61570                        pNext,
61571                        combinedImageSamplerDescriptorSingleArray,
61572                        bufferlessPushDescriptors,
61573                        allowSamplerImageViewPostSubmitCreation,
61574                        descriptorBufferOffsetAlignment,
61575                        maxDescriptorBufferBindings,
61576                        maxResourceDescriptorBufferBindings,
61577                        maxSamplerDescriptorBufferBindings,
61578                        maxEmbeddedImmutableSamplerBindings,
61579                        maxEmbeddedImmutableSamplers,
61580                        bufferCaptureReplayDescriptorDataSize,
61581                        imageCaptureReplayDescriptorDataSize,
61582                        imageViewCaptureReplayDescriptorDataSize,
61583                        samplerCaptureReplayDescriptorDataSize,
61584                        accelerationStructureCaptureReplayDescriptorDataSize,
61585                        samplerDescriptorSize,
61586                        combinedImageSamplerDescriptorSize,
61587                        sampledImageDescriptorSize,
61588                        storageImageDescriptorSize,
61589                        uniformTexelBufferDescriptorSize,
61590                        robustUniformTexelBufferDescriptorSize,
61591                        storageTexelBufferDescriptorSize,
61592                        robustStorageTexelBufferDescriptorSize,
61593                        uniformBufferDescriptorSize,
61594                        robustUniformBufferDescriptorSize,
61595                        storageBufferDescriptorSize,
61596                        robustStorageBufferDescriptorSize,
61597                        inputAttachmentDescriptorSize,
61598                        accelerationStructureDescriptorSize,
61599                        maxSamplerDescriptorBufferRange,
61600                        maxResourceDescriptorBufferRange,
61601                        samplerDescriptorBufferAddressSpaceSize,
61602                        resourceDescriptorBufferAddressSpaceSize,
61603                        descriptorBufferAddressSpaceSize );
61604     }
61605 #endif
61606 
61607 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61608     auto operator<=>( PhysicalDeviceDescriptorBufferPropertiesEXT const & ) const = default;
61609 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61610     bool operator==( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
61611     {
61612 #  if defined( VULKAN_HPP_USE_REFLECT )
61613       return this->reflect() == rhs.reflect();
61614 #  else
61615       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
61616              ( combinedImageSamplerDescriptorSingleArray == rhs.combinedImageSamplerDescriptorSingleArray ) &&
61617              ( bufferlessPushDescriptors == rhs.bufferlessPushDescriptors ) &&
61618              ( allowSamplerImageViewPostSubmitCreation == rhs.allowSamplerImageViewPostSubmitCreation ) &&
61619              ( descriptorBufferOffsetAlignment == rhs.descriptorBufferOffsetAlignment ) && ( maxDescriptorBufferBindings == rhs.maxDescriptorBufferBindings ) &&
61620              ( maxResourceDescriptorBufferBindings == rhs.maxResourceDescriptorBufferBindings ) &&
61621              ( maxSamplerDescriptorBufferBindings == rhs.maxSamplerDescriptorBufferBindings ) &&
61622              ( maxEmbeddedImmutableSamplerBindings == rhs.maxEmbeddedImmutableSamplerBindings ) &&
61623              ( maxEmbeddedImmutableSamplers == rhs.maxEmbeddedImmutableSamplers ) &&
61624              ( bufferCaptureReplayDescriptorDataSize == rhs.bufferCaptureReplayDescriptorDataSize ) &&
61625              ( imageCaptureReplayDescriptorDataSize == rhs.imageCaptureReplayDescriptorDataSize ) &&
61626              ( imageViewCaptureReplayDescriptorDataSize == rhs.imageViewCaptureReplayDescriptorDataSize ) &&
61627              ( samplerCaptureReplayDescriptorDataSize == rhs.samplerCaptureReplayDescriptorDataSize ) &&
61628              ( accelerationStructureCaptureReplayDescriptorDataSize == rhs.accelerationStructureCaptureReplayDescriptorDataSize ) &&
61629              ( samplerDescriptorSize == rhs.samplerDescriptorSize ) && ( combinedImageSamplerDescriptorSize == rhs.combinedImageSamplerDescriptorSize ) &&
61630              ( sampledImageDescriptorSize == rhs.sampledImageDescriptorSize ) && ( storageImageDescriptorSize == rhs.storageImageDescriptorSize ) &&
61631              ( uniformTexelBufferDescriptorSize == rhs.uniformTexelBufferDescriptorSize ) &&
61632              ( robustUniformTexelBufferDescriptorSize == rhs.robustUniformTexelBufferDescriptorSize ) &&
61633              ( storageTexelBufferDescriptorSize == rhs.storageTexelBufferDescriptorSize ) &&
61634              ( robustStorageTexelBufferDescriptorSize == rhs.robustStorageTexelBufferDescriptorSize ) &&
61635              ( uniformBufferDescriptorSize == rhs.uniformBufferDescriptorSize ) &&
61636              ( robustUniformBufferDescriptorSize == rhs.robustUniformBufferDescriptorSize ) &&
61637              ( storageBufferDescriptorSize == rhs.storageBufferDescriptorSize ) &&
61638              ( robustStorageBufferDescriptorSize == rhs.robustStorageBufferDescriptorSize ) &&
61639              ( inputAttachmentDescriptorSize == rhs.inputAttachmentDescriptorSize ) &&
61640              ( accelerationStructureDescriptorSize == rhs.accelerationStructureDescriptorSize ) &&
61641              ( maxSamplerDescriptorBufferRange == rhs.maxSamplerDescriptorBufferRange ) &&
61642              ( maxResourceDescriptorBufferRange == rhs.maxResourceDescriptorBufferRange ) &&
61643              ( samplerDescriptorBufferAddressSpaceSize == rhs.samplerDescriptorBufferAddressSpaceSize ) &&
61644              ( resourceDescriptorBufferAddressSpaceSize == rhs.resourceDescriptorBufferAddressSpaceSize ) &&
61645              ( descriptorBufferAddressSpaceSize == rhs.descriptorBufferAddressSpaceSize );
61646 #  endif
61647     }
61648 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61649     bool operator!=( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
61650     {
61651       return !operator==( rhs );
61652     }
61653 #endif
61654 
61655   public:
61656     VULKAN_HPP_NAMESPACE::StructureType sType                                                = StructureType::ePhysicalDeviceDescriptorBufferPropertiesEXT;
61657     void *                              pNext                                                = {};
61658     VULKAN_HPP_NAMESPACE::Bool32        combinedImageSamplerDescriptorSingleArray            = {};
61659     VULKAN_HPP_NAMESPACE::Bool32        bufferlessPushDescriptors                            = {};
61660     VULKAN_HPP_NAMESPACE::Bool32        allowSamplerImageViewPostSubmitCreation              = {};
61661     VULKAN_HPP_NAMESPACE::DeviceSize    descriptorBufferOffsetAlignment                      = {};
61662     uint32_t                            maxDescriptorBufferBindings                          = {};
61663     uint32_t                            maxResourceDescriptorBufferBindings                  = {};
61664     uint32_t                            maxSamplerDescriptorBufferBindings                   = {};
61665     uint32_t                            maxEmbeddedImmutableSamplerBindings                  = {};
61666     uint32_t                            maxEmbeddedImmutableSamplers                         = {};
61667     size_t                              bufferCaptureReplayDescriptorDataSize                = {};
61668     size_t                              imageCaptureReplayDescriptorDataSize                 = {};
61669     size_t                              imageViewCaptureReplayDescriptorDataSize             = {};
61670     size_t                              samplerCaptureReplayDescriptorDataSize               = {};
61671     size_t                              accelerationStructureCaptureReplayDescriptorDataSize = {};
61672     size_t                              samplerDescriptorSize                                = {};
61673     size_t                              combinedImageSamplerDescriptorSize                   = {};
61674     size_t                              sampledImageDescriptorSize                           = {};
61675     size_t                              storageImageDescriptorSize                           = {};
61676     size_t                              uniformTexelBufferDescriptorSize                     = {};
61677     size_t                              robustUniformTexelBufferDescriptorSize               = {};
61678     size_t                              storageTexelBufferDescriptorSize                     = {};
61679     size_t                              robustStorageTexelBufferDescriptorSize               = {};
61680     size_t                              uniformBufferDescriptorSize                          = {};
61681     size_t                              robustUniformBufferDescriptorSize                    = {};
61682     size_t                              storageBufferDescriptorSize                          = {};
61683     size_t                              robustStorageBufferDescriptorSize                    = {};
61684     size_t                              inputAttachmentDescriptorSize                        = {};
61685     size_t                              accelerationStructureDescriptorSize                  = {};
61686     VULKAN_HPP_NAMESPACE::DeviceSize    maxSamplerDescriptorBufferRange                      = {};
61687     VULKAN_HPP_NAMESPACE::DeviceSize    maxResourceDescriptorBufferRange                     = {};
61688     VULKAN_HPP_NAMESPACE::DeviceSize    samplerDescriptorBufferAddressSpaceSize              = {};
61689     VULKAN_HPP_NAMESPACE::DeviceSize    resourceDescriptorBufferAddressSpaceSize             = {};
61690     VULKAN_HPP_NAMESPACE::DeviceSize    descriptorBufferAddressSpaceSize                     = {};
61691   };
61692 
61693   template <>
61694   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorBufferPropertiesEXT>
61695   {
61696     using Type = PhysicalDeviceDescriptorBufferPropertiesEXT;
61697   };
61698 
61699   struct PhysicalDeviceDescriptorIndexingFeatures
61700   {
61701     using NativeType = VkPhysicalDeviceDescriptorIndexingFeatures;
61702 
61703     static const bool                                  allowDuplicate = false;
61704     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorIndexingFeatures;
61705 
61706 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorIndexingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61707     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_          = {},
61708                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_       = {},
61709                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_       = {},
61710                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_         = {},
61711                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_          = {},
61712                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_         = {},
61713                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_          = {},
61714                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_       = {},
61715                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_    = {},
61716                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_    = {},
61717                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_      = {},
61718                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_       = {},
61719                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_       = {},
61720                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_      = {},
61721                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {},
61722                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {},
61723                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_          = {},
61724                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_                    = {},
61725                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_           = {},
61726                                                                    VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_                             = {},
61727                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
61728       : pNext{ pNext_ }
61729       , shaderInputAttachmentArrayDynamicIndexing{ shaderInputAttachmentArrayDynamicIndexing_ }
61730       , shaderUniformTexelBufferArrayDynamicIndexing{ shaderUniformTexelBufferArrayDynamicIndexing_ }
61731       , shaderStorageTexelBufferArrayDynamicIndexing{ shaderStorageTexelBufferArrayDynamicIndexing_ }
61732       , shaderUniformBufferArrayNonUniformIndexing{ shaderUniformBufferArrayNonUniformIndexing_ }
61733       , shaderSampledImageArrayNonUniformIndexing{ shaderSampledImageArrayNonUniformIndexing_ }
61734       , shaderStorageBufferArrayNonUniformIndexing{ shaderStorageBufferArrayNonUniformIndexing_ }
61735       , shaderStorageImageArrayNonUniformIndexing{ shaderStorageImageArrayNonUniformIndexing_ }
61736       , shaderInputAttachmentArrayNonUniformIndexing{ shaderInputAttachmentArrayNonUniformIndexing_ }
61737       , shaderUniformTexelBufferArrayNonUniformIndexing{ shaderUniformTexelBufferArrayNonUniformIndexing_ }
61738       , shaderStorageTexelBufferArrayNonUniformIndexing{ shaderStorageTexelBufferArrayNonUniformIndexing_ }
61739       , descriptorBindingUniformBufferUpdateAfterBind{ descriptorBindingUniformBufferUpdateAfterBind_ }
61740       , descriptorBindingSampledImageUpdateAfterBind{ descriptorBindingSampledImageUpdateAfterBind_ }
61741       , descriptorBindingStorageImageUpdateAfterBind{ descriptorBindingStorageImageUpdateAfterBind_ }
61742       , descriptorBindingStorageBufferUpdateAfterBind{ descriptorBindingStorageBufferUpdateAfterBind_ }
61743       , descriptorBindingUniformTexelBufferUpdateAfterBind{ descriptorBindingUniformTexelBufferUpdateAfterBind_ }
61744       , descriptorBindingStorageTexelBufferUpdateAfterBind{ descriptorBindingStorageTexelBufferUpdateAfterBind_ }
61745       , descriptorBindingUpdateUnusedWhilePending{ descriptorBindingUpdateUnusedWhilePending_ }
61746       , descriptorBindingPartiallyBound{ descriptorBindingPartiallyBound_ }
61747       , descriptorBindingVariableDescriptorCount{ descriptorBindingVariableDescriptorCount_ }
61748       , runtimeDescriptorArray{ runtimeDescriptorArray_ }
61749     {
61750     }
61751 
61752     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61753 
PhysicalDeviceDescriptorIndexingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61754     PhysicalDeviceDescriptorIndexingFeatures( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
61755       : PhysicalDeviceDescriptorIndexingFeatures( *reinterpret_cast<PhysicalDeviceDescriptorIndexingFeatures const *>( &rhs ) )
61756     {
61757     }
61758 
61759     PhysicalDeviceDescriptorIndexingFeatures & operator=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61760 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61761 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61762     PhysicalDeviceDescriptorIndexingFeatures & operator=( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
61763     {
61764       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures const *>( &rhs );
61765       return *this;
61766     }
61767 
61768 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61769     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61770     {
61771       pNext = pNext_;
61772       return *this;
61773     }
61774 
61775     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderInputAttachmentArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61776       setShaderInputAttachmentArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
61777     {
61778       shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_;
61779       return *this;
61780     }
61781 
61782     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderUniformTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61783       setShaderUniformTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
61784     {
61785       shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_;
61786       return *this;
61787     }
61788 
61789     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderStorageTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61790       setShaderStorageTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
61791     {
61792       shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_;
61793       return *this;
61794     }
61795 
61796     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderUniformBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61797       setShaderUniformBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61798     {
61799       shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_;
61800       return *this;
61801     }
61802 
61803     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderSampledImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61804       setShaderSampledImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61805     {
61806       shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_;
61807       return *this;
61808     }
61809 
61810     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderStorageBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61811       setShaderStorageBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61812     {
61813       shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_;
61814       return *this;
61815     }
61816 
61817     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderStorageImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61818       setShaderStorageImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61819     {
61820       shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_;
61821       return *this;
61822     }
61823 
61824     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderInputAttachmentArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61825       setShaderInputAttachmentArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61826     {
61827       shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_;
61828       return *this;
61829     }
61830 
61831     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderUniformTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61832       setShaderUniformTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61833     {
61834       shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_;
61835       return *this;
61836     }
61837 
61838     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderStorageTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61839       setShaderStorageTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61840     {
61841       shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_;
61842       return *this;
61843     }
61844 
61845     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingUniformBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61846       setDescriptorBindingUniformBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61847     {
61848       descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_;
61849       return *this;
61850     }
61851 
61852     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingSampledImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61853       setDescriptorBindingSampledImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61854     {
61855       descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_;
61856       return *this;
61857     }
61858 
61859     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingStorageImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61860       setDescriptorBindingStorageImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61861     {
61862       descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_;
61863       return *this;
61864     }
61865 
61866     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingStorageBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61867       setDescriptorBindingStorageBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61868     {
61869       descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_;
61870       return *this;
61871     }
61872 
setDescriptorBindingUniformTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61873     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUniformTexelBufferUpdateAfterBind(
61874       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61875     {
61876       descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_;
61877       return *this;
61878     }
61879 
setDescriptorBindingStorageTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61880     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageTexelBufferUpdateAfterBind(
61881       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61882     {
61883       descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_;
61884       return *this;
61885     }
61886 
61887     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingUpdateUnusedWhilePendingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61888       setDescriptorBindingUpdateUnusedWhilePending( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT
61889     {
61890       descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_;
61891       return *this;
61892     }
61893 
61894     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingPartiallyBoundVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61895       setDescriptorBindingPartiallyBound( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT
61896     {
61897       descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_;
61898       return *this;
61899     }
61900 
61901     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingVariableDescriptorCountVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61902       setDescriptorBindingVariableDescriptorCount( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT
61903     {
61904       descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_;
61905       return *this;
61906     }
61907 
61908     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setRuntimeDescriptorArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61909       setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT
61910     {
61911       runtimeDescriptorArray = runtimeDescriptorArray_;
61912       return *this;
61913     }
61914 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61915 
operator VkPhysicalDeviceDescriptorIndexingFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61916     operator VkPhysicalDeviceDescriptorIndexingFeatures const &() const VULKAN_HPP_NOEXCEPT
61917     {
61918       return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeatures *>( this );
61919     }
61920 
operator VkPhysicalDeviceDescriptorIndexingFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61921     operator VkPhysicalDeviceDescriptorIndexingFeatures &() VULKAN_HPP_NOEXCEPT
61922     {
61923       return *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeatures *>( this );
61924     }
61925 
61926 #if defined( VULKAN_HPP_USE_REFLECT )
61927 #  if 14 <= VULKAN_HPP_CPP_VERSION
61928     auto
61929 #  else
61930     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
61931                void * const &,
61932                VULKAN_HPP_NAMESPACE::Bool32 const &,
61933                VULKAN_HPP_NAMESPACE::Bool32 const &,
61934                VULKAN_HPP_NAMESPACE::Bool32 const &,
61935                VULKAN_HPP_NAMESPACE::Bool32 const &,
61936                VULKAN_HPP_NAMESPACE::Bool32 const &,
61937                VULKAN_HPP_NAMESPACE::Bool32 const &,
61938                VULKAN_HPP_NAMESPACE::Bool32 const &,
61939                VULKAN_HPP_NAMESPACE::Bool32 const &,
61940                VULKAN_HPP_NAMESPACE::Bool32 const &,
61941                VULKAN_HPP_NAMESPACE::Bool32 const &,
61942                VULKAN_HPP_NAMESPACE::Bool32 const &,
61943                VULKAN_HPP_NAMESPACE::Bool32 const &,
61944                VULKAN_HPP_NAMESPACE::Bool32 const &,
61945                VULKAN_HPP_NAMESPACE::Bool32 const &,
61946                VULKAN_HPP_NAMESPACE::Bool32 const &,
61947                VULKAN_HPP_NAMESPACE::Bool32 const &,
61948                VULKAN_HPP_NAMESPACE::Bool32 const &,
61949                VULKAN_HPP_NAMESPACE::Bool32 const &,
61950                VULKAN_HPP_NAMESPACE::Bool32 const &,
61951                VULKAN_HPP_NAMESPACE::Bool32 const &>
61952 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61953       reflect() const VULKAN_HPP_NOEXCEPT
61954     {
61955       return std::tie( sType,
61956                        pNext,
61957                        shaderInputAttachmentArrayDynamicIndexing,
61958                        shaderUniformTexelBufferArrayDynamicIndexing,
61959                        shaderStorageTexelBufferArrayDynamicIndexing,
61960                        shaderUniformBufferArrayNonUniformIndexing,
61961                        shaderSampledImageArrayNonUniformIndexing,
61962                        shaderStorageBufferArrayNonUniformIndexing,
61963                        shaderStorageImageArrayNonUniformIndexing,
61964                        shaderInputAttachmentArrayNonUniformIndexing,
61965                        shaderUniformTexelBufferArrayNonUniformIndexing,
61966                        shaderStorageTexelBufferArrayNonUniformIndexing,
61967                        descriptorBindingUniformBufferUpdateAfterBind,
61968                        descriptorBindingSampledImageUpdateAfterBind,
61969                        descriptorBindingStorageImageUpdateAfterBind,
61970                        descriptorBindingStorageBufferUpdateAfterBind,
61971                        descriptorBindingUniformTexelBufferUpdateAfterBind,
61972                        descriptorBindingStorageTexelBufferUpdateAfterBind,
61973                        descriptorBindingUpdateUnusedWhilePending,
61974                        descriptorBindingPartiallyBound,
61975                        descriptorBindingVariableDescriptorCount,
61976                        runtimeDescriptorArray );
61977     }
61978 #endif
61979 
61980 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61981     auto operator<=>( PhysicalDeviceDescriptorIndexingFeatures const & ) const = default;
61982 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61983     bool operator==( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
61984     {
61985 #  if defined( VULKAN_HPP_USE_REFLECT )
61986       return this->reflect() == rhs.reflect();
61987 #  else
61988       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
61989              ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing ) &&
61990              ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing ) &&
61991              ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing ) &&
61992              ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing ) &&
61993              ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing ) &&
61994              ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing ) &&
61995              ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing ) &&
61996              ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing ) &&
61997              ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing ) &&
61998              ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing ) &&
61999              ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind ) &&
62000              ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind ) &&
62001              ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind ) &&
62002              ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind ) &&
62003              ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind ) &&
62004              ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind ) &&
62005              ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending ) &&
62006              ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound ) &&
62007              ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount ) &&
62008              ( runtimeDescriptorArray == rhs.runtimeDescriptorArray );
62009 #  endif
62010     }
62011 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures62012     bool operator!=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
62013     {
62014       return !operator==( rhs );
62015     }
62016 #endif
62017 
62018   public:
62019     VULKAN_HPP_NAMESPACE::StructureType sType                                              = StructureType::ePhysicalDeviceDescriptorIndexingFeatures;
62020     void *                              pNext                                              = {};
62021     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayDynamicIndexing          = {};
62022     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayDynamicIndexing       = {};
62023     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayDynamicIndexing       = {};
62024     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformBufferArrayNonUniformIndexing         = {};
62025     VULKAN_HPP_NAMESPACE::Bool32        shaderSampledImageArrayNonUniformIndexing          = {};
62026     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageBufferArrayNonUniformIndexing         = {};
62027     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageImageArrayNonUniformIndexing          = {};
62028     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayNonUniformIndexing       = {};
62029     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayNonUniformIndexing    = {};
62030     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayNonUniformIndexing    = {};
62031     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformBufferUpdateAfterBind      = {};
62032     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingSampledImageUpdateAfterBind       = {};
62033     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageImageUpdateAfterBind       = {};
62034     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageBufferUpdateAfterBind      = {};
62035     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformTexelBufferUpdateAfterBind = {};
62036     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageTexelBufferUpdateAfterBind = {};
62037     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUpdateUnusedWhilePending          = {};
62038     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingPartiallyBound                    = {};
62039     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingVariableDescriptorCount           = {};
62040     VULKAN_HPP_NAMESPACE::Bool32        runtimeDescriptorArray                             = {};
62041   };
62042 
62043   template <>
62044   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorIndexingFeatures>
62045   {
62046     using Type = PhysicalDeviceDescriptorIndexingFeatures;
62047   };
62048 
62049   using PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
62050 
62051   struct PhysicalDeviceDescriptorIndexingProperties
62052   {
62053     using NativeType = VkPhysicalDeviceDescriptorIndexingProperties;
62054 
62055     static const bool                                  allowDuplicate = false;
62056     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorIndexingProperties;
62057 
62058 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorIndexingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties62059     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties( uint32_t                     maxUpdateAfterBindDescriptorsInAllPools_              = {},
62060                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative_     = {},
62061                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative_      = {},
62062                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative_     = {},
62063                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative_      = {},
62064                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_   = {},
62065                                                                      VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind_                    = {},
62066                                                                      VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod_                             = {},
62067                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindSamplers_         = {},
62068                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindUniformBuffers_   = {},
62069                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindStorageBuffers_   = {},
62070                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindSampledImages_    = {},
62071                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindStorageImages_    = {},
62072                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {},
62073                                                                      uint32_t                     maxPerStageUpdateAfterBindResources_                  = {},
62074                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindSamplers_              = {},
62075                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindUniformBuffers_        = {},
62076                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {},
62077                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindStorageBuffers_        = {},
62078                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {},
62079                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindSampledImages_         = {},
62080                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindStorageImages_         = {},
62081                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindInputAttachments_      = {},
62082                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
62083       : pNext{ pNext_ }
62084       , maxUpdateAfterBindDescriptorsInAllPools{ maxUpdateAfterBindDescriptorsInAllPools_ }
62085       , shaderUniformBufferArrayNonUniformIndexingNative{ shaderUniformBufferArrayNonUniformIndexingNative_ }
62086       , shaderSampledImageArrayNonUniformIndexingNative{ shaderSampledImageArrayNonUniformIndexingNative_ }
62087       , shaderStorageBufferArrayNonUniformIndexingNative{ shaderStorageBufferArrayNonUniformIndexingNative_ }
62088       , shaderStorageImageArrayNonUniformIndexingNative{ shaderStorageImageArrayNonUniformIndexingNative_ }
62089       , shaderInputAttachmentArrayNonUniformIndexingNative{ shaderInputAttachmentArrayNonUniformIndexingNative_ }
62090       , robustBufferAccessUpdateAfterBind{ robustBufferAccessUpdateAfterBind_ }
62091       , quadDivergentImplicitLod{ quadDivergentImplicitLod_ }
62092       , maxPerStageDescriptorUpdateAfterBindSamplers{ maxPerStageDescriptorUpdateAfterBindSamplers_ }
62093       , maxPerStageDescriptorUpdateAfterBindUniformBuffers{ maxPerStageDescriptorUpdateAfterBindUniformBuffers_ }
62094       , maxPerStageDescriptorUpdateAfterBindStorageBuffers{ maxPerStageDescriptorUpdateAfterBindStorageBuffers_ }
62095       , maxPerStageDescriptorUpdateAfterBindSampledImages{ maxPerStageDescriptorUpdateAfterBindSampledImages_ }
62096       , maxPerStageDescriptorUpdateAfterBindStorageImages{ maxPerStageDescriptorUpdateAfterBindStorageImages_ }
62097       , maxPerStageDescriptorUpdateAfterBindInputAttachments{ maxPerStageDescriptorUpdateAfterBindInputAttachments_ }
62098       , maxPerStageUpdateAfterBindResources{ maxPerStageUpdateAfterBindResources_ }
62099       , maxDescriptorSetUpdateAfterBindSamplers{ maxDescriptorSetUpdateAfterBindSamplers_ }
62100       , maxDescriptorSetUpdateAfterBindUniformBuffers{ maxDescriptorSetUpdateAfterBindUniformBuffers_ }
62101       , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic{ maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ }
62102       , maxDescriptorSetUpdateAfterBindStorageBuffers{ maxDescriptorSetUpdateAfterBindStorageBuffers_ }
62103       , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic{ maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ }
62104       , maxDescriptorSetUpdateAfterBindSampledImages{ maxDescriptorSetUpdateAfterBindSampledImages_ }
62105       , maxDescriptorSetUpdateAfterBindStorageImages{ maxDescriptorSetUpdateAfterBindStorageImages_ }
62106       , maxDescriptorSetUpdateAfterBindInputAttachments{ maxDescriptorSetUpdateAfterBindInputAttachments_ }
62107     {
62108     }
62109 
62110     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62111 
PhysicalDeviceDescriptorIndexingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties62112     PhysicalDeviceDescriptorIndexingProperties( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
62113       : PhysicalDeviceDescriptorIndexingProperties( *reinterpret_cast<PhysicalDeviceDescriptorIndexingProperties const *>( &rhs ) )
62114     {
62115     }
62116 
62117     PhysicalDeviceDescriptorIndexingProperties & operator=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62118 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62119 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties62120     PhysicalDeviceDescriptorIndexingProperties & operator=( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
62121     {
62122       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties const *>( &rhs );
62123       return *this;
62124     }
62125 
operator VkPhysicalDeviceDescriptorIndexingProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties62126     operator VkPhysicalDeviceDescriptorIndexingProperties const &() const VULKAN_HPP_NOEXCEPT
62127     {
62128       return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingProperties *>( this );
62129     }
62130 
operator VkPhysicalDeviceDescriptorIndexingProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties62131     operator VkPhysicalDeviceDescriptorIndexingProperties &() VULKAN_HPP_NOEXCEPT
62132     {
62133       return *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingProperties *>( this );
62134     }
62135 
62136 #if defined( VULKAN_HPP_USE_REFLECT )
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::Bool32 const &,
62144                VULKAN_HPP_NAMESPACE::Bool32 const &,
62145                VULKAN_HPP_NAMESPACE::Bool32 const &,
62146                VULKAN_HPP_NAMESPACE::Bool32 const &,
62147                VULKAN_HPP_NAMESPACE::Bool32 const &,
62148                VULKAN_HPP_NAMESPACE::Bool32 const &,
62149                VULKAN_HPP_NAMESPACE::Bool32 const &,
62150                uint32_t const &,
62151                uint32_t const &,
62152                uint32_t const &,
62153                uint32_t const &,
62154                uint32_t const &,
62155                uint32_t const &,
62156                uint32_t const &,
62157                uint32_t const &,
62158                uint32_t const &,
62159                uint32_t const &,
62160                uint32_t const &,
62161                uint32_t const &,
62162                uint32_t const &,
62163                uint32_t const &,
62164                uint32_t const &>
62165 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties62166       reflect() const VULKAN_HPP_NOEXCEPT
62167     {
62168       return std::tie( sType,
62169                        pNext,
62170                        maxUpdateAfterBindDescriptorsInAllPools,
62171                        shaderUniformBufferArrayNonUniformIndexingNative,
62172                        shaderSampledImageArrayNonUniformIndexingNative,
62173                        shaderStorageBufferArrayNonUniformIndexingNative,
62174                        shaderStorageImageArrayNonUniformIndexingNative,
62175                        shaderInputAttachmentArrayNonUniformIndexingNative,
62176                        robustBufferAccessUpdateAfterBind,
62177                        quadDivergentImplicitLod,
62178                        maxPerStageDescriptorUpdateAfterBindSamplers,
62179                        maxPerStageDescriptorUpdateAfterBindUniformBuffers,
62180                        maxPerStageDescriptorUpdateAfterBindStorageBuffers,
62181                        maxPerStageDescriptorUpdateAfterBindSampledImages,
62182                        maxPerStageDescriptorUpdateAfterBindStorageImages,
62183                        maxPerStageDescriptorUpdateAfterBindInputAttachments,
62184                        maxPerStageUpdateAfterBindResources,
62185                        maxDescriptorSetUpdateAfterBindSamplers,
62186                        maxDescriptorSetUpdateAfterBindUniformBuffers,
62187                        maxDescriptorSetUpdateAfterBindUniformBuffersDynamic,
62188                        maxDescriptorSetUpdateAfterBindStorageBuffers,
62189                        maxDescriptorSetUpdateAfterBindStorageBuffersDynamic,
62190                        maxDescriptorSetUpdateAfterBindSampledImages,
62191                        maxDescriptorSetUpdateAfterBindStorageImages,
62192                        maxDescriptorSetUpdateAfterBindInputAttachments );
62193     }
62194 #endif
62195 
62196 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62197     auto operator<=>( PhysicalDeviceDescriptorIndexingProperties const & ) const = default;
62198 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties62199     bool operator==( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
62200     {
62201 #  if defined( VULKAN_HPP_USE_REFLECT )
62202       return this->reflect() == rhs.reflect();
62203 #  else
62204       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools ) &&
62205              ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative ) &&
62206              ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative ) &&
62207              ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative ) &&
62208              ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative ) &&
62209              ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative ) &&
62210              ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind ) && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod ) &&
62211              ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers ) &&
62212              ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers ) &&
62213              ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers ) &&
62214              ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages ) &&
62215              ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages ) &&
62216              ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments ) &&
62217              ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources ) &&
62218              ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers ) &&
62219              ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers ) &&
62220              ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ) &&
62221              ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers ) &&
62222              ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ) &&
62223              ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages ) &&
62224              ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages ) &&
62225              ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments );
62226 #  endif
62227     }
62228 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties62229     bool operator!=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
62230     {
62231       return !operator==( rhs );
62232     }
62233 #endif
62234 
62235   public:
62236     VULKAN_HPP_NAMESPACE::StructureType sType                                                = StructureType::ePhysicalDeviceDescriptorIndexingProperties;
62237     void *                              pNext                                                = {};
62238     uint32_t                            maxUpdateAfterBindDescriptorsInAllPools              = {};
62239     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformBufferArrayNonUniformIndexingNative     = {};
62240     VULKAN_HPP_NAMESPACE::Bool32        shaderSampledImageArrayNonUniformIndexingNative      = {};
62241     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageBufferArrayNonUniformIndexingNative     = {};
62242     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageImageArrayNonUniformIndexingNative      = {};
62243     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayNonUniformIndexingNative   = {};
62244     VULKAN_HPP_NAMESPACE::Bool32        robustBufferAccessUpdateAfterBind                    = {};
62245     VULKAN_HPP_NAMESPACE::Bool32        quadDivergentImplicitLod                             = {};
62246     uint32_t                            maxPerStageDescriptorUpdateAfterBindSamplers         = {};
62247     uint32_t                            maxPerStageDescriptorUpdateAfterBindUniformBuffers   = {};
62248     uint32_t                            maxPerStageDescriptorUpdateAfterBindStorageBuffers   = {};
62249     uint32_t                            maxPerStageDescriptorUpdateAfterBindSampledImages    = {};
62250     uint32_t                            maxPerStageDescriptorUpdateAfterBindStorageImages    = {};
62251     uint32_t                            maxPerStageDescriptorUpdateAfterBindInputAttachments = {};
62252     uint32_t                            maxPerStageUpdateAfterBindResources                  = {};
62253     uint32_t                            maxDescriptorSetUpdateAfterBindSamplers              = {};
62254     uint32_t                            maxDescriptorSetUpdateAfterBindUniformBuffers        = {};
62255     uint32_t                            maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {};
62256     uint32_t                            maxDescriptorSetUpdateAfterBindStorageBuffers        = {};
62257     uint32_t                            maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {};
62258     uint32_t                            maxDescriptorSetUpdateAfterBindSampledImages         = {};
62259     uint32_t                            maxDescriptorSetUpdateAfterBindStorageImages         = {};
62260     uint32_t                            maxDescriptorSetUpdateAfterBindInputAttachments      = {};
62261   };
62262 
62263   template <>
62264   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorIndexingProperties>
62265   {
62266     using Type = PhysicalDeviceDescriptorIndexingProperties;
62267   };
62268 
62269   using PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
62270 
62271   struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV
62272   {
62273     using NativeType = VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
62274 
62275     static const bool                                  allowDuplicate = false;
62276     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
62277 
62278 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorPoolOverallocationFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV62279     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 descriptorPoolOverallocation_ = {},
62280                                                                                void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
62281       : pNext{ pNext_ }
62282       , descriptorPoolOverallocation{ descriptorPoolOverallocation_ }
62283     {
62284     }
62285 
62286     VULKAN_HPP_CONSTEXPR
62287       PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62288 
PhysicalDeviceDescriptorPoolOverallocationFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV62289     PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62290       : PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( *reinterpret_cast<PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const *>( &rhs ) )
62291     {
62292     }
62293 
62294     PhysicalDeviceDescriptorPoolOverallocationFeaturesNV &
62295       operator=( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62296 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62297 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV62298     PhysicalDeviceDescriptorPoolOverallocationFeaturesNV & operator=( VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62299     {
62300       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const *>( &rhs );
62301       return *this;
62302     }
62303 
62304 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV62305     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorPoolOverallocationFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62306     {
62307       pNext = pNext_;
62308       return *this;
62309     }
62310 
62311     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorPoolOverallocationFeaturesNV &
setDescriptorPoolOverallocationVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV62312       setDescriptorPoolOverallocation( VULKAN_HPP_NAMESPACE::Bool32 descriptorPoolOverallocation_ ) VULKAN_HPP_NOEXCEPT
62313     {
62314       descriptorPoolOverallocation = descriptorPoolOverallocation_;
62315       return *this;
62316     }
62317 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62318 
operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV62319     operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
62320     {
62321       return *reinterpret_cast<const VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV *>( this );
62322     }
62323 
operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV62324     operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV &() VULKAN_HPP_NOEXCEPT
62325     {
62326       return *reinterpret_cast<VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV *>( this );
62327     }
62328 
62329 #if defined( VULKAN_HPP_USE_REFLECT )
62330 #  if 14 <= VULKAN_HPP_CPP_VERSION
62331     auto
62332 #  else
62333     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62334 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV62335       reflect() const VULKAN_HPP_NOEXCEPT
62336     {
62337       return std::tie( sType, pNext, descriptorPoolOverallocation );
62338     }
62339 #endif
62340 
62341 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62342     auto operator<=>( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & ) const = default;
62343 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV62344     bool operator==( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62345     {
62346 #  if defined( VULKAN_HPP_USE_REFLECT )
62347       return this->reflect() == rhs.reflect();
62348 #  else
62349       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorPoolOverallocation == rhs.descriptorPoolOverallocation );
62350 #  endif
62351     }
62352 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV62353     bool operator!=( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62354     {
62355       return !operator==( rhs );
62356     }
62357 #endif
62358 
62359   public:
62360     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
62361     void *                              pNext                        = {};
62362     VULKAN_HPP_NAMESPACE::Bool32        descriptorPoolOverallocation = {};
62363   };
62364 
62365   template <>
62366   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorPoolOverallocationFeaturesNV>
62367   {
62368     using Type = PhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
62369   };
62370 
62371   struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
62372   {
62373     using NativeType = VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
62374 
62375     static const bool                                  allowDuplicate = false;
62376     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
62377 
62378 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorSetHostMappingFeaturesVALVEVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE62379     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( VULKAN_HPP_NAMESPACE::Bool32 descriptorSetHostMapping_ = {},
62380                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
62381       : pNext{ pNext_ }
62382       , descriptorSetHostMapping{ descriptorSetHostMapping_ }
62383     {
62384     }
62385 
62386     VULKAN_HPP_CONSTEXPR
62387       PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62388 
PhysicalDeviceDescriptorSetHostMappingFeaturesVALVEVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE62389     PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
62390       : PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( *reinterpret_cast<PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const *>( &rhs ) )
62391     {
62392     }
62393 
62394     PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE &
62395       operator=( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62396 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62397 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE62398     PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE & operator=( VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
62399     {
62400       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const *>( &rhs );
62401       return *this;
62402     }
62403 
62404 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE62405     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62406     {
62407       pNext = pNext_;
62408       return *this;
62409     }
62410 
62411     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE &
setDescriptorSetHostMappingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE62412       setDescriptorSetHostMapping( VULKAN_HPP_NAMESPACE::Bool32 descriptorSetHostMapping_ ) VULKAN_HPP_NOEXCEPT
62413     {
62414       descriptorSetHostMapping = descriptorSetHostMapping_;
62415       return *this;
62416     }
62417 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62418 
operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE62419     operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const &() const VULKAN_HPP_NOEXCEPT
62420     {
62421       return *reinterpret_cast<const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *>( this );
62422     }
62423 
operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE62424     operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE &() VULKAN_HPP_NOEXCEPT
62425     {
62426       return *reinterpret_cast<VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *>( this );
62427     }
62428 
62429 #if defined( VULKAN_HPP_USE_REFLECT )
62430 #  if 14 <= VULKAN_HPP_CPP_VERSION
62431     auto
62432 #  else
62433     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62434 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE62435       reflect() const VULKAN_HPP_NOEXCEPT
62436     {
62437       return std::tie( sType, pNext, descriptorSetHostMapping );
62438     }
62439 #endif
62440 
62441 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62442     auto operator<=>( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & ) const = default;
62443 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE62444     bool operator==( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
62445     {
62446 #  if defined( VULKAN_HPP_USE_REFLECT )
62447       return this->reflect() == rhs.reflect();
62448 #  else
62449       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSetHostMapping == rhs.descriptorSetHostMapping );
62450 #  endif
62451     }
62452 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE62453     bool operator!=( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
62454     {
62455       return !operator==( rhs );
62456     }
62457 #endif
62458 
62459   public:
62460     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
62461     void *                              pNext                    = {};
62462     VULKAN_HPP_NAMESPACE::Bool32        descriptorSetHostMapping = {};
62463   };
62464 
62465   template <>
62466   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>
62467   {
62468     using Type = PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
62469   };
62470 
62471   struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
62472   {
62473     using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
62474 
62475     static const bool                                  allowDuplicate = false;
62476     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
62477 
62478 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62479     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCompute_              = {},
62480                                                                                  VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedComputePipelines_     = {},
62481                                                                                  VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedComputeCaptureReplay_ = {},
62482                                                                                  void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
62483       : pNext{ pNext_ }
62484       , deviceGeneratedCompute{ deviceGeneratedCompute_ }
62485       , deviceGeneratedComputePipelines{ deviceGeneratedComputePipelines_ }
62486       , deviceGeneratedComputeCaptureReplay{ deviceGeneratedComputeCaptureReplay_ }
62487     {
62488     }
62489 
62490     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs )
62491       VULKAN_HPP_NOEXCEPT = default;
62492 
PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62493     PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62494       : PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const *>( &rhs ) )
62495     {
62496     }
62497 
62498     PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &
62499       operator=( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62500 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62501 
62502     PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62503       operator=( VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62504     {
62505       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const *>( &rhs );
62506       return *this;
62507     }
62508 
62509 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62510     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62511     {
62512       pNext = pNext_;
62513       return *this;
62514     }
62515 
62516     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &
setDeviceGeneratedComputeVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62517       setDeviceGeneratedCompute( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCompute_ ) VULKAN_HPP_NOEXCEPT
62518     {
62519       deviceGeneratedCompute = deviceGeneratedCompute_;
62520       return *this;
62521     }
62522 
62523     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &
setDeviceGeneratedComputePipelinesVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62524       setDeviceGeneratedComputePipelines( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedComputePipelines_ ) VULKAN_HPP_NOEXCEPT
62525     {
62526       deviceGeneratedComputePipelines = deviceGeneratedComputePipelines_;
62527       return *this;
62528     }
62529 
62530     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &
setDeviceGeneratedComputeCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62531       setDeviceGeneratedComputeCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedComputeCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
62532     {
62533       deviceGeneratedComputeCaptureReplay = deviceGeneratedComputeCaptureReplay_;
62534       return *this;
62535     }
62536 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62537 
operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62538     operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
62539     {
62540       return *reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV *>( this );
62541     }
62542 
operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62543     operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &() VULKAN_HPP_NOEXCEPT
62544     {
62545       return *reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV *>( this );
62546     }
62547 
62548 #if defined( VULKAN_HPP_USE_REFLECT )
62549 #  if 14 <= VULKAN_HPP_CPP_VERSION
62550     auto
62551 #  else
62552     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
62553                void * const &,
62554                VULKAN_HPP_NAMESPACE::Bool32 const &,
62555                VULKAN_HPP_NAMESPACE::Bool32 const &,
62556                VULKAN_HPP_NAMESPACE::Bool32 const &>
62557 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62558       reflect() const VULKAN_HPP_NOEXCEPT
62559     {
62560       return std::tie( sType, pNext, deviceGeneratedCompute, deviceGeneratedComputePipelines, deviceGeneratedComputeCaptureReplay );
62561     }
62562 #endif
62563 
62564 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62565     auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & ) const = default;
62566 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62567     bool operator==( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62568     {
62569 #  if defined( VULKAN_HPP_USE_REFLECT )
62570       return this->reflect() == rhs.reflect();
62571 #  else
62572       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceGeneratedCompute == rhs.deviceGeneratedCompute ) &&
62573              ( deviceGeneratedComputePipelines == rhs.deviceGeneratedComputePipelines ) &&
62574              ( deviceGeneratedComputeCaptureReplay == rhs.deviceGeneratedComputeCaptureReplay );
62575 #  endif
62576     }
62577 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62578     bool operator!=( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62579     {
62580       return !operator==( rhs );
62581     }
62582 #endif
62583 
62584   public:
62585     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::ePhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
62586     void *                              pNext                               = {};
62587     VULKAN_HPP_NAMESPACE::Bool32        deviceGeneratedCompute              = {};
62588     VULKAN_HPP_NAMESPACE::Bool32        deviceGeneratedComputePipelines     = {};
62589     VULKAN_HPP_NAMESPACE::Bool32        deviceGeneratedComputeCaptureReplay = {};
62590   };
62591 
62592   template <>
62593   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV>
62594   {
62595     using Type = PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
62596   };
62597 
62598   struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
62599   {
62600     using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
62601 
62602     static const bool                                  allowDuplicate = false;
62603     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
62604 
62605 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceGeneratedCommandsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62606     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ = {},
62607                                                                           void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
62608       : pNext{ pNext_ }
62609       , deviceGeneratedCommands{ deviceGeneratedCommands_ }
62610     {
62611     }
62612 
62613     VULKAN_HPP_CONSTEXPR
62614       PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62615 
PhysicalDeviceDeviceGeneratedCommandsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62616     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62617       : PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *>( &rhs ) )
62618     {
62619     }
62620 
62621     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62622 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62623 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62624     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62625     {
62626       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *>( &rhs );
62627       return *this;
62628     }
62629 
62630 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62631     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62632     {
62633       pNext = pNext_;
62634       return *this;
62635     }
62636 
62637     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV &
setDeviceGeneratedCommandsVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62638       setDeviceGeneratedCommands( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ ) VULKAN_HPP_NOEXCEPT
62639     {
62640       deviceGeneratedCommands = deviceGeneratedCommands_;
62641       return *this;
62642     }
62643 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62644 
operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62645     operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
62646     {
62647       return *reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *>( this );
62648     }
62649 
operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62650     operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV &() VULKAN_HPP_NOEXCEPT
62651     {
62652       return *reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *>( this );
62653     }
62654 
62655 #if defined( VULKAN_HPP_USE_REFLECT )
62656 #  if 14 <= VULKAN_HPP_CPP_VERSION
62657     auto
62658 #  else
62659     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62660 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62661       reflect() const VULKAN_HPP_NOEXCEPT
62662     {
62663       return std::tie( sType, pNext, deviceGeneratedCommands );
62664     }
62665 #endif
62666 
62667 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62668     auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & ) const = default;
62669 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62670     bool operator==( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62671     {
62672 #  if defined( VULKAN_HPP_USE_REFLECT )
62673       return this->reflect() == rhs.reflect();
62674 #  else
62675       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceGeneratedCommands == rhs.deviceGeneratedCommands );
62676 #  endif
62677     }
62678 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62679     bool operator!=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62680     {
62681       return !operator==( rhs );
62682     }
62683 #endif
62684 
62685   public:
62686     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
62687     void *                              pNext                   = {};
62688     VULKAN_HPP_NAMESPACE::Bool32        deviceGeneratedCommands = {};
62689   };
62690 
62691   template <>
62692   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV>
62693   {
62694     using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
62695   };
62696 
62697   struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
62698   {
62699     using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
62700 
62701     static const bool                                  allowDuplicate = false;
62702     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
62703 
62704 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceGeneratedCommandsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62705     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( uint32_t maxGraphicsShaderGroupCount_              = {},
62706                                                                             uint32_t maxIndirectSequenceCount_                 = {},
62707                                                                             uint32_t maxIndirectCommandsTokenCount_            = {},
62708                                                                             uint32_t maxIndirectCommandsStreamCount_           = {},
62709                                                                             uint32_t maxIndirectCommandsTokenOffset_           = {},
62710                                                                             uint32_t maxIndirectCommandsStreamStride_          = {},
62711                                                                             uint32_t minSequencesCountBufferOffsetAlignment_   = {},
62712                                                                             uint32_t minSequencesIndexBufferOffsetAlignment_   = {},
62713                                                                             uint32_t minIndirectCommandsBufferOffsetAlignment_ = {},
62714                                                                             void *   pNext_                                    = nullptr ) VULKAN_HPP_NOEXCEPT
62715       : pNext{ pNext_ }
62716       , maxGraphicsShaderGroupCount{ maxGraphicsShaderGroupCount_ }
62717       , maxIndirectSequenceCount{ maxIndirectSequenceCount_ }
62718       , maxIndirectCommandsTokenCount{ maxIndirectCommandsTokenCount_ }
62719       , maxIndirectCommandsStreamCount{ maxIndirectCommandsStreamCount_ }
62720       , maxIndirectCommandsTokenOffset{ maxIndirectCommandsTokenOffset_ }
62721       , maxIndirectCommandsStreamStride{ maxIndirectCommandsStreamStride_ }
62722       , minSequencesCountBufferOffsetAlignment{ minSequencesCountBufferOffsetAlignment_ }
62723       , minSequencesIndexBufferOffsetAlignment{ minSequencesIndexBufferOffsetAlignment_ }
62724       , minIndirectCommandsBufferOffsetAlignment{ minIndirectCommandsBufferOffsetAlignment_ }
62725     {
62726     }
62727 
62728     VULKAN_HPP_CONSTEXPR
62729       PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62730 
PhysicalDeviceDeviceGeneratedCommandsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62731     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62732       : PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *>( &rhs ) )
62733     {
62734     }
62735 
62736     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV &
62737       operator=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62738 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62739 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62740     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV & operator=( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62741     {
62742       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *>( &rhs );
62743       return *this;
62744     }
62745 
operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62746     operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
62747     {
62748       return *reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV *>( this );
62749     }
62750 
operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62751     operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV &() VULKAN_HPP_NOEXCEPT
62752     {
62753       return *reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV *>( this );
62754     }
62755 
62756 #if defined( VULKAN_HPP_USE_REFLECT )
62757 #  if 14 <= VULKAN_HPP_CPP_VERSION
62758     auto
62759 #  else
62760     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
62761                void * const &,
62762                uint32_t const &,
62763                uint32_t const &,
62764                uint32_t const &,
62765                uint32_t const &,
62766                uint32_t const &,
62767                uint32_t const &,
62768                uint32_t const &,
62769                uint32_t const &,
62770                uint32_t const &>
62771 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62772       reflect() const VULKAN_HPP_NOEXCEPT
62773     {
62774       return std::tie( sType,
62775                        pNext,
62776                        maxGraphicsShaderGroupCount,
62777                        maxIndirectSequenceCount,
62778                        maxIndirectCommandsTokenCount,
62779                        maxIndirectCommandsStreamCount,
62780                        maxIndirectCommandsTokenOffset,
62781                        maxIndirectCommandsStreamStride,
62782                        minSequencesCountBufferOffsetAlignment,
62783                        minSequencesIndexBufferOffsetAlignment,
62784                        minIndirectCommandsBufferOffsetAlignment );
62785     }
62786 #endif
62787 
62788 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62789     auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & ) const = default;
62790 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62791     bool operator==( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62792     {
62793 #  if defined( VULKAN_HPP_USE_REFLECT )
62794       return this->reflect() == rhs.reflect();
62795 #  else
62796       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxGraphicsShaderGroupCount == rhs.maxGraphicsShaderGroupCount ) &&
62797              ( maxIndirectSequenceCount == rhs.maxIndirectSequenceCount ) && ( maxIndirectCommandsTokenCount == rhs.maxIndirectCommandsTokenCount ) &&
62798              ( maxIndirectCommandsStreamCount == rhs.maxIndirectCommandsStreamCount ) &&
62799              ( maxIndirectCommandsTokenOffset == rhs.maxIndirectCommandsTokenOffset ) &&
62800              ( maxIndirectCommandsStreamStride == rhs.maxIndirectCommandsStreamStride ) &&
62801              ( minSequencesCountBufferOffsetAlignment == rhs.minSequencesCountBufferOffsetAlignment ) &&
62802              ( minSequencesIndexBufferOffsetAlignment == rhs.minSequencesIndexBufferOffsetAlignment ) &&
62803              ( minIndirectCommandsBufferOffsetAlignment == rhs.minIndirectCommandsBufferOffsetAlignment );
62804 #  endif
62805     }
62806 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62807     bool operator!=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62808     {
62809       return !operator==( rhs );
62810     }
62811 #endif
62812 
62813   public:
62814     VULKAN_HPP_NAMESPACE::StructureType sType                                    = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
62815     void *                              pNext                                    = {};
62816     uint32_t                            maxGraphicsShaderGroupCount              = {};
62817     uint32_t                            maxIndirectSequenceCount                 = {};
62818     uint32_t                            maxIndirectCommandsTokenCount            = {};
62819     uint32_t                            maxIndirectCommandsStreamCount           = {};
62820     uint32_t                            maxIndirectCommandsTokenOffset           = {};
62821     uint32_t                            maxIndirectCommandsStreamStride          = {};
62822     uint32_t                            minSequencesCountBufferOffsetAlignment   = {};
62823     uint32_t                            minSequencesIndexBufferOffsetAlignment   = {};
62824     uint32_t                            minIndirectCommandsBufferOffsetAlignment = {};
62825   };
62826 
62827   template <>
62828   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV>
62829   {
62830     using Type = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
62831   };
62832 
62833   struct PhysicalDeviceDeviceMemoryReportFeaturesEXT
62834   {
62835     using NativeType = VkPhysicalDeviceDeviceMemoryReportFeaturesEXT;
62836 
62837     static const bool                                  allowDuplicate = false;
62838     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT;
62839 
62840 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceMemoryReportFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62841     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport_ = {},
62842                                                                       void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
62843       : pNext{ pNext_ }
62844       , deviceMemoryReport{ deviceMemoryReport_ }
62845     {
62846     }
62847 
62848     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62849 
PhysicalDeviceDeviceMemoryReportFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62850     PhysicalDeviceDeviceMemoryReportFeaturesEXT( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62851       : PhysicalDeviceDeviceMemoryReportFeaturesEXT( *reinterpret_cast<PhysicalDeviceDeviceMemoryReportFeaturesEXT const *>( &rhs ) )
62852     {
62853     }
62854 
62855     PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62856 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62857 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62858     PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62859     {
62860       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT const *>( &rhs );
62861       return *this;
62862     }
62863 
62864 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62865     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62866     {
62867       pNext = pNext_;
62868       return *this;
62869     }
62870 
62871     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT &
setDeviceMemoryReportVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62872       setDeviceMemoryReport( VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport_ ) VULKAN_HPP_NOEXCEPT
62873     {
62874       deviceMemoryReport = deviceMemoryReport_;
62875       return *this;
62876     }
62877 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62878 
operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62879     operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
62880     {
62881       return *reinterpret_cast<const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT *>( this );
62882     }
62883 
operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62884     operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT &() VULKAN_HPP_NOEXCEPT
62885     {
62886       return *reinterpret_cast<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT *>( this );
62887     }
62888 
62889 #if defined( VULKAN_HPP_USE_REFLECT )
62890 #  if 14 <= VULKAN_HPP_CPP_VERSION
62891     auto
62892 #  else
62893     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62894 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62895       reflect() const VULKAN_HPP_NOEXCEPT
62896     {
62897       return std::tie( sType, pNext, deviceMemoryReport );
62898     }
62899 #endif
62900 
62901 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62902     auto operator<=>( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & ) const = default;
62903 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62904     bool operator==( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62905     {
62906 #  if defined( VULKAN_HPP_USE_REFLECT )
62907       return this->reflect() == rhs.reflect();
62908 #  else
62909       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMemoryReport == rhs.deviceMemoryReport );
62910 #  endif
62911     }
62912 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62913     bool operator!=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62914     {
62915       return !operator==( rhs );
62916     }
62917 #endif
62918 
62919   public:
62920     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT;
62921     void *                              pNext              = {};
62922     VULKAN_HPP_NAMESPACE::Bool32        deviceMemoryReport = {};
62923   };
62924 
62925   template <>
62926   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT>
62927   {
62928     using Type = PhysicalDeviceDeviceMemoryReportFeaturesEXT;
62929   };
62930 
62931   struct PhysicalDeviceDiagnosticsConfigFeaturesNV
62932   {
62933     using NativeType = VkPhysicalDeviceDiagnosticsConfigFeaturesNV;
62934 
62935     static const bool                                  allowDuplicate = false;
62936     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV;
62937 
62938 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDiagnosticsConfigFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62939     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig_ = {},
62940                                                                     void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
62941       : pNext{ pNext_ }
62942       , diagnosticsConfig{ diagnosticsConfig_ }
62943     {
62944     }
62945 
62946     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62947 
PhysicalDeviceDiagnosticsConfigFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62948     PhysicalDeviceDiagnosticsConfigFeaturesNV( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62949       : PhysicalDeviceDiagnosticsConfigFeaturesNV( *reinterpret_cast<PhysicalDeviceDiagnosticsConfigFeaturesNV const *>( &rhs ) )
62950     {
62951     }
62952 
62953     PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62954 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62955 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62956     PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62957     {
62958       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV const *>( &rhs );
62959       return *this;
62960     }
62961 
62962 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62963     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62964     {
62965       pNext = pNext_;
62966       return *this;
62967     }
62968 
62969     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV &
setDiagnosticsConfigVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62970       setDiagnosticsConfig( VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig_ ) VULKAN_HPP_NOEXCEPT
62971     {
62972       diagnosticsConfig = diagnosticsConfig_;
62973       return *this;
62974     }
62975 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62976 
operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62977     operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
62978     {
62979       return *reinterpret_cast<const VkPhysicalDeviceDiagnosticsConfigFeaturesNV *>( this );
62980     }
62981 
operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62982     operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV &() VULKAN_HPP_NOEXCEPT
62983     {
62984       return *reinterpret_cast<VkPhysicalDeviceDiagnosticsConfigFeaturesNV *>( this );
62985     }
62986 
62987 #if defined( VULKAN_HPP_USE_REFLECT )
62988 #  if 14 <= VULKAN_HPP_CPP_VERSION
62989     auto
62990 #  else
62991     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62992 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62993       reflect() const VULKAN_HPP_NOEXCEPT
62994     {
62995       return std::tie( sType, pNext, diagnosticsConfig );
62996     }
62997 #endif
62998 
62999 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63000     auto operator<=>( PhysicalDeviceDiagnosticsConfigFeaturesNV const & ) const = default;
63001 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV63002     bool operator==( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
63003     {
63004 #  if defined( VULKAN_HPP_USE_REFLECT )
63005       return this->reflect() == rhs.reflect();
63006 #  else
63007       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( diagnosticsConfig == rhs.diagnosticsConfig );
63008 #  endif
63009     }
63010 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV63011     bool operator!=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
63012     {
63013       return !operator==( rhs );
63014     }
63015 #endif
63016 
63017   public:
63018     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV;
63019     void *                              pNext             = {};
63020     VULKAN_HPP_NAMESPACE::Bool32        diagnosticsConfig = {};
63021   };
63022 
63023   template <>
63024   struct CppType<StructureType, StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV>
63025   {
63026     using Type = PhysicalDeviceDiagnosticsConfigFeaturesNV;
63027   };
63028 
63029   struct PhysicalDeviceDiscardRectanglePropertiesEXT
63030   {
63031     using NativeType = VkPhysicalDeviceDiscardRectanglePropertiesEXT;
63032 
63033     static const bool                                  allowDuplicate = false;
63034     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
63035 
63036 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDiscardRectanglePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT63037     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
63038       : pNext{ pNext_ }
63039       , maxDiscardRectangles{ maxDiscardRectangles_ }
63040     {
63041     }
63042 
63043     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63044 
PhysicalDeviceDiscardRectanglePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT63045     PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63046       : PhysicalDeviceDiscardRectanglePropertiesEXT( *reinterpret_cast<PhysicalDeviceDiscardRectanglePropertiesEXT const *>( &rhs ) )
63047     {
63048     }
63049 
63050     PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63051 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63052 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT63053     PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63054     {
63055       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT const *>( &rhs );
63056       return *this;
63057     }
63058 
operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT63059     operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
63060     {
63061       return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT *>( this );
63062     }
63063 
operator VkPhysicalDeviceDiscardRectanglePropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT63064     operator VkPhysicalDeviceDiscardRectanglePropertiesEXT &() VULKAN_HPP_NOEXCEPT
63065     {
63066       return *reinterpret_cast<VkPhysicalDeviceDiscardRectanglePropertiesEXT *>( this );
63067     }
63068 
63069 #if defined( VULKAN_HPP_USE_REFLECT )
63070 #  if 14 <= VULKAN_HPP_CPP_VERSION
63071     auto
63072 #  else
63073     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
63074 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT63075       reflect() const VULKAN_HPP_NOEXCEPT
63076     {
63077       return std::tie( sType, pNext, maxDiscardRectangles );
63078     }
63079 #endif
63080 
63081 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63082     auto operator<=>( PhysicalDeviceDiscardRectanglePropertiesEXT const & ) const = default;
63083 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT63084     bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63085     {
63086 #  if defined( VULKAN_HPP_USE_REFLECT )
63087       return this->reflect() == rhs.reflect();
63088 #  else
63089       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
63090 #  endif
63091     }
63092 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT63093     bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63094     {
63095       return !operator==( rhs );
63096     }
63097 #endif
63098 
63099   public:
63100     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
63101     void *                              pNext                = {};
63102     uint32_t                            maxDiscardRectangles = {};
63103   };
63104 
63105   template <>
63106   struct CppType<StructureType, StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT>
63107   {
63108     using Type = PhysicalDeviceDiscardRectanglePropertiesEXT;
63109   };
63110 
63111 #if defined( VK_ENABLE_BETA_EXTENSIONS )
63112   struct PhysicalDeviceDisplacementMicromapFeaturesNV
63113   {
63114     using NativeType = VkPhysicalDeviceDisplacementMicromapFeaturesNV;
63115 
63116     static const bool                                  allowDuplicate = false;
63117     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDisplacementMicromapFeaturesNV;
63118 
63119 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDisplacementMicromapFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV63120     VULKAN_HPP_CONSTEXPR PhysicalDeviceDisplacementMicromapFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 displacementMicromap_ = {},
63121                                                                        void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
63122       : pNext{ pNext_ }
63123       , displacementMicromap{ displacementMicromap_ }
63124     {
63125     }
63126 
63127     VULKAN_HPP_CONSTEXPR PhysicalDeviceDisplacementMicromapFeaturesNV( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63128 
PhysicalDeviceDisplacementMicromapFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV63129     PhysicalDeviceDisplacementMicromapFeaturesNV( VkPhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
63130       : PhysicalDeviceDisplacementMicromapFeaturesNV( *reinterpret_cast<PhysicalDeviceDisplacementMicromapFeaturesNV const *>( &rhs ) )
63131     {
63132     }
63133 
63134     PhysicalDeviceDisplacementMicromapFeaturesNV & operator=( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63135 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63136 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV63137     PhysicalDeviceDisplacementMicromapFeaturesNV & operator=( VkPhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
63138     {
63139       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV const *>( &rhs );
63140       return *this;
63141     }
63142 
63143 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV63144     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDisplacementMicromapFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63145     {
63146       pNext = pNext_;
63147       return *this;
63148     }
63149 
63150     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDisplacementMicromapFeaturesNV &
setDisplacementMicromapVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV63151       setDisplacementMicromap( VULKAN_HPP_NAMESPACE::Bool32 displacementMicromap_ ) VULKAN_HPP_NOEXCEPT
63152     {
63153       displacementMicromap = displacementMicromap_;
63154       return *this;
63155     }
63156 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63157 
operator VkPhysicalDeviceDisplacementMicromapFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV63158     operator VkPhysicalDeviceDisplacementMicromapFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
63159     {
63160       return *reinterpret_cast<const VkPhysicalDeviceDisplacementMicromapFeaturesNV *>( this );
63161     }
63162 
operator VkPhysicalDeviceDisplacementMicromapFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV63163     operator VkPhysicalDeviceDisplacementMicromapFeaturesNV &() VULKAN_HPP_NOEXCEPT
63164     {
63165       return *reinterpret_cast<VkPhysicalDeviceDisplacementMicromapFeaturesNV *>( this );
63166     }
63167 
63168 #  if defined( VULKAN_HPP_USE_REFLECT )
63169 #    if 14 <= VULKAN_HPP_CPP_VERSION
63170     auto
63171 #    else
63172     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63173 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV63174       reflect() const VULKAN_HPP_NOEXCEPT
63175     {
63176       return std::tie( sType, pNext, displacementMicromap );
63177     }
63178 #  endif
63179 
63180 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63181     auto operator<=>( PhysicalDeviceDisplacementMicromapFeaturesNV const & ) const = default;
63182 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV63183     bool operator==( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
63184     {
63185 #    if defined( VULKAN_HPP_USE_REFLECT )
63186       return this->reflect() == rhs.reflect();
63187 #    else
63188       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displacementMicromap == rhs.displacementMicromap );
63189 #    endif
63190     }
63191 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV63192     bool operator!=( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
63193     {
63194       return !operator==( rhs );
63195     }
63196 #  endif
63197 
63198   public:
63199     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceDisplacementMicromapFeaturesNV;
63200     void *                              pNext                = {};
63201     VULKAN_HPP_NAMESPACE::Bool32        displacementMicromap = {};
63202   };
63203 
63204   template <>
63205   struct CppType<StructureType, StructureType::ePhysicalDeviceDisplacementMicromapFeaturesNV>
63206   {
63207     using Type = PhysicalDeviceDisplacementMicromapFeaturesNV;
63208   };
63209 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
63210 
63211 #if defined( VK_ENABLE_BETA_EXTENSIONS )
63212   struct PhysicalDeviceDisplacementMicromapPropertiesNV
63213   {
63214     using NativeType = VkPhysicalDeviceDisplacementMicromapPropertiesNV;
63215 
63216     static const bool                                  allowDuplicate = false;
63217     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDisplacementMicromapPropertiesNV;
63218 
63219 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDisplacementMicromapPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV63220     VULKAN_HPP_CONSTEXPR PhysicalDeviceDisplacementMicromapPropertiesNV( uint32_t maxDisplacementMicromapSubdivisionLevel_ = {},
63221                                                                          void *   pNext_                                   = nullptr ) VULKAN_HPP_NOEXCEPT
63222       : pNext{ pNext_ }
63223       , maxDisplacementMicromapSubdivisionLevel{ maxDisplacementMicromapSubdivisionLevel_ }
63224     {
63225     }
63226 
63227     VULKAN_HPP_CONSTEXPR
63228       PhysicalDeviceDisplacementMicromapPropertiesNV( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63229 
PhysicalDeviceDisplacementMicromapPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV63230     PhysicalDeviceDisplacementMicromapPropertiesNV( VkPhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
63231       : PhysicalDeviceDisplacementMicromapPropertiesNV( *reinterpret_cast<PhysicalDeviceDisplacementMicromapPropertiesNV const *>( &rhs ) )
63232     {
63233     }
63234 
63235     PhysicalDeviceDisplacementMicromapPropertiesNV & operator=( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63236 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63237 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV63238     PhysicalDeviceDisplacementMicromapPropertiesNV & operator=( VkPhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
63239     {
63240       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV const *>( &rhs );
63241       return *this;
63242     }
63243 
operator VkPhysicalDeviceDisplacementMicromapPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV63244     operator VkPhysicalDeviceDisplacementMicromapPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
63245     {
63246       return *reinterpret_cast<const VkPhysicalDeviceDisplacementMicromapPropertiesNV *>( this );
63247     }
63248 
operator VkPhysicalDeviceDisplacementMicromapPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV63249     operator VkPhysicalDeviceDisplacementMicromapPropertiesNV &() VULKAN_HPP_NOEXCEPT
63250     {
63251       return *reinterpret_cast<VkPhysicalDeviceDisplacementMicromapPropertiesNV *>( this );
63252     }
63253 
63254 #  if defined( VULKAN_HPP_USE_REFLECT )
63255 #    if 14 <= VULKAN_HPP_CPP_VERSION
63256     auto
63257 #    else
63258     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
63259 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV63260       reflect() const VULKAN_HPP_NOEXCEPT
63261     {
63262       return std::tie( sType, pNext, maxDisplacementMicromapSubdivisionLevel );
63263     }
63264 #  endif
63265 
63266 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63267     auto operator<=>( PhysicalDeviceDisplacementMicromapPropertiesNV const & ) const = default;
63268 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV63269     bool operator==( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
63270     {
63271 #    if defined( VULKAN_HPP_USE_REFLECT )
63272       return this->reflect() == rhs.reflect();
63273 #    else
63274       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDisplacementMicromapSubdivisionLevel == rhs.maxDisplacementMicromapSubdivisionLevel );
63275 #    endif
63276     }
63277 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV63278     bool operator!=( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
63279     {
63280       return !operator==( rhs );
63281     }
63282 #  endif
63283 
63284   public:
63285     VULKAN_HPP_NAMESPACE::StructureType sType                                   = StructureType::ePhysicalDeviceDisplacementMicromapPropertiesNV;
63286     void *                              pNext                                   = {};
63287     uint32_t                            maxDisplacementMicromapSubdivisionLevel = {};
63288   };
63289 
63290   template <>
63291   struct CppType<StructureType, StructureType::ePhysicalDeviceDisplacementMicromapPropertiesNV>
63292   {
63293     using Type = PhysicalDeviceDisplacementMicromapPropertiesNV;
63294   };
63295 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
63296 
63297   struct PhysicalDeviceDriverProperties
63298   {
63299     using NativeType = VkPhysicalDeviceDriverProperties;
63300 
63301     static const bool                                  allowDuplicate = false;
63302     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDriverProperties;
63303 
63304 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDriverPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties63305     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties( VULKAN_HPP_NAMESPACE::DriverId driverID_ = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary,
63306                                                             std::array<char, VK_MAX_DRIVER_NAME_SIZE> const & driverName_         = {},
63307                                                             std::array<char, VK_MAX_DRIVER_INFO_SIZE> const & driverInfo_         = {},
63308                                                             VULKAN_HPP_NAMESPACE::ConformanceVersion          conformanceVersion_ = {},
63309                                                             void *                                            pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
63310       : pNext{ pNext_ }
63311       , driverID{ driverID_ }
63312       , driverName{ driverName_ }
63313       , driverInfo{ driverInfo_ }
63314       , conformanceVersion{ conformanceVersion_ }
63315     {
63316     }
63317 
63318     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63319 
PhysicalDeviceDriverPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties63320     PhysicalDeviceDriverProperties( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
63321       : PhysicalDeviceDriverProperties( *reinterpret_cast<PhysicalDeviceDriverProperties const *>( &rhs ) )
63322     {
63323     }
63324 
63325     PhysicalDeviceDriverProperties & operator=( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63326 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63327 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties63328     PhysicalDeviceDriverProperties & operator=( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
63329     {
63330       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties const *>( &rhs );
63331       return *this;
63332     }
63333 
operator VkPhysicalDeviceDriverProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties63334     operator VkPhysicalDeviceDriverProperties const &() const VULKAN_HPP_NOEXCEPT
63335     {
63336       return *reinterpret_cast<const VkPhysicalDeviceDriverProperties *>( this );
63337     }
63338 
operator VkPhysicalDeviceDriverProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties63339     operator VkPhysicalDeviceDriverProperties &() VULKAN_HPP_NOEXCEPT
63340     {
63341       return *reinterpret_cast<VkPhysicalDeviceDriverProperties *>( this );
63342     }
63343 
63344 #if defined( VULKAN_HPP_USE_REFLECT )
63345 #  if 14 <= VULKAN_HPP_CPP_VERSION
63346     auto
63347 #  else
63348     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
63349                void * const &,
63350                VULKAN_HPP_NAMESPACE::DriverId const &,
63351                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> const &,
63352                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> const &,
63353                VULKAN_HPP_NAMESPACE::ConformanceVersion const &>
63354 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties63355       reflect() const VULKAN_HPP_NOEXCEPT
63356     {
63357       return std::tie( sType, pNext, driverID, driverName, driverInfo, conformanceVersion );
63358     }
63359 #endif
63360 
63361 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties63362     std::strong_ordering operator<=>( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
63363     {
63364       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
63365         return cmp;
63366       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
63367         return cmp;
63368       if ( auto cmp = driverID <=> rhs.driverID; cmp != 0 )
63369         return cmp;
63370       if ( auto cmp = strcmp( driverName, rhs.driverName ); cmp != 0 )
63371         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
63372       if ( auto cmp = strcmp( driverInfo, rhs.driverInfo ); cmp != 0 )
63373         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
63374       if ( auto cmp = conformanceVersion <=> rhs.conformanceVersion; cmp != 0 )
63375         return cmp;
63376 
63377       return std::strong_ordering::equivalent;
63378     }
63379 #endif
63380 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties63381     bool operator==( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
63382     {
63383       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( driverID == rhs.driverID ) && ( strcmp( driverName, rhs.driverName ) == 0 ) &&
63384              ( strcmp( driverInfo, rhs.driverInfo ) == 0 ) && ( conformanceVersion == rhs.conformanceVersion );
63385     }
63386 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties63387     bool operator!=( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
63388     {
63389       return !operator==( rhs );
63390     }
63391 
63392   public:
63393     VULKAN_HPP_NAMESPACE::StructureType                                 sType              = StructureType::ePhysicalDeviceDriverProperties;
63394     void *                                                              pNext              = {};
63395     VULKAN_HPP_NAMESPACE::DriverId                                      driverID           = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary;
63396     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> driverName         = {};
63397     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> driverInfo         = {};
63398     VULKAN_HPP_NAMESPACE::ConformanceVersion                            conformanceVersion = {};
63399   };
63400 
63401   template <>
63402   struct CppType<StructureType, StructureType::ePhysicalDeviceDriverProperties>
63403   {
63404     using Type = PhysicalDeviceDriverProperties;
63405   };
63406 
63407   using PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
63408 
63409   struct PhysicalDeviceDrmPropertiesEXT
63410   {
63411     using NativeType = VkPhysicalDeviceDrmPropertiesEXT;
63412 
63413     static const bool                                  allowDuplicate = false;
63414     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDrmPropertiesEXT;
63415 
63416 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDrmPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT63417     VULKAN_HPP_CONSTEXPR PhysicalDeviceDrmPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 hasPrimary_   = {},
63418                                                          VULKAN_HPP_NAMESPACE::Bool32 hasRender_    = {},
63419                                                          int64_t                      primaryMajor_ = {},
63420                                                          int64_t                      primaryMinor_ = {},
63421                                                          int64_t                      renderMajor_  = {},
63422                                                          int64_t                      renderMinor_  = {},
63423                                                          void *                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
63424       : pNext{ pNext_ }
63425       , hasPrimary{ hasPrimary_ }
63426       , hasRender{ hasRender_ }
63427       , primaryMajor{ primaryMajor_ }
63428       , primaryMinor{ primaryMinor_ }
63429       , renderMajor{ renderMajor_ }
63430       , renderMinor{ renderMinor_ }
63431     {
63432     }
63433 
63434     VULKAN_HPP_CONSTEXPR PhysicalDeviceDrmPropertiesEXT( PhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63435 
PhysicalDeviceDrmPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT63436     PhysicalDeviceDrmPropertiesEXT( VkPhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63437       : PhysicalDeviceDrmPropertiesEXT( *reinterpret_cast<PhysicalDeviceDrmPropertiesEXT const *>( &rhs ) )
63438     {
63439     }
63440 
63441     PhysicalDeviceDrmPropertiesEXT & operator=( PhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63442 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63443 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT63444     PhysicalDeviceDrmPropertiesEXT & operator=( VkPhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63445     {
63446       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT const *>( &rhs );
63447       return *this;
63448     }
63449 
operator VkPhysicalDeviceDrmPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT63450     operator VkPhysicalDeviceDrmPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
63451     {
63452       return *reinterpret_cast<const VkPhysicalDeviceDrmPropertiesEXT *>( this );
63453     }
63454 
operator VkPhysicalDeviceDrmPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT63455     operator VkPhysicalDeviceDrmPropertiesEXT &() VULKAN_HPP_NOEXCEPT
63456     {
63457       return *reinterpret_cast<VkPhysicalDeviceDrmPropertiesEXT *>( this );
63458     }
63459 
63460 #if defined( VULKAN_HPP_USE_REFLECT )
63461 #  if 14 <= VULKAN_HPP_CPP_VERSION
63462     auto
63463 #  else
63464     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
63465                void * const &,
63466                VULKAN_HPP_NAMESPACE::Bool32 const &,
63467                VULKAN_HPP_NAMESPACE::Bool32 const &,
63468                int64_t const &,
63469                int64_t const &,
63470                int64_t const &,
63471                int64_t const &>
63472 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT63473       reflect() const VULKAN_HPP_NOEXCEPT
63474     {
63475       return std::tie( sType, pNext, hasPrimary, hasRender, primaryMajor, primaryMinor, renderMajor, renderMinor );
63476     }
63477 #endif
63478 
63479 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63480     auto operator<=>( PhysicalDeviceDrmPropertiesEXT const & ) const = default;
63481 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT63482     bool operator==( PhysicalDeviceDrmPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63483     {
63484 #  if defined( VULKAN_HPP_USE_REFLECT )
63485       return this->reflect() == rhs.reflect();
63486 #  else
63487       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasPrimary == rhs.hasPrimary ) && ( hasRender == rhs.hasRender ) &&
63488              ( primaryMajor == rhs.primaryMajor ) && ( primaryMinor == rhs.primaryMinor ) && ( renderMajor == rhs.renderMajor ) &&
63489              ( renderMinor == rhs.renderMinor );
63490 #  endif
63491     }
63492 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT63493     bool operator!=( PhysicalDeviceDrmPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63494     {
63495       return !operator==( rhs );
63496     }
63497 #endif
63498 
63499   public:
63500     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceDrmPropertiesEXT;
63501     void *                              pNext        = {};
63502     VULKAN_HPP_NAMESPACE::Bool32        hasPrimary   = {};
63503     VULKAN_HPP_NAMESPACE::Bool32        hasRender    = {};
63504     int64_t                             primaryMajor = {};
63505     int64_t                             primaryMinor = {};
63506     int64_t                             renderMajor  = {};
63507     int64_t                             renderMinor  = {};
63508   };
63509 
63510   template <>
63511   struct CppType<StructureType, StructureType::ePhysicalDeviceDrmPropertiesEXT>
63512   {
63513     using Type = PhysicalDeviceDrmPropertiesEXT;
63514   };
63515 
63516   struct PhysicalDeviceDynamicRenderingFeatures
63517   {
63518     using NativeType = VkPhysicalDeviceDynamicRenderingFeatures;
63519 
63520     static const bool                                  allowDuplicate = false;
63521     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDynamicRenderingFeatures;
63522 
63523 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDynamicRenderingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63524     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeatures( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ = {},
63525                                                                  void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
63526       : pNext{ pNext_ }
63527       , dynamicRendering{ dynamicRendering_ }
63528     {
63529     }
63530 
63531     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeatures( PhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63532 
PhysicalDeviceDynamicRenderingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63533     PhysicalDeviceDynamicRenderingFeatures( VkPhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
63534       : PhysicalDeviceDynamicRenderingFeatures( *reinterpret_cast<PhysicalDeviceDynamicRenderingFeatures const *>( &rhs ) )
63535     {
63536     }
63537 
63538     PhysicalDeviceDynamicRenderingFeatures & operator=( PhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63539 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63540 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63541     PhysicalDeviceDynamicRenderingFeatures & operator=( VkPhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
63542     {
63543       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures const *>( &rhs );
63544       return *this;
63545     }
63546 
63547 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63548     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63549     {
63550       pNext = pNext_;
63551       return *this;
63552     }
63553 
setDynamicRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63554     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures & setDynamicRendering( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ ) VULKAN_HPP_NOEXCEPT
63555     {
63556       dynamicRendering = dynamicRendering_;
63557       return *this;
63558     }
63559 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63560 
operator VkPhysicalDeviceDynamicRenderingFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63561     operator VkPhysicalDeviceDynamicRenderingFeatures const &() const VULKAN_HPP_NOEXCEPT
63562     {
63563       return *reinterpret_cast<const VkPhysicalDeviceDynamicRenderingFeatures *>( this );
63564     }
63565 
operator VkPhysicalDeviceDynamicRenderingFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63566     operator VkPhysicalDeviceDynamicRenderingFeatures &() VULKAN_HPP_NOEXCEPT
63567     {
63568       return *reinterpret_cast<VkPhysicalDeviceDynamicRenderingFeatures *>( this );
63569     }
63570 
63571 #if defined( VULKAN_HPP_USE_REFLECT )
63572 #  if 14 <= VULKAN_HPP_CPP_VERSION
63573     auto
63574 #  else
63575     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63576 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63577       reflect() const VULKAN_HPP_NOEXCEPT
63578     {
63579       return std::tie( sType, pNext, dynamicRendering );
63580     }
63581 #endif
63582 
63583 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63584     auto operator<=>( PhysicalDeviceDynamicRenderingFeatures const & ) const = default;
63585 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63586     bool operator==( PhysicalDeviceDynamicRenderingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63587     {
63588 #  if defined( VULKAN_HPP_USE_REFLECT )
63589       return this->reflect() == rhs.reflect();
63590 #  else
63591       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicRendering == rhs.dynamicRendering );
63592 #  endif
63593     }
63594 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63595     bool operator!=( PhysicalDeviceDynamicRenderingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63596     {
63597       return !operator==( rhs );
63598     }
63599 #endif
63600 
63601   public:
63602     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceDynamicRenderingFeatures;
63603     void *                              pNext            = {};
63604     VULKAN_HPP_NAMESPACE::Bool32        dynamicRendering = {};
63605   };
63606 
63607   template <>
63608   struct CppType<StructureType, StructureType::ePhysicalDeviceDynamicRenderingFeatures>
63609   {
63610     using Type = PhysicalDeviceDynamicRenderingFeatures;
63611   };
63612 
63613   using PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures;
63614 
63615   struct PhysicalDeviceDynamicRenderingLocalReadFeatures
63616   {
63617     using NativeType = VkPhysicalDeviceDynamicRenderingLocalReadFeatures;
63618 
63619     static const bool                                  allowDuplicate = false;
63620     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDynamicRenderingLocalReadFeatures;
63621 
63622 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDynamicRenderingLocalReadFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures63623     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingLocalReadFeatures( VULKAN_HPP_NAMESPACE::Bool32 dynamicRenderingLocalRead_ = {},
63624                                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
63625       : pNext{ pNext_ }
63626       , dynamicRenderingLocalRead{ dynamicRenderingLocalRead_ }
63627     {
63628     }
63629 
63630     VULKAN_HPP_CONSTEXPR
63631       PhysicalDeviceDynamicRenderingLocalReadFeatures( PhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63632 
PhysicalDeviceDynamicRenderingLocalReadFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures63633     PhysicalDeviceDynamicRenderingLocalReadFeatures( VkPhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
63634       : PhysicalDeviceDynamicRenderingLocalReadFeatures( *reinterpret_cast<PhysicalDeviceDynamicRenderingLocalReadFeatures const *>( &rhs ) )
63635     {
63636     }
63637 
63638     PhysicalDeviceDynamicRenderingLocalReadFeatures & operator=( PhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63639 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63640 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures63641     PhysicalDeviceDynamicRenderingLocalReadFeatures & operator=( VkPhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
63642     {
63643       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures const *>( &rhs );
63644       return *this;
63645     }
63646 
63647 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures63648     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingLocalReadFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63649     {
63650       pNext = pNext_;
63651       return *this;
63652     }
63653 
63654     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingLocalReadFeatures &
setDynamicRenderingLocalReadVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures63655       setDynamicRenderingLocalRead( VULKAN_HPP_NAMESPACE::Bool32 dynamicRenderingLocalRead_ ) VULKAN_HPP_NOEXCEPT
63656     {
63657       dynamicRenderingLocalRead = dynamicRenderingLocalRead_;
63658       return *this;
63659     }
63660 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63661 
operator VkPhysicalDeviceDynamicRenderingLocalReadFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures63662     operator VkPhysicalDeviceDynamicRenderingLocalReadFeatures const &() const VULKAN_HPP_NOEXCEPT
63663     {
63664       return *reinterpret_cast<const VkPhysicalDeviceDynamicRenderingLocalReadFeatures *>( this );
63665     }
63666 
operator VkPhysicalDeviceDynamicRenderingLocalReadFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures63667     operator VkPhysicalDeviceDynamicRenderingLocalReadFeatures &() VULKAN_HPP_NOEXCEPT
63668     {
63669       return *reinterpret_cast<VkPhysicalDeviceDynamicRenderingLocalReadFeatures *>( this );
63670     }
63671 
63672 #if defined( VULKAN_HPP_USE_REFLECT )
63673 #  if 14 <= VULKAN_HPP_CPP_VERSION
63674     auto
63675 #  else
63676     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63677 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures63678       reflect() const VULKAN_HPP_NOEXCEPT
63679     {
63680       return std::tie( sType, pNext, dynamicRenderingLocalRead );
63681     }
63682 #endif
63683 
63684 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63685     auto operator<=>( PhysicalDeviceDynamicRenderingLocalReadFeatures const & ) const = default;
63686 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures63687     bool operator==( PhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63688     {
63689 #  if defined( VULKAN_HPP_USE_REFLECT )
63690       return this->reflect() == rhs.reflect();
63691 #  else
63692       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicRenderingLocalRead == rhs.dynamicRenderingLocalRead );
63693 #  endif
63694     }
63695 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures63696     bool operator!=( PhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63697     {
63698       return !operator==( rhs );
63699     }
63700 #endif
63701 
63702   public:
63703     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceDynamicRenderingLocalReadFeatures;
63704     void *                              pNext                     = {};
63705     VULKAN_HPP_NAMESPACE::Bool32        dynamicRenderingLocalRead = {};
63706   };
63707 
63708   template <>
63709   struct CppType<StructureType, StructureType::ePhysicalDeviceDynamicRenderingLocalReadFeatures>
63710   {
63711     using Type = PhysicalDeviceDynamicRenderingLocalReadFeatures;
63712   };
63713 
63714   using PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = PhysicalDeviceDynamicRenderingLocalReadFeatures;
63715 
63716   struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
63717   {
63718     using NativeType = VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
63719 
63720     static const bool                                  allowDuplicate = false;
63721     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
63722 
63723 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63724     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 dynamicRenderingUnusedAttachments_ = {},
63725                                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
63726       : pNext{ pNext_ }
63727       , dynamicRenderingUnusedAttachments{ dynamicRenderingUnusedAttachments_ }
63728     {
63729     }
63730 
63731     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs )
63732       VULKAN_HPP_NOEXCEPT = default;
63733 
PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63734     PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63735       : PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT(
63736           *reinterpret_cast<PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const *>( &rhs ) )
63737     {
63738     }
63739 
63740     PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &
63741       operator=( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63742 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63743 
63744     PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63745       operator=( VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63746     {
63747       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const *>( &rhs );
63748       return *this;
63749     }
63750 
63751 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63752     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63753     {
63754       pNext = pNext_;
63755       return *this;
63756     }
63757 
63758     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &
setDynamicRenderingUnusedAttachmentsVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63759       setDynamicRenderingUnusedAttachments( VULKAN_HPP_NAMESPACE::Bool32 dynamicRenderingUnusedAttachments_ ) VULKAN_HPP_NOEXCEPT
63760     {
63761       dynamicRenderingUnusedAttachments = dynamicRenderingUnusedAttachments_;
63762       return *this;
63763     }
63764 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63765 
operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63766     operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
63767     {
63768       return *reinterpret_cast<const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT *>( this );
63769     }
63770 
operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63771     operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
63772     {
63773       return *reinterpret_cast<VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT *>( this );
63774     }
63775 
63776 #if defined( VULKAN_HPP_USE_REFLECT )
63777 #  if 14 <= VULKAN_HPP_CPP_VERSION
63778     auto
63779 #  else
63780     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63781 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63782       reflect() const VULKAN_HPP_NOEXCEPT
63783     {
63784       return std::tie( sType, pNext, dynamicRenderingUnusedAttachments );
63785     }
63786 #endif
63787 
63788 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63789     auto operator<=>( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & ) const = default;
63790 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63791     bool operator==( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63792     {
63793 #  if defined( VULKAN_HPP_USE_REFLECT )
63794       return this->reflect() == rhs.reflect();
63795 #  else
63796       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicRenderingUnusedAttachments == rhs.dynamicRenderingUnusedAttachments );
63797 #  endif
63798     }
63799 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63800     bool operator!=( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63801     {
63802       return !operator==( rhs );
63803     }
63804 #endif
63805 
63806   public:
63807     VULKAN_HPP_NAMESPACE::StructureType sType                             = StructureType::ePhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
63808     void *                              pNext                             = {};
63809     VULKAN_HPP_NAMESPACE::Bool32        dynamicRenderingUnusedAttachments = {};
63810   };
63811 
63812   template <>
63813   struct CppType<StructureType, StructureType::ePhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT>
63814   {
63815     using Type = PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
63816   };
63817 
63818   struct PhysicalDeviceExclusiveScissorFeaturesNV
63819   {
63820     using NativeType = VkPhysicalDeviceExclusiveScissorFeaturesNV;
63821 
63822     static const bool                                  allowDuplicate = false;
63823     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV;
63824 
63825 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExclusiveScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63826     VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor_ = {},
63827                                                                    void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
63828       : pNext{ pNext_ }
63829       , exclusiveScissor{ exclusiveScissor_ }
63830     {
63831     }
63832 
63833     VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63834 
PhysicalDeviceExclusiveScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63835     PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
63836       : PhysicalDeviceExclusiveScissorFeaturesNV( *reinterpret_cast<PhysicalDeviceExclusiveScissorFeaturesNV const *>( &rhs ) )
63837     {
63838     }
63839 
63840     PhysicalDeviceExclusiveScissorFeaturesNV & operator=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63841 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63842 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63843     PhysicalDeviceExclusiveScissorFeaturesNV & operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
63844     {
63845       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV const *>( &rhs );
63846       return *this;
63847     }
63848 
63849 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63850     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63851     {
63852       pNext = pNext_;
63853       return *this;
63854     }
63855 
setExclusiveScissorVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63856     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & setExclusiveScissor( VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor_ ) VULKAN_HPP_NOEXCEPT
63857     {
63858       exclusiveScissor = exclusiveScissor_;
63859       return *this;
63860     }
63861 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63862 
operator VkPhysicalDeviceExclusiveScissorFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63863     operator VkPhysicalDeviceExclusiveScissorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
63864     {
63865       return *reinterpret_cast<const VkPhysicalDeviceExclusiveScissorFeaturesNV *>( this );
63866     }
63867 
operator VkPhysicalDeviceExclusiveScissorFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63868     operator VkPhysicalDeviceExclusiveScissorFeaturesNV &() VULKAN_HPP_NOEXCEPT
63869     {
63870       return *reinterpret_cast<VkPhysicalDeviceExclusiveScissorFeaturesNV *>( this );
63871     }
63872 
63873 #if defined( VULKAN_HPP_USE_REFLECT )
63874 #  if 14 <= VULKAN_HPP_CPP_VERSION
63875     auto
63876 #  else
63877     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63878 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63879       reflect() const VULKAN_HPP_NOEXCEPT
63880     {
63881       return std::tie( sType, pNext, exclusiveScissor );
63882     }
63883 #endif
63884 
63885 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63886     auto operator<=>( PhysicalDeviceExclusiveScissorFeaturesNV const & ) const = default;
63887 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63888     bool operator==( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
63889     {
63890 #  if defined( VULKAN_HPP_USE_REFLECT )
63891       return this->reflect() == rhs.reflect();
63892 #  else
63893       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exclusiveScissor == rhs.exclusiveScissor );
63894 #  endif
63895     }
63896 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63897     bool operator!=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
63898     {
63899       return !operator==( rhs );
63900     }
63901 #endif
63902 
63903   public:
63904     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV;
63905     void *                              pNext            = {};
63906     VULKAN_HPP_NAMESPACE::Bool32        exclusiveScissor = {};
63907   };
63908 
63909   template <>
63910   struct CppType<StructureType, StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV>
63911   {
63912     using Type = PhysicalDeviceExclusiveScissorFeaturesNV;
63913   };
63914 
63915   struct PhysicalDeviceExtendedDynamicState2FeaturesEXT
63916   {
63917     using NativeType = VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
63918 
63919     static const bool                                  allowDuplicate = false;
63920     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT;
63921 
63922 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedDynamicState2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63923     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState2FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2_                   = {},
63924                                                                          VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp_            = {},
63925                                                                          VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints_ = {},
63926                                                                          void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
63927       : pNext{ pNext_ }
63928       , extendedDynamicState2{ extendedDynamicState2_ }
63929       , extendedDynamicState2LogicOp{ extendedDynamicState2LogicOp_ }
63930       , extendedDynamicState2PatchControlPoints{ extendedDynamicState2PatchControlPoints_ }
63931     {
63932     }
63933 
63934     VULKAN_HPP_CONSTEXPR
63935       PhysicalDeviceExtendedDynamicState2FeaturesEXT( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63936 
PhysicalDeviceExtendedDynamicState2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63937     PhysicalDeviceExtendedDynamicState2FeaturesEXT( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63938       : PhysicalDeviceExtendedDynamicState2FeaturesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicState2FeaturesEXT const *>( &rhs ) )
63939     {
63940     }
63941 
63942     PhysicalDeviceExtendedDynamicState2FeaturesEXT & operator=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63943 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63944 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63945     PhysicalDeviceExtendedDynamicState2FeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63946     {
63947       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT const *>( &rhs );
63948       return *this;
63949     }
63950 
63951 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63952     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63953     {
63954       pNext = pNext_;
63955       return *this;
63956     }
63957 
63958     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT &
setExtendedDynamicState2VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63959       setExtendedDynamicState2( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2_ ) VULKAN_HPP_NOEXCEPT
63960     {
63961       extendedDynamicState2 = extendedDynamicState2_;
63962       return *this;
63963     }
63964 
63965     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT &
setExtendedDynamicState2LogicOpVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63966       setExtendedDynamicState2LogicOp( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp_ ) VULKAN_HPP_NOEXCEPT
63967     {
63968       extendedDynamicState2LogicOp = extendedDynamicState2LogicOp_;
63969       return *this;
63970     }
63971 
63972     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT &
setExtendedDynamicState2PatchControlPointsVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63973       setExtendedDynamicState2PatchControlPoints( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints_ ) VULKAN_HPP_NOEXCEPT
63974     {
63975       extendedDynamicState2PatchControlPoints = extendedDynamicState2PatchControlPoints_;
63976       return *this;
63977     }
63978 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63979 
operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63980     operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
63981     {
63982       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *>( this );
63983     }
63984 
operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63985     operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
63986     {
63987       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *>( this );
63988     }
63989 
63990 #if defined( VULKAN_HPP_USE_REFLECT )
63991 #  if 14 <= VULKAN_HPP_CPP_VERSION
63992     auto
63993 #  else
63994     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
63995                void * const &,
63996                VULKAN_HPP_NAMESPACE::Bool32 const &,
63997                VULKAN_HPP_NAMESPACE::Bool32 const &,
63998                VULKAN_HPP_NAMESPACE::Bool32 const &>
63999 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT64000       reflect() const VULKAN_HPP_NOEXCEPT
64001     {
64002       return std::tie( sType, pNext, extendedDynamicState2, extendedDynamicState2LogicOp, extendedDynamicState2PatchControlPoints );
64003     }
64004 #endif
64005 
64006 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64007     auto operator<=>( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & ) const = default;
64008 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT64009     bool operator==( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64010     {
64011 #  if defined( VULKAN_HPP_USE_REFLECT )
64012       return this->reflect() == rhs.reflect();
64013 #  else
64014       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedDynamicState2 == rhs.extendedDynamicState2 ) &&
64015              ( extendedDynamicState2LogicOp == rhs.extendedDynamicState2LogicOp ) &&
64016              ( extendedDynamicState2PatchControlPoints == rhs.extendedDynamicState2PatchControlPoints );
64017 #  endif
64018     }
64019 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT64020     bool operator!=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64021     {
64022       return !operator==( rhs );
64023     }
64024 #endif
64025 
64026   public:
64027     VULKAN_HPP_NAMESPACE::StructureType sType                                   = StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT;
64028     void *                              pNext                                   = {};
64029     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState2                   = {};
64030     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState2LogicOp            = {};
64031     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState2PatchControlPoints = {};
64032   };
64033 
64034   template <>
64035   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT>
64036   {
64037     using Type = PhysicalDeviceExtendedDynamicState2FeaturesEXT;
64038   };
64039 
64040   struct PhysicalDeviceExtendedDynamicState3FeaturesEXT
64041   {
64042     using NativeType = VkPhysicalDeviceExtendedDynamicState3FeaturesEXT;
64043 
64044     static const bool                                  allowDuplicate = false;
64045     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedDynamicState3FeaturesEXT;
64046 
64047 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
64048     VULKAN_HPP_CONSTEXPR
PhysicalDeviceExtendedDynamicState3FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64049       PhysicalDeviceExtendedDynamicState3FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3TessellationDomainOrigin_         = {},
64050                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClampEnable_                 = {},
64051                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3PolygonMode_                      = {},
64052                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RasterizationSamples_             = {},
64053                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3SampleMask_                       = {},
64054                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3AlphaToCoverageEnable_            = {},
64055                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3AlphaToOneEnable_                 = {},
64056                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LogicOpEnable_                    = {},
64057                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendEnable_                 = {},
64058                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendEquation_               = {},
64059                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorWriteMask_                   = {},
64060                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RasterizationStream_              = {},
64061                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ConservativeRasterizationMode_    = {},
64062                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ExtraPrimitiveOverestimationSize_ = {},
64063                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClipEnable_                  = {},
64064                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3SampleLocationsEnable_            = {},
64065                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendAdvanced_               = {},
64066                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ProvokingVertexMode_              = {},
64067                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LineRasterizationMode_            = {},
64068                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LineStippleEnable_                = {},
64069                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClipNegativeOneToOne_        = {},
64070                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ViewportWScalingEnable_           = {},
64071                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ViewportSwizzle_                  = {},
64072                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageToColorEnable_            = {},
64073                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageToColorLocation_          = {},
64074                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationMode_           = {},
64075                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationTableEnable_    = {},
64076                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationTable_          = {},
64077                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageReductionMode_            = {},
64078                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RepresentativeFragmentTestEnable_ = {},
64079                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ShadingRateImageEnable_           = {},
64080                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
64081       : pNext{ pNext_ }
64082       , extendedDynamicState3TessellationDomainOrigin{ extendedDynamicState3TessellationDomainOrigin_ }
64083       , extendedDynamicState3DepthClampEnable{ extendedDynamicState3DepthClampEnable_ }
64084       , extendedDynamicState3PolygonMode{ extendedDynamicState3PolygonMode_ }
64085       , extendedDynamicState3RasterizationSamples{ extendedDynamicState3RasterizationSamples_ }
64086       , extendedDynamicState3SampleMask{ extendedDynamicState3SampleMask_ }
64087       , extendedDynamicState3AlphaToCoverageEnable{ extendedDynamicState3AlphaToCoverageEnable_ }
64088       , extendedDynamicState3AlphaToOneEnable{ extendedDynamicState3AlphaToOneEnable_ }
64089       , extendedDynamicState3LogicOpEnable{ extendedDynamicState3LogicOpEnable_ }
64090       , extendedDynamicState3ColorBlendEnable{ extendedDynamicState3ColorBlendEnable_ }
64091       , extendedDynamicState3ColorBlendEquation{ extendedDynamicState3ColorBlendEquation_ }
64092       , extendedDynamicState3ColorWriteMask{ extendedDynamicState3ColorWriteMask_ }
64093       , extendedDynamicState3RasterizationStream{ extendedDynamicState3RasterizationStream_ }
64094       , extendedDynamicState3ConservativeRasterizationMode{ extendedDynamicState3ConservativeRasterizationMode_ }
64095       , extendedDynamicState3ExtraPrimitiveOverestimationSize{ extendedDynamicState3ExtraPrimitiveOverestimationSize_ }
64096       , extendedDynamicState3DepthClipEnable{ extendedDynamicState3DepthClipEnable_ }
64097       , extendedDynamicState3SampleLocationsEnable{ extendedDynamicState3SampleLocationsEnable_ }
64098       , extendedDynamicState3ColorBlendAdvanced{ extendedDynamicState3ColorBlendAdvanced_ }
64099       , extendedDynamicState3ProvokingVertexMode{ extendedDynamicState3ProvokingVertexMode_ }
64100       , extendedDynamicState3LineRasterizationMode{ extendedDynamicState3LineRasterizationMode_ }
64101       , extendedDynamicState3LineStippleEnable{ extendedDynamicState3LineStippleEnable_ }
64102       , extendedDynamicState3DepthClipNegativeOneToOne{ extendedDynamicState3DepthClipNegativeOneToOne_ }
64103       , extendedDynamicState3ViewportWScalingEnable{ extendedDynamicState3ViewportWScalingEnable_ }
64104       , extendedDynamicState3ViewportSwizzle{ extendedDynamicState3ViewportSwizzle_ }
64105       , extendedDynamicState3CoverageToColorEnable{ extendedDynamicState3CoverageToColorEnable_ }
64106       , extendedDynamicState3CoverageToColorLocation{ extendedDynamicState3CoverageToColorLocation_ }
64107       , extendedDynamicState3CoverageModulationMode{ extendedDynamicState3CoverageModulationMode_ }
64108       , extendedDynamicState3CoverageModulationTableEnable{ extendedDynamicState3CoverageModulationTableEnable_ }
64109       , extendedDynamicState3CoverageModulationTable{ extendedDynamicState3CoverageModulationTable_ }
64110       , extendedDynamicState3CoverageReductionMode{ extendedDynamicState3CoverageReductionMode_ }
64111       , extendedDynamicState3RepresentativeFragmentTestEnable{ extendedDynamicState3RepresentativeFragmentTestEnable_ }
64112       , extendedDynamicState3ShadingRateImageEnable{ extendedDynamicState3ShadingRateImageEnable_ }
64113     {
64114     }
64115 
64116     VULKAN_HPP_CONSTEXPR
64117       PhysicalDeviceExtendedDynamicState3FeaturesEXT( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64118 
PhysicalDeviceExtendedDynamicState3FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64119     PhysicalDeviceExtendedDynamicState3FeaturesEXT( VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64120       : PhysicalDeviceExtendedDynamicState3FeaturesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicState3FeaturesEXT const *>( &rhs ) )
64121     {
64122     }
64123 
64124     PhysicalDeviceExtendedDynamicState3FeaturesEXT & operator=( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64125 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64126 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64127     PhysicalDeviceExtendedDynamicState3FeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64128     {
64129       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT const *>( &rhs );
64130       return *this;
64131     }
64132 
64133 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64134     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64135     {
64136       pNext = pNext_;
64137       return *this;
64138     }
64139 
64140     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3TessellationDomainOriginVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64141       setExtendedDynamicState3TessellationDomainOrigin( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3TessellationDomainOrigin_ ) VULKAN_HPP_NOEXCEPT
64142     {
64143       extendedDynamicState3TessellationDomainOrigin = extendedDynamicState3TessellationDomainOrigin_;
64144       return *this;
64145     }
64146 
64147     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3DepthClampEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64148       setExtendedDynamicState3DepthClampEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClampEnable_ ) VULKAN_HPP_NOEXCEPT
64149     {
64150       extendedDynamicState3DepthClampEnable = extendedDynamicState3DepthClampEnable_;
64151       return *this;
64152     }
64153 
64154     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3PolygonModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64155       setExtendedDynamicState3PolygonMode( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3PolygonMode_ ) VULKAN_HPP_NOEXCEPT
64156     {
64157       extendedDynamicState3PolygonMode = extendedDynamicState3PolygonMode_;
64158       return *this;
64159     }
64160 
64161     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3RasterizationSamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64162       setExtendedDynamicState3RasterizationSamples( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
64163     {
64164       extendedDynamicState3RasterizationSamples = extendedDynamicState3RasterizationSamples_;
64165       return *this;
64166     }
64167 
64168     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3SampleMaskVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64169       setExtendedDynamicState3SampleMask( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3SampleMask_ ) VULKAN_HPP_NOEXCEPT
64170     {
64171       extendedDynamicState3SampleMask = extendedDynamicState3SampleMask_;
64172       return *this;
64173     }
64174 
64175     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3AlphaToCoverageEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64176       setExtendedDynamicState3AlphaToCoverageEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3AlphaToCoverageEnable_ ) VULKAN_HPP_NOEXCEPT
64177     {
64178       extendedDynamicState3AlphaToCoverageEnable = extendedDynamicState3AlphaToCoverageEnable_;
64179       return *this;
64180     }
64181 
64182     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3AlphaToOneEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64183       setExtendedDynamicState3AlphaToOneEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3AlphaToOneEnable_ ) VULKAN_HPP_NOEXCEPT
64184     {
64185       extendedDynamicState3AlphaToOneEnable = extendedDynamicState3AlphaToOneEnable_;
64186       return *this;
64187     }
64188 
64189     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3LogicOpEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64190       setExtendedDynamicState3LogicOpEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LogicOpEnable_ ) VULKAN_HPP_NOEXCEPT
64191     {
64192       extendedDynamicState3LogicOpEnable = extendedDynamicState3LogicOpEnable_;
64193       return *this;
64194     }
64195 
64196     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ColorBlendEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64197       setExtendedDynamicState3ColorBlendEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendEnable_ ) VULKAN_HPP_NOEXCEPT
64198     {
64199       extendedDynamicState3ColorBlendEnable = extendedDynamicState3ColorBlendEnable_;
64200       return *this;
64201     }
64202 
64203     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ColorBlendEquationVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64204       setExtendedDynamicState3ColorBlendEquation( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendEquation_ ) VULKAN_HPP_NOEXCEPT
64205     {
64206       extendedDynamicState3ColorBlendEquation = extendedDynamicState3ColorBlendEquation_;
64207       return *this;
64208     }
64209 
64210     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ColorWriteMaskVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64211       setExtendedDynamicState3ColorWriteMask( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorWriteMask_ ) VULKAN_HPP_NOEXCEPT
64212     {
64213       extendedDynamicState3ColorWriteMask = extendedDynamicState3ColorWriteMask_;
64214       return *this;
64215     }
64216 
64217     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3RasterizationStreamVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64218       setExtendedDynamicState3RasterizationStream( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RasterizationStream_ ) VULKAN_HPP_NOEXCEPT
64219     {
64220       extendedDynamicState3RasterizationStream = extendedDynamicState3RasterizationStream_;
64221       return *this;
64222     }
64223 
setExtendedDynamicState3ConservativeRasterizationModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64224     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setExtendedDynamicState3ConservativeRasterizationMode(
64225       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ConservativeRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
64226     {
64227       extendedDynamicState3ConservativeRasterizationMode = extendedDynamicState3ConservativeRasterizationMode_;
64228       return *this;
64229     }
64230 
setExtendedDynamicState3ExtraPrimitiveOverestimationSizeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64231     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setExtendedDynamicState3ExtraPrimitiveOverestimationSize(
64232       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ExtraPrimitiveOverestimationSize_ ) VULKAN_HPP_NOEXCEPT
64233     {
64234       extendedDynamicState3ExtraPrimitiveOverestimationSize = extendedDynamicState3ExtraPrimitiveOverestimationSize_;
64235       return *this;
64236     }
64237 
64238     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3DepthClipEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64239       setExtendedDynamicState3DepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClipEnable_ ) VULKAN_HPP_NOEXCEPT
64240     {
64241       extendedDynamicState3DepthClipEnable = extendedDynamicState3DepthClipEnable_;
64242       return *this;
64243     }
64244 
64245     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3SampleLocationsEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64246       setExtendedDynamicState3SampleLocationsEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3SampleLocationsEnable_ ) VULKAN_HPP_NOEXCEPT
64247     {
64248       extendedDynamicState3SampleLocationsEnable = extendedDynamicState3SampleLocationsEnable_;
64249       return *this;
64250     }
64251 
64252     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ColorBlendAdvancedVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64253       setExtendedDynamicState3ColorBlendAdvanced( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendAdvanced_ ) VULKAN_HPP_NOEXCEPT
64254     {
64255       extendedDynamicState3ColorBlendAdvanced = extendedDynamicState3ColorBlendAdvanced_;
64256       return *this;
64257     }
64258 
64259     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ProvokingVertexModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64260       setExtendedDynamicState3ProvokingVertexMode( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ProvokingVertexMode_ ) VULKAN_HPP_NOEXCEPT
64261     {
64262       extendedDynamicState3ProvokingVertexMode = extendedDynamicState3ProvokingVertexMode_;
64263       return *this;
64264     }
64265 
64266     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3LineRasterizationModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64267       setExtendedDynamicState3LineRasterizationMode( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LineRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
64268     {
64269       extendedDynamicState3LineRasterizationMode = extendedDynamicState3LineRasterizationMode_;
64270       return *this;
64271     }
64272 
64273     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3LineStippleEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64274       setExtendedDynamicState3LineStippleEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LineStippleEnable_ ) VULKAN_HPP_NOEXCEPT
64275     {
64276       extendedDynamicState3LineStippleEnable = extendedDynamicState3LineStippleEnable_;
64277       return *this;
64278     }
64279 
64280     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3DepthClipNegativeOneToOneVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64281       setExtendedDynamicState3DepthClipNegativeOneToOne( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClipNegativeOneToOne_ ) VULKAN_HPP_NOEXCEPT
64282     {
64283       extendedDynamicState3DepthClipNegativeOneToOne = extendedDynamicState3DepthClipNegativeOneToOne_;
64284       return *this;
64285     }
64286 
64287     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ViewportWScalingEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64288       setExtendedDynamicState3ViewportWScalingEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ViewportWScalingEnable_ ) VULKAN_HPP_NOEXCEPT
64289     {
64290       extendedDynamicState3ViewportWScalingEnable = extendedDynamicState3ViewportWScalingEnable_;
64291       return *this;
64292     }
64293 
64294     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ViewportSwizzleVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64295       setExtendedDynamicState3ViewportSwizzle( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ViewportSwizzle_ ) VULKAN_HPP_NOEXCEPT
64296     {
64297       extendedDynamicState3ViewportSwizzle = extendedDynamicState3ViewportSwizzle_;
64298       return *this;
64299     }
64300 
64301     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3CoverageToColorEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64302       setExtendedDynamicState3CoverageToColorEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageToColorEnable_ ) VULKAN_HPP_NOEXCEPT
64303     {
64304       extendedDynamicState3CoverageToColorEnable = extendedDynamicState3CoverageToColorEnable_;
64305       return *this;
64306     }
64307 
64308     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3CoverageToColorLocationVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64309       setExtendedDynamicState3CoverageToColorLocation( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageToColorLocation_ ) VULKAN_HPP_NOEXCEPT
64310     {
64311       extendedDynamicState3CoverageToColorLocation = extendedDynamicState3CoverageToColorLocation_;
64312       return *this;
64313     }
64314 
64315     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3CoverageModulationModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64316       setExtendedDynamicState3CoverageModulationMode( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationMode_ ) VULKAN_HPP_NOEXCEPT
64317     {
64318       extendedDynamicState3CoverageModulationMode = extendedDynamicState3CoverageModulationMode_;
64319       return *this;
64320     }
64321 
setExtendedDynamicState3CoverageModulationTableEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64322     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setExtendedDynamicState3CoverageModulationTableEnable(
64323       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationTableEnable_ ) VULKAN_HPP_NOEXCEPT
64324     {
64325       extendedDynamicState3CoverageModulationTableEnable = extendedDynamicState3CoverageModulationTableEnable_;
64326       return *this;
64327     }
64328 
64329     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3CoverageModulationTableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64330       setExtendedDynamicState3CoverageModulationTable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationTable_ ) VULKAN_HPP_NOEXCEPT
64331     {
64332       extendedDynamicState3CoverageModulationTable = extendedDynamicState3CoverageModulationTable_;
64333       return *this;
64334     }
64335 
64336     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3CoverageReductionModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64337       setExtendedDynamicState3CoverageReductionMode( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageReductionMode_ ) VULKAN_HPP_NOEXCEPT
64338     {
64339       extendedDynamicState3CoverageReductionMode = extendedDynamicState3CoverageReductionMode_;
64340       return *this;
64341     }
64342 
setExtendedDynamicState3RepresentativeFragmentTestEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64343     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setExtendedDynamicState3RepresentativeFragmentTestEnable(
64344       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RepresentativeFragmentTestEnable_ ) VULKAN_HPP_NOEXCEPT
64345     {
64346       extendedDynamicState3RepresentativeFragmentTestEnable = extendedDynamicState3RepresentativeFragmentTestEnable_;
64347       return *this;
64348     }
64349 
64350     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ShadingRateImageEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64351       setExtendedDynamicState3ShadingRateImageEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ShadingRateImageEnable_ ) VULKAN_HPP_NOEXCEPT
64352     {
64353       extendedDynamicState3ShadingRateImageEnable = extendedDynamicState3ShadingRateImageEnable_;
64354       return *this;
64355     }
64356 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64357 
operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64358     operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
64359     {
64360       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *>( this );
64361     }
64362 
operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64363     operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT &() VULKAN_HPP_NOEXCEPT
64364     {
64365       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *>( this );
64366     }
64367 
64368 #if defined( VULKAN_HPP_USE_REFLECT )
64369 #  if 14 <= VULKAN_HPP_CPP_VERSION
64370     auto
64371 #  else
64372     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
64373                void * const &,
64374                VULKAN_HPP_NAMESPACE::Bool32 const &,
64375                VULKAN_HPP_NAMESPACE::Bool32 const &,
64376                VULKAN_HPP_NAMESPACE::Bool32 const &,
64377                VULKAN_HPP_NAMESPACE::Bool32 const &,
64378                VULKAN_HPP_NAMESPACE::Bool32 const &,
64379                VULKAN_HPP_NAMESPACE::Bool32 const &,
64380                VULKAN_HPP_NAMESPACE::Bool32 const &,
64381                VULKAN_HPP_NAMESPACE::Bool32 const &,
64382                VULKAN_HPP_NAMESPACE::Bool32 const &,
64383                VULKAN_HPP_NAMESPACE::Bool32 const &,
64384                VULKAN_HPP_NAMESPACE::Bool32 const &,
64385                VULKAN_HPP_NAMESPACE::Bool32 const &,
64386                VULKAN_HPP_NAMESPACE::Bool32 const &,
64387                VULKAN_HPP_NAMESPACE::Bool32 const &,
64388                VULKAN_HPP_NAMESPACE::Bool32 const &,
64389                VULKAN_HPP_NAMESPACE::Bool32 const &,
64390                VULKAN_HPP_NAMESPACE::Bool32 const &,
64391                VULKAN_HPP_NAMESPACE::Bool32 const &,
64392                VULKAN_HPP_NAMESPACE::Bool32 const &,
64393                VULKAN_HPP_NAMESPACE::Bool32 const &,
64394                VULKAN_HPP_NAMESPACE::Bool32 const &,
64395                VULKAN_HPP_NAMESPACE::Bool32 const &,
64396                VULKAN_HPP_NAMESPACE::Bool32 const &,
64397                VULKAN_HPP_NAMESPACE::Bool32 const &,
64398                VULKAN_HPP_NAMESPACE::Bool32 const &,
64399                VULKAN_HPP_NAMESPACE::Bool32 const &,
64400                VULKAN_HPP_NAMESPACE::Bool32 const &,
64401                VULKAN_HPP_NAMESPACE::Bool32 const &,
64402                VULKAN_HPP_NAMESPACE::Bool32 const &,
64403                VULKAN_HPP_NAMESPACE::Bool32 const &,
64404                VULKAN_HPP_NAMESPACE::Bool32 const &>
64405 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64406       reflect() const VULKAN_HPP_NOEXCEPT
64407     {
64408       return std::tie( sType,
64409                        pNext,
64410                        extendedDynamicState3TessellationDomainOrigin,
64411                        extendedDynamicState3DepthClampEnable,
64412                        extendedDynamicState3PolygonMode,
64413                        extendedDynamicState3RasterizationSamples,
64414                        extendedDynamicState3SampleMask,
64415                        extendedDynamicState3AlphaToCoverageEnable,
64416                        extendedDynamicState3AlphaToOneEnable,
64417                        extendedDynamicState3LogicOpEnable,
64418                        extendedDynamicState3ColorBlendEnable,
64419                        extendedDynamicState3ColorBlendEquation,
64420                        extendedDynamicState3ColorWriteMask,
64421                        extendedDynamicState3RasterizationStream,
64422                        extendedDynamicState3ConservativeRasterizationMode,
64423                        extendedDynamicState3ExtraPrimitiveOverestimationSize,
64424                        extendedDynamicState3DepthClipEnable,
64425                        extendedDynamicState3SampleLocationsEnable,
64426                        extendedDynamicState3ColorBlendAdvanced,
64427                        extendedDynamicState3ProvokingVertexMode,
64428                        extendedDynamicState3LineRasterizationMode,
64429                        extendedDynamicState3LineStippleEnable,
64430                        extendedDynamicState3DepthClipNegativeOneToOne,
64431                        extendedDynamicState3ViewportWScalingEnable,
64432                        extendedDynamicState3ViewportSwizzle,
64433                        extendedDynamicState3CoverageToColorEnable,
64434                        extendedDynamicState3CoverageToColorLocation,
64435                        extendedDynamicState3CoverageModulationMode,
64436                        extendedDynamicState3CoverageModulationTableEnable,
64437                        extendedDynamicState3CoverageModulationTable,
64438                        extendedDynamicState3CoverageReductionMode,
64439                        extendedDynamicState3RepresentativeFragmentTestEnable,
64440                        extendedDynamicState3ShadingRateImageEnable );
64441     }
64442 #endif
64443 
64444 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64445     auto operator<=>( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & ) const = default;
64446 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64447     bool operator==( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64448     {
64449 #  if defined( VULKAN_HPP_USE_REFLECT )
64450       return this->reflect() == rhs.reflect();
64451 #  else
64452       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
64453              ( extendedDynamicState3TessellationDomainOrigin == rhs.extendedDynamicState3TessellationDomainOrigin ) &&
64454              ( extendedDynamicState3DepthClampEnable == rhs.extendedDynamicState3DepthClampEnable ) &&
64455              ( extendedDynamicState3PolygonMode == rhs.extendedDynamicState3PolygonMode ) &&
64456              ( extendedDynamicState3RasterizationSamples == rhs.extendedDynamicState3RasterizationSamples ) &&
64457              ( extendedDynamicState3SampleMask == rhs.extendedDynamicState3SampleMask ) &&
64458              ( extendedDynamicState3AlphaToCoverageEnable == rhs.extendedDynamicState3AlphaToCoverageEnable ) &&
64459              ( extendedDynamicState3AlphaToOneEnable == rhs.extendedDynamicState3AlphaToOneEnable ) &&
64460              ( extendedDynamicState3LogicOpEnable == rhs.extendedDynamicState3LogicOpEnable ) &&
64461              ( extendedDynamicState3ColorBlendEnable == rhs.extendedDynamicState3ColorBlendEnable ) &&
64462              ( extendedDynamicState3ColorBlendEquation == rhs.extendedDynamicState3ColorBlendEquation ) &&
64463              ( extendedDynamicState3ColorWriteMask == rhs.extendedDynamicState3ColorWriteMask ) &&
64464              ( extendedDynamicState3RasterizationStream == rhs.extendedDynamicState3RasterizationStream ) &&
64465              ( extendedDynamicState3ConservativeRasterizationMode == rhs.extendedDynamicState3ConservativeRasterizationMode ) &&
64466              ( extendedDynamicState3ExtraPrimitiveOverestimationSize == rhs.extendedDynamicState3ExtraPrimitiveOverestimationSize ) &&
64467              ( extendedDynamicState3DepthClipEnable == rhs.extendedDynamicState3DepthClipEnable ) &&
64468              ( extendedDynamicState3SampleLocationsEnable == rhs.extendedDynamicState3SampleLocationsEnable ) &&
64469              ( extendedDynamicState3ColorBlendAdvanced == rhs.extendedDynamicState3ColorBlendAdvanced ) &&
64470              ( extendedDynamicState3ProvokingVertexMode == rhs.extendedDynamicState3ProvokingVertexMode ) &&
64471              ( extendedDynamicState3LineRasterizationMode == rhs.extendedDynamicState3LineRasterizationMode ) &&
64472              ( extendedDynamicState3LineStippleEnable == rhs.extendedDynamicState3LineStippleEnable ) &&
64473              ( extendedDynamicState3DepthClipNegativeOneToOne == rhs.extendedDynamicState3DepthClipNegativeOneToOne ) &&
64474              ( extendedDynamicState3ViewportWScalingEnable == rhs.extendedDynamicState3ViewportWScalingEnable ) &&
64475              ( extendedDynamicState3ViewportSwizzle == rhs.extendedDynamicState3ViewportSwizzle ) &&
64476              ( extendedDynamicState3CoverageToColorEnable == rhs.extendedDynamicState3CoverageToColorEnable ) &&
64477              ( extendedDynamicState3CoverageToColorLocation == rhs.extendedDynamicState3CoverageToColorLocation ) &&
64478              ( extendedDynamicState3CoverageModulationMode == rhs.extendedDynamicState3CoverageModulationMode ) &&
64479              ( extendedDynamicState3CoverageModulationTableEnable == rhs.extendedDynamicState3CoverageModulationTableEnable ) &&
64480              ( extendedDynamicState3CoverageModulationTable == rhs.extendedDynamicState3CoverageModulationTable ) &&
64481              ( extendedDynamicState3CoverageReductionMode == rhs.extendedDynamicState3CoverageReductionMode ) &&
64482              ( extendedDynamicState3RepresentativeFragmentTestEnable == rhs.extendedDynamicState3RepresentativeFragmentTestEnable ) &&
64483              ( extendedDynamicState3ShadingRateImageEnable == rhs.extendedDynamicState3ShadingRateImageEnable );
64484 #  endif
64485     }
64486 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT64487     bool operator!=( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64488     {
64489       return !operator==( rhs );
64490     }
64491 #endif
64492 
64493   public:
64494     VULKAN_HPP_NAMESPACE::StructureType sType                                                 = StructureType::ePhysicalDeviceExtendedDynamicState3FeaturesEXT;
64495     void *                              pNext                                                 = {};
64496     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3TessellationDomainOrigin         = {};
64497     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3DepthClampEnable                 = {};
64498     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3PolygonMode                      = {};
64499     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3RasterizationSamples             = {};
64500     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3SampleMask                       = {};
64501     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3AlphaToCoverageEnable            = {};
64502     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3AlphaToOneEnable                 = {};
64503     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3LogicOpEnable                    = {};
64504     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ColorBlendEnable                 = {};
64505     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ColorBlendEquation               = {};
64506     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ColorWriteMask                   = {};
64507     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3RasterizationStream              = {};
64508     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ConservativeRasterizationMode    = {};
64509     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ExtraPrimitiveOverestimationSize = {};
64510     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3DepthClipEnable                  = {};
64511     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3SampleLocationsEnable            = {};
64512     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ColorBlendAdvanced               = {};
64513     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ProvokingVertexMode              = {};
64514     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3LineRasterizationMode            = {};
64515     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3LineStippleEnable                = {};
64516     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3DepthClipNegativeOneToOne        = {};
64517     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ViewportWScalingEnable           = {};
64518     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ViewportSwizzle                  = {};
64519     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageToColorEnable            = {};
64520     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageToColorLocation          = {};
64521     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageModulationMode           = {};
64522     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageModulationTableEnable    = {};
64523     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageModulationTable          = {};
64524     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageReductionMode            = {};
64525     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3RepresentativeFragmentTestEnable = {};
64526     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ShadingRateImageEnable           = {};
64527   };
64528 
64529   template <>
64530   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicState3FeaturesEXT>
64531   {
64532     using Type = PhysicalDeviceExtendedDynamicState3FeaturesEXT;
64533   };
64534 
64535   struct PhysicalDeviceExtendedDynamicState3PropertiesEXT
64536   {
64537     using NativeType = VkPhysicalDeviceExtendedDynamicState3PropertiesEXT;
64538 
64539     static const bool                                  allowDuplicate = false;
64540     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedDynamicState3PropertiesEXT;
64541 
64542 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedDynamicState3PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64543     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState3PropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 dynamicPrimitiveTopologyUnrestricted_ = {},
64544                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
64545       : pNext{ pNext_ }
64546       , dynamicPrimitiveTopologyUnrestricted{ dynamicPrimitiveTopologyUnrestricted_ }
64547     {
64548     }
64549 
64550     VULKAN_HPP_CONSTEXPR
64551       PhysicalDeviceExtendedDynamicState3PropertiesEXT( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64552 
PhysicalDeviceExtendedDynamicState3PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64553     PhysicalDeviceExtendedDynamicState3PropertiesEXT( VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64554       : PhysicalDeviceExtendedDynamicState3PropertiesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicState3PropertiesEXT const *>( &rhs ) )
64555     {
64556     }
64557 
64558     PhysicalDeviceExtendedDynamicState3PropertiesEXT & operator=( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64559 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64560 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64561     PhysicalDeviceExtendedDynamicState3PropertiesEXT & operator=( VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64562     {
64563       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT const *>( &rhs );
64564       return *this;
64565     }
64566 
64567 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64568     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3PropertiesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64569     {
64570       pNext = pNext_;
64571       return *this;
64572     }
64573 
64574     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3PropertiesEXT &
setDynamicPrimitiveTopologyUnrestrictedVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64575       setDynamicPrimitiveTopologyUnrestricted( VULKAN_HPP_NAMESPACE::Bool32 dynamicPrimitiveTopologyUnrestricted_ ) VULKAN_HPP_NOEXCEPT
64576     {
64577       dynamicPrimitiveTopologyUnrestricted = dynamicPrimitiveTopologyUnrestricted_;
64578       return *this;
64579     }
64580 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64581 
operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64582     operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
64583     {
64584       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *>( this );
64585     }
64586 
operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64587     operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT &() VULKAN_HPP_NOEXCEPT
64588     {
64589       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *>( this );
64590     }
64591 
64592 #if defined( VULKAN_HPP_USE_REFLECT )
64593 #  if 14 <= VULKAN_HPP_CPP_VERSION
64594     auto
64595 #  else
64596     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
64597 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64598       reflect() const VULKAN_HPP_NOEXCEPT
64599     {
64600       return std::tie( sType, pNext, dynamicPrimitiveTopologyUnrestricted );
64601     }
64602 #endif
64603 
64604 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64605     auto operator<=>( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & ) const = default;
64606 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64607     bool operator==( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64608     {
64609 #  if defined( VULKAN_HPP_USE_REFLECT )
64610       return this->reflect() == rhs.reflect();
64611 #  else
64612       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicPrimitiveTopologyUnrestricted == rhs.dynamicPrimitiveTopologyUnrestricted );
64613 #  endif
64614     }
64615 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64616     bool operator!=( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64617     {
64618       return !operator==( rhs );
64619     }
64620 #endif
64621 
64622   public:
64623     VULKAN_HPP_NAMESPACE::StructureType sType                                = StructureType::ePhysicalDeviceExtendedDynamicState3PropertiesEXT;
64624     void *                              pNext                                = {};
64625     VULKAN_HPP_NAMESPACE::Bool32        dynamicPrimitiveTopologyUnrestricted = {};
64626   };
64627 
64628   template <>
64629   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicState3PropertiesEXT>
64630   {
64631     using Type = PhysicalDeviceExtendedDynamicState3PropertiesEXT;
64632   };
64633 
64634   struct PhysicalDeviceExtendedDynamicStateFeaturesEXT
64635   {
64636     using NativeType = VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
64637 
64638     static const bool                                  allowDuplicate = false;
64639     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT;
64640 
64641 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64642     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ = {},
64643                                                                         void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
64644       : pNext{ pNext_ }
64645       , extendedDynamicState{ extendedDynamicState_ }
64646     {
64647     }
64648 
64649     VULKAN_HPP_CONSTEXPR
64650       PhysicalDeviceExtendedDynamicStateFeaturesEXT( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64651 
PhysicalDeviceExtendedDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64652     PhysicalDeviceExtendedDynamicStateFeaturesEXT( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64653       : PhysicalDeviceExtendedDynamicStateFeaturesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicStateFeaturesEXT const *>( &rhs ) )
64654     {
64655     }
64656 
64657     PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64658 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64659 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64660     PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64661     {
64662       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT const *>( &rhs );
64663       return *this;
64664     }
64665 
64666 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64667     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64668     {
64669       pNext = pNext_;
64670       return *this;
64671     }
64672 
64673     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT &
setExtendedDynamicStateVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64674       setExtendedDynamicState( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ ) VULKAN_HPP_NOEXCEPT
64675     {
64676       extendedDynamicState = extendedDynamicState_;
64677       return *this;
64678     }
64679 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64680 
operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64681     operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
64682     {
64683       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *>( this );
64684     }
64685 
operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64686     operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT
64687     {
64688       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *>( this );
64689     }
64690 
64691 #if defined( VULKAN_HPP_USE_REFLECT )
64692 #  if 14 <= VULKAN_HPP_CPP_VERSION
64693     auto
64694 #  else
64695     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
64696 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64697       reflect() const VULKAN_HPP_NOEXCEPT
64698     {
64699       return std::tie( sType, pNext, extendedDynamicState );
64700     }
64701 #endif
64702 
64703 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64704     auto operator<=>( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & ) const = default;
64705 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64706     bool operator==( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64707     {
64708 #  if defined( VULKAN_HPP_USE_REFLECT )
64709       return this->reflect() == rhs.reflect();
64710 #  else
64711       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedDynamicState == rhs.extendedDynamicState );
64712 #  endif
64713     }
64714 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64715     bool operator!=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64716     {
64717       return !operator==( rhs );
64718     }
64719 #endif
64720 
64721   public:
64722     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT;
64723     void *                              pNext                = {};
64724     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState = {};
64725   };
64726 
64727   template <>
64728   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT>
64729   {
64730     using Type = PhysicalDeviceExtendedDynamicStateFeaturesEXT;
64731   };
64732 
64733   struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV
64734   {
64735     using NativeType = VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
64736 
64737     static const bool                                  allowDuplicate = false;
64738     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
64739 
64740 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedSparseAddressSpaceFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64741     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 extendedSparseAddressSpace_ = {},
64742                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
64743       : pNext{ pNext_ }
64744       , extendedSparseAddressSpace{ extendedSparseAddressSpace_ }
64745     {
64746     }
64747 
64748     VULKAN_HPP_CONSTEXPR
64749       PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64750 
PhysicalDeviceExtendedSparseAddressSpaceFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64751     PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
64752       : PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( *reinterpret_cast<PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const *>( &rhs ) )
64753     {
64754     }
64755 
64756     PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV &
64757       operator=( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64758 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64759 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64760     PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV & operator=( VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
64761     {
64762       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const *>( &rhs );
64763       return *this;
64764     }
64765 
64766 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64767     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64768     {
64769       pNext = pNext_;
64770       return *this;
64771     }
64772 
64773     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV &
setExtendedSparseAddressSpaceVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64774       setExtendedSparseAddressSpace( VULKAN_HPP_NAMESPACE::Bool32 extendedSparseAddressSpace_ ) VULKAN_HPP_NOEXCEPT
64775     {
64776       extendedSparseAddressSpace = extendedSparseAddressSpace_;
64777       return *this;
64778     }
64779 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64780 
operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64781     operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
64782     {
64783       return *reinterpret_cast<const VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV *>( this );
64784     }
64785 
operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64786     operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV &() VULKAN_HPP_NOEXCEPT
64787     {
64788       return *reinterpret_cast<VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV *>( this );
64789     }
64790 
64791 #if defined( VULKAN_HPP_USE_REFLECT )
64792 #  if 14 <= VULKAN_HPP_CPP_VERSION
64793     auto
64794 #  else
64795     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
64796 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64797       reflect() const VULKAN_HPP_NOEXCEPT
64798     {
64799       return std::tie( sType, pNext, extendedSparseAddressSpace );
64800     }
64801 #endif
64802 
64803 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64804     auto operator<=>( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & ) const = default;
64805 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64806     bool operator==( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
64807     {
64808 #  if defined( VULKAN_HPP_USE_REFLECT )
64809       return this->reflect() == rhs.reflect();
64810 #  else
64811       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedSparseAddressSpace == rhs.extendedSparseAddressSpace );
64812 #  endif
64813     }
64814 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64815     bool operator!=( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
64816     {
64817       return !operator==( rhs );
64818     }
64819 #endif
64820 
64821   public:
64822     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
64823     void *                              pNext                      = {};
64824     VULKAN_HPP_NAMESPACE::Bool32        extendedSparseAddressSpace = {};
64825   };
64826 
64827   template <>
64828   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedSparseAddressSpaceFeaturesNV>
64829   {
64830     using Type = PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
64831   };
64832 
64833   struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV
64834   {
64835     using NativeType = VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
64836 
64837     static const bool                                  allowDuplicate = false;
64838     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
64839 
64840 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedSparseAddressSpacePropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64841     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( VULKAN_HPP_NAMESPACE::DeviceSize       extendedSparseAddressSpaceSize_ = {},
64842                                                                                VULKAN_HPP_NAMESPACE::ImageUsageFlags  extendedSparseImageUsageFlags_  = {},
64843                                                                                VULKAN_HPP_NAMESPACE::BufferUsageFlags extendedSparseBufferUsageFlags_ = {},
64844                                                                                void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
64845       : pNext{ pNext_ }
64846       , extendedSparseAddressSpaceSize{ extendedSparseAddressSpaceSize_ }
64847       , extendedSparseImageUsageFlags{ extendedSparseImageUsageFlags_ }
64848       , extendedSparseBufferUsageFlags{ extendedSparseBufferUsageFlags_ }
64849     {
64850     }
64851 
64852     VULKAN_HPP_CONSTEXPR
64853       PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64854 
PhysicalDeviceExtendedSparseAddressSpacePropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64855     PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
64856       : PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( *reinterpret_cast<PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const *>( &rhs ) )
64857     {
64858     }
64859 
64860     PhysicalDeviceExtendedSparseAddressSpacePropertiesNV &
64861       operator=( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64862 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64863 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64864     PhysicalDeviceExtendedSparseAddressSpacePropertiesNV & operator=( VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
64865     {
64866       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const *>( &rhs );
64867       return *this;
64868     }
64869 
operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64870     operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const &() const VULKAN_HPP_NOEXCEPT
64871     {
64872       return *reinterpret_cast<const VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV *>( this );
64873     }
64874 
operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64875     operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV &() VULKAN_HPP_NOEXCEPT
64876     {
64877       return *reinterpret_cast<VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV *>( this );
64878     }
64879 
64880 #if defined( VULKAN_HPP_USE_REFLECT )
64881 #  if 14 <= VULKAN_HPP_CPP_VERSION
64882     auto
64883 #  else
64884     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
64885                void * const &,
64886                VULKAN_HPP_NAMESPACE::DeviceSize const &,
64887                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
64888                VULKAN_HPP_NAMESPACE::BufferUsageFlags const &>
64889 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64890       reflect() const VULKAN_HPP_NOEXCEPT
64891     {
64892       return std::tie( sType, pNext, extendedSparseAddressSpaceSize, extendedSparseImageUsageFlags, extendedSparseBufferUsageFlags );
64893     }
64894 #endif
64895 
64896 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64897     auto operator<=>( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & ) const = default;
64898 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64899     bool operator==( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
64900     {
64901 #  if defined( VULKAN_HPP_USE_REFLECT )
64902       return this->reflect() == rhs.reflect();
64903 #  else
64904       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedSparseAddressSpaceSize == rhs.extendedSparseAddressSpaceSize ) &&
64905              ( extendedSparseImageUsageFlags == rhs.extendedSparseImageUsageFlags ) && ( extendedSparseBufferUsageFlags == rhs.extendedSparseBufferUsageFlags );
64906 #  endif
64907     }
64908 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64909     bool operator!=( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
64910     {
64911       return !operator==( rhs );
64912     }
64913 #endif
64914 
64915   public:
64916     VULKAN_HPP_NAMESPACE::StructureType    sType                          = StructureType::ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
64917     void *                                 pNext                          = {};
64918     VULKAN_HPP_NAMESPACE::DeviceSize       extendedSparseAddressSpaceSize = {};
64919     VULKAN_HPP_NAMESPACE::ImageUsageFlags  extendedSparseImageUsageFlags  = {};
64920     VULKAN_HPP_NAMESPACE::BufferUsageFlags extendedSparseBufferUsageFlags = {};
64921   };
64922 
64923   template <>
64924   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV>
64925   {
64926     using Type = PhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
64927   };
64928 
64929   struct PhysicalDeviceExternalBufferInfo
64930   {
64931     using NativeType = VkPhysicalDeviceExternalBufferInfo;
64932 
64933     static const bool                                  allowDuplicate = false;
64934     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalBufferInfo;
64935 
64936 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalBufferInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64937     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo(
64938       VULKAN_HPP_NAMESPACE::BufferCreateFlags                flags_      = {},
64939       VULKAN_HPP_NAMESPACE::BufferUsageFlags                 usage_      = {},
64940       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
64941       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
64942       : pNext{ pNext_ }
64943       , flags{ flags_ }
64944       , usage{ usage_ }
64945       , handleType{ handleType_ }
64946     {
64947     }
64948 
64949     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64950 
PhysicalDeviceExternalBufferInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64951     PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
64952       : PhysicalDeviceExternalBufferInfo( *reinterpret_cast<PhysicalDeviceExternalBufferInfo const *>( &rhs ) )
64953     {
64954     }
64955 
64956     PhysicalDeviceExternalBufferInfo & operator=( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64957 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64958 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64959     PhysicalDeviceExternalBufferInfo & operator=( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
64960     {
64961       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo const *>( &rhs );
64962       return *this;
64963     }
64964 
64965 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64966     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
64967     {
64968       pNext = pNext_;
64969       return *this;
64970     }
64971 
setFlagsVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64972     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
64973     {
64974       flags = flags_;
64975       return *this;
64976     }
64977 
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64978     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
64979     {
64980       usage = usage_;
64981       return *this;
64982     }
64983 
64984     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64985       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
64986     {
64987       handleType = handleType_;
64988       return *this;
64989     }
64990 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64991 
operator VkPhysicalDeviceExternalBufferInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64992     operator VkPhysicalDeviceExternalBufferInfo const &() const VULKAN_HPP_NOEXCEPT
64993     {
64994       return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( this );
64995     }
64996 
operator VkPhysicalDeviceExternalBufferInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64997     operator VkPhysicalDeviceExternalBufferInfo &() VULKAN_HPP_NOEXCEPT
64998     {
64999       return *reinterpret_cast<VkPhysicalDeviceExternalBufferInfo *>( this );
65000     }
65001 
65002 #if defined( VULKAN_HPP_USE_REFLECT )
65003 #  if 14 <= VULKAN_HPP_CPP_VERSION
65004     auto
65005 #  else
65006     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
65007                const void * const &,
65008                VULKAN_HPP_NAMESPACE::BufferCreateFlags const &,
65009                VULKAN_HPP_NAMESPACE::BufferUsageFlags const &,
65010                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
65011 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo65012       reflect() const VULKAN_HPP_NOEXCEPT
65013     {
65014       return std::tie( sType, pNext, flags, usage, handleType );
65015     }
65016 #endif
65017 
65018 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65019     auto operator<=>( PhysicalDeviceExternalBufferInfo const & ) const = default;
65020 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo65021     bool operator==( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
65022     {
65023 #  if defined( VULKAN_HPP_USE_REFLECT )
65024       return this->reflect() == rhs.reflect();
65025 #  else
65026       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( usage == rhs.usage ) && ( handleType == rhs.handleType );
65027 #  endif
65028     }
65029 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo65030     bool operator!=( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
65031     {
65032       return !operator==( rhs );
65033     }
65034 #endif
65035 
65036   public:
65037     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::ePhysicalDeviceExternalBufferInfo;
65038     const void *                                           pNext      = {};
65039     VULKAN_HPP_NAMESPACE::BufferCreateFlags                flags      = {};
65040     VULKAN_HPP_NAMESPACE::BufferUsageFlags                 usage      = {};
65041     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
65042   };
65043 
65044   template <>
65045   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalBufferInfo>
65046   {
65047     using Type = PhysicalDeviceExternalBufferInfo;
65048   };
65049 
65050   using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
65051 
65052   struct PhysicalDeviceExternalFenceInfo
65053   {
65054     using NativeType = VkPhysicalDeviceExternalFenceInfo;
65055 
65056     static const bool                                  allowDuplicate = false;
65057     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalFenceInfo;
65058 
65059 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalFenceInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo65060     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo(
65061       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
65062       const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
65063       : pNext{ pNext_ }
65064       , handleType{ handleType_ }
65065     {
65066     }
65067 
65068     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65069 
PhysicalDeviceExternalFenceInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo65070     PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
65071       : PhysicalDeviceExternalFenceInfo( *reinterpret_cast<PhysicalDeviceExternalFenceInfo const *>( &rhs ) )
65072     {
65073     }
65074 
65075     PhysicalDeviceExternalFenceInfo & operator=( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65076 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65077 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo65078     PhysicalDeviceExternalFenceInfo & operator=( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
65079     {
65080       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo const *>( &rhs );
65081       return *this;
65082     }
65083 
65084 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo65085     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
65086     {
65087       pNext = pNext_;
65088       return *this;
65089     }
65090 
65091     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo65092       setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
65093     {
65094       handleType = handleType_;
65095       return *this;
65096     }
65097 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65098 
operator VkPhysicalDeviceExternalFenceInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo65099     operator VkPhysicalDeviceExternalFenceInfo const &() const VULKAN_HPP_NOEXCEPT
65100     {
65101       return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( this );
65102     }
65103 
operator VkPhysicalDeviceExternalFenceInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo65104     operator VkPhysicalDeviceExternalFenceInfo &() VULKAN_HPP_NOEXCEPT
65105     {
65106       return *reinterpret_cast<VkPhysicalDeviceExternalFenceInfo *>( this );
65107     }
65108 
65109 #if defined( VULKAN_HPP_USE_REFLECT )
65110 #  if 14 <= VULKAN_HPP_CPP_VERSION
65111     auto
65112 #  else
65113     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
65114 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo65115       reflect() const VULKAN_HPP_NOEXCEPT
65116     {
65117       return std::tie( sType, pNext, handleType );
65118     }
65119 #endif
65120 
65121 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65122     auto operator<=>( PhysicalDeviceExternalFenceInfo const & ) const = default;
65123 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo65124     bool operator==( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
65125     {
65126 #  if defined( VULKAN_HPP_USE_REFLECT )
65127       return this->reflect() == rhs.reflect();
65128 #  else
65129       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType );
65130 #  endif
65131     }
65132 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo65133     bool operator!=( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
65134     {
65135       return !operator==( rhs );
65136     }
65137 #endif
65138 
65139   public:
65140     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::ePhysicalDeviceExternalFenceInfo;
65141     const void *                                          pNext      = {};
65142     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
65143   };
65144 
65145   template <>
65146   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalFenceInfo>
65147   {
65148     using Type = PhysicalDeviceExternalFenceInfo;
65149   };
65150 
65151   using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
65152 
65153 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
65154   struct PhysicalDeviceExternalFormatResolveFeaturesANDROID
65155   {
65156     using NativeType = VkPhysicalDeviceExternalFormatResolveFeaturesANDROID;
65157 
65158     static const bool                                  allowDuplicate = false;
65159     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalFormatResolveFeaturesANDROID;
65160 
65161 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalFormatResolveFeaturesANDROIDVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID65162     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFormatResolveFeaturesANDROID( VULKAN_HPP_NAMESPACE::Bool32 externalFormatResolve_ = {},
65163                                                                              void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
65164       : pNext{ pNext_ }
65165       , externalFormatResolve{ externalFormatResolve_ }
65166     {
65167     }
65168 
65169     VULKAN_HPP_CONSTEXPR
65170       PhysicalDeviceExternalFormatResolveFeaturesANDROID( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65171 
PhysicalDeviceExternalFormatResolveFeaturesANDROIDVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID65172     PhysicalDeviceExternalFormatResolveFeaturesANDROID( VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
65173       : PhysicalDeviceExternalFormatResolveFeaturesANDROID( *reinterpret_cast<PhysicalDeviceExternalFormatResolveFeaturesANDROID const *>( &rhs ) )
65174     {
65175     }
65176 
65177     PhysicalDeviceExternalFormatResolveFeaturesANDROID &
65178       operator=( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65179 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65180 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID65181     PhysicalDeviceExternalFormatResolveFeaturesANDROID & operator=( VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
65182     {
65183       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID const *>( &rhs );
65184       return *this;
65185     }
65186 
65187 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID65188     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFormatResolveFeaturesANDROID & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65189     {
65190       pNext = pNext_;
65191       return *this;
65192     }
65193 
65194     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFormatResolveFeaturesANDROID &
setExternalFormatResolveVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID65195       setExternalFormatResolve( VULKAN_HPP_NAMESPACE::Bool32 externalFormatResolve_ ) VULKAN_HPP_NOEXCEPT
65196     {
65197       externalFormatResolve = externalFormatResolve_;
65198       return *this;
65199     }
65200 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65201 
operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID65202     operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const &() const VULKAN_HPP_NOEXCEPT
65203     {
65204       return *reinterpret_cast<const VkPhysicalDeviceExternalFormatResolveFeaturesANDROID *>( this );
65205     }
65206 
operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID65207     operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID &() VULKAN_HPP_NOEXCEPT
65208     {
65209       return *reinterpret_cast<VkPhysicalDeviceExternalFormatResolveFeaturesANDROID *>( this );
65210     }
65211 
65212 #  if defined( VULKAN_HPP_USE_REFLECT )
65213 #    if 14 <= VULKAN_HPP_CPP_VERSION
65214     auto
65215 #    else
65216     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
65217 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID65218       reflect() const VULKAN_HPP_NOEXCEPT
65219     {
65220       return std::tie( sType, pNext, externalFormatResolve );
65221     }
65222 #  endif
65223 
65224 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65225     auto operator<=>( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & ) const = default;
65226 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID65227     bool operator==( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
65228     {
65229 #    if defined( VULKAN_HPP_USE_REFLECT )
65230       return this->reflect() == rhs.reflect();
65231 #    else
65232       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormatResolve == rhs.externalFormatResolve );
65233 #    endif
65234     }
65235 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID65236     bool operator!=( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
65237     {
65238       return !operator==( rhs );
65239     }
65240 #  endif
65241 
65242   public:
65243     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceExternalFormatResolveFeaturesANDROID;
65244     void *                              pNext                 = {};
65245     VULKAN_HPP_NAMESPACE::Bool32        externalFormatResolve = {};
65246   };
65247 
65248   template <>
65249   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalFormatResolveFeaturesANDROID>
65250   {
65251     using Type = PhysicalDeviceExternalFormatResolveFeaturesANDROID;
65252   };
65253 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
65254 
65255 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
65256   struct PhysicalDeviceExternalFormatResolvePropertiesANDROID
65257   {
65258     using NativeType = VkPhysicalDeviceExternalFormatResolvePropertiesANDROID;
65259 
65260     static const bool                                  allowDuplicate = false;
65261     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalFormatResolvePropertiesANDROID;
65262 
65263 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalFormatResolvePropertiesANDROIDVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID65264     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFormatResolvePropertiesANDROID(
65265       VULKAN_HPP_NAMESPACE::Bool32         nullColorAttachmentWithExternalFormatResolve_ = {},
65266       VULKAN_HPP_NAMESPACE::ChromaLocation externalFormatResolveChromaOffsetX_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
65267       VULKAN_HPP_NAMESPACE::ChromaLocation externalFormatResolveChromaOffsetY_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
65268       void *                               pNext_                                        = nullptr ) VULKAN_HPP_NOEXCEPT
65269       : pNext{ pNext_ }
65270       , nullColorAttachmentWithExternalFormatResolve{ nullColorAttachmentWithExternalFormatResolve_ }
65271       , externalFormatResolveChromaOffsetX{ externalFormatResolveChromaOffsetX_ }
65272       , externalFormatResolveChromaOffsetY{ externalFormatResolveChromaOffsetY_ }
65273     {
65274     }
65275 
65276     VULKAN_HPP_CONSTEXPR
65277       PhysicalDeviceExternalFormatResolvePropertiesANDROID( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65278 
PhysicalDeviceExternalFormatResolvePropertiesANDROIDVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID65279     PhysicalDeviceExternalFormatResolvePropertiesANDROID( VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
65280       : PhysicalDeviceExternalFormatResolvePropertiesANDROID( *reinterpret_cast<PhysicalDeviceExternalFormatResolvePropertiesANDROID const *>( &rhs ) )
65281     {
65282     }
65283 
65284     PhysicalDeviceExternalFormatResolvePropertiesANDROID &
65285       operator=( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65286 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65287 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID65288     PhysicalDeviceExternalFormatResolvePropertiesANDROID & operator=( VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
65289     {
65290       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID const *>( &rhs );
65291       return *this;
65292     }
65293 
operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID65294     operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT
65295     {
65296       return *reinterpret_cast<const VkPhysicalDeviceExternalFormatResolvePropertiesANDROID *>( this );
65297     }
65298 
operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID65299     operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID &() VULKAN_HPP_NOEXCEPT
65300     {
65301       return *reinterpret_cast<VkPhysicalDeviceExternalFormatResolvePropertiesANDROID *>( this );
65302     }
65303 
65304 #  if defined( VULKAN_HPP_USE_REFLECT )
65305 #    if 14 <= VULKAN_HPP_CPP_VERSION
65306     auto
65307 #    else
65308     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
65309                void * const &,
65310                VULKAN_HPP_NAMESPACE::Bool32 const &,
65311                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
65312                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
65313 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID65314       reflect() const VULKAN_HPP_NOEXCEPT
65315     {
65316       return std::tie( sType, pNext, nullColorAttachmentWithExternalFormatResolve, externalFormatResolveChromaOffsetX, externalFormatResolveChromaOffsetY );
65317     }
65318 #  endif
65319 
65320 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65321     auto operator<=>( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & ) const = default;
65322 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID65323     bool operator==( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
65324     {
65325 #    if defined( VULKAN_HPP_USE_REFLECT )
65326       return this->reflect() == rhs.reflect();
65327 #    else
65328       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
65329              ( nullColorAttachmentWithExternalFormatResolve == rhs.nullColorAttachmentWithExternalFormatResolve ) &&
65330              ( externalFormatResolveChromaOffsetX == rhs.externalFormatResolveChromaOffsetX ) &&
65331              ( externalFormatResolveChromaOffsetY == rhs.externalFormatResolveChromaOffsetY );
65332 #    endif
65333     }
65334 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID65335     bool operator!=( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
65336     {
65337       return !operator==( rhs );
65338     }
65339 #  endif
65340 
65341   public:
65342     VULKAN_HPP_NAMESPACE::StructureType  sType                                        = StructureType::ePhysicalDeviceExternalFormatResolvePropertiesANDROID;
65343     void *                               pNext                                        = {};
65344     VULKAN_HPP_NAMESPACE::Bool32         nullColorAttachmentWithExternalFormatResolve = {};
65345     VULKAN_HPP_NAMESPACE::ChromaLocation externalFormatResolveChromaOffsetX           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
65346     VULKAN_HPP_NAMESPACE::ChromaLocation externalFormatResolveChromaOffsetY           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
65347   };
65348 
65349   template <>
65350   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalFormatResolvePropertiesANDROID>
65351   {
65352     using Type = PhysicalDeviceExternalFormatResolvePropertiesANDROID;
65353   };
65354 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
65355 
65356   struct PhysicalDeviceExternalImageFormatInfo
65357   {
65358     using NativeType = VkPhysicalDeviceExternalImageFormatInfo;
65359 
65360     static const bool                                  allowDuplicate = false;
65361     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalImageFormatInfo;
65362 
65363 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalImageFormatInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo65364     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo(
65365       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
65366       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
65367       : pNext{ pNext_ }
65368       , handleType{ handleType_ }
65369     {
65370     }
65371 
65372     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65373 
PhysicalDeviceExternalImageFormatInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo65374     PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
65375       : PhysicalDeviceExternalImageFormatInfo( *reinterpret_cast<PhysicalDeviceExternalImageFormatInfo const *>( &rhs ) )
65376     {
65377     }
65378 
65379     PhysicalDeviceExternalImageFormatInfo & operator=( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65380 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65381 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo65382     PhysicalDeviceExternalImageFormatInfo & operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
65383     {
65384       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo const *>( &rhs );
65385       return *this;
65386     }
65387 
65388 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo65389     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
65390     {
65391       pNext = pNext_;
65392       return *this;
65393     }
65394 
65395     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo65396       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
65397     {
65398       handleType = handleType_;
65399       return *this;
65400     }
65401 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65402 
operator VkPhysicalDeviceExternalImageFormatInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo65403     operator VkPhysicalDeviceExternalImageFormatInfo const &() const VULKAN_HPP_NOEXCEPT
65404     {
65405       return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo *>( this );
65406     }
65407 
operator VkPhysicalDeviceExternalImageFormatInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo65408     operator VkPhysicalDeviceExternalImageFormatInfo &() VULKAN_HPP_NOEXCEPT
65409     {
65410       return *reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo *>( this );
65411     }
65412 
65413 #if defined( VULKAN_HPP_USE_REFLECT )
65414 #  if 14 <= VULKAN_HPP_CPP_VERSION
65415     auto
65416 #  else
65417     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
65418 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo65419       reflect() const VULKAN_HPP_NOEXCEPT
65420     {
65421       return std::tie( sType, pNext, handleType );
65422     }
65423 #endif
65424 
65425 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65426     auto operator<=>( PhysicalDeviceExternalImageFormatInfo const & ) const = default;
65427 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo65428     bool operator==( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
65429     {
65430 #  if defined( VULKAN_HPP_USE_REFLECT )
65431       return this->reflect() == rhs.reflect();
65432 #  else
65433       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType );
65434 #  endif
65435     }
65436 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo65437     bool operator!=( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
65438     {
65439       return !operator==( rhs );
65440     }
65441 #endif
65442 
65443   public:
65444     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::ePhysicalDeviceExternalImageFormatInfo;
65445     const void *                                           pNext      = {};
65446     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
65447   };
65448 
65449   template <>
65450   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalImageFormatInfo>
65451   {
65452     using Type = PhysicalDeviceExternalImageFormatInfo;
65453   };
65454 
65455   using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
65456 
65457   struct PhysicalDeviceExternalMemoryHostPropertiesEXT
65458   {
65459     using NativeType = VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
65460 
65461     static const bool                                  allowDuplicate = false;
65462     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
65463 
65464 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemoryHostPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT65465     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT( VULKAN_HPP_NAMESPACE::DeviceSize minImportedHostPointerAlignment_ = {},
65466                                                                         void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
65467       : pNext{ pNext_ }
65468       , minImportedHostPointerAlignment{ minImportedHostPointerAlignment_ }
65469     {
65470     }
65471 
65472     VULKAN_HPP_CONSTEXPR
65473       PhysicalDeviceExternalMemoryHostPropertiesEXT( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65474 
PhysicalDeviceExternalMemoryHostPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT65475     PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65476       : PhysicalDeviceExternalMemoryHostPropertiesEXT( *reinterpret_cast<PhysicalDeviceExternalMemoryHostPropertiesEXT const *>( &rhs ) )
65477     {
65478     }
65479 
65480     PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65481 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65482 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT65483     PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65484     {
65485       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT const *>( &rhs );
65486       return *this;
65487     }
65488 
operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT65489     operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
65490     {
65491       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT *>( this );
65492     }
65493 
operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT65494     operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT &() VULKAN_HPP_NOEXCEPT
65495     {
65496       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryHostPropertiesEXT *>( this );
65497     }
65498 
65499 #if defined( VULKAN_HPP_USE_REFLECT )
65500 #  if 14 <= VULKAN_HPP_CPP_VERSION
65501     auto
65502 #  else
65503     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
65504 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT65505       reflect() const VULKAN_HPP_NOEXCEPT
65506     {
65507       return std::tie( sType, pNext, minImportedHostPointerAlignment );
65508     }
65509 #endif
65510 
65511 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65512     auto operator<=>( PhysicalDeviceExternalMemoryHostPropertiesEXT const & ) const = default;
65513 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT65514     bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65515     {
65516 #  if defined( VULKAN_HPP_USE_REFLECT )
65517       return this->reflect() == rhs.reflect();
65518 #  else
65519       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment );
65520 #  endif
65521     }
65522 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT65523     bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65524     {
65525       return !operator==( rhs );
65526     }
65527 #endif
65528 
65529   public:
65530     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
65531     void *                              pNext                           = {};
65532     VULKAN_HPP_NAMESPACE::DeviceSize    minImportedHostPointerAlignment = {};
65533   };
65534 
65535   template <>
65536   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT>
65537   {
65538     using Type = PhysicalDeviceExternalMemoryHostPropertiesEXT;
65539   };
65540 
65541   struct PhysicalDeviceExternalMemoryRDMAFeaturesNV
65542   {
65543     using NativeType = VkPhysicalDeviceExternalMemoryRDMAFeaturesNV;
65544 
65545     static const bool                                  allowDuplicate = false;
65546     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV;
65547 
65548 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemoryRDMAFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65549     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryRDMAFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 externalMemoryRDMA_ = {},
65550                                                                      void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
65551       : pNext{ pNext_ }
65552       , externalMemoryRDMA{ externalMemoryRDMA_ }
65553     {
65554     }
65555 
65556     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryRDMAFeaturesNV( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65557 
PhysicalDeviceExternalMemoryRDMAFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65558     PhysicalDeviceExternalMemoryRDMAFeaturesNV( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
65559       : PhysicalDeviceExternalMemoryRDMAFeaturesNV( *reinterpret_cast<PhysicalDeviceExternalMemoryRDMAFeaturesNV const *>( &rhs ) )
65560     {
65561     }
65562 
65563     PhysicalDeviceExternalMemoryRDMAFeaturesNV & operator=( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65564 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65565 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65566     PhysicalDeviceExternalMemoryRDMAFeaturesNV & operator=( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
65567     {
65568       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV const *>( &rhs );
65569       return *this;
65570     }
65571 
65572 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65573     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65574     {
65575       pNext = pNext_;
65576       return *this;
65577     }
65578 
65579     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV &
setExternalMemoryRDMAVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65580       setExternalMemoryRDMA( VULKAN_HPP_NAMESPACE::Bool32 externalMemoryRDMA_ ) VULKAN_HPP_NOEXCEPT
65581     {
65582       externalMemoryRDMA = externalMemoryRDMA_;
65583       return *this;
65584     }
65585 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65586 
operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65587     operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
65588     {
65589       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV *>( this );
65590     }
65591 
operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65592     operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV &() VULKAN_HPP_NOEXCEPT
65593     {
65594       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV *>( this );
65595     }
65596 
65597 #if defined( VULKAN_HPP_USE_REFLECT )
65598 #  if 14 <= VULKAN_HPP_CPP_VERSION
65599     auto
65600 #  else
65601     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
65602 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65603       reflect() const VULKAN_HPP_NOEXCEPT
65604     {
65605       return std::tie( sType, pNext, externalMemoryRDMA );
65606     }
65607 #endif
65608 
65609 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65610     auto operator<=>( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & ) const = default;
65611 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65612     bool operator==( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
65613     {
65614 #  if defined( VULKAN_HPP_USE_REFLECT )
65615       return this->reflect() == rhs.reflect();
65616 #  else
65617       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryRDMA == rhs.externalMemoryRDMA );
65618 #  endif
65619     }
65620 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65621     bool operator!=( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
65622     {
65623       return !operator==( rhs );
65624     }
65625 #endif
65626 
65627   public:
65628     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV;
65629     void *                              pNext              = {};
65630     VULKAN_HPP_NAMESPACE::Bool32        externalMemoryRDMA = {};
65631   };
65632 
65633   template <>
65634   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV>
65635   {
65636     using Type = PhysicalDeviceExternalMemoryRDMAFeaturesNV;
65637   };
65638 
65639 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
65640   struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
65641   {
65642     using NativeType = VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
65643 
65644     static const bool                                  allowDuplicate = false;
65645     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
65646 
65647 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65648     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( VULKAN_HPP_NAMESPACE::Bool32 screenBufferImport_ = {},
65649                                                                               void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
65650       : pNext{ pNext_ }
65651       , screenBufferImport{ screenBufferImport_ }
65652     {
65653     }
65654 
65655     VULKAN_HPP_CONSTEXPR
65656       PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65657 
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65658     PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
65659       : PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( *reinterpret_cast<PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const *>( &rhs ) )
65660     {
65661     }
65662 
65663     PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX &
65664       operator=( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65665 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65666 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65667     PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & operator=( VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
65668     {
65669       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const *>( &rhs );
65670       return *this;
65671     }
65672 
65673 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65674     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65675     {
65676       pNext = pNext_;
65677       return *this;
65678     }
65679 
65680     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX &
setScreenBufferImportVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65681       setScreenBufferImport( VULKAN_HPP_NAMESPACE::Bool32 screenBufferImport_ ) VULKAN_HPP_NOEXCEPT
65682     {
65683       screenBufferImport = screenBufferImport_;
65684       return *this;
65685     }
65686 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65687 
operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65688     operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const &() const VULKAN_HPP_NOEXCEPT
65689     {
65690       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX *>( this );
65691     }
65692 
operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65693     operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX &() VULKAN_HPP_NOEXCEPT
65694     {
65695       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX *>( this );
65696     }
65697 
65698 #  if defined( VULKAN_HPP_USE_REFLECT )
65699 #    if 14 <= VULKAN_HPP_CPP_VERSION
65700     auto
65701 #    else
65702     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
65703 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65704       reflect() const VULKAN_HPP_NOEXCEPT
65705     {
65706       return std::tie( sType, pNext, screenBufferImport );
65707     }
65708 #  endif
65709 
65710 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65711     auto operator<=>( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & ) const = default;
65712 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65713     bool operator==( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
65714     {
65715 #    if defined( VULKAN_HPP_USE_REFLECT )
65716       return this->reflect() == rhs.reflect();
65717 #    else
65718       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( screenBufferImport == rhs.screenBufferImport );
65719 #    endif
65720     }
65721 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65722     bool operator!=( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
65723     {
65724       return !operator==( rhs );
65725     }
65726 #  endif
65727 
65728   public:
65729     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
65730     void *                              pNext              = {};
65731     VULKAN_HPP_NAMESPACE::Bool32        screenBufferImport = {};
65732   };
65733 
65734   template <>
65735   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX>
65736   {
65737     using Type = PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
65738   };
65739 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
65740 
65741   struct PhysicalDeviceExternalSemaphoreInfo
65742   {
65743     using NativeType = VkPhysicalDeviceExternalSemaphoreInfo;
65744 
65745     static const bool                                  allowDuplicate = false;
65746     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
65747 
65748 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalSemaphoreInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65749     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo(
65750       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
65751       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
65752       : pNext{ pNext_ }
65753       , handleType{ handleType_ }
65754     {
65755     }
65756 
65757     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65758 
PhysicalDeviceExternalSemaphoreInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65759     PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
65760       : PhysicalDeviceExternalSemaphoreInfo( *reinterpret_cast<PhysicalDeviceExternalSemaphoreInfo const *>( &rhs ) )
65761     {
65762     }
65763 
65764     PhysicalDeviceExternalSemaphoreInfo & operator=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65765 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65766 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65767     PhysicalDeviceExternalSemaphoreInfo & operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
65768     {
65769       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo const *>( &rhs );
65770       return *this;
65771     }
65772 
65773 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65774     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
65775     {
65776       pNext = pNext_;
65777       return *this;
65778     }
65779 
65780     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65781       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
65782     {
65783       handleType = handleType_;
65784       return *this;
65785     }
65786 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65787 
operator VkPhysicalDeviceExternalSemaphoreInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65788     operator VkPhysicalDeviceExternalSemaphoreInfo const &() const VULKAN_HPP_NOEXCEPT
65789     {
65790       return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( this );
65791     }
65792 
operator VkPhysicalDeviceExternalSemaphoreInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65793     operator VkPhysicalDeviceExternalSemaphoreInfo &() VULKAN_HPP_NOEXCEPT
65794     {
65795       return *reinterpret_cast<VkPhysicalDeviceExternalSemaphoreInfo *>( this );
65796     }
65797 
65798 #if defined( VULKAN_HPP_USE_REFLECT )
65799 #  if 14 <= VULKAN_HPP_CPP_VERSION
65800     auto
65801 #  else
65802     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
65803 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65804       reflect() const VULKAN_HPP_NOEXCEPT
65805     {
65806       return std::tie( sType, pNext, handleType );
65807     }
65808 #endif
65809 
65810 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65811     auto operator<=>( PhysicalDeviceExternalSemaphoreInfo const & ) const = default;
65812 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65813     bool operator==( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
65814     {
65815 #  if defined( VULKAN_HPP_USE_REFLECT )
65816       return this->reflect() == rhs.reflect();
65817 #  else
65818       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType );
65819 #  endif
65820     }
65821 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65822     bool operator!=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
65823     {
65824       return !operator==( rhs );
65825     }
65826 #endif
65827 
65828   public:
65829     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
65830     const void *                                              pNext      = {};
65831     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
65832   };
65833 
65834   template <>
65835   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalSemaphoreInfo>
65836   {
65837     using Type = PhysicalDeviceExternalSemaphoreInfo;
65838   };
65839 
65840   using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
65841 
65842   struct PhysicalDeviceFaultFeaturesEXT
65843   {
65844     using NativeType = VkPhysicalDeviceFaultFeaturesEXT;
65845 
65846     static const bool                                  allowDuplicate = false;
65847     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFaultFeaturesEXT;
65848 
65849 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFaultFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65850     VULKAN_HPP_CONSTEXPR PhysicalDeviceFaultFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 deviceFault_             = {},
65851                                                          VULKAN_HPP_NAMESPACE::Bool32 deviceFaultVendorBinary_ = {},
65852                                                          void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
65853       : pNext{ pNext_ }
65854       , deviceFault{ deviceFault_ }
65855       , deviceFaultVendorBinary{ deviceFaultVendorBinary_ }
65856     {
65857     }
65858 
65859     VULKAN_HPP_CONSTEXPR PhysicalDeviceFaultFeaturesEXT( PhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65860 
PhysicalDeviceFaultFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65861     PhysicalDeviceFaultFeaturesEXT( VkPhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65862       : PhysicalDeviceFaultFeaturesEXT( *reinterpret_cast<PhysicalDeviceFaultFeaturesEXT const *>( &rhs ) )
65863     {
65864     }
65865 
65866     PhysicalDeviceFaultFeaturesEXT & operator=( PhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65867 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65868 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65869     PhysicalDeviceFaultFeaturesEXT & operator=( VkPhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65870     {
65871       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT const *>( &rhs );
65872       return *this;
65873     }
65874 
65875 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65876     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65877     {
65878       pNext = pNext_;
65879       return *this;
65880     }
65881 
setDeviceFaultVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65882     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT & setDeviceFault( VULKAN_HPP_NAMESPACE::Bool32 deviceFault_ ) VULKAN_HPP_NOEXCEPT
65883     {
65884       deviceFault = deviceFault_;
65885       return *this;
65886     }
65887 
65888     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT &
setDeviceFaultVendorBinaryVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65889       setDeviceFaultVendorBinary( VULKAN_HPP_NAMESPACE::Bool32 deviceFaultVendorBinary_ ) VULKAN_HPP_NOEXCEPT
65890     {
65891       deviceFaultVendorBinary = deviceFaultVendorBinary_;
65892       return *this;
65893     }
65894 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65895 
operator VkPhysicalDeviceFaultFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65896     operator VkPhysicalDeviceFaultFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
65897     {
65898       return *reinterpret_cast<const VkPhysicalDeviceFaultFeaturesEXT *>( this );
65899     }
65900 
operator VkPhysicalDeviceFaultFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65901     operator VkPhysicalDeviceFaultFeaturesEXT &() VULKAN_HPP_NOEXCEPT
65902     {
65903       return *reinterpret_cast<VkPhysicalDeviceFaultFeaturesEXT *>( this );
65904     }
65905 
65906 #if defined( VULKAN_HPP_USE_REFLECT )
65907 #  if 14 <= VULKAN_HPP_CPP_VERSION
65908     auto
65909 #  else
65910     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
65911 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65912       reflect() const VULKAN_HPP_NOEXCEPT
65913     {
65914       return std::tie( sType, pNext, deviceFault, deviceFaultVendorBinary );
65915     }
65916 #endif
65917 
65918 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65919     auto operator<=>( PhysicalDeviceFaultFeaturesEXT const & ) const = default;
65920 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65921     bool operator==( PhysicalDeviceFaultFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65922     {
65923 #  if defined( VULKAN_HPP_USE_REFLECT )
65924       return this->reflect() == rhs.reflect();
65925 #  else
65926       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceFault == rhs.deviceFault ) &&
65927              ( deviceFaultVendorBinary == rhs.deviceFaultVendorBinary );
65928 #  endif
65929     }
65930 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65931     bool operator!=( PhysicalDeviceFaultFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65932     {
65933       return !operator==( rhs );
65934     }
65935 #endif
65936 
65937   public:
65938     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceFaultFeaturesEXT;
65939     void *                              pNext                   = {};
65940     VULKAN_HPP_NAMESPACE::Bool32        deviceFault             = {};
65941     VULKAN_HPP_NAMESPACE::Bool32        deviceFaultVendorBinary = {};
65942   };
65943 
65944   template <>
65945   struct CppType<StructureType, StructureType::ePhysicalDeviceFaultFeaturesEXT>
65946   {
65947     using Type = PhysicalDeviceFaultFeaturesEXT;
65948   };
65949 
65950   struct PhysicalDeviceFeatures2
65951   {
65952     using NativeType = VkPhysicalDeviceFeatures2;
65953 
65954     static const bool                                  allowDuplicate = false;
65955     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFeatures2;
65956 
65957 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFeatures2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265958     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
65959       : pNext{ pNext_ }
65960       , features{ features_ }
65961     {
65962     }
65963 
65964     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65965 
PhysicalDeviceFeatures2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265966     PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
65967       : PhysicalDeviceFeatures2( *reinterpret_cast<PhysicalDeviceFeatures2 const *>( &rhs ) )
65968     {
65969     }
65970 
65971     PhysicalDeviceFeatures2 & operator=( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65972 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65973 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265974     PhysicalDeviceFeatures2 & operator=( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
65975     {
65976       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 const *>( &rhs );
65977       return *this;
65978     }
65979 
65980 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265981     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65982     {
65983       pNext = pNext_;
65984       return *this;
65985     }
65986 
setFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265987     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & setFeatures( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const & features_ ) VULKAN_HPP_NOEXCEPT
65988     {
65989       features = features_;
65990       return *this;
65991     }
65992 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65993 
operator VkPhysicalDeviceFeatures2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265994     operator VkPhysicalDeviceFeatures2 const &() const VULKAN_HPP_NOEXCEPT
65995     {
65996       return *reinterpret_cast<const VkPhysicalDeviceFeatures2 *>( this );
65997     }
65998 
operator VkPhysicalDeviceFeatures2&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265999     operator VkPhysicalDeviceFeatures2 &() VULKAN_HPP_NOEXCEPT
66000     {
66001       return *reinterpret_cast<VkPhysicalDeviceFeatures2 *>( this );
66002     }
66003 
66004 #if defined( VULKAN_HPP_USE_REFLECT )
66005 #  if 14 <= VULKAN_HPP_CPP_VERSION
66006     auto
66007 #  else
66008     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const &>
66009 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures266010       reflect() const VULKAN_HPP_NOEXCEPT
66011     {
66012       return std::tie( sType, pNext, features );
66013     }
66014 #endif
66015 
66016 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66017     auto operator<=>( PhysicalDeviceFeatures2 const & ) const = default;
66018 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures266019     bool operator==( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT
66020     {
66021 #  if defined( VULKAN_HPP_USE_REFLECT )
66022       return this->reflect() == rhs.reflect();
66023 #  else
66024       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( features == rhs.features );
66025 #  endif
66026     }
66027 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures266028     bool operator!=( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT
66029     {
66030       return !operator==( rhs );
66031     }
66032 #endif
66033 
66034   public:
66035     VULKAN_HPP_NAMESPACE::StructureType          sType    = StructureType::ePhysicalDeviceFeatures2;
66036     void *                                       pNext    = {};
66037     VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features = {};
66038   };
66039 
66040   template <>
66041   struct CppType<StructureType, StructureType::ePhysicalDeviceFeatures2>
66042   {
66043     using Type = PhysicalDeviceFeatures2;
66044   };
66045 
66046   using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
66047 
66048   struct PhysicalDeviceFloatControlsProperties
66049   {
66050     using NativeType = VkPhysicalDeviceFloatControlsProperties;
66051 
66052     static const bool                                  allowDuplicate = false;
66053     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFloatControlsProperties;
66054 
66055 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFloatControlsPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties66056     VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties(
66057       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
66058       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_   = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
66059       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat16_ = {},
66060       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat32_ = {},
66061       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat64_ = {},
66062       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat16_           = {},
66063       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat32_           = {},
66064       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat64_           = {},
66065       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat16_        = {},
66066       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat32_        = {},
66067       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat64_        = {},
66068       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat16_          = {},
66069       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat32_          = {},
66070       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat64_          = {},
66071       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat16_          = {},
66072       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat32_          = {},
66073       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat64_          = {},
66074       void *                                                pNext_                                 = nullptr ) VULKAN_HPP_NOEXCEPT
66075       : pNext{ pNext_ }
66076       , denormBehaviorIndependence{ denormBehaviorIndependence_ }
66077       , roundingModeIndependence{ roundingModeIndependence_ }
66078       , shaderSignedZeroInfNanPreserveFloat16{ shaderSignedZeroInfNanPreserveFloat16_ }
66079       , shaderSignedZeroInfNanPreserveFloat32{ shaderSignedZeroInfNanPreserveFloat32_ }
66080       , shaderSignedZeroInfNanPreserveFloat64{ shaderSignedZeroInfNanPreserveFloat64_ }
66081       , shaderDenormPreserveFloat16{ shaderDenormPreserveFloat16_ }
66082       , shaderDenormPreserveFloat32{ shaderDenormPreserveFloat32_ }
66083       , shaderDenormPreserveFloat64{ shaderDenormPreserveFloat64_ }
66084       , shaderDenormFlushToZeroFloat16{ shaderDenormFlushToZeroFloat16_ }
66085       , shaderDenormFlushToZeroFloat32{ shaderDenormFlushToZeroFloat32_ }
66086       , shaderDenormFlushToZeroFloat64{ shaderDenormFlushToZeroFloat64_ }
66087       , shaderRoundingModeRTEFloat16{ shaderRoundingModeRTEFloat16_ }
66088       , shaderRoundingModeRTEFloat32{ shaderRoundingModeRTEFloat32_ }
66089       , shaderRoundingModeRTEFloat64{ shaderRoundingModeRTEFloat64_ }
66090       , shaderRoundingModeRTZFloat16{ shaderRoundingModeRTZFloat16_ }
66091       , shaderRoundingModeRTZFloat32{ shaderRoundingModeRTZFloat32_ }
66092       , shaderRoundingModeRTZFloat64{ shaderRoundingModeRTZFloat64_ }
66093     {
66094     }
66095 
66096     VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66097 
PhysicalDeviceFloatControlsPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties66098     PhysicalDeviceFloatControlsProperties( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
66099       : PhysicalDeviceFloatControlsProperties( *reinterpret_cast<PhysicalDeviceFloatControlsProperties const *>( &rhs ) )
66100     {
66101     }
66102 
66103     PhysicalDeviceFloatControlsProperties & operator=( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66104 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66105 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties66106     PhysicalDeviceFloatControlsProperties & operator=( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
66107     {
66108       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties const *>( &rhs );
66109       return *this;
66110     }
66111 
operator VkPhysicalDeviceFloatControlsProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties66112     operator VkPhysicalDeviceFloatControlsProperties const &() const VULKAN_HPP_NOEXCEPT
66113     {
66114       return *reinterpret_cast<const VkPhysicalDeviceFloatControlsProperties *>( this );
66115     }
66116 
operator VkPhysicalDeviceFloatControlsProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties66117     operator VkPhysicalDeviceFloatControlsProperties &() VULKAN_HPP_NOEXCEPT
66118     {
66119       return *reinterpret_cast<VkPhysicalDeviceFloatControlsProperties *>( this );
66120     }
66121 
66122 #if defined( VULKAN_HPP_USE_REFLECT )
66123 #  if 14 <= VULKAN_HPP_CPP_VERSION
66124     auto
66125 #  else
66126     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66127                void * const &,
66128                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
66129                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
66130                VULKAN_HPP_NAMESPACE::Bool32 const &,
66131                VULKAN_HPP_NAMESPACE::Bool32 const &,
66132                VULKAN_HPP_NAMESPACE::Bool32 const &,
66133                VULKAN_HPP_NAMESPACE::Bool32 const &,
66134                VULKAN_HPP_NAMESPACE::Bool32 const &,
66135                VULKAN_HPP_NAMESPACE::Bool32 const &,
66136                VULKAN_HPP_NAMESPACE::Bool32 const &,
66137                VULKAN_HPP_NAMESPACE::Bool32 const &,
66138                VULKAN_HPP_NAMESPACE::Bool32 const &,
66139                VULKAN_HPP_NAMESPACE::Bool32 const &,
66140                VULKAN_HPP_NAMESPACE::Bool32 const &,
66141                VULKAN_HPP_NAMESPACE::Bool32 const &,
66142                VULKAN_HPP_NAMESPACE::Bool32 const &,
66143                VULKAN_HPP_NAMESPACE::Bool32 const &,
66144                VULKAN_HPP_NAMESPACE::Bool32 const &>
66145 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties66146       reflect() const VULKAN_HPP_NOEXCEPT
66147     {
66148       return std::tie( sType,
66149                        pNext,
66150                        denormBehaviorIndependence,
66151                        roundingModeIndependence,
66152                        shaderSignedZeroInfNanPreserveFloat16,
66153                        shaderSignedZeroInfNanPreserveFloat32,
66154                        shaderSignedZeroInfNanPreserveFloat64,
66155                        shaderDenormPreserveFloat16,
66156                        shaderDenormPreserveFloat32,
66157                        shaderDenormPreserveFloat64,
66158                        shaderDenormFlushToZeroFloat16,
66159                        shaderDenormFlushToZeroFloat32,
66160                        shaderDenormFlushToZeroFloat64,
66161                        shaderRoundingModeRTEFloat16,
66162                        shaderRoundingModeRTEFloat32,
66163                        shaderRoundingModeRTEFloat64,
66164                        shaderRoundingModeRTZFloat16,
66165                        shaderRoundingModeRTZFloat32,
66166                        shaderRoundingModeRTZFloat64 );
66167     }
66168 #endif
66169 
66170 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66171     auto operator<=>( PhysicalDeviceFloatControlsProperties const & ) const = default;
66172 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties66173     bool operator==( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
66174     {
66175 #  if defined( VULKAN_HPP_USE_REFLECT )
66176       return this->reflect() == rhs.reflect();
66177 #  else
66178       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( denormBehaviorIndependence == rhs.denormBehaviorIndependence ) &&
66179              ( roundingModeIndependence == rhs.roundingModeIndependence ) &&
66180              ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 ) &&
66181              ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 ) &&
66182              ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 ) &&
66183              ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 ) && ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 ) &&
66184              ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 ) && ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 ) &&
66185              ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 ) &&
66186              ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 ) && ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 ) &&
66187              ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 ) && ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 ) &&
66188              ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 ) && ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 ) &&
66189              ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 );
66190 #  endif
66191     }
66192 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties66193     bool operator!=( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
66194     {
66195       return !operator==( rhs );
66196     }
66197 #endif
66198 
66199   public:
66200     VULKAN_HPP_NAMESPACE::StructureType                   sType                      = StructureType::ePhysicalDeviceFloatControlsProperties;
66201     void *                                                pNext                      = {};
66202     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
66203     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence   = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
66204     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat16 = {};
66205     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat32 = {};
66206     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat64 = {};
66207     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat16           = {};
66208     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat32           = {};
66209     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat64           = {};
66210     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat16        = {};
66211     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat32        = {};
66212     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat64        = {};
66213     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat16          = {};
66214     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat32          = {};
66215     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat64          = {};
66216     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat16          = {};
66217     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat32          = {};
66218     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat64          = {};
66219   };
66220 
66221   template <>
66222   struct CppType<StructureType, StructureType::ePhysicalDeviceFloatControlsProperties>
66223   {
66224     using Type = PhysicalDeviceFloatControlsProperties;
66225   };
66226 
66227   using PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
66228 
66229   struct PhysicalDeviceFragmentDensityMap2FeaturesEXT
66230   {
66231     using NativeType = VkPhysicalDeviceFragmentDensityMap2FeaturesEXT;
66232 
66233     static const bool                                  allowDuplicate = false;
66234     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT;
66235 
66236 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMap2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT66237     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred_ = {},
66238                                                                        void *                       pNext_                      = nullptr ) VULKAN_HPP_NOEXCEPT
66239       : pNext{ pNext_ }
66240       , fragmentDensityMapDeferred{ fragmentDensityMapDeferred_ }
66241     {
66242     }
66243 
66244     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66245 
PhysicalDeviceFragmentDensityMap2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT66246     PhysicalDeviceFragmentDensityMap2FeaturesEXT( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66247       : PhysicalDeviceFragmentDensityMap2FeaturesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMap2FeaturesEXT const *>( &rhs ) )
66248     {
66249     }
66250 
66251     PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66252 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66253 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT66254     PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66255     {
66256       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT const *>( &rhs );
66257       return *this;
66258     }
66259 
66260 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT66261     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66262     {
66263       pNext = pNext_;
66264       return *this;
66265     }
66266 
66267     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT &
setFragmentDensityMapDeferredVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT66268       setFragmentDensityMapDeferred( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred_ ) VULKAN_HPP_NOEXCEPT
66269     {
66270       fragmentDensityMapDeferred = fragmentDensityMapDeferred_;
66271       return *this;
66272     }
66273 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66274 
operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT66275     operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
66276     {
66277       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *>( this );
66278     }
66279 
operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT66280     operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
66281     {
66282       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *>( this );
66283     }
66284 
66285 #if defined( VULKAN_HPP_USE_REFLECT )
66286 #  if 14 <= VULKAN_HPP_CPP_VERSION
66287     auto
66288 #  else
66289     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
66290 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT66291       reflect() const VULKAN_HPP_NOEXCEPT
66292     {
66293       return std::tie( sType, pNext, fragmentDensityMapDeferred );
66294     }
66295 #endif
66296 
66297 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66298     auto operator<=>( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & ) const = default;
66299 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT66300     bool operator==( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66301     {
66302 #  if defined( VULKAN_HPP_USE_REFLECT )
66303       return this->reflect() == rhs.reflect();
66304 #  else
66305       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMapDeferred == rhs.fragmentDensityMapDeferred );
66306 #  endif
66307     }
66308 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT66309     bool operator!=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66310     {
66311       return !operator==( rhs );
66312     }
66313 #endif
66314 
66315   public:
66316     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT;
66317     void *                              pNext                      = {};
66318     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapDeferred = {};
66319   };
66320 
66321   template <>
66322   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT>
66323   {
66324     using Type = PhysicalDeviceFragmentDensityMap2FeaturesEXT;
66325   };
66326 
66327   struct PhysicalDeviceFragmentDensityMap2PropertiesEXT
66328   {
66329     using NativeType = VkPhysicalDeviceFragmentDensityMap2PropertiesEXT;
66330 
66331     static const bool                                  allowDuplicate = false;
66332     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT;
66333 
66334 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMap2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT66335     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2PropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 subsampledLoads_                           = {},
66336                                                                          VULKAN_HPP_NAMESPACE::Bool32 subsampledCoarseReconstructionEarlyAccess_ = {},
66337                                                                          uint32_t                     maxSubsampledArrayLayers_                  = {},
66338                                                                          uint32_t                     maxDescriptorSetSubsampledSamplers_        = {},
66339                                                                          void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66340       : pNext{ pNext_ }
66341       , subsampledLoads{ subsampledLoads_ }
66342       , subsampledCoarseReconstructionEarlyAccess{ subsampledCoarseReconstructionEarlyAccess_ }
66343       , maxSubsampledArrayLayers{ maxSubsampledArrayLayers_ }
66344       , maxDescriptorSetSubsampledSamplers{ maxDescriptorSetSubsampledSamplers_ }
66345     {
66346     }
66347 
66348     VULKAN_HPP_CONSTEXPR
66349       PhysicalDeviceFragmentDensityMap2PropertiesEXT( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66350 
PhysicalDeviceFragmentDensityMap2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT66351     PhysicalDeviceFragmentDensityMap2PropertiesEXT( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66352       : PhysicalDeviceFragmentDensityMap2PropertiesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMap2PropertiesEXT const *>( &rhs ) )
66353     {
66354     }
66355 
66356     PhysicalDeviceFragmentDensityMap2PropertiesEXT & operator=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66357 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66358 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT66359     PhysicalDeviceFragmentDensityMap2PropertiesEXT & operator=( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66360     {
66361       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT const *>( &rhs );
66362       return *this;
66363     }
66364 
operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT66365     operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
66366     {
66367       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *>( this );
66368     }
66369 
operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT66370     operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT &() VULKAN_HPP_NOEXCEPT
66371     {
66372       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *>( this );
66373     }
66374 
66375 #if defined( VULKAN_HPP_USE_REFLECT )
66376 #  if 14 <= VULKAN_HPP_CPP_VERSION
66377     auto
66378 #  else
66379     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66380                void * const &,
66381                VULKAN_HPP_NAMESPACE::Bool32 const &,
66382                VULKAN_HPP_NAMESPACE::Bool32 const &,
66383                uint32_t const &,
66384                uint32_t const &>
66385 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT66386       reflect() const VULKAN_HPP_NOEXCEPT
66387     {
66388       return std::tie( sType, pNext, subsampledLoads, subsampledCoarseReconstructionEarlyAccess, maxSubsampledArrayLayers, maxDescriptorSetSubsampledSamplers );
66389     }
66390 #endif
66391 
66392 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66393     auto operator<=>( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & ) const = default;
66394 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT66395     bool operator==( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66396     {
66397 #  if defined( VULKAN_HPP_USE_REFLECT )
66398       return this->reflect() == rhs.reflect();
66399 #  else
66400       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subsampledLoads == rhs.subsampledLoads ) &&
66401              ( subsampledCoarseReconstructionEarlyAccess == rhs.subsampledCoarseReconstructionEarlyAccess ) &&
66402              ( maxSubsampledArrayLayers == rhs.maxSubsampledArrayLayers ) && ( maxDescriptorSetSubsampledSamplers == rhs.maxDescriptorSetSubsampledSamplers );
66403 #  endif
66404     }
66405 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT66406     bool operator!=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66407     {
66408       return !operator==( rhs );
66409     }
66410 #endif
66411 
66412   public:
66413     VULKAN_HPP_NAMESPACE::StructureType sType                                     = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT;
66414     void *                              pNext                                     = {};
66415     VULKAN_HPP_NAMESPACE::Bool32        subsampledLoads                           = {};
66416     VULKAN_HPP_NAMESPACE::Bool32        subsampledCoarseReconstructionEarlyAccess = {};
66417     uint32_t                            maxSubsampledArrayLayers                  = {};
66418     uint32_t                            maxDescriptorSetSubsampledSamplers        = {};
66419   };
66420 
66421   template <>
66422   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT>
66423   {
66424     using Type = PhysicalDeviceFragmentDensityMap2PropertiesEXT;
66425   };
66426 
66427   struct PhysicalDeviceFragmentDensityMapFeaturesEXT
66428   {
66429     using NativeType = VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
66430 
66431     static const bool                                  allowDuplicate = false;
66432     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT;
66433 
66434 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66435     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap_                    = {},
66436                                                                       VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic_             = {},
66437                                                                       VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages_ = {},
66438                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66439       : pNext{ pNext_ }
66440       , fragmentDensityMap{ fragmentDensityMap_ }
66441       , fragmentDensityMapDynamic{ fragmentDensityMapDynamic_ }
66442       , fragmentDensityMapNonSubsampledImages{ fragmentDensityMapNonSubsampledImages_ }
66443     {
66444     }
66445 
66446     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66447 
PhysicalDeviceFragmentDensityMapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66448     PhysicalDeviceFragmentDensityMapFeaturesEXT( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66449       : PhysicalDeviceFragmentDensityMapFeaturesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMapFeaturesEXT const *>( &rhs ) )
66450     {
66451     }
66452 
66453     PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66454 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66455 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66456     PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66457     {
66458       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT const *>( &rhs );
66459       return *this;
66460     }
66461 
66462 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66463     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66464     {
66465       pNext = pNext_;
66466       return *this;
66467     }
66468 
66469     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT &
setFragmentDensityMapVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66470       setFragmentDensityMap( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap_ ) VULKAN_HPP_NOEXCEPT
66471     {
66472       fragmentDensityMap = fragmentDensityMap_;
66473       return *this;
66474     }
66475 
66476     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT &
setFragmentDensityMapDynamicVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66477       setFragmentDensityMapDynamic( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic_ ) VULKAN_HPP_NOEXCEPT
66478     {
66479       fragmentDensityMapDynamic = fragmentDensityMapDynamic_;
66480       return *this;
66481     }
66482 
66483     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT &
setFragmentDensityMapNonSubsampledImagesVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66484       setFragmentDensityMapNonSubsampledImages( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages_ ) VULKAN_HPP_NOEXCEPT
66485     {
66486       fragmentDensityMapNonSubsampledImages = fragmentDensityMapNonSubsampledImages_;
66487       return *this;
66488     }
66489 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66490 
operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66491     operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
66492     {
66493       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *>( this );
66494     }
66495 
operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66496     operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT &() VULKAN_HPP_NOEXCEPT
66497     {
66498       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT *>( this );
66499     }
66500 
66501 #if defined( VULKAN_HPP_USE_REFLECT )
66502 #  if 14 <= VULKAN_HPP_CPP_VERSION
66503     auto
66504 #  else
66505     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66506                void * const &,
66507                VULKAN_HPP_NAMESPACE::Bool32 const &,
66508                VULKAN_HPP_NAMESPACE::Bool32 const &,
66509                VULKAN_HPP_NAMESPACE::Bool32 const &>
66510 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66511       reflect() const VULKAN_HPP_NOEXCEPT
66512     {
66513       return std::tie( sType, pNext, fragmentDensityMap, fragmentDensityMapDynamic, fragmentDensityMapNonSubsampledImages );
66514     }
66515 #endif
66516 
66517 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66518     auto operator<=>( PhysicalDeviceFragmentDensityMapFeaturesEXT const & ) const = default;
66519 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66520     bool operator==( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66521     {
66522 #  if defined( VULKAN_HPP_USE_REFLECT )
66523       return this->reflect() == rhs.reflect();
66524 #  else
66525       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMap == rhs.fragmentDensityMap ) &&
66526              ( fragmentDensityMapDynamic == rhs.fragmentDensityMapDynamic ) &&
66527              ( fragmentDensityMapNonSubsampledImages == rhs.fragmentDensityMapNonSubsampledImages );
66528 #  endif
66529     }
66530 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT66531     bool operator!=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66532     {
66533       return !operator==( rhs );
66534     }
66535 #endif
66536 
66537   public:
66538     VULKAN_HPP_NAMESPACE::StructureType sType                                 = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT;
66539     void *                              pNext                                 = {};
66540     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMap                    = {};
66541     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapDynamic             = {};
66542     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapNonSubsampledImages = {};
66543   };
66544 
66545   template <>
66546   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT>
66547   {
66548     using Type = PhysicalDeviceFragmentDensityMapFeaturesEXT;
66549   };
66550 
66551   struct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
66552   {
66553     using NativeType = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
66554 
66555     static const bool                                  allowDuplicate = false;
66556     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
66557 
66558 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66559     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapOffset_ = {},
66560                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66561       : pNext{ pNext_ }
66562       , fragmentDensityMapOffset{ fragmentDensityMapOffset_ }
66563     {
66564     }
66565 
66566     VULKAN_HPP_CONSTEXPR
66567       PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66568 
PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66569     PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
66570       : PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( *reinterpret_cast<PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const *>( &rhs ) )
66571     {
66572     }
66573 
66574     PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &
66575       operator=( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66576 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66577 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66578     PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM & operator=( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
66579     {
66580       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const *>( &rhs );
66581       return *this;
66582     }
66583 
66584 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66585     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66586     {
66587       pNext = pNext_;
66588       return *this;
66589     }
66590 
66591     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &
setFragmentDensityMapOffsetVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66592       setFragmentDensityMapOffset( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapOffset_ ) VULKAN_HPP_NOEXCEPT
66593     {
66594       fragmentDensityMapOffset = fragmentDensityMapOffset_;
66595       return *this;
66596     }
66597 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66598 
operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66599     operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
66600     {
66601       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *>( this );
66602     }
66603 
operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66604     operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
66605     {
66606       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *>( this );
66607     }
66608 
66609 #if defined( VULKAN_HPP_USE_REFLECT )
66610 #  if 14 <= VULKAN_HPP_CPP_VERSION
66611     auto
66612 #  else
66613     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
66614 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66615       reflect() const VULKAN_HPP_NOEXCEPT
66616     {
66617       return std::tie( sType, pNext, fragmentDensityMapOffset );
66618     }
66619 #endif
66620 
66621 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66622     auto operator<=>( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & ) const = default;
66623 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66624     bool operator==( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
66625     {
66626 #  if defined( VULKAN_HPP_USE_REFLECT )
66627       return this->reflect() == rhs.reflect();
66628 #  else
66629       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMapOffset == rhs.fragmentDensityMapOffset );
66630 #  endif
66631     }
66632 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66633     bool operator!=( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
66634     {
66635       return !operator==( rhs );
66636     }
66637 #endif
66638 
66639   public:
66640     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
66641     void *                              pNext                    = {};
66642     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapOffset = {};
66643   };
66644 
66645   template <>
66646   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>
66647   {
66648     using Type = PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
66649   };
66650 
66651   struct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
66652   {
66653     using NativeType = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
66654 
66655     static const bool                                  allowDuplicate = false;
66656     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
66657 
66658 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66659     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( VULKAN_HPP_NAMESPACE::Extent2D fragmentDensityOffsetGranularity_ = {},
66660                                                                                void *                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66661       : pNext{ pNext_ }
66662       , fragmentDensityOffsetGranularity{ fragmentDensityOffsetGranularity_ }
66663     {
66664     }
66665 
66666     VULKAN_HPP_CONSTEXPR
66667       PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66668 
PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66669     PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
66670       : PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( *reinterpret_cast<PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const *>( &rhs ) )
66671     {
66672     }
66673 
66674     PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM &
66675       operator=( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66676 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66677 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66678     PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM & operator=( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
66679     {
66680       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const *>( &rhs );
66681       return *this;
66682     }
66683 
operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66684     operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT
66685     {
66686       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM *>( this );
66687     }
66688 
operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66689     operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM &() VULKAN_HPP_NOEXCEPT
66690     {
66691       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM *>( this );
66692     }
66693 
66694 #if defined( VULKAN_HPP_USE_REFLECT )
66695 #  if 14 <= VULKAN_HPP_CPP_VERSION
66696     auto
66697 #  else
66698     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
66699 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66700       reflect() const VULKAN_HPP_NOEXCEPT
66701     {
66702       return std::tie( sType, pNext, fragmentDensityOffsetGranularity );
66703     }
66704 #endif
66705 
66706 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66707     auto operator<=>( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & ) const = default;
66708 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66709     bool operator==( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
66710     {
66711 #  if defined( VULKAN_HPP_USE_REFLECT )
66712       return this->reflect() == rhs.reflect();
66713 #  else
66714       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityOffsetGranularity == rhs.fragmentDensityOffsetGranularity );
66715 #  endif
66716     }
66717 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66718     bool operator!=( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
66719     {
66720       return !operator==( rhs );
66721     }
66722 #endif
66723 
66724   public:
66725     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
66726     void *                              pNext                            = {};
66727     VULKAN_HPP_NAMESPACE::Extent2D      fragmentDensityOffsetGranularity = {};
66728   };
66729 
66730   template <>
66731   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>
66732   {
66733     using Type = PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
66734   };
66735 
66736   struct PhysicalDeviceFragmentDensityMapPropertiesEXT
66737   {
66738     using NativeType = VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
66739 
66740     static const bool                                  allowDuplicate = false;
66741     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT;
66742 
66743 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66744     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapPropertiesEXT( VULKAN_HPP_NAMESPACE::Extent2D minFragmentDensityTexelSize_ = {},
66745                                                                         VULKAN_HPP_NAMESPACE::Extent2D maxFragmentDensityTexelSize_ = {},
66746                                                                         VULKAN_HPP_NAMESPACE::Bool32   fragmentDensityInvocations_  = {},
66747                                                                         void *                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66748       : pNext{ pNext_ }
66749       , minFragmentDensityTexelSize{ minFragmentDensityTexelSize_ }
66750       , maxFragmentDensityTexelSize{ maxFragmentDensityTexelSize_ }
66751       , fragmentDensityInvocations{ fragmentDensityInvocations_ }
66752     {
66753     }
66754 
66755     VULKAN_HPP_CONSTEXPR
66756       PhysicalDeviceFragmentDensityMapPropertiesEXT( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66757 
PhysicalDeviceFragmentDensityMapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66758     PhysicalDeviceFragmentDensityMapPropertiesEXT( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66759       : PhysicalDeviceFragmentDensityMapPropertiesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMapPropertiesEXT const *>( &rhs ) )
66760     {
66761     }
66762 
66763     PhysicalDeviceFragmentDensityMapPropertiesEXT & operator=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66764 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66765 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66766     PhysicalDeviceFragmentDensityMapPropertiesEXT & operator=( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66767     {
66768       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT const *>( &rhs );
66769       return *this;
66770     }
66771 
operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66772     operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
66773     {
66774       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT *>( this );
66775     }
66776 
operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66777     operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT &() VULKAN_HPP_NOEXCEPT
66778     {
66779       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT *>( this );
66780     }
66781 
66782 #if defined( VULKAN_HPP_USE_REFLECT )
66783 #  if 14 <= VULKAN_HPP_CPP_VERSION
66784     auto
66785 #  else
66786     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66787                void * const &,
66788                VULKAN_HPP_NAMESPACE::Extent2D const &,
66789                VULKAN_HPP_NAMESPACE::Extent2D const &,
66790                VULKAN_HPP_NAMESPACE::Bool32 const &>
66791 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66792       reflect() const VULKAN_HPP_NOEXCEPT
66793     {
66794       return std::tie( sType, pNext, minFragmentDensityTexelSize, maxFragmentDensityTexelSize, fragmentDensityInvocations );
66795     }
66796 #endif
66797 
66798 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66799     auto operator<=>( PhysicalDeviceFragmentDensityMapPropertiesEXT const & ) const = default;
66800 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66801     bool operator==( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66802     {
66803 #  if defined( VULKAN_HPP_USE_REFLECT )
66804       return this->reflect() == rhs.reflect();
66805 #  else
66806       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minFragmentDensityTexelSize == rhs.minFragmentDensityTexelSize ) &&
66807              ( maxFragmentDensityTexelSize == rhs.maxFragmentDensityTexelSize ) && ( fragmentDensityInvocations == rhs.fragmentDensityInvocations );
66808 #  endif
66809     }
66810 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66811     bool operator!=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66812     {
66813       return !operator==( rhs );
66814     }
66815 #endif
66816 
66817   public:
66818     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT;
66819     void *                              pNext                       = {};
66820     VULKAN_HPP_NAMESPACE::Extent2D      minFragmentDensityTexelSize = {};
66821     VULKAN_HPP_NAMESPACE::Extent2D      maxFragmentDensityTexelSize = {};
66822     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityInvocations  = {};
66823   };
66824 
66825   template <>
66826   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT>
66827   {
66828     using Type = PhysicalDeviceFragmentDensityMapPropertiesEXT;
66829   };
66830 
66831   struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR
66832   {
66833     using NativeType = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
66834 
66835     static const bool                                  allowDuplicate = false;
66836     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
66837 
66838 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShaderBarycentricFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66839     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric_ = {},
66840                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66841       : pNext{ pNext_ }
66842       , fragmentShaderBarycentric{ fragmentShaderBarycentric_ }
66843     {
66844     }
66845 
66846     VULKAN_HPP_CONSTEXPR
66847       PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66848 
PhysicalDeviceFragmentShaderBarycentricFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66849     PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66850       : PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( *reinterpret_cast<PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const *>( &rhs ) )
66851     {
66852     }
66853 
66854     PhysicalDeviceFragmentShaderBarycentricFeaturesKHR &
66855       operator=( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66856 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66857 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66858     PhysicalDeviceFragmentShaderBarycentricFeaturesKHR & operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66859     {
66860       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const *>( &rhs );
66861       return *this;
66862     }
66863 
66864 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66865     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66866     {
66867       pNext = pNext_;
66868       return *this;
66869     }
66870 
66871     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR &
setFragmentShaderBarycentricVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66872       setFragmentShaderBarycentric( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric_ ) VULKAN_HPP_NOEXCEPT
66873     {
66874       fragmentShaderBarycentric = fragmentShaderBarycentric_;
66875       return *this;
66876     }
66877 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66878 
operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66879     operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
66880     {
66881       return *reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *>( this );
66882     }
66883 
operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66884     operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR &() VULKAN_HPP_NOEXCEPT
66885     {
66886       return *reinterpret_cast<VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *>( this );
66887     }
66888 
66889 #if defined( VULKAN_HPP_USE_REFLECT )
66890 #  if 14 <= VULKAN_HPP_CPP_VERSION
66891     auto
66892 #  else
66893     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
66894 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66895       reflect() const VULKAN_HPP_NOEXCEPT
66896     {
66897       return std::tie( sType, pNext, fragmentShaderBarycentric );
66898     }
66899 #endif
66900 
66901 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66902     auto operator<=>( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & ) const = default;
66903 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66904     bool operator==( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66905     {
66906 #  if defined( VULKAN_HPP_USE_REFLECT )
66907       return this->reflect() == rhs.reflect();
66908 #  else
66909       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentShaderBarycentric == rhs.fragmentShaderBarycentric );
66910 #  endif
66911     }
66912 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66913     bool operator!=( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66914     {
66915       return !operator==( rhs );
66916     }
66917 #endif
66918 
66919   public:
66920     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
66921     void *                              pNext                     = {};
66922     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderBarycentric = {};
66923   };
66924 
66925   template <>
66926   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesKHR>
66927   {
66928     using Type = PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
66929   };
66930 
66931   using PhysicalDeviceFragmentShaderBarycentricFeaturesNV = PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
66932 
66933   struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR
66934   {
66935     using NativeType = VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
66936 
66937     static const bool                                  allowDuplicate = false;
66938     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
66939 
66940 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
66941     VULKAN_HPP_CONSTEXPR
PhysicalDeviceFragmentShaderBarycentricPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66942       PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( VULKAN_HPP_NAMESPACE::Bool32 triStripVertexOrderIndependentOfProvokingVertex_ = {},
66943                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66944       : pNext{ pNext_ }
66945       , triStripVertexOrderIndependentOfProvokingVertex{ triStripVertexOrderIndependentOfProvokingVertex_ }
66946     {
66947     }
66948 
66949     VULKAN_HPP_CONSTEXPR
66950       PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66951 
PhysicalDeviceFragmentShaderBarycentricPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66952     PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66953       : PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( *reinterpret_cast<PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const *>( &rhs ) )
66954     {
66955     }
66956 
66957     PhysicalDeviceFragmentShaderBarycentricPropertiesKHR &
66958       operator=( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66959 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66960 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66961     PhysicalDeviceFragmentShaderBarycentricPropertiesKHR & operator=( VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66962     {
66963       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const *>( &rhs );
66964       return *this;
66965     }
66966 
operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66967     operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
66968     {
66969       return *reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR *>( this );
66970     }
66971 
operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66972     operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR &() VULKAN_HPP_NOEXCEPT
66973     {
66974       return *reinterpret_cast<VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR *>( this );
66975     }
66976 
66977 #if defined( VULKAN_HPP_USE_REFLECT )
66978 #  if 14 <= VULKAN_HPP_CPP_VERSION
66979     auto
66980 #  else
66981     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
66982 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66983       reflect() const VULKAN_HPP_NOEXCEPT
66984     {
66985       return std::tie( sType, pNext, triStripVertexOrderIndependentOfProvokingVertex );
66986     }
66987 #endif
66988 
66989 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66990     auto operator<=>( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & ) const = default;
66991 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66992     bool operator==( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66993     {
66994 #  if defined( VULKAN_HPP_USE_REFLECT )
66995       return this->reflect() == rhs.reflect();
66996 #  else
66997       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
66998              ( triStripVertexOrderIndependentOfProvokingVertex == rhs.triStripVertexOrderIndependentOfProvokingVertex );
66999 #  endif
67000     }
67001 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR67002     bool operator!=( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67003     {
67004       return !operator==( rhs );
67005     }
67006 #endif
67007 
67008   public:
67009     VULKAN_HPP_NAMESPACE::StructureType sType                                           = StructureType::ePhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
67010     void *                              pNext                                           = {};
67011     VULKAN_HPP_NAMESPACE::Bool32        triStripVertexOrderIndependentOfProvokingVertex = {};
67012   };
67013 
67014   template <>
67015   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShaderBarycentricPropertiesKHR>
67016   {
67017     using Type = PhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
67018   };
67019 
67020   struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT
67021   {
67022     using NativeType = VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
67023 
67024     static const bool                                  allowDuplicate = false;
67025     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT;
67026 
67027 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShaderInterlockFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67028     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_      = {},
67029                                                                            VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_       = {},
67030                                                                            VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ = {},
67031                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
67032       : pNext{ pNext_ }
67033       , fragmentShaderSampleInterlock{ fragmentShaderSampleInterlock_ }
67034       , fragmentShaderPixelInterlock{ fragmentShaderPixelInterlock_ }
67035       , fragmentShaderShadingRateInterlock{ fragmentShaderShadingRateInterlock_ }
67036     {
67037     }
67038 
67039     VULKAN_HPP_CONSTEXPR
67040       PhysicalDeviceFragmentShaderInterlockFeaturesEXT( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67041 
PhysicalDeviceFragmentShaderInterlockFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67042     PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67043       : PhysicalDeviceFragmentShaderInterlockFeaturesEXT( *reinterpret_cast<PhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>( &rhs ) )
67044     {
67045     }
67046 
67047     PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67048 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67049 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67050     PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67051     {
67052       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>( &rhs );
67053       return *this;
67054     }
67055 
67056 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67057     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67058     {
67059       pNext = pNext_;
67060       return *this;
67061     }
67062 
67063     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT &
setFragmentShaderSampleInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67064       setFragmentShaderSampleInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_ ) VULKAN_HPP_NOEXCEPT
67065     {
67066       fragmentShaderSampleInterlock = fragmentShaderSampleInterlock_;
67067       return *this;
67068     }
67069 
67070     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT &
setFragmentShaderPixelInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67071       setFragmentShaderPixelInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_ ) VULKAN_HPP_NOEXCEPT
67072     {
67073       fragmentShaderPixelInterlock = fragmentShaderPixelInterlock_;
67074       return *this;
67075     }
67076 
67077     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT &
setFragmentShaderShadingRateInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67078       setFragmentShaderShadingRateInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ ) VULKAN_HPP_NOEXCEPT
67079     {
67080       fragmentShaderShadingRateInterlock = fragmentShaderShadingRateInterlock_;
67081       return *this;
67082     }
67083 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67084 
operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67085     operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
67086     {
67087       return *reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *>( this );
67088     }
67089 
operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67090     operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &() VULKAN_HPP_NOEXCEPT
67091     {
67092       return *reinterpret_cast<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *>( this );
67093     }
67094 
67095 #if defined( VULKAN_HPP_USE_REFLECT )
67096 #  if 14 <= VULKAN_HPP_CPP_VERSION
67097     auto
67098 #  else
67099     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67100                void * const &,
67101                VULKAN_HPP_NAMESPACE::Bool32 const &,
67102                VULKAN_HPP_NAMESPACE::Bool32 const &,
67103                VULKAN_HPP_NAMESPACE::Bool32 const &>
67104 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67105       reflect() const VULKAN_HPP_NOEXCEPT
67106     {
67107       return std::tie( sType, pNext, fragmentShaderSampleInterlock, fragmentShaderPixelInterlock, fragmentShaderShadingRateInterlock );
67108     }
67109 #endif
67110 
67111 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67112     auto operator<=>( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & ) const = default;
67113 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67114     bool operator==( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67115     {
67116 #  if defined( VULKAN_HPP_USE_REFLECT )
67117       return this->reflect() == rhs.reflect();
67118 #  else
67119       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentShaderSampleInterlock == rhs.fragmentShaderSampleInterlock ) &&
67120              ( fragmentShaderPixelInterlock == rhs.fragmentShaderPixelInterlock ) &&
67121              ( fragmentShaderShadingRateInterlock == rhs.fragmentShaderShadingRateInterlock );
67122 #  endif
67123     }
67124 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT67125     bool operator!=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67126     {
67127       return !operator==( rhs );
67128     }
67129 #endif
67130 
67131   public:
67132     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT;
67133     void *                              pNext                              = {};
67134     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderSampleInterlock      = {};
67135     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderPixelInterlock       = {};
67136     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderShadingRateInterlock = {};
67137   };
67138 
67139   template <>
67140   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT>
67141   {
67142     using Type = PhysicalDeviceFragmentShaderInterlockFeaturesEXT;
67143   };
67144 
67145   struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV
67146   {
67147     using NativeType = VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
67148 
67149     static const bool                                  allowDuplicate = false;
67150     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
67151 
67152 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateEnumsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67153     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums_         = {},
67154                                                                            VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates_  = {},
67155                                                                            VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates_ = {},
67156                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
67157       : pNext{ pNext_ }
67158       , fragmentShadingRateEnums{ fragmentShadingRateEnums_ }
67159       , supersampleFragmentShadingRates{ supersampleFragmentShadingRates_ }
67160       , noInvocationFragmentShadingRates{ noInvocationFragmentShadingRates_ }
67161     {
67162     }
67163 
67164     VULKAN_HPP_CONSTEXPR
67165       PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67166 
PhysicalDeviceFragmentShadingRateEnumsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67167     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
67168       : PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( *reinterpret_cast<PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *>( &rhs ) )
67169     {
67170     }
67171 
67172     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67173 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67174 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67175     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
67176     {
67177       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *>( &rhs );
67178       return *this;
67179     }
67180 
67181 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67182     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67183     {
67184       pNext = pNext_;
67185       return *this;
67186     }
67187 
67188     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV &
setFragmentShadingRateEnumsVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67189       setFragmentShadingRateEnums( VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums_ ) VULKAN_HPP_NOEXCEPT
67190     {
67191       fragmentShadingRateEnums = fragmentShadingRateEnums_;
67192       return *this;
67193     }
67194 
67195     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV &
setSupersampleFragmentShadingRatesVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67196       setSupersampleFragmentShadingRates( VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates_ ) VULKAN_HPP_NOEXCEPT
67197     {
67198       supersampleFragmentShadingRates = supersampleFragmentShadingRates_;
67199       return *this;
67200     }
67201 
67202     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV &
setNoInvocationFragmentShadingRatesVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67203       setNoInvocationFragmentShadingRates( VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates_ ) VULKAN_HPP_NOEXCEPT
67204     {
67205       noInvocationFragmentShadingRates = noInvocationFragmentShadingRates_;
67206       return *this;
67207     }
67208 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67209 
operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67210     operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
67211     {
67212       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *>( this );
67213     }
67214 
operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67215     operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV &() VULKAN_HPP_NOEXCEPT
67216     {
67217       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *>( this );
67218     }
67219 
67220 #if defined( VULKAN_HPP_USE_REFLECT )
67221 #  if 14 <= VULKAN_HPP_CPP_VERSION
67222     auto
67223 #  else
67224     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67225                void * const &,
67226                VULKAN_HPP_NAMESPACE::Bool32 const &,
67227                VULKAN_HPP_NAMESPACE::Bool32 const &,
67228                VULKAN_HPP_NAMESPACE::Bool32 const &>
67229 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67230       reflect() const VULKAN_HPP_NOEXCEPT
67231     {
67232       return std::tie( sType, pNext, fragmentShadingRateEnums, supersampleFragmentShadingRates, noInvocationFragmentShadingRates );
67233     }
67234 #endif
67235 
67236 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67237     auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & ) const = default;
67238 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67239     bool operator==( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
67240     {
67241 #  if defined( VULKAN_HPP_USE_REFLECT )
67242       return this->reflect() == rhs.reflect();
67243 #  else
67244       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentShadingRateEnums == rhs.fragmentShadingRateEnums ) &&
67245              ( supersampleFragmentShadingRates == rhs.supersampleFragmentShadingRates ) &&
67246              ( noInvocationFragmentShadingRates == rhs.noInvocationFragmentShadingRates );
67247 #  endif
67248     }
67249 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV67250     bool operator!=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
67251     {
67252       return !operator==( rhs );
67253     }
67254 #endif
67255 
67256   public:
67257     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
67258     void *                              pNext                            = {};
67259     VULKAN_HPP_NAMESPACE::Bool32        fragmentShadingRateEnums         = {};
67260     VULKAN_HPP_NAMESPACE::Bool32        supersampleFragmentShadingRates  = {};
67261     VULKAN_HPP_NAMESPACE::Bool32        noInvocationFragmentShadingRates = {};
67262   };
67263 
67264   template <>
67265   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV>
67266   {
67267     using Type = PhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
67268   };
67269 
67270   struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV
67271   {
67272     using NativeType = VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
67273 
67274     static const bool                                  allowDuplicate = false;
67275     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
67276 
67277 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateEnumsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV67278     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
67279       VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
67280       void *                                    pNext_                                 = nullptr ) VULKAN_HPP_NOEXCEPT
67281       : pNext{ pNext_ }
67282       , maxFragmentShadingRateInvocationCount{ maxFragmentShadingRateInvocationCount_ }
67283     {
67284     }
67285 
67286     VULKAN_HPP_CONSTEXPR
67287       PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67288 
PhysicalDeviceFragmentShadingRateEnumsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV67289     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
67290       : PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( *reinterpret_cast<PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *>( &rhs ) )
67291     {
67292     }
67293 
67294     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV &
67295       operator=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67296 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67297 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV67298     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & operator=( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
67299     {
67300       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *>( &rhs );
67301       return *this;
67302     }
67303 
67304 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV67305     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67306     {
67307       pNext = pNext_;
67308       return *this;
67309     }
67310 
67311     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV &
setMaxFragmentShadingRateInvocationCountVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV67312       setMaxFragmentShadingRateInvocationCount( VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount_ ) VULKAN_HPP_NOEXCEPT
67313     {
67314       maxFragmentShadingRateInvocationCount = maxFragmentShadingRateInvocationCount_;
67315       return *this;
67316     }
67317 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67318 
operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV67319     operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
67320     {
67321       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV *>( this );
67322     }
67323 
operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV67324     operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV &() VULKAN_HPP_NOEXCEPT
67325     {
67326       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV *>( this );
67327     }
67328 
67329 #if defined( VULKAN_HPP_USE_REFLECT )
67330 #  if 14 <= VULKAN_HPP_CPP_VERSION
67331     auto
67332 #  else
67333     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
67334 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV67335       reflect() const VULKAN_HPP_NOEXCEPT
67336     {
67337       return std::tie( sType, pNext, maxFragmentShadingRateInvocationCount );
67338     }
67339 #endif
67340 
67341 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67342     auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & ) const = default;
67343 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV67344     bool operator==( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
67345     {
67346 #  if defined( VULKAN_HPP_USE_REFLECT )
67347       return this->reflect() == rhs.reflect();
67348 #  else
67349       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxFragmentShadingRateInvocationCount == rhs.maxFragmentShadingRateInvocationCount );
67350 #  endif
67351     }
67352 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV67353     bool operator!=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
67354     {
67355       return !operator==( rhs );
67356     }
67357 #endif
67358 
67359   public:
67360     VULKAN_HPP_NAMESPACE::StructureType       sType                                 = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
67361     void *                                    pNext                                 = {};
67362     VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
67363   };
67364 
67365   template <>
67366   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV>
67367   {
67368     using Type = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
67369   };
67370 
67371   struct PhysicalDeviceFragmentShadingRateFeaturesKHR
67372   {
67373     using NativeType = VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
67374 
67375     static const bool                                  allowDuplicate = false;
67376     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR;
67377 
67378 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67379     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_   = {},
67380                                                                        VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_  = {},
67381                                                                        VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ = {},
67382                                                                        void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
67383       : pNext{ pNext_ }
67384       , pipelineFragmentShadingRate{ pipelineFragmentShadingRate_ }
67385       , primitiveFragmentShadingRate{ primitiveFragmentShadingRate_ }
67386       , attachmentFragmentShadingRate{ attachmentFragmentShadingRate_ }
67387     {
67388     }
67389 
67390     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67391 
PhysicalDeviceFragmentShadingRateFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67392     PhysicalDeviceFragmentShadingRateFeaturesKHR( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
67393       : PhysicalDeviceFragmentShadingRateFeaturesKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRateFeaturesKHR const *>( &rhs ) )
67394     {
67395     }
67396 
67397     PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67398 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67399 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67400     PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
67401     {
67402       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR const *>( &rhs );
67403       return *this;
67404     }
67405 
67406 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67407     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67408     {
67409       pNext = pNext_;
67410       return *this;
67411     }
67412 
67413     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR &
setPipelineFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67414       setPipelineFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
67415     {
67416       pipelineFragmentShadingRate = pipelineFragmentShadingRate_;
67417       return *this;
67418     }
67419 
67420     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR &
setPrimitiveFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67421       setPrimitiveFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
67422     {
67423       primitiveFragmentShadingRate = primitiveFragmentShadingRate_;
67424       return *this;
67425     }
67426 
67427     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR &
setAttachmentFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67428       setAttachmentFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
67429     {
67430       attachmentFragmentShadingRate = attachmentFragmentShadingRate_;
67431       return *this;
67432     }
67433 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67434 
operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67435     operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
67436     {
67437       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateFeaturesKHR *>( this );
67438     }
67439 
operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67440     operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR &() VULKAN_HPP_NOEXCEPT
67441     {
67442       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateFeaturesKHR *>( this );
67443     }
67444 
67445 #if defined( VULKAN_HPP_USE_REFLECT )
67446 #  if 14 <= VULKAN_HPP_CPP_VERSION
67447     auto
67448 #  else
67449     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67450                void * const &,
67451                VULKAN_HPP_NAMESPACE::Bool32 const &,
67452                VULKAN_HPP_NAMESPACE::Bool32 const &,
67453                VULKAN_HPP_NAMESPACE::Bool32 const &>
67454 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67455       reflect() const VULKAN_HPP_NOEXCEPT
67456     {
67457       return std::tie( sType, pNext, pipelineFragmentShadingRate, primitiveFragmentShadingRate, attachmentFragmentShadingRate );
67458     }
67459 #endif
67460 
67461 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67462     auto operator<=>( PhysicalDeviceFragmentShadingRateFeaturesKHR const & ) const = default;
67463 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67464     bool operator==( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67465     {
67466 #  if defined( VULKAN_HPP_USE_REFLECT )
67467       return this->reflect() == rhs.reflect();
67468 #  else
67469       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineFragmentShadingRate == rhs.pipelineFragmentShadingRate ) &&
67470              ( primitiveFragmentShadingRate == rhs.primitiveFragmentShadingRate ) && ( attachmentFragmentShadingRate == rhs.attachmentFragmentShadingRate );
67471 #  endif
67472     }
67473 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR67474     bool operator!=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67475     {
67476       return !operator==( rhs );
67477     }
67478 #endif
67479 
67480   public:
67481     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR;
67482     void *                              pNext                         = {};
67483     VULKAN_HPP_NAMESPACE::Bool32        pipelineFragmentShadingRate   = {};
67484     VULKAN_HPP_NAMESPACE::Bool32        primitiveFragmentShadingRate  = {};
67485     VULKAN_HPP_NAMESPACE::Bool32        attachmentFragmentShadingRate = {};
67486   };
67487 
67488   template <>
67489   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR>
67490   {
67491     using Type = PhysicalDeviceFragmentShadingRateFeaturesKHR;
67492   };
67493 
67494   struct PhysicalDeviceFragmentShadingRateKHR
67495   {
67496     using NativeType = VkPhysicalDeviceFragmentShadingRateKHR;
67497 
67498     static const bool                                  allowDuplicate = false;
67499     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShadingRateKHR;
67500 
67501 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67502     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR( VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_ = {},
67503                                                                VULKAN_HPP_NAMESPACE::Extent2D         fragmentSize_ = {},
67504                                                                void *                                 pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
67505       : pNext{ pNext_ }
67506       , sampleCounts{ sampleCounts_ }
67507       , fragmentSize{ fragmentSize_ }
67508     {
67509     }
67510 
67511     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67512 
PhysicalDeviceFragmentShadingRateKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67513     PhysicalDeviceFragmentShadingRateKHR( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
67514       : PhysicalDeviceFragmentShadingRateKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRateKHR const *>( &rhs ) )
67515     {
67516     }
67517 
67518     PhysicalDeviceFragmentShadingRateKHR & operator=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67519 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67520 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67521     PhysicalDeviceFragmentShadingRateKHR & operator=( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
67522     {
67523       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR const *>( &rhs );
67524       return *this;
67525     }
67526 
operator VkPhysicalDeviceFragmentShadingRateKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67527     operator VkPhysicalDeviceFragmentShadingRateKHR const &() const VULKAN_HPP_NOEXCEPT
67528     {
67529       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateKHR *>( this );
67530     }
67531 
operator VkPhysicalDeviceFragmentShadingRateKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67532     operator VkPhysicalDeviceFragmentShadingRateKHR &() VULKAN_HPP_NOEXCEPT
67533     {
67534       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateKHR *>( this );
67535     }
67536 
67537 #if defined( VULKAN_HPP_USE_REFLECT )
67538 #  if 14 <= VULKAN_HPP_CPP_VERSION
67539     auto
67540 #  else
67541     std::
67542       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
67543 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67544       reflect() const VULKAN_HPP_NOEXCEPT
67545     {
67546       return std::tie( sType, pNext, sampleCounts, fragmentSize );
67547     }
67548 #endif
67549 
67550 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67551     auto operator<=>( PhysicalDeviceFragmentShadingRateKHR const & ) const = default;
67552 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67553     bool operator==( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67554     {
67555 #  if defined( VULKAN_HPP_USE_REFLECT )
67556       return this->reflect() == rhs.reflect();
67557 #  else
67558       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleCounts == rhs.sampleCounts ) && ( fragmentSize == rhs.fragmentSize );
67559 #  endif
67560     }
67561 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67562     bool operator!=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67563     {
67564       return !operator==( rhs );
67565     }
67566 #endif
67567 
67568   public:
67569     VULKAN_HPP_NAMESPACE::StructureType    sType        = StructureType::ePhysicalDeviceFragmentShadingRateKHR;
67570     void *                                 pNext        = {};
67571     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts = {};
67572     VULKAN_HPP_NAMESPACE::Extent2D         fragmentSize = {};
67573   };
67574 
67575   template <>
67576   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateKHR>
67577   {
67578     using Type = PhysicalDeviceFragmentShadingRateKHR;
67579   };
67580 
67581   struct PhysicalDeviceFragmentShadingRatePropertiesKHR
67582   {
67583     using NativeType = VkPhysicalDeviceFragmentShadingRatePropertiesKHR;
67584 
67585     static const bool                                  allowDuplicate = false;
67586     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR;
67587 
67588 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRatePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67589     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRatePropertiesKHR(
67590       VULKAN_HPP_NAMESPACE::Extent2D            minFragmentShadingRateAttachmentTexelSize_            = {},
67591       VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentShadingRateAttachmentTexelSize_            = {},
67592       uint32_t                                  maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ = {},
67593       VULKAN_HPP_NAMESPACE::Bool32              primitiveFragmentShadingRateWithMultipleViewports_    = {},
67594       VULKAN_HPP_NAMESPACE::Bool32              layeredShadingRateAttachments_                        = {},
67595       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateNonTrivialCombinerOps_             = {},
67596       VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentSize_                                      = {},
67597       uint32_t                                  maxFragmentSizeAspectRatio_                           = {},
67598       uint32_t                                  maxFragmentShadingRateCoverageSamples_                = {},
67599       VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples_           = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
67600       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithShaderDepthStencilWrites_      = {},
67601       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithSampleMask_                    = {},
67602       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithShaderSampleMask_              = {},
67603       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithConservativeRasterization_     = {},
67604       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithFragmentShaderInterlock_       = {},
67605       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithCustomSampleLocations_         = {},
67606       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateStrictMultiplyCombiner_            = {},
67607       void *                                    pNext_                                                = nullptr ) VULKAN_HPP_NOEXCEPT
67608       : pNext{ pNext_ }
67609       , minFragmentShadingRateAttachmentTexelSize{ minFragmentShadingRateAttachmentTexelSize_ }
67610       , maxFragmentShadingRateAttachmentTexelSize{ maxFragmentShadingRateAttachmentTexelSize_ }
67611       , maxFragmentShadingRateAttachmentTexelSizeAspectRatio{ maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ }
67612       , primitiveFragmentShadingRateWithMultipleViewports{ primitiveFragmentShadingRateWithMultipleViewports_ }
67613       , layeredShadingRateAttachments{ layeredShadingRateAttachments_ }
67614       , fragmentShadingRateNonTrivialCombinerOps{ fragmentShadingRateNonTrivialCombinerOps_ }
67615       , maxFragmentSize{ maxFragmentSize_ }
67616       , maxFragmentSizeAspectRatio{ maxFragmentSizeAspectRatio_ }
67617       , maxFragmentShadingRateCoverageSamples{ maxFragmentShadingRateCoverageSamples_ }
67618       , maxFragmentShadingRateRasterizationSamples{ maxFragmentShadingRateRasterizationSamples_ }
67619       , fragmentShadingRateWithShaderDepthStencilWrites{ fragmentShadingRateWithShaderDepthStencilWrites_ }
67620       , fragmentShadingRateWithSampleMask{ fragmentShadingRateWithSampleMask_ }
67621       , fragmentShadingRateWithShaderSampleMask{ fragmentShadingRateWithShaderSampleMask_ }
67622       , fragmentShadingRateWithConservativeRasterization{ fragmentShadingRateWithConservativeRasterization_ }
67623       , fragmentShadingRateWithFragmentShaderInterlock{ fragmentShadingRateWithFragmentShaderInterlock_ }
67624       , fragmentShadingRateWithCustomSampleLocations{ fragmentShadingRateWithCustomSampleLocations_ }
67625       , fragmentShadingRateStrictMultiplyCombiner{ fragmentShadingRateStrictMultiplyCombiner_ }
67626     {
67627     }
67628 
67629     VULKAN_HPP_CONSTEXPR
67630       PhysicalDeviceFragmentShadingRatePropertiesKHR( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67631 
PhysicalDeviceFragmentShadingRatePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67632     PhysicalDeviceFragmentShadingRatePropertiesKHR( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
67633       : PhysicalDeviceFragmentShadingRatePropertiesKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRatePropertiesKHR const *>( &rhs ) )
67634     {
67635     }
67636 
67637     PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67638 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67639 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67640     PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
67641     {
67642       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR const *>( &rhs );
67643       return *this;
67644     }
67645 
operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67646     operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
67647     {
67648       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRatePropertiesKHR *>( this );
67649     }
67650 
operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67651     operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR &() VULKAN_HPP_NOEXCEPT
67652     {
67653       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRatePropertiesKHR *>( this );
67654     }
67655 
67656 #if defined( VULKAN_HPP_USE_REFLECT )
67657 #  if 14 <= VULKAN_HPP_CPP_VERSION
67658     auto
67659 #  else
67660     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67661                void * const &,
67662                VULKAN_HPP_NAMESPACE::Extent2D const &,
67663                VULKAN_HPP_NAMESPACE::Extent2D const &,
67664                uint32_t const &,
67665                VULKAN_HPP_NAMESPACE::Bool32 const &,
67666                VULKAN_HPP_NAMESPACE::Bool32 const &,
67667                VULKAN_HPP_NAMESPACE::Bool32 const &,
67668                VULKAN_HPP_NAMESPACE::Extent2D const &,
67669                uint32_t const &,
67670                uint32_t const &,
67671                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
67672                VULKAN_HPP_NAMESPACE::Bool32 const &,
67673                VULKAN_HPP_NAMESPACE::Bool32 const &,
67674                VULKAN_HPP_NAMESPACE::Bool32 const &,
67675                VULKAN_HPP_NAMESPACE::Bool32 const &,
67676                VULKAN_HPP_NAMESPACE::Bool32 const &,
67677                VULKAN_HPP_NAMESPACE::Bool32 const &,
67678                VULKAN_HPP_NAMESPACE::Bool32 const &>
67679 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67680       reflect() const VULKAN_HPP_NOEXCEPT
67681     {
67682       return std::tie( sType,
67683                        pNext,
67684                        minFragmentShadingRateAttachmentTexelSize,
67685                        maxFragmentShadingRateAttachmentTexelSize,
67686                        maxFragmentShadingRateAttachmentTexelSizeAspectRatio,
67687                        primitiveFragmentShadingRateWithMultipleViewports,
67688                        layeredShadingRateAttachments,
67689                        fragmentShadingRateNonTrivialCombinerOps,
67690                        maxFragmentSize,
67691                        maxFragmentSizeAspectRatio,
67692                        maxFragmentShadingRateCoverageSamples,
67693                        maxFragmentShadingRateRasterizationSamples,
67694                        fragmentShadingRateWithShaderDepthStencilWrites,
67695                        fragmentShadingRateWithSampleMask,
67696                        fragmentShadingRateWithShaderSampleMask,
67697                        fragmentShadingRateWithConservativeRasterization,
67698                        fragmentShadingRateWithFragmentShaderInterlock,
67699                        fragmentShadingRateWithCustomSampleLocations,
67700                        fragmentShadingRateStrictMultiplyCombiner );
67701     }
67702 #endif
67703 
67704 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67705     auto operator<=>( PhysicalDeviceFragmentShadingRatePropertiesKHR const & ) const = default;
67706 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67707     bool operator==( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67708     {
67709 #  if defined( VULKAN_HPP_USE_REFLECT )
67710       return this->reflect() == rhs.reflect();
67711 #  else
67712       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
67713              ( minFragmentShadingRateAttachmentTexelSize == rhs.minFragmentShadingRateAttachmentTexelSize ) &&
67714              ( maxFragmentShadingRateAttachmentTexelSize == rhs.maxFragmentShadingRateAttachmentTexelSize ) &&
67715              ( maxFragmentShadingRateAttachmentTexelSizeAspectRatio == rhs.maxFragmentShadingRateAttachmentTexelSizeAspectRatio ) &&
67716              ( primitiveFragmentShadingRateWithMultipleViewports == rhs.primitiveFragmentShadingRateWithMultipleViewports ) &&
67717              ( layeredShadingRateAttachments == rhs.layeredShadingRateAttachments ) &&
67718              ( fragmentShadingRateNonTrivialCombinerOps == rhs.fragmentShadingRateNonTrivialCombinerOps ) && ( maxFragmentSize == rhs.maxFragmentSize ) &&
67719              ( maxFragmentSizeAspectRatio == rhs.maxFragmentSizeAspectRatio ) &&
67720              ( maxFragmentShadingRateCoverageSamples == rhs.maxFragmentShadingRateCoverageSamples ) &&
67721              ( maxFragmentShadingRateRasterizationSamples == rhs.maxFragmentShadingRateRasterizationSamples ) &&
67722              ( fragmentShadingRateWithShaderDepthStencilWrites == rhs.fragmentShadingRateWithShaderDepthStencilWrites ) &&
67723              ( fragmentShadingRateWithSampleMask == rhs.fragmentShadingRateWithSampleMask ) &&
67724              ( fragmentShadingRateWithShaderSampleMask == rhs.fragmentShadingRateWithShaderSampleMask ) &&
67725              ( fragmentShadingRateWithConservativeRasterization == rhs.fragmentShadingRateWithConservativeRasterization ) &&
67726              ( fragmentShadingRateWithFragmentShaderInterlock == rhs.fragmentShadingRateWithFragmentShaderInterlock ) &&
67727              ( fragmentShadingRateWithCustomSampleLocations == rhs.fragmentShadingRateWithCustomSampleLocations ) &&
67728              ( fragmentShadingRateStrictMultiplyCombiner == rhs.fragmentShadingRateStrictMultiplyCombiner );
67729 #  endif
67730     }
67731 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67732     bool operator!=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67733     {
67734       return !operator==( rhs );
67735     }
67736 #endif
67737 
67738   public:
67739     VULKAN_HPP_NAMESPACE::StructureType       sType                                     = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR;
67740     void *                                    pNext                                     = {};
67741     VULKAN_HPP_NAMESPACE::Extent2D            minFragmentShadingRateAttachmentTexelSize = {};
67742     VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentShadingRateAttachmentTexelSize = {};
67743     uint32_t                                  maxFragmentShadingRateAttachmentTexelSizeAspectRatio = {};
67744     VULKAN_HPP_NAMESPACE::Bool32              primitiveFragmentShadingRateWithMultipleViewports    = {};
67745     VULKAN_HPP_NAMESPACE::Bool32              layeredShadingRateAttachments                        = {};
67746     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateNonTrivialCombinerOps             = {};
67747     VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentSize                                      = {};
67748     uint32_t                                  maxFragmentSizeAspectRatio                           = {};
67749     uint32_t                                  maxFragmentShadingRateCoverageSamples                = {};
67750     VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples           = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
67751     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithShaderDepthStencilWrites      = {};
67752     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithSampleMask                    = {};
67753     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithShaderSampleMask              = {};
67754     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithConservativeRasterization     = {};
67755     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithFragmentShaderInterlock       = {};
67756     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithCustomSampleLocations         = {};
67757     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateStrictMultiplyCombiner            = {};
67758   };
67759 
67760   template <>
67761   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR>
67762   {
67763     using Type = PhysicalDeviceFragmentShadingRatePropertiesKHR;
67764   };
67765 
67766   struct PhysicalDeviceFrameBoundaryFeaturesEXT
67767   {
67768     using NativeType = VkPhysicalDeviceFrameBoundaryFeaturesEXT;
67769 
67770     static const bool                                  allowDuplicate = false;
67771     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFrameBoundaryFeaturesEXT;
67772 
67773 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFrameBoundaryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67774     VULKAN_HPP_CONSTEXPR PhysicalDeviceFrameBoundaryFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 frameBoundary_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
67775       : pNext{ pNext_ }
67776       , frameBoundary{ frameBoundary_ }
67777     {
67778     }
67779 
67780     VULKAN_HPP_CONSTEXPR PhysicalDeviceFrameBoundaryFeaturesEXT( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67781 
PhysicalDeviceFrameBoundaryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67782     PhysicalDeviceFrameBoundaryFeaturesEXT( VkPhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67783       : PhysicalDeviceFrameBoundaryFeaturesEXT( *reinterpret_cast<PhysicalDeviceFrameBoundaryFeaturesEXT const *>( &rhs ) )
67784     {
67785     }
67786 
67787     PhysicalDeviceFrameBoundaryFeaturesEXT & operator=( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67788 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67789 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67790     PhysicalDeviceFrameBoundaryFeaturesEXT & operator=( VkPhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67791     {
67792       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT const *>( &rhs );
67793       return *this;
67794     }
67795 
67796 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67797     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFrameBoundaryFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67798     {
67799       pNext = pNext_;
67800       return *this;
67801     }
67802 
setFrameBoundaryVULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67803     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFrameBoundaryFeaturesEXT & setFrameBoundary( VULKAN_HPP_NAMESPACE::Bool32 frameBoundary_ ) VULKAN_HPP_NOEXCEPT
67804     {
67805       frameBoundary = frameBoundary_;
67806       return *this;
67807     }
67808 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67809 
operator VkPhysicalDeviceFrameBoundaryFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67810     operator VkPhysicalDeviceFrameBoundaryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
67811     {
67812       return *reinterpret_cast<const VkPhysicalDeviceFrameBoundaryFeaturesEXT *>( this );
67813     }
67814 
operator VkPhysicalDeviceFrameBoundaryFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67815     operator VkPhysicalDeviceFrameBoundaryFeaturesEXT &() VULKAN_HPP_NOEXCEPT
67816     {
67817       return *reinterpret_cast<VkPhysicalDeviceFrameBoundaryFeaturesEXT *>( this );
67818     }
67819 
67820 #if defined( VULKAN_HPP_USE_REFLECT )
67821 #  if 14 <= VULKAN_HPP_CPP_VERSION
67822     auto
67823 #  else
67824     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
67825 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67826       reflect() const VULKAN_HPP_NOEXCEPT
67827     {
67828       return std::tie( sType, pNext, frameBoundary );
67829     }
67830 #endif
67831 
67832 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67833     auto operator<=>( PhysicalDeviceFrameBoundaryFeaturesEXT const & ) const = default;
67834 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67835     bool operator==( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67836     {
67837 #  if defined( VULKAN_HPP_USE_REFLECT )
67838       return this->reflect() == rhs.reflect();
67839 #  else
67840       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( frameBoundary == rhs.frameBoundary );
67841 #  endif
67842     }
67843 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67844     bool operator!=( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67845     {
67846       return !operator==( rhs );
67847     }
67848 #endif
67849 
67850   public:
67851     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceFrameBoundaryFeaturesEXT;
67852     void *                              pNext         = {};
67853     VULKAN_HPP_NAMESPACE::Bool32        frameBoundary = {};
67854   };
67855 
67856   template <>
67857   struct CppType<StructureType, StructureType::ePhysicalDeviceFrameBoundaryFeaturesEXT>
67858   {
67859     using Type = PhysicalDeviceFrameBoundaryFeaturesEXT;
67860   };
67861 
67862   struct PhysicalDeviceGlobalPriorityQueryFeatures
67863   {
67864     using NativeType = VkPhysicalDeviceGlobalPriorityQueryFeatures;
67865 
67866     static const bool                                  allowDuplicate = false;
67867     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceGlobalPriorityQueryFeatures;
67868 
67869 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceGlobalPriorityQueryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures67870     VULKAN_HPP_CONSTEXPR PhysicalDeviceGlobalPriorityQueryFeatures( VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery_ = {},
67871                                                                     void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
67872       : pNext{ pNext_ }
67873       , globalPriorityQuery{ globalPriorityQuery_ }
67874     {
67875     }
67876 
67877     VULKAN_HPP_CONSTEXPR PhysicalDeviceGlobalPriorityQueryFeatures( PhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67878 
PhysicalDeviceGlobalPriorityQueryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures67879     PhysicalDeviceGlobalPriorityQueryFeatures( VkPhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
67880       : PhysicalDeviceGlobalPriorityQueryFeatures( *reinterpret_cast<PhysicalDeviceGlobalPriorityQueryFeatures const *>( &rhs ) )
67881     {
67882     }
67883 
67884     PhysicalDeviceGlobalPriorityQueryFeatures & operator=( PhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67885 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67886 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures67887     PhysicalDeviceGlobalPriorityQueryFeatures & operator=( VkPhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
67888     {
67889       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures const *>( &rhs );
67890       return *this;
67891     }
67892 
67893 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures67894     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67895     {
67896       pNext = pNext_;
67897       return *this;
67898     }
67899 
67900     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeatures &
setGlobalPriorityQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures67901       setGlobalPriorityQuery( VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery_ ) VULKAN_HPP_NOEXCEPT
67902     {
67903       globalPriorityQuery = globalPriorityQuery_;
67904       return *this;
67905     }
67906 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67907 
operator VkPhysicalDeviceGlobalPriorityQueryFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures67908     operator VkPhysicalDeviceGlobalPriorityQueryFeatures const &() const VULKAN_HPP_NOEXCEPT
67909     {
67910       return *reinterpret_cast<const VkPhysicalDeviceGlobalPriorityQueryFeatures *>( this );
67911     }
67912 
operator VkPhysicalDeviceGlobalPriorityQueryFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures67913     operator VkPhysicalDeviceGlobalPriorityQueryFeatures &() VULKAN_HPP_NOEXCEPT
67914     {
67915       return *reinterpret_cast<VkPhysicalDeviceGlobalPriorityQueryFeatures *>( this );
67916     }
67917 
67918 #if defined( VULKAN_HPP_USE_REFLECT )
67919 #  if 14 <= VULKAN_HPP_CPP_VERSION
67920     auto
67921 #  else
67922     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
67923 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures67924       reflect() const VULKAN_HPP_NOEXCEPT
67925     {
67926       return std::tie( sType, pNext, globalPriorityQuery );
67927     }
67928 #endif
67929 
67930 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67931     auto operator<=>( PhysicalDeviceGlobalPriorityQueryFeatures const & ) const = default;
67932 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures67933     bool operator==( PhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
67934     {
67935 #  if defined( VULKAN_HPP_USE_REFLECT )
67936       return this->reflect() == rhs.reflect();
67937 #  else
67938       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( globalPriorityQuery == rhs.globalPriorityQuery );
67939 #  endif
67940     }
67941 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures67942     bool operator!=( PhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
67943     {
67944       return !operator==( rhs );
67945     }
67946 #endif
67947 
67948   public:
67949     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceGlobalPriorityQueryFeatures;
67950     void *                              pNext               = {};
67951     VULKAN_HPP_NAMESPACE::Bool32        globalPriorityQuery = {};
67952   };
67953 
67954   template <>
67955   struct CppType<StructureType, StructureType::ePhysicalDeviceGlobalPriorityQueryFeatures>
67956   {
67957     using Type = PhysicalDeviceGlobalPriorityQueryFeatures;
67958   };
67959 
67960   using PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures;
67961   using PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures;
67962 
67963   struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
67964   {
67965     using NativeType = VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
67966 
67967     static const bool                                  allowDuplicate = false;
67968     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
67969 
67970 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceGraphicsPipelineLibraryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67971     VULKAN_HPP_CONSTEXPR PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibrary_ = {},
67972                                                                            void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
67973       : pNext{ pNext_ }
67974       , graphicsPipelineLibrary{ graphicsPipelineLibrary_ }
67975     {
67976     }
67977 
67978     VULKAN_HPP_CONSTEXPR
67979       PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67980 
PhysicalDeviceGraphicsPipelineLibraryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67981     PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67982       : PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( *reinterpret_cast<PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const *>( &rhs ) )
67983     {
67984     }
67985 
67986     PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT & operator=( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67987 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67988 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67989     PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT & operator=( VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67990     {
67991       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const *>( &rhs );
67992       return *this;
67993     }
67994 
67995 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67996     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67997     {
67998       pNext = pNext_;
67999       return *this;
68000     }
68001 
68002     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT &
setGraphicsPipelineLibraryVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT68003       setGraphicsPipelineLibrary( VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibrary_ ) VULKAN_HPP_NOEXCEPT
68004     {
68005       graphicsPipelineLibrary = graphicsPipelineLibrary_;
68006       return *this;
68007     }
68008 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68009 
operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT68010     operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
68011     {
68012       return *reinterpret_cast<const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *>( this );
68013     }
68014 
operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT68015     operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT &() VULKAN_HPP_NOEXCEPT
68016     {
68017       return *reinterpret_cast<VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *>( this );
68018     }
68019 
68020 #if defined( VULKAN_HPP_USE_REFLECT )
68021 #  if 14 <= VULKAN_HPP_CPP_VERSION
68022     auto
68023 #  else
68024     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68025 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT68026       reflect() const VULKAN_HPP_NOEXCEPT
68027     {
68028       return std::tie( sType, pNext, graphicsPipelineLibrary );
68029     }
68030 #endif
68031 
68032 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68033     auto operator<=>( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & ) const = default;
68034 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT68035     bool operator==( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68036     {
68037 #  if defined( VULKAN_HPP_USE_REFLECT )
68038       return this->reflect() == rhs.reflect();
68039 #  else
68040       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( graphicsPipelineLibrary == rhs.graphicsPipelineLibrary );
68041 #  endif
68042     }
68043 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT68044     bool operator!=( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68045     {
68046       return !operator==( rhs );
68047     }
68048 #endif
68049 
68050   public:
68051     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
68052     void *                              pNext                   = {};
68053     VULKAN_HPP_NAMESPACE::Bool32        graphicsPipelineLibrary = {};
68054   };
68055 
68056   template <>
68057   struct CppType<StructureType, StructureType::ePhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>
68058   {
68059     using Type = PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
68060   };
68061 
68062   struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
68063   {
68064     using NativeType = VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
68065 
68066     static const bool                                  allowDuplicate = false;
68067     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
68068 
68069 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
68070     VULKAN_HPP_CONSTEXPR
PhysicalDeviceGraphicsPipelineLibraryPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68071       PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibraryFastLinking_                        = {},
68072                                                           VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibraryIndependentInterpolationDecoration_ = {},
68073                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
68074       : pNext{ pNext_ }
68075       , graphicsPipelineLibraryFastLinking{ graphicsPipelineLibraryFastLinking_ }
68076       , graphicsPipelineLibraryIndependentInterpolationDecoration{ graphicsPipelineLibraryIndependentInterpolationDecoration_ }
68077     {
68078     }
68079 
68080     VULKAN_HPP_CONSTEXPR
68081       PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68082 
PhysicalDeviceGraphicsPipelineLibraryPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68083     PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68084       : PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( *reinterpret_cast<PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const *>( &rhs ) )
68085     {
68086     }
68087 
68088     PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT &
68089       operator=( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68090 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68091 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68092     PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT & operator=( VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68093     {
68094       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const *>( &rhs );
68095       return *this;
68096     }
68097 
68098 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68099     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68100     {
68101       pNext = pNext_;
68102       return *this;
68103     }
68104 
68105     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT &
setGraphicsPipelineLibraryFastLinkingVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68106       setGraphicsPipelineLibraryFastLinking( VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibraryFastLinking_ ) VULKAN_HPP_NOEXCEPT
68107     {
68108       graphicsPipelineLibraryFastLinking = graphicsPipelineLibraryFastLinking_;
68109       return *this;
68110     }
68111 
setGraphicsPipelineLibraryIndependentInterpolationDecorationVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68112     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT & setGraphicsPipelineLibraryIndependentInterpolationDecoration(
68113       VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibraryIndependentInterpolationDecoration_ ) VULKAN_HPP_NOEXCEPT
68114     {
68115       graphicsPipelineLibraryIndependentInterpolationDecoration = graphicsPipelineLibraryIndependentInterpolationDecoration_;
68116       return *this;
68117     }
68118 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68119 
operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68120     operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
68121     {
68122       return *reinterpret_cast<const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT *>( this );
68123     }
68124 
operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68125     operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT &() VULKAN_HPP_NOEXCEPT
68126     {
68127       return *reinterpret_cast<VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT *>( this );
68128     }
68129 
68130 #if defined( VULKAN_HPP_USE_REFLECT )
68131 #  if 14 <= VULKAN_HPP_CPP_VERSION
68132     auto
68133 #  else
68134     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68135 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68136       reflect() const VULKAN_HPP_NOEXCEPT
68137     {
68138       return std::tie( sType, pNext, graphicsPipelineLibraryFastLinking, graphicsPipelineLibraryIndependentInterpolationDecoration );
68139     }
68140 #endif
68141 
68142 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68143     auto operator<=>( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & ) const = default;
68144 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68145     bool operator==( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68146     {
68147 #  if defined( VULKAN_HPP_USE_REFLECT )
68148       return this->reflect() == rhs.reflect();
68149 #  else
68150       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( graphicsPipelineLibraryFastLinking == rhs.graphicsPipelineLibraryFastLinking ) &&
68151              ( graphicsPipelineLibraryIndependentInterpolationDecoration == rhs.graphicsPipelineLibraryIndependentInterpolationDecoration );
68152 #  endif
68153     }
68154 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT68155     bool operator!=( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68156     {
68157       return !operator==( rhs );
68158     }
68159 #endif
68160 
68161   public:
68162     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
68163     void *                              pNext                              = {};
68164     VULKAN_HPP_NAMESPACE::Bool32        graphicsPipelineLibraryFastLinking = {};
68165     VULKAN_HPP_NAMESPACE::Bool32        graphicsPipelineLibraryIndependentInterpolationDecoration = {};
68166   };
68167 
68168   template <>
68169   struct CppType<StructureType, StructureType::ePhysicalDeviceGraphicsPipelineLibraryPropertiesEXT>
68170   {
68171     using Type = PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
68172   };
68173 
68174   struct PhysicalDeviceGroupProperties
68175   {
68176     using NativeType = VkPhysicalDeviceGroupProperties;
68177 
68178     static const bool                                  allowDuplicate = false;
68179     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceGroupProperties;
68180 
68181 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
68182     VULKAN_HPP_CONSTEXPR_14
PhysicalDeviceGroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties68183       PhysicalDeviceGroupProperties( uint32_t                                                                           physicalDeviceCount_ = {},
68184                                      std::array<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> const & physicalDevices_     = {},
68185                                      VULKAN_HPP_NAMESPACE::Bool32                                                       subsetAllocation_    = {},
68186                                      void *                                                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
68187       : pNext{ pNext_ }
68188       , physicalDeviceCount{ physicalDeviceCount_ }
68189       , physicalDevices{ physicalDevices_ }
68190       , subsetAllocation{ subsetAllocation_ }
68191     {
68192     }
68193 
68194     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68195 
PhysicalDeviceGroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties68196     PhysicalDeviceGroupProperties( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
68197       : PhysicalDeviceGroupProperties( *reinterpret_cast<PhysicalDeviceGroupProperties const *>( &rhs ) )
68198     {
68199     }
68200 
68201     PhysicalDeviceGroupProperties & operator=( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68202 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68203 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties68204     PhysicalDeviceGroupProperties & operator=( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
68205     {
68206       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties const *>( &rhs );
68207       return *this;
68208     }
68209 
operator VkPhysicalDeviceGroupProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties68210     operator VkPhysicalDeviceGroupProperties const &() const VULKAN_HPP_NOEXCEPT
68211     {
68212       return *reinterpret_cast<const VkPhysicalDeviceGroupProperties *>( this );
68213     }
68214 
operator VkPhysicalDeviceGroupProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties68215     operator VkPhysicalDeviceGroupProperties &() VULKAN_HPP_NOEXCEPT
68216     {
68217       return *reinterpret_cast<VkPhysicalDeviceGroupProperties *>( this );
68218     }
68219 
68220 #if defined( VULKAN_HPP_USE_REFLECT )
68221 #  if 14 <= VULKAN_HPP_CPP_VERSION
68222     auto
68223 #  else
68224     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68225                void * const &,
68226                uint32_t const &,
68227                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> const &,
68228                VULKAN_HPP_NAMESPACE::Bool32 const &>
68229 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties68230       reflect() const VULKAN_HPP_NOEXCEPT
68231     {
68232       return std::tie( sType, pNext, physicalDeviceCount, physicalDevices, subsetAllocation );
68233     }
68234 #endif
68235 
68236 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties68237     std::strong_ordering operator<=>( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
68238     {
68239       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
68240         return cmp;
68241       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
68242         return cmp;
68243       if ( auto cmp = physicalDeviceCount <=> rhs.physicalDeviceCount; cmp != 0 )
68244         return cmp;
68245       for ( size_t i = 0; i < physicalDeviceCount; ++i )
68246       {
68247         if ( auto cmp = physicalDevices[i] <=> rhs.physicalDevices[i]; cmp != 0 )
68248           return cmp;
68249       }
68250       if ( auto cmp = subsetAllocation <=> rhs.subsetAllocation; cmp != 0 )
68251         return cmp;
68252 
68253       return std::strong_ordering::equivalent;
68254     }
68255 #endif
68256 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties68257     bool operator==( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
68258     {
68259       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( physicalDeviceCount == rhs.physicalDeviceCount ) &&
68260              ( memcmp( physicalDevices, rhs.physicalDevices, physicalDeviceCount * sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice ) ) == 0 ) &&
68261              ( subsetAllocation == rhs.subsetAllocation );
68262     }
68263 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties68264     bool operator!=( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
68265     {
68266       return !operator==( rhs );
68267     }
68268 
68269   public:
68270     VULKAN_HPP_NAMESPACE::StructureType                                                                  sType = StructureType::ePhysicalDeviceGroupProperties;
68271     void *                                                                                               pNext = {};
68272     uint32_t                                                                                             physicalDeviceCount = {};
68273     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> physicalDevices     = {};
68274     VULKAN_HPP_NAMESPACE::Bool32                                                                         subsetAllocation    = {};
68275   };
68276 
68277   template <>
68278   struct CppType<StructureType, StructureType::ePhysicalDeviceGroupProperties>
68279   {
68280     using Type = PhysicalDeviceGroupProperties;
68281   };
68282 
68283   using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
68284 
68285   struct PhysicalDeviceHostImageCopyFeatures
68286   {
68287     using NativeType = VkPhysicalDeviceHostImageCopyFeatures;
68288 
68289     static const bool                                  allowDuplicate = false;
68290     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceHostImageCopyFeatures;
68291 
68292 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceHostImageCopyFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures68293     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostImageCopyFeatures( VULKAN_HPP_NAMESPACE::Bool32 hostImageCopy_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
68294       : pNext{ pNext_ }
68295       , hostImageCopy{ hostImageCopy_ }
68296     {
68297     }
68298 
68299     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostImageCopyFeatures( PhysicalDeviceHostImageCopyFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68300 
PhysicalDeviceHostImageCopyFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures68301     PhysicalDeviceHostImageCopyFeatures( VkPhysicalDeviceHostImageCopyFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
68302       : PhysicalDeviceHostImageCopyFeatures( *reinterpret_cast<PhysicalDeviceHostImageCopyFeatures const *>( &rhs ) )
68303     {
68304     }
68305 
68306     PhysicalDeviceHostImageCopyFeatures & operator=( PhysicalDeviceHostImageCopyFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68307 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68308 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures68309     PhysicalDeviceHostImageCopyFeatures & operator=( VkPhysicalDeviceHostImageCopyFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
68310     {
68311       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures const *>( &rhs );
68312       return *this;
68313     }
68314 
68315 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures68316     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68317     {
68318       pNext = pNext_;
68319       return *this;
68320     }
68321 
setHostImageCopyVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures68322     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyFeatures & setHostImageCopy( VULKAN_HPP_NAMESPACE::Bool32 hostImageCopy_ ) VULKAN_HPP_NOEXCEPT
68323     {
68324       hostImageCopy = hostImageCopy_;
68325       return *this;
68326     }
68327 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68328 
operator VkPhysicalDeviceHostImageCopyFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures68329     operator VkPhysicalDeviceHostImageCopyFeatures const &() const VULKAN_HPP_NOEXCEPT
68330     {
68331       return *reinterpret_cast<const VkPhysicalDeviceHostImageCopyFeatures *>( this );
68332     }
68333 
operator VkPhysicalDeviceHostImageCopyFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures68334     operator VkPhysicalDeviceHostImageCopyFeatures &() VULKAN_HPP_NOEXCEPT
68335     {
68336       return *reinterpret_cast<VkPhysicalDeviceHostImageCopyFeatures *>( this );
68337     }
68338 
68339 #if defined( VULKAN_HPP_USE_REFLECT )
68340 #  if 14 <= VULKAN_HPP_CPP_VERSION
68341     auto
68342 #  else
68343     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68344 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures68345       reflect() const VULKAN_HPP_NOEXCEPT
68346     {
68347       return std::tie( sType, pNext, hostImageCopy );
68348     }
68349 #endif
68350 
68351 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68352     auto operator<=>( PhysicalDeviceHostImageCopyFeatures const & ) const = default;
68353 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures68354     bool operator==( PhysicalDeviceHostImageCopyFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
68355     {
68356 #  if defined( VULKAN_HPP_USE_REFLECT )
68357       return this->reflect() == rhs.reflect();
68358 #  else
68359       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hostImageCopy == rhs.hostImageCopy );
68360 #  endif
68361     }
68362 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures68363     bool operator!=( PhysicalDeviceHostImageCopyFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
68364     {
68365       return !operator==( rhs );
68366     }
68367 #endif
68368 
68369   public:
68370     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceHostImageCopyFeatures;
68371     void *                              pNext         = {};
68372     VULKAN_HPP_NAMESPACE::Bool32        hostImageCopy = {};
68373   };
68374 
68375   template <>
68376   struct CppType<StructureType, StructureType::ePhysicalDeviceHostImageCopyFeatures>
68377   {
68378     using Type = PhysicalDeviceHostImageCopyFeatures;
68379   };
68380 
68381   using PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures;
68382 
68383   struct PhysicalDeviceHostImageCopyProperties
68384   {
68385     using NativeType = VkPhysicalDeviceHostImageCopyProperties;
68386 
68387     static const bool                                  allowDuplicate = false;
68388     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceHostImageCopyProperties;
68389 
68390 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceHostImageCopyPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68391     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties( uint32_t                                  copySrcLayoutCount_              = {},
68392                                                                    VULKAN_HPP_NAMESPACE::ImageLayout *       pCopySrcLayouts_                 = {},
68393                                                                    uint32_t                                  copyDstLayoutCount_              = {},
68394                                                                    VULKAN_HPP_NAMESPACE::ImageLayout *       pCopyDstLayouts_                 = {},
68395                                                                    std::array<uint8_t, VK_UUID_SIZE> const & optimalTilingLayoutUUID_         = {},
68396                                                                    VULKAN_HPP_NAMESPACE::Bool32              identicalMemoryTypeRequirements_ = {},
68397                                                                    void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
68398       : pNext{ pNext_ }
68399       , copySrcLayoutCount{ copySrcLayoutCount_ }
68400       , pCopySrcLayouts{ pCopySrcLayouts_ }
68401       , copyDstLayoutCount{ copyDstLayoutCount_ }
68402       , pCopyDstLayouts{ pCopyDstLayouts_ }
68403       , optimalTilingLayoutUUID{ optimalTilingLayoutUUID_ }
68404       , identicalMemoryTypeRequirements{ identicalMemoryTypeRequirements_ }
68405     {
68406     }
68407 
68408     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties( PhysicalDeviceHostImageCopyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68409 
PhysicalDeviceHostImageCopyPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68410     PhysicalDeviceHostImageCopyProperties( VkPhysicalDeviceHostImageCopyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
68411       : PhysicalDeviceHostImageCopyProperties( *reinterpret_cast<PhysicalDeviceHostImageCopyProperties const *>( &rhs ) )
68412     {
68413     }
68414 
68415 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceHostImageCopyPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68416     PhysicalDeviceHostImageCopyProperties( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageLayout> const & copySrcLayouts_,
68417                                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageLayout> const & copyDstLayouts_ = {},
68418                                            std::array<uint8_t, VK_UUID_SIZE> const & optimalTilingLayoutUUID_                                       = {},
68419                                            VULKAN_HPP_NAMESPACE::Bool32              identicalMemoryTypeRequirements_                               = {},
68420                                            void *                                    pNext_                                                         = nullptr )
68421       : pNext( pNext_ )
68422       , copySrcLayoutCount( static_cast<uint32_t>( copySrcLayouts_.size() ) )
68423       , pCopySrcLayouts( copySrcLayouts_.data() )
68424       , copyDstLayoutCount( static_cast<uint32_t>( copyDstLayouts_.size() ) )
68425       , pCopyDstLayouts( copyDstLayouts_.data() )
68426       , optimalTilingLayoutUUID( optimalTilingLayoutUUID_ )
68427       , identicalMemoryTypeRequirements( identicalMemoryTypeRequirements_ )
68428     {
68429     }
68430 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
68431 
68432     PhysicalDeviceHostImageCopyProperties & operator=( PhysicalDeviceHostImageCopyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68433 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68434 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68435     PhysicalDeviceHostImageCopyProperties & operator=( VkPhysicalDeviceHostImageCopyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
68436     {
68437       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties const *>( &rhs );
68438       return *this;
68439     }
68440 
68441 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68442     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68443     {
68444       pNext = pNext_;
68445       return *this;
68446     }
68447 
setCopySrcLayoutCountVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68448     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties & setCopySrcLayoutCount( uint32_t copySrcLayoutCount_ ) VULKAN_HPP_NOEXCEPT
68449     {
68450       copySrcLayoutCount = copySrcLayoutCount_;
68451       return *this;
68452     }
68453 
68454     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties &
setPCopySrcLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68455       setPCopySrcLayouts( VULKAN_HPP_NAMESPACE::ImageLayout * pCopySrcLayouts_ ) VULKAN_HPP_NOEXCEPT
68456     {
68457       pCopySrcLayouts = pCopySrcLayouts_;
68458       return *this;
68459     }
68460 
68461 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
68462     PhysicalDeviceHostImageCopyProperties &
setCopySrcLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68463       setCopySrcLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageLayout> const & copySrcLayouts_ ) VULKAN_HPP_NOEXCEPT
68464     {
68465       copySrcLayoutCount = static_cast<uint32_t>( copySrcLayouts_.size() );
68466       pCopySrcLayouts    = copySrcLayouts_.data();
68467       return *this;
68468     }
68469 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
68470 
setCopyDstLayoutCountVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68471     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties & setCopyDstLayoutCount( uint32_t copyDstLayoutCount_ ) VULKAN_HPP_NOEXCEPT
68472     {
68473       copyDstLayoutCount = copyDstLayoutCount_;
68474       return *this;
68475     }
68476 
68477     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties &
setPCopyDstLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68478       setPCopyDstLayouts( VULKAN_HPP_NAMESPACE::ImageLayout * pCopyDstLayouts_ ) VULKAN_HPP_NOEXCEPT
68479     {
68480       pCopyDstLayouts = pCopyDstLayouts_;
68481       return *this;
68482     }
68483 
68484 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
68485     PhysicalDeviceHostImageCopyProperties &
setCopyDstLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68486       setCopyDstLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageLayout> const & copyDstLayouts_ ) VULKAN_HPP_NOEXCEPT
68487     {
68488       copyDstLayoutCount = static_cast<uint32_t>( copyDstLayouts_.size() );
68489       pCopyDstLayouts    = copyDstLayouts_.data();
68490       return *this;
68491     }
68492 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
68493 
68494     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties &
setOptimalTilingLayoutUUIDVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68495       setOptimalTilingLayoutUUID( std::array<uint8_t, VK_UUID_SIZE> optimalTilingLayoutUUID_ ) VULKAN_HPP_NOEXCEPT
68496     {
68497       optimalTilingLayoutUUID = optimalTilingLayoutUUID_;
68498       return *this;
68499     }
68500 
68501     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties &
setIdenticalMemoryTypeRequirementsVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68502       setIdenticalMemoryTypeRequirements( VULKAN_HPP_NAMESPACE::Bool32 identicalMemoryTypeRequirements_ ) VULKAN_HPP_NOEXCEPT
68503     {
68504       identicalMemoryTypeRequirements = identicalMemoryTypeRequirements_;
68505       return *this;
68506     }
68507 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68508 
operator VkPhysicalDeviceHostImageCopyProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68509     operator VkPhysicalDeviceHostImageCopyProperties const &() const VULKAN_HPP_NOEXCEPT
68510     {
68511       return *reinterpret_cast<const VkPhysicalDeviceHostImageCopyProperties *>( this );
68512     }
68513 
operator VkPhysicalDeviceHostImageCopyProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68514     operator VkPhysicalDeviceHostImageCopyProperties &() VULKAN_HPP_NOEXCEPT
68515     {
68516       return *reinterpret_cast<VkPhysicalDeviceHostImageCopyProperties *>( this );
68517     }
68518 
68519 #if defined( VULKAN_HPP_USE_REFLECT )
68520 #  if 14 <= VULKAN_HPP_CPP_VERSION
68521     auto
68522 #  else
68523     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68524                void * const &,
68525                uint32_t const &,
68526                VULKAN_HPP_NAMESPACE::ImageLayout * const &,
68527                uint32_t const &,
68528                VULKAN_HPP_NAMESPACE::ImageLayout * const &,
68529                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
68530                VULKAN_HPP_NAMESPACE::Bool32 const &>
68531 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68532       reflect() const VULKAN_HPP_NOEXCEPT
68533     {
68534       return std::tie(
68535         sType, pNext, copySrcLayoutCount, pCopySrcLayouts, copyDstLayoutCount, pCopyDstLayouts, optimalTilingLayoutUUID, identicalMemoryTypeRequirements );
68536     }
68537 #endif
68538 
68539 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68540     auto operator<=>( PhysicalDeviceHostImageCopyProperties const & ) const = default;
68541 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68542     bool operator==( PhysicalDeviceHostImageCopyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
68543     {
68544 #  if defined( VULKAN_HPP_USE_REFLECT )
68545       return this->reflect() == rhs.reflect();
68546 #  else
68547       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( copySrcLayoutCount == rhs.copySrcLayoutCount ) &&
68548              ( pCopySrcLayouts == rhs.pCopySrcLayouts ) && ( copyDstLayoutCount == rhs.copyDstLayoutCount ) && ( pCopyDstLayouts == rhs.pCopyDstLayouts ) &&
68549              ( optimalTilingLayoutUUID == rhs.optimalTilingLayoutUUID ) && ( identicalMemoryTypeRequirements == rhs.identicalMemoryTypeRequirements );
68550 #  endif
68551     }
68552 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties68553     bool operator!=( PhysicalDeviceHostImageCopyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
68554     {
68555       return !operator==( rhs );
68556     }
68557 #endif
68558 
68559   public:
68560     VULKAN_HPP_NAMESPACE::StructureType                         sType                           = StructureType::ePhysicalDeviceHostImageCopyProperties;
68561     void *                                                      pNext                           = {};
68562     uint32_t                                                    copySrcLayoutCount              = {};
68563     VULKAN_HPP_NAMESPACE::ImageLayout *                         pCopySrcLayouts                 = {};
68564     uint32_t                                                    copyDstLayoutCount              = {};
68565     VULKAN_HPP_NAMESPACE::ImageLayout *                         pCopyDstLayouts                 = {};
68566     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> optimalTilingLayoutUUID         = {};
68567     VULKAN_HPP_NAMESPACE::Bool32                                identicalMemoryTypeRequirements = {};
68568   };
68569 
68570   template <>
68571   struct CppType<StructureType, StructureType::ePhysicalDeviceHostImageCopyProperties>
68572   {
68573     using Type = PhysicalDeviceHostImageCopyProperties;
68574   };
68575 
68576   using PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties;
68577 
68578   struct PhysicalDeviceHostQueryResetFeatures
68579   {
68580     using NativeType = VkPhysicalDeviceHostQueryResetFeatures;
68581 
68582     static const bool                                  allowDuplicate = false;
68583     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceHostQueryResetFeatures;
68584 
68585 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceHostQueryResetFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68586     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
68587       : pNext{ pNext_ }
68588       , hostQueryReset{ hostQueryReset_ }
68589     {
68590     }
68591 
68592     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68593 
PhysicalDeviceHostQueryResetFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68594     PhysicalDeviceHostQueryResetFeatures( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
68595       : PhysicalDeviceHostQueryResetFeatures( *reinterpret_cast<PhysicalDeviceHostQueryResetFeatures const *>( &rhs ) )
68596     {
68597     }
68598 
68599     PhysicalDeviceHostQueryResetFeatures & operator=( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68600 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68601 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68602     PhysicalDeviceHostQueryResetFeatures & operator=( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
68603     {
68604       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures const *>( &rhs );
68605       return *this;
68606     }
68607 
68608 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68609     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68610     {
68611       pNext = pNext_;
68612       return *this;
68613     }
68614 
setHostQueryResetVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68615     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT
68616     {
68617       hostQueryReset = hostQueryReset_;
68618       return *this;
68619     }
68620 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68621 
operator VkPhysicalDeviceHostQueryResetFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68622     operator VkPhysicalDeviceHostQueryResetFeatures const &() const VULKAN_HPP_NOEXCEPT
68623     {
68624       return *reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeatures *>( this );
68625     }
68626 
operator VkPhysicalDeviceHostQueryResetFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68627     operator VkPhysicalDeviceHostQueryResetFeatures &() VULKAN_HPP_NOEXCEPT
68628     {
68629       return *reinterpret_cast<VkPhysicalDeviceHostQueryResetFeatures *>( this );
68630     }
68631 
68632 #if defined( VULKAN_HPP_USE_REFLECT )
68633 #  if 14 <= VULKAN_HPP_CPP_VERSION
68634     auto
68635 #  else
68636     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68637 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68638       reflect() const VULKAN_HPP_NOEXCEPT
68639     {
68640       return std::tie( sType, pNext, hostQueryReset );
68641     }
68642 #endif
68643 
68644 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68645     auto operator<=>( PhysicalDeviceHostQueryResetFeatures const & ) const = default;
68646 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68647     bool operator==( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
68648     {
68649 #  if defined( VULKAN_HPP_USE_REFLECT )
68650       return this->reflect() == rhs.reflect();
68651 #  else
68652       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hostQueryReset == rhs.hostQueryReset );
68653 #  endif
68654     }
68655 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68656     bool operator!=( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
68657     {
68658       return !operator==( rhs );
68659     }
68660 #endif
68661 
68662   public:
68663     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceHostQueryResetFeatures;
68664     void *                              pNext          = {};
68665     VULKAN_HPP_NAMESPACE::Bool32        hostQueryReset = {};
68666   };
68667 
68668   template <>
68669   struct CppType<StructureType, StructureType::ePhysicalDeviceHostQueryResetFeatures>
68670   {
68671     using Type = PhysicalDeviceHostQueryResetFeatures;
68672   };
68673 
68674   using PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
68675 
68676   struct PhysicalDeviceIDProperties
68677   {
68678     using NativeType = VkPhysicalDeviceIDProperties;
68679 
68680     static const bool                                  allowDuplicate = false;
68681     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceIdProperties;
68682 
68683 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceIDPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68684     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties( std::array<uint8_t, VK_UUID_SIZE> const & deviceUUID_      = {},
68685                                                         std::array<uint8_t, VK_UUID_SIZE> const & driverUUID_      = {},
68686                                                         std::array<uint8_t, VK_LUID_SIZE> const & deviceLUID_      = {},
68687                                                         uint32_t                                  deviceNodeMask_  = {},
68688                                                         VULKAN_HPP_NAMESPACE::Bool32              deviceLUIDValid_ = {},
68689                                                         void *                                    pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
68690       : pNext{ pNext_ }
68691       , deviceUUID{ deviceUUID_ }
68692       , driverUUID{ driverUUID_ }
68693       , deviceLUID{ deviceLUID_ }
68694       , deviceNodeMask{ deviceNodeMask_ }
68695       , deviceLUIDValid{ deviceLUIDValid_ }
68696     {
68697     }
68698 
68699     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68700 
PhysicalDeviceIDPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68701     PhysicalDeviceIDProperties( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
68702       : PhysicalDeviceIDProperties( *reinterpret_cast<PhysicalDeviceIDProperties const *>( &rhs ) )
68703     {
68704     }
68705 
68706     PhysicalDeviceIDProperties & operator=( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68707 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68708 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68709     PhysicalDeviceIDProperties & operator=( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
68710     {
68711       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties const *>( &rhs );
68712       return *this;
68713     }
68714 
operator VkPhysicalDeviceIDProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68715     operator VkPhysicalDeviceIDProperties const &() const VULKAN_HPP_NOEXCEPT
68716     {
68717       return *reinterpret_cast<const VkPhysicalDeviceIDProperties *>( this );
68718     }
68719 
operator VkPhysicalDeviceIDProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68720     operator VkPhysicalDeviceIDProperties &() VULKAN_HPP_NOEXCEPT
68721     {
68722       return *reinterpret_cast<VkPhysicalDeviceIDProperties *>( this );
68723     }
68724 
68725 #if defined( VULKAN_HPP_USE_REFLECT )
68726 #  if 14 <= VULKAN_HPP_CPP_VERSION
68727     auto
68728 #  else
68729     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68730                void * const &,
68731                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
68732                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
68733                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> const &,
68734                uint32_t const &,
68735                VULKAN_HPP_NAMESPACE::Bool32 const &>
68736 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68737       reflect() const VULKAN_HPP_NOEXCEPT
68738     {
68739       return std::tie( sType, pNext, deviceUUID, driverUUID, deviceLUID, deviceNodeMask, deviceLUIDValid );
68740     }
68741 #endif
68742 
68743 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68744     auto operator<=>( PhysicalDeviceIDProperties const & ) const = default;
68745 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68746     bool operator==( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
68747     {
68748 #  if defined( VULKAN_HPP_USE_REFLECT )
68749       return this->reflect() == rhs.reflect();
68750 #  else
68751       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceUUID == rhs.deviceUUID ) && ( driverUUID == rhs.driverUUID ) &&
68752              ( deviceLUID == rhs.deviceLUID ) && ( deviceNodeMask == rhs.deviceNodeMask ) && ( deviceLUIDValid == rhs.deviceLUIDValid );
68753 #  endif
68754     }
68755 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68756     bool operator!=( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
68757     {
68758       return !operator==( rhs );
68759     }
68760 #endif
68761 
68762   public:
68763     VULKAN_HPP_NAMESPACE::StructureType                         sType           = StructureType::ePhysicalDeviceIdProperties;
68764     void *                                                      pNext           = {};
68765     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> deviceUUID      = {};
68766     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> driverUUID      = {};
68767     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> deviceLUID      = {};
68768     uint32_t                                                    deviceNodeMask  = {};
68769     VULKAN_HPP_NAMESPACE::Bool32                                deviceLUIDValid = {};
68770   };
68771 
68772   template <>
68773   struct CppType<StructureType, StructureType::ePhysicalDeviceIdProperties>
68774   {
68775     using Type = PhysicalDeviceIDProperties;
68776   };
68777 
68778   using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
68779 
68780   struct PhysicalDeviceImage2DViewOf3DFeaturesEXT
68781   {
68782     using NativeType = VkPhysicalDeviceImage2DViewOf3DFeaturesEXT;
68783 
68784     static const bool                                  allowDuplicate = false;
68785     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImage2DViewOf3DFeaturesEXT;
68786 
68787 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImage2DViewOf3DFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68788     VULKAN_HPP_CONSTEXPR PhysicalDeviceImage2DViewOf3DFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 image2DViewOf3D_   = {},
68789                                                                    VULKAN_HPP_NAMESPACE::Bool32 sampler2DViewOf3D_ = {},
68790                                                                    void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
68791       : pNext{ pNext_ }
68792       , image2DViewOf3D{ image2DViewOf3D_ }
68793       , sampler2DViewOf3D{ sampler2DViewOf3D_ }
68794     {
68795     }
68796 
68797     VULKAN_HPP_CONSTEXPR PhysicalDeviceImage2DViewOf3DFeaturesEXT( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68798 
PhysicalDeviceImage2DViewOf3DFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68799     PhysicalDeviceImage2DViewOf3DFeaturesEXT( VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68800       : PhysicalDeviceImage2DViewOf3DFeaturesEXT( *reinterpret_cast<PhysicalDeviceImage2DViewOf3DFeaturesEXT const *>( &rhs ) )
68801     {
68802     }
68803 
68804     PhysicalDeviceImage2DViewOf3DFeaturesEXT & operator=( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68805 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68806 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68807     PhysicalDeviceImage2DViewOf3DFeaturesEXT & operator=( VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68808     {
68809       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT const *>( &rhs );
68810       return *this;
68811     }
68812 
68813 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68814     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68815     {
68816       pNext = pNext_;
68817       return *this;
68818     }
68819 
setImage2DViewOf3DVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68820     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT & setImage2DViewOf3D( VULKAN_HPP_NAMESPACE::Bool32 image2DViewOf3D_ ) VULKAN_HPP_NOEXCEPT
68821     {
68822       image2DViewOf3D = image2DViewOf3D_;
68823       return *this;
68824     }
68825 
68826     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT &
setSampler2DViewOf3DVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68827       setSampler2DViewOf3D( VULKAN_HPP_NAMESPACE::Bool32 sampler2DViewOf3D_ ) VULKAN_HPP_NOEXCEPT
68828     {
68829       sampler2DViewOf3D = sampler2DViewOf3D_;
68830       return *this;
68831     }
68832 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68833 
operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68834     operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
68835     {
68836       return *reinterpret_cast<const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *>( this );
68837     }
68838 
operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68839     operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT &() VULKAN_HPP_NOEXCEPT
68840     {
68841       return *reinterpret_cast<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *>( this );
68842     }
68843 
68844 #if defined( VULKAN_HPP_USE_REFLECT )
68845 #  if 14 <= VULKAN_HPP_CPP_VERSION
68846     auto
68847 #  else
68848     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68849 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68850       reflect() const VULKAN_HPP_NOEXCEPT
68851     {
68852       return std::tie( sType, pNext, image2DViewOf3D, sampler2DViewOf3D );
68853     }
68854 #endif
68855 
68856 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68857     auto operator<=>( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & ) const = default;
68858 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68859     bool operator==( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68860     {
68861 #  if defined( VULKAN_HPP_USE_REFLECT )
68862       return this->reflect() == rhs.reflect();
68863 #  else
68864       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image2DViewOf3D == rhs.image2DViewOf3D ) && ( sampler2DViewOf3D == rhs.sampler2DViewOf3D );
68865 #  endif
68866     }
68867 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68868     bool operator!=( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68869     {
68870       return !operator==( rhs );
68871     }
68872 #endif
68873 
68874   public:
68875     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceImage2DViewOf3DFeaturesEXT;
68876     void *                              pNext             = {};
68877     VULKAN_HPP_NAMESPACE::Bool32        image2DViewOf3D   = {};
68878     VULKAN_HPP_NAMESPACE::Bool32        sampler2DViewOf3D = {};
68879   };
68880 
68881   template <>
68882   struct CppType<StructureType, StructureType::ePhysicalDeviceImage2DViewOf3DFeaturesEXT>
68883   {
68884     using Type = PhysicalDeviceImage2DViewOf3DFeaturesEXT;
68885   };
68886 
68887   struct PhysicalDeviceImageAlignmentControlFeaturesMESA
68888   {
68889     using NativeType = VkPhysicalDeviceImageAlignmentControlFeaturesMESA;
68890 
68891     static const bool                                  allowDuplicate = false;
68892     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageAlignmentControlFeaturesMESA;
68893 
68894 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageAlignmentControlFeaturesMESAVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68895     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageAlignmentControlFeaturesMESA( VULKAN_HPP_NAMESPACE::Bool32 imageAlignmentControl_ = {},
68896                                                                           void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
68897       : pNext{ pNext_ }
68898       , imageAlignmentControl{ imageAlignmentControl_ }
68899     {
68900     }
68901 
68902     VULKAN_HPP_CONSTEXPR
68903       PhysicalDeviceImageAlignmentControlFeaturesMESA( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68904 
PhysicalDeviceImageAlignmentControlFeaturesMESAVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68905     PhysicalDeviceImageAlignmentControlFeaturesMESA( VkPhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT
68906       : PhysicalDeviceImageAlignmentControlFeaturesMESA( *reinterpret_cast<PhysicalDeviceImageAlignmentControlFeaturesMESA const *>( &rhs ) )
68907     {
68908     }
68909 
68910     PhysicalDeviceImageAlignmentControlFeaturesMESA & operator=( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68911 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68912 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68913     PhysicalDeviceImageAlignmentControlFeaturesMESA & operator=( VkPhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT
68914     {
68915       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA const *>( &rhs );
68916       return *this;
68917     }
68918 
68919 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68920     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlFeaturesMESA & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68921     {
68922       pNext = pNext_;
68923       return *this;
68924     }
68925 
68926     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlFeaturesMESA &
setImageAlignmentControlVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68927       setImageAlignmentControl( VULKAN_HPP_NAMESPACE::Bool32 imageAlignmentControl_ ) VULKAN_HPP_NOEXCEPT
68928     {
68929       imageAlignmentControl = imageAlignmentControl_;
68930       return *this;
68931     }
68932 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68933 
operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68934     operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA const &() const VULKAN_HPP_NOEXCEPT
68935     {
68936       return *reinterpret_cast<const VkPhysicalDeviceImageAlignmentControlFeaturesMESA *>( this );
68937     }
68938 
operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68939     operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA &() VULKAN_HPP_NOEXCEPT
68940     {
68941       return *reinterpret_cast<VkPhysicalDeviceImageAlignmentControlFeaturesMESA *>( this );
68942     }
68943 
68944 #if defined( VULKAN_HPP_USE_REFLECT )
68945 #  if 14 <= VULKAN_HPP_CPP_VERSION
68946     auto
68947 #  else
68948     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68949 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68950       reflect() const VULKAN_HPP_NOEXCEPT
68951     {
68952       return std::tie( sType, pNext, imageAlignmentControl );
68953     }
68954 #endif
68955 
68956 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68957     auto operator<=>( PhysicalDeviceImageAlignmentControlFeaturesMESA const & ) const = default;
68958 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68959     bool operator==( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
68960     {
68961 #  if defined( VULKAN_HPP_USE_REFLECT )
68962       return this->reflect() == rhs.reflect();
68963 #  else
68964       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageAlignmentControl == rhs.imageAlignmentControl );
68965 #  endif
68966     }
68967 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68968     bool operator!=( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
68969     {
68970       return !operator==( rhs );
68971     }
68972 #endif
68973 
68974   public:
68975     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceImageAlignmentControlFeaturesMESA;
68976     void *                              pNext                 = {};
68977     VULKAN_HPP_NAMESPACE::Bool32        imageAlignmentControl = {};
68978   };
68979 
68980   template <>
68981   struct CppType<StructureType, StructureType::ePhysicalDeviceImageAlignmentControlFeaturesMESA>
68982   {
68983     using Type = PhysicalDeviceImageAlignmentControlFeaturesMESA;
68984   };
68985 
68986   struct PhysicalDeviceImageAlignmentControlPropertiesMESA
68987   {
68988     using NativeType = VkPhysicalDeviceImageAlignmentControlPropertiesMESA;
68989 
68990     static const bool                                  allowDuplicate = false;
68991     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageAlignmentControlPropertiesMESA;
68992 
68993 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageAlignmentControlPropertiesMESAVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68994     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageAlignmentControlPropertiesMESA( uint32_t supportedImageAlignmentMask_ = {},
68995                                                                             void *   pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
68996       : pNext{ pNext_ }
68997       , supportedImageAlignmentMask{ supportedImageAlignmentMask_ }
68998     {
68999     }
69000 
69001     VULKAN_HPP_CONSTEXPR
69002       PhysicalDeviceImageAlignmentControlPropertiesMESA( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69003 
PhysicalDeviceImageAlignmentControlPropertiesMESAVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA69004     PhysicalDeviceImageAlignmentControlPropertiesMESA( VkPhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT
69005       : PhysicalDeviceImageAlignmentControlPropertiesMESA( *reinterpret_cast<PhysicalDeviceImageAlignmentControlPropertiesMESA const *>( &rhs ) )
69006     {
69007     }
69008 
69009     PhysicalDeviceImageAlignmentControlPropertiesMESA &
69010       operator=( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69011 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69012 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA69013     PhysicalDeviceImageAlignmentControlPropertiesMESA & operator=( VkPhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT
69014     {
69015       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA const *>( &rhs );
69016       return *this;
69017     }
69018 
69019 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA69020     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlPropertiesMESA & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69021     {
69022       pNext = pNext_;
69023       return *this;
69024     }
69025 
69026     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlPropertiesMESA &
setSupportedImageAlignmentMaskVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA69027       setSupportedImageAlignmentMask( uint32_t supportedImageAlignmentMask_ ) VULKAN_HPP_NOEXCEPT
69028     {
69029       supportedImageAlignmentMask = supportedImageAlignmentMask_;
69030       return *this;
69031     }
69032 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69033 
operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA69034     operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA const &() const VULKAN_HPP_NOEXCEPT
69035     {
69036       return *reinterpret_cast<const VkPhysicalDeviceImageAlignmentControlPropertiesMESA *>( this );
69037     }
69038 
operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA69039     operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA &() VULKAN_HPP_NOEXCEPT
69040     {
69041       return *reinterpret_cast<VkPhysicalDeviceImageAlignmentControlPropertiesMESA *>( this );
69042     }
69043 
69044 #if defined( VULKAN_HPP_USE_REFLECT )
69045 #  if 14 <= VULKAN_HPP_CPP_VERSION
69046     auto
69047 #  else
69048     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
69049 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA69050       reflect() const VULKAN_HPP_NOEXCEPT
69051     {
69052       return std::tie( sType, pNext, supportedImageAlignmentMask );
69053     }
69054 #endif
69055 
69056 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69057     auto operator<=>( PhysicalDeviceImageAlignmentControlPropertiesMESA const & ) const = default;
69058 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA69059     bool operator==( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
69060     {
69061 #  if defined( VULKAN_HPP_USE_REFLECT )
69062       return this->reflect() == rhs.reflect();
69063 #  else
69064       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedImageAlignmentMask == rhs.supportedImageAlignmentMask );
69065 #  endif
69066     }
69067 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA69068     bool operator!=( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
69069     {
69070       return !operator==( rhs );
69071     }
69072 #endif
69073 
69074   public:
69075     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceImageAlignmentControlPropertiesMESA;
69076     void *                              pNext                       = {};
69077     uint32_t                            supportedImageAlignmentMask = {};
69078   };
69079 
69080   template <>
69081   struct CppType<StructureType, StructureType::ePhysicalDeviceImageAlignmentControlPropertiesMESA>
69082   {
69083     using Type = PhysicalDeviceImageAlignmentControlPropertiesMESA;
69084   };
69085 
69086   struct PhysicalDeviceImageCompressionControlFeaturesEXT
69087   {
69088     using NativeType = VkPhysicalDeviceImageCompressionControlFeaturesEXT;
69089 
69090     static const bool                                  allowDuplicate = false;
69091     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageCompressionControlFeaturesEXT;
69092 
69093 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageCompressionControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT69094     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageCompressionControlFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 imageCompressionControl_ = {},
69095                                                                            void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
69096       : pNext{ pNext_ }
69097       , imageCompressionControl{ imageCompressionControl_ }
69098     {
69099     }
69100 
69101     VULKAN_HPP_CONSTEXPR
69102       PhysicalDeviceImageCompressionControlFeaturesEXT( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69103 
PhysicalDeviceImageCompressionControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT69104     PhysicalDeviceImageCompressionControlFeaturesEXT( VkPhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69105       : PhysicalDeviceImageCompressionControlFeaturesEXT( *reinterpret_cast<PhysicalDeviceImageCompressionControlFeaturesEXT const *>( &rhs ) )
69106     {
69107     }
69108 
69109     PhysicalDeviceImageCompressionControlFeaturesEXT & operator=( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69110 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69111 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT69112     PhysicalDeviceImageCompressionControlFeaturesEXT & operator=( VkPhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69113     {
69114       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT const *>( &rhs );
69115       return *this;
69116     }
69117 
69118 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT69119     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69120     {
69121       pNext = pNext_;
69122       return *this;
69123     }
69124 
69125     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlFeaturesEXT &
setImageCompressionControlVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT69126       setImageCompressionControl( VULKAN_HPP_NAMESPACE::Bool32 imageCompressionControl_ ) VULKAN_HPP_NOEXCEPT
69127     {
69128       imageCompressionControl = imageCompressionControl_;
69129       return *this;
69130     }
69131 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69132 
operator VkPhysicalDeviceImageCompressionControlFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT69133     operator VkPhysicalDeviceImageCompressionControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
69134     {
69135       return *reinterpret_cast<const VkPhysicalDeviceImageCompressionControlFeaturesEXT *>( this );
69136     }
69137 
operator VkPhysicalDeviceImageCompressionControlFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT69138     operator VkPhysicalDeviceImageCompressionControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT
69139     {
69140       return *reinterpret_cast<VkPhysicalDeviceImageCompressionControlFeaturesEXT *>( this );
69141     }
69142 
69143 #if defined( VULKAN_HPP_USE_REFLECT )
69144 #  if 14 <= VULKAN_HPP_CPP_VERSION
69145     auto
69146 #  else
69147     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
69148 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT69149       reflect() const VULKAN_HPP_NOEXCEPT
69150     {
69151       return std::tie( sType, pNext, imageCompressionControl );
69152     }
69153 #endif
69154 
69155 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69156     auto operator<=>( PhysicalDeviceImageCompressionControlFeaturesEXT const & ) const = default;
69157 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT69158     bool operator==( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69159     {
69160 #  if defined( VULKAN_HPP_USE_REFLECT )
69161       return this->reflect() == rhs.reflect();
69162 #  else
69163       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCompressionControl == rhs.imageCompressionControl );
69164 #  endif
69165     }
69166 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT69167     bool operator!=( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69168     {
69169       return !operator==( rhs );
69170     }
69171 #endif
69172 
69173   public:
69174     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceImageCompressionControlFeaturesEXT;
69175     void *                              pNext                   = {};
69176     VULKAN_HPP_NAMESPACE::Bool32        imageCompressionControl = {};
69177   };
69178 
69179   template <>
69180   struct CppType<StructureType, StructureType::ePhysicalDeviceImageCompressionControlFeaturesEXT>
69181   {
69182     using Type = PhysicalDeviceImageCompressionControlFeaturesEXT;
69183   };
69184 
69185   struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
69186   {
69187     using NativeType = VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
69188 
69189     static const bool                                  allowDuplicate = false;
69190     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
69191 
69192 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageCompressionControlSwapchainFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT69193     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 imageCompressionControlSwapchain_ = {},
69194                                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
69195       : pNext{ pNext_ }
69196       , imageCompressionControlSwapchain{ imageCompressionControlSwapchain_ }
69197     {
69198     }
69199 
69200     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs )
69201       VULKAN_HPP_NOEXCEPT = default;
69202 
PhysicalDeviceImageCompressionControlSwapchainFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT69203     PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69204       : PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(
69205           *reinterpret_cast<PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const *>( &rhs ) )
69206     {
69207     }
69208 
69209     PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &
69210       operator=( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69211 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69212 
69213     PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT69214       operator=( VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69215     {
69216       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const *>( &rhs );
69217       return *this;
69218     }
69219 
69220 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT69221     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69222     {
69223       pNext = pNext_;
69224       return *this;
69225     }
69226 
69227     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &
setImageCompressionControlSwapchainVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT69228       setImageCompressionControlSwapchain( VULKAN_HPP_NAMESPACE::Bool32 imageCompressionControlSwapchain_ ) VULKAN_HPP_NOEXCEPT
69229     {
69230       imageCompressionControlSwapchain = imageCompressionControlSwapchain_;
69231       return *this;
69232     }
69233 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69234 
operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT69235     operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
69236     {
69237       return *reinterpret_cast<const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *>( this );
69238     }
69239 
operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT69240     operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &() VULKAN_HPP_NOEXCEPT
69241     {
69242       return *reinterpret_cast<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *>( this );
69243     }
69244 
69245 #if defined( VULKAN_HPP_USE_REFLECT )
69246 #  if 14 <= VULKAN_HPP_CPP_VERSION
69247     auto
69248 #  else
69249     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
69250 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT69251       reflect() const VULKAN_HPP_NOEXCEPT
69252     {
69253       return std::tie( sType, pNext, imageCompressionControlSwapchain );
69254     }
69255 #endif
69256 
69257 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69258     auto operator<=>( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & ) const = default;
69259 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT69260     bool operator==( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69261     {
69262 #  if defined( VULKAN_HPP_USE_REFLECT )
69263       return this->reflect() == rhs.reflect();
69264 #  else
69265       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCompressionControlSwapchain == rhs.imageCompressionControlSwapchain );
69266 #  endif
69267     }
69268 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT69269     bool operator!=( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69270     {
69271       return !operator==( rhs );
69272     }
69273 #endif
69274 
69275   public:
69276     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
69277     void *                              pNext                            = {};
69278     VULKAN_HPP_NAMESPACE::Bool32        imageCompressionControlSwapchain = {};
69279   };
69280 
69281   template <>
69282   struct CppType<StructureType, StructureType::ePhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>
69283   {
69284     using Type = PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
69285   };
69286 
69287   struct PhysicalDeviceImageDrmFormatModifierInfoEXT
69288   {
69289     using NativeType = VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
69290 
69291     static const bool                                  allowDuplicate = false;
69292     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
69293 
69294 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
69295     VULKAN_HPP_CONSTEXPR
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69296       PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t                          drmFormatModifier_     = {},
69297                                                    VULKAN_HPP_NAMESPACE::SharingMode sharingMode_           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
69298                                                    uint32_t                          queueFamilyIndexCount_ = {},
69299                                                    const uint32_t *                  pQueueFamilyIndices_   = {},
69300                                                    const void *                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
69301       : pNext{ pNext_ }
69302       , drmFormatModifier{ drmFormatModifier_ }
69303       , sharingMode{ sharingMode_ }
69304       , queueFamilyIndexCount{ queueFamilyIndexCount_ }
69305       , pQueueFamilyIndices{ pQueueFamilyIndices_ }
69306     {
69307     }
69308 
69309     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69310 
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69311     PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69312       : PhysicalDeviceImageDrmFormatModifierInfoEXT( *reinterpret_cast<PhysicalDeviceImageDrmFormatModifierInfoEXT const *>( &rhs ) )
69313     {
69314     }
69315 
69316 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69317     PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t                                                              drmFormatModifier_,
69318                                                  VULKAN_HPP_NAMESPACE::SharingMode                                     sharingMode_,
69319                                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_,
69320                                                  const void *                                                          pNext_ = nullptr )
69321       : pNext( pNext_ )
69322       , drmFormatModifier( drmFormatModifier_ )
69323       , sharingMode( sharingMode_ )
69324       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
69325       , pQueueFamilyIndices( queueFamilyIndices_.data() )
69326     {
69327     }
69328 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
69329 
69330     PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69331 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69332 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69333     PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69334     {
69335       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT const *>( &rhs );
69336       return *this;
69337     }
69338 
69339 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69340     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
69341     {
69342       pNext = pNext_;
69343       return *this;
69344     }
69345 
setDrmFormatModifierVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69346     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT
69347     {
69348       drmFormatModifier = drmFormatModifier_;
69349       return *this;
69350     }
69351 
setSharingModeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69352     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
69353     {
69354       sharingMode = sharingMode_;
69355       return *this;
69356     }
69357 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69358     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
69359     {
69360       queueFamilyIndexCount = queueFamilyIndexCount_;
69361       return *this;
69362     }
69363 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69364     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
69365     {
69366       pQueueFamilyIndices = pQueueFamilyIndices_;
69367       return *this;
69368     }
69369 
69370 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
69371     PhysicalDeviceImageDrmFormatModifierInfoEXT &
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69372       setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
69373     {
69374       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
69375       pQueueFamilyIndices   = queueFamilyIndices_.data();
69376       return *this;
69377     }
69378 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
69379 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69380 
operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69381     operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &() const VULKAN_HPP_NOEXCEPT
69382     {
69383       return *reinterpret_cast<const VkPhysicalDeviceImageDrmFormatModifierInfoEXT *>( this );
69384     }
69385 
operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69386     operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT &() VULKAN_HPP_NOEXCEPT
69387     {
69388       return *reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT *>( this );
69389     }
69390 
69391 #if defined( VULKAN_HPP_USE_REFLECT )
69392 #  if 14 <= VULKAN_HPP_CPP_VERSION
69393     auto
69394 #  else
69395     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69396                const void * const &,
69397                uint64_t const &,
69398                VULKAN_HPP_NAMESPACE::SharingMode const &,
69399                uint32_t const &,
69400                const uint32_t * const &>
69401 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69402       reflect() const VULKAN_HPP_NOEXCEPT
69403     {
69404       return std::tie( sType, pNext, drmFormatModifier, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices );
69405     }
69406 #endif
69407 
69408 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69409     auto operator<=>( PhysicalDeviceImageDrmFormatModifierInfoEXT const & ) const = default;
69410 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69411     bool operator==( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69412     {
69413 #  if defined( VULKAN_HPP_USE_REFLECT )
69414       return this->reflect() == rhs.reflect();
69415 #  else
69416       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier ) && ( sharingMode == rhs.sharingMode ) &&
69417              ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
69418 #  endif
69419     }
69420 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT69421     bool operator!=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69422     {
69423       return !operator==( rhs );
69424     }
69425 #endif
69426 
69427   public:
69428     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
69429     const void *                        pNext                 = {};
69430     uint64_t                            drmFormatModifier     = {};
69431     VULKAN_HPP_NAMESPACE::SharingMode   sharingMode           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
69432     uint32_t                            queueFamilyIndexCount = {};
69433     const uint32_t *                    pQueueFamilyIndices   = {};
69434   };
69435 
69436   template <>
69437   struct CppType<StructureType, StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT>
69438   {
69439     using Type = PhysicalDeviceImageDrmFormatModifierInfoEXT;
69440   };
69441 
69442   struct PhysicalDeviceImageFormatInfo2
69443   {
69444     using NativeType = VkPhysicalDeviceImageFormatInfo2;
69445 
69446     static const bool                                  allowDuplicate = false;
69447     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageFormatInfo2;
69448 
69449 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269450     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2( VULKAN_HPP_NAMESPACE::Format           format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
69451                                                          VULKAN_HPP_NAMESPACE::ImageType        type_   = VULKAN_HPP_NAMESPACE::ImageType::e1D,
69452                                                          VULKAN_HPP_NAMESPACE::ImageTiling      tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal,
69453                                                          VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage_  = {},
69454                                                          VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_  = {},
69455                                                          const void *                           pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
69456       : pNext{ pNext_ }
69457       , format{ format_ }
69458       , type{ type_ }
69459       , tiling{ tiling_ }
69460       , usage{ usage_ }
69461       , flags{ flags_ }
69462     {
69463     }
69464 
69465     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69466 
PhysicalDeviceImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269467     PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
69468       : PhysicalDeviceImageFormatInfo2( *reinterpret_cast<PhysicalDeviceImageFormatInfo2 const *>( &rhs ) )
69469     {
69470     }
69471 
69472     PhysicalDeviceImageFormatInfo2 & operator=( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69473 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69474 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269475     PhysicalDeviceImageFormatInfo2 & operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
69476     {
69477       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 const *>( &rhs );
69478       return *this;
69479     }
69480 
69481 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269482     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
69483     {
69484       pNext = pNext_;
69485       return *this;
69486     }
69487 
setFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269488     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
69489     {
69490       format = format_;
69491       return *this;
69492     }
69493 
setTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269494     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT
69495     {
69496       type = type_;
69497       return *this;
69498     }
69499 
setTilingVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269500     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
69501     {
69502       tiling = tiling_;
69503       return *this;
69504     }
69505 
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269506     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
69507     {
69508       usage = usage_;
69509       return *this;
69510     }
69511 
setFlagsVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269512     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
69513     {
69514       flags = flags_;
69515       return *this;
69516     }
69517 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69518 
operator VkPhysicalDeviceImageFormatInfo2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269519     operator VkPhysicalDeviceImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT
69520     {
69521       return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( this );
69522     }
69523 
operator VkPhysicalDeviceImageFormatInfo2&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269524     operator VkPhysicalDeviceImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT
69525     {
69526       return *reinterpret_cast<VkPhysicalDeviceImageFormatInfo2 *>( this );
69527     }
69528 
69529 #if defined( VULKAN_HPP_USE_REFLECT )
69530 #  if 14 <= VULKAN_HPP_CPP_VERSION
69531     auto
69532 #  else
69533     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69534                const void * const &,
69535                VULKAN_HPP_NAMESPACE::Format const &,
69536                VULKAN_HPP_NAMESPACE::ImageType const &,
69537                VULKAN_HPP_NAMESPACE::ImageTiling const &,
69538                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
69539                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &>
69540 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269541       reflect() const VULKAN_HPP_NOEXCEPT
69542     {
69543       return std::tie( sType, pNext, format, type, tiling, usage, flags );
69544     }
69545 #endif
69546 
69547 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69548     auto operator<=>( PhysicalDeviceImageFormatInfo2 const & ) const = default;
69549 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269550     bool operator==( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
69551     {
69552 #  if defined( VULKAN_HPP_USE_REFLECT )
69553       return this->reflect() == rhs.reflect();
69554 #  else
69555       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( type == rhs.type ) && ( tiling == rhs.tiling ) &&
69556              ( usage == rhs.usage ) && ( flags == rhs.flags );
69557 #  endif
69558     }
69559 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269560     bool operator!=( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
69561     {
69562       return !operator==( rhs );
69563     }
69564 #endif
69565 
69566   public:
69567     VULKAN_HPP_NAMESPACE::StructureType    sType  = StructureType::ePhysicalDeviceImageFormatInfo2;
69568     const void *                           pNext  = {};
69569     VULKAN_HPP_NAMESPACE::Format           format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
69570     VULKAN_HPP_NAMESPACE::ImageType        type   = VULKAN_HPP_NAMESPACE::ImageType::e1D;
69571     VULKAN_HPP_NAMESPACE::ImageTiling      tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
69572     VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage  = {};
69573     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags  = {};
69574   };
69575 
69576   template <>
69577   struct CppType<StructureType, StructureType::ePhysicalDeviceImageFormatInfo2>
69578   {
69579     using Type = PhysicalDeviceImageFormatInfo2;
69580   };
69581 
69582   using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
69583 
69584   struct PhysicalDeviceImageProcessing2FeaturesQCOM
69585   {
69586     using NativeType = VkPhysicalDeviceImageProcessing2FeaturesQCOM;
69587 
69588     static const bool                                  allowDuplicate = false;
69589     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageProcessing2FeaturesQCOM;
69590 
69591 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageProcessing2FeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69592     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2FeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 textureBlockMatch2_ = {},
69593                                                                      void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
69594       : pNext{ pNext_ }
69595       , textureBlockMatch2{ textureBlockMatch2_ }
69596     {
69597     }
69598 
69599     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2FeaturesQCOM( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69600 
PhysicalDeviceImageProcessing2FeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69601     PhysicalDeviceImageProcessing2FeaturesQCOM( VkPhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69602       : PhysicalDeviceImageProcessing2FeaturesQCOM( *reinterpret_cast<PhysicalDeviceImageProcessing2FeaturesQCOM const *>( &rhs ) )
69603     {
69604     }
69605 
69606     PhysicalDeviceImageProcessing2FeaturesQCOM & operator=( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69607 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69608 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69609     PhysicalDeviceImageProcessing2FeaturesQCOM & operator=( VkPhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69610     {
69611       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM const *>( &rhs );
69612       return *this;
69613     }
69614 
69615 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69616     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessing2FeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69617     {
69618       pNext = pNext_;
69619       return *this;
69620     }
69621 
69622     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessing2FeaturesQCOM &
setTextureBlockMatch2VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69623       setTextureBlockMatch2( VULKAN_HPP_NAMESPACE::Bool32 textureBlockMatch2_ ) VULKAN_HPP_NOEXCEPT
69624     {
69625       textureBlockMatch2 = textureBlockMatch2_;
69626       return *this;
69627     }
69628 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69629 
operator VkPhysicalDeviceImageProcessing2FeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69630     operator VkPhysicalDeviceImageProcessing2FeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
69631     {
69632       return *reinterpret_cast<const VkPhysicalDeviceImageProcessing2FeaturesQCOM *>( this );
69633     }
69634 
operator VkPhysicalDeviceImageProcessing2FeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69635     operator VkPhysicalDeviceImageProcessing2FeaturesQCOM &() VULKAN_HPP_NOEXCEPT
69636     {
69637       return *reinterpret_cast<VkPhysicalDeviceImageProcessing2FeaturesQCOM *>( this );
69638     }
69639 
69640 #if defined( VULKAN_HPP_USE_REFLECT )
69641 #  if 14 <= VULKAN_HPP_CPP_VERSION
69642     auto
69643 #  else
69644     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
69645 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69646       reflect() const VULKAN_HPP_NOEXCEPT
69647     {
69648       return std::tie( sType, pNext, textureBlockMatch2 );
69649     }
69650 #endif
69651 
69652 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69653     auto operator<=>( PhysicalDeviceImageProcessing2FeaturesQCOM const & ) const = default;
69654 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69655     bool operator==( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69656     {
69657 #  if defined( VULKAN_HPP_USE_REFLECT )
69658       return this->reflect() == rhs.reflect();
69659 #  else
69660       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( textureBlockMatch2 == rhs.textureBlockMatch2 );
69661 #  endif
69662     }
69663 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69664     bool operator!=( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69665     {
69666       return !operator==( rhs );
69667     }
69668 #endif
69669 
69670   public:
69671     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceImageProcessing2FeaturesQCOM;
69672     void *                              pNext              = {};
69673     VULKAN_HPP_NAMESPACE::Bool32        textureBlockMatch2 = {};
69674   };
69675 
69676   template <>
69677   struct CppType<StructureType, StructureType::ePhysicalDeviceImageProcessing2FeaturesQCOM>
69678   {
69679     using Type = PhysicalDeviceImageProcessing2FeaturesQCOM;
69680   };
69681 
69682   struct PhysicalDeviceImageProcessing2PropertiesQCOM
69683   {
69684     using NativeType = VkPhysicalDeviceImageProcessing2PropertiesQCOM;
69685 
69686     static const bool                                  allowDuplicate = false;
69687     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageProcessing2PropertiesQCOM;
69688 
69689 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageProcessing2PropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69690     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2PropertiesQCOM( VULKAN_HPP_NAMESPACE::Extent2D maxBlockMatchWindow_ = {},
69691                                                                        void *                         pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
69692       : pNext{ pNext_ }
69693       , maxBlockMatchWindow{ maxBlockMatchWindow_ }
69694     {
69695     }
69696 
69697     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2PropertiesQCOM( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69698 
PhysicalDeviceImageProcessing2PropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69699     PhysicalDeviceImageProcessing2PropertiesQCOM( VkPhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69700       : PhysicalDeviceImageProcessing2PropertiesQCOM( *reinterpret_cast<PhysicalDeviceImageProcessing2PropertiesQCOM const *>( &rhs ) )
69701     {
69702     }
69703 
69704     PhysicalDeviceImageProcessing2PropertiesQCOM & operator=( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69705 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69706 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69707     PhysicalDeviceImageProcessing2PropertiesQCOM & operator=( VkPhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69708     {
69709       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM const *>( &rhs );
69710       return *this;
69711     }
69712 
operator VkPhysicalDeviceImageProcessing2PropertiesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69713     operator VkPhysicalDeviceImageProcessing2PropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT
69714     {
69715       return *reinterpret_cast<const VkPhysicalDeviceImageProcessing2PropertiesQCOM *>( this );
69716     }
69717 
operator VkPhysicalDeviceImageProcessing2PropertiesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69718     operator VkPhysicalDeviceImageProcessing2PropertiesQCOM &() VULKAN_HPP_NOEXCEPT
69719     {
69720       return *reinterpret_cast<VkPhysicalDeviceImageProcessing2PropertiesQCOM *>( this );
69721     }
69722 
69723 #if defined( VULKAN_HPP_USE_REFLECT )
69724 #  if 14 <= VULKAN_HPP_CPP_VERSION
69725     auto
69726 #  else
69727     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
69728 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69729       reflect() const VULKAN_HPP_NOEXCEPT
69730     {
69731       return std::tie( sType, pNext, maxBlockMatchWindow );
69732     }
69733 #endif
69734 
69735 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69736     auto operator<=>( PhysicalDeviceImageProcessing2PropertiesQCOM const & ) const = default;
69737 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69738     bool operator==( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69739     {
69740 #  if defined( VULKAN_HPP_USE_REFLECT )
69741       return this->reflect() == rhs.reflect();
69742 #  else
69743       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxBlockMatchWindow == rhs.maxBlockMatchWindow );
69744 #  endif
69745     }
69746 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69747     bool operator!=( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69748     {
69749       return !operator==( rhs );
69750     }
69751 #endif
69752 
69753   public:
69754     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceImageProcessing2PropertiesQCOM;
69755     void *                              pNext               = {};
69756     VULKAN_HPP_NAMESPACE::Extent2D      maxBlockMatchWindow = {};
69757   };
69758 
69759   template <>
69760   struct CppType<StructureType, StructureType::ePhysicalDeviceImageProcessing2PropertiesQCOM>
69761   {
69762     using Type = PhysicalDeviceImageProcessing2PropertiesQCOM;
69763   };
69764 
69765   struct PhysicalDeviceImageProcessingFeaturesQCOM
69766   {
69767     using NativeType = VkPhysicalDeviceImageProcessingFeaturesQCOM;
69768 
69769     static const bool                                  allowDuplicate = false;
69770     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageProcessingFeaturesQCOM;
69771 
69772 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageProcessingFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69773     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 textureSampleWeighted_ = {},
69774                                                                     VULKAN_HPP_NAMESPACE::Bool32 textureBoxFilter_      = {},
69775                                                                     VULKAN_HPP_NAMESPACE::Bool32 textureBlockMatch_     = {},
69776                                                                     void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
69777       : pNext{ pNext_ }
69778       , textureSampleWeighted{ textureSampleWeighted_ }
69779       , textureBoxFilter{ textureBoxFilter_ }
69780       , textureBlockMatch{ textureBlockMatch_ }
69781     {
69782     }
69783 
69784     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingFeaturesQCOM( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69785 
PhysicalDeviceImageProcessingFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69786     PhysicalDeviceImageProcessingFeaturesQCOM( VkPhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69787       : PhysicalDeviceImageProcessingFeaturesQCOM( *reinterpret_cast<PhysicalDeviceImageProcessingFeaturesQCOM const *>( &rhs ) )
69788     {
69789     }
69790 
69791     PhysicalDeviceImageProcessingFeaturesQCOM & operator=( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69792 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69793 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69794     PhysicalDeviceImageProcessingFeaturesQCOM & operator=( VkPhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69795     {
69796       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM const *>( &rhs );
69797       return *this;
69798     }
69799 
69800 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69801     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69802     {
69803       pNext = pNext_;
69804       return *this;
69805     }
69806 
69807     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM &
setTextureSampleWeightedVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69808       setTextureSampleWeighted( VULKAN_HPP_NAMESPACE::Bool32 textureSampleWeighted_ ) VULKAN_HPP_NOEXCEPT
69809     {
69810       textureSampleWeighted = textureSampleWeighted_;
69811       return *this;
69812     }
69813 
69814     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM &
setTextureBoxFilterVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69815       setTextureBoxFilter( VULKAN_HPP_NAMESPACE::Bool32 textureBoxFilter_ ) VULKAN_HPP_NOEXCEPT
69816     {
69817       textureBoxFilter = textureBoxFilter_;
69818       return *this;
69819     }
69820 
69821     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM &
setTextureBlockMatchVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69822       setTextureBlockMatch( VULKAN_HPP_NAMESPACE::Bool32 textureBlockMatch_ ) VULKAN_HPP_NOEXCEPT
69823     {
69824       textureBlockMatch = textureBlockMatch_;
69825       return *this;
69826     }
69827 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69828 
operator VkPhysicalDeviceImageProcessingFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69829     operator VkPhysicalDeviceImageProcessingFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
69830     {
69831       return *reinterpret_cast<const VkPhysicalDeviceImageProcessingFeaturesQCOM *>( this );
69832     }
69833 
operator VkPhysicalDeviceImageProcessingFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69834     operator VkPhysicalDeviceImageProcessingFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
69835     {
69836       return *reinterpret_cast<VkPhysicalDeviceImageProcessingFeaturesQCOM *>( this );
69837     }
69838 
69839 #if defined( VULKAN_HPP_USE_REFLECT )
69840 #  if 14 <= VULKAN_HPP_CPP_VERSION
69841     auto
69842 #  else
69843     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69844                void * const &,
69845                VULKAN_HPP_NAMESPACE::Bool32 const &,
69846                VULKAN_HPP_NAMESPACE::Bool32 const &,
69847                VULKAN_HPP_NAMESPACE::Bool32 const &>
69848 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69849       reflect() const VULKAN_HPP_NOEXCEPT
69850     {
69851       return std::tie( sType, pNext, textureSampleWeighted, textureBoxFilter, textureBlockMatch );
69852     }
69853 #endif
69854 
69855 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69856     auto operator<=>( PhysicalDeviceImageProcessingFeaturesQCOM const & ) const = default;
69857 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69858     bool operator==( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69859     {
69860 #  if defined( VULKAN_HPP_USE_REFLECT )
69861       return this->reflect() == rhs.reflect();
69862 #  else
69863       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( textureSampleWeighted == rhs.textureSampleWeighted ) &&
69864              ( textureBoxFilter == rhs.textureBoxFilter ) && ( textureBlockMatch == rhs.textureBlockMatch );
69865 #  endif
69866     }
69867 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69868     bool operator!=( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69869     {
69870       return !operator==( rhs );
69871     }
69872 #endif
69873 
69874   public:
69875     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceImageProcessingFeaturesQCOM;
69876     void *                              pNext                 = {};
69877     VULKAN_HPP_NAMESPACE::Bool32        textureSampleWeighted = {};
69878     VULKAN_HPP_NAMESPACE::Bool32        textureBoxFilter      = {};
69879     VULKAN_HPP_NAMESPACE::Bool32        textureBlockMatch     = {};
69880   };
69881 
69882   template <>
69883   struct CppType<StructureType, StructureType::ePhysicalDeviceImageProcessingFeaturesQCOM>
69884   {
69885     using Type = PhysicalDeviceImageProcessingFeaturesQCOM;
69886   };
69887 
69888   struct PhysicalDeviceImageProcessingPropertiesQCOM
69889   {
69890     using NativeType = VkPhysicalDeviceImageProcessingPropertiesQCOM;
69891 
69892     static const bool                                  allowDuplicate = false;
69893     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageProcessingPropertiesQCOM;
69894 
69895 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageProcessingPropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69896     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingPropertiesQCOM( uint32_t                       maxWeightFilterPhases_    = {},
69897                                                                       VULKAN_HPP_NAMESPACE::Extent2D maxWeightFilterDimension_ = {},
69898                                                                       VULKAN_HPP_NAMESPACE::Extent2D maxBlockMatchRegion_      = {},
69899                                                                       VULKAN_HPP_NAMESPACE::Extent2D maxBoxFilterBlockSize_    = {},
69900                                                                       void *                         pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
69901       : pNext{ pNext_ }
69902       , maxWeightFilterPhases{ maxWeightFilterPhases_ }
69903       , maxWeightFilterDimension{ maxWeightFilterDimension_ }
69904       , maxBlockMatchRegion{ maxBlockMatchRegion_ }
69905       , maxBoxFilterBlockSize{ maxBoxFilterBlockSize_ }
69906     {
69907     }
69908 
69909     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingPropertiesQCOM( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69910 
PhysicalDeviceImageProcessingPropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69911     PhysicalDeviceImageProcessingPropertiesQCOM( VkPhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69912       : PhysicalDeviceImageProcessingPropertiesQCOM( *reinterpret_cast<PhysicalDeviceImageProcessingPropertiesQCOM const *>( &rhs ) )
69913     {
69914     }
69915 
69916     PhysicalDeviceImageProcessingPropertiesQCOM & operator=( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69917 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69918 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69919     PhysicalDeviceImageProcessingPropertiesQCOM & operator=( VkPhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69920     {
69921       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM const *>( &rhs );
69922       return *this;
69923     }
69924 
operator VkPhysicalDeviceImageProcessingPropertiesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69925     operator VkPhysicalDeviceImageProcessingPropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT
69926     {
69927       return *reinterpret_cast<const VkPhysicalDeviceImageProcessingPropertiesQCOM *>( this );
69928     }
69929 
operator VkPhysicalDeviceImageProcessingPropertiesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69930     operator VkPhysicalDeviceImageProcessingPropertiesQCOM &() VULKAN_HPP_NOEXCEPT
69931     {
69932       return *reinterpret_cast<VkPhysicalDeviceImageProcessingPropertiesQCOM *>( this );
69933     }
69934 
69935 #if defined( VULKAN_HPP_USE_REFLECT )
69936 #  if 14 <= VULKAN_HPP_CPP_VERSION
69937     auto
69938 #  else
69939     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69940                void * const &,
69941                uint32_t const &,
69942                VULKAN_HPP_NAMESPACE::Extent2D const &,
69943                VULKAN_HPP_NAMESPACE::Extent2D const &,
69944                VULKAN_HPP_NAMESPACE::Extent2D const &>
69945 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69946       reflect() const VULKAN_HPP_NOEXCEPT
69947     {
69948       return std::tie( sType, pNext, maxWeightFilterPhases, maxWeightFilterDimension, maxBlockMatchRegion, maxBoxFilterBlockSize );
69949     }
69950 #endif
69951 
69952 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69953     auto operator<=>( PhysicalDeviceImageProcessingPropertiesQCOM const & ) const = default;
69954 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69955     bool operator==( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69956     {
69957 #  if defined( VULKAN_HPP_USE_REFLECT )
69958       return this->reflect() == rhs.reflect();
69959 #  else
69960       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxWeightFilterPhases == rhs.maxWeightFilterPhases ) &&
69961              ( maxWeightFilterDimension == rhs.maxWeightFilterDimension ) && ( maxBlockMatchRegion == rhs.maxBlockMatchRegion ) &&
69962              ( maxBoxFilterBlockSize == rhs.maxBoxFilterBlockSize );
69963 #  endif
69964     }
69965 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69966     bool operator!=( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69967     {
69968       return !operator==( rhs );
69969     }
69970 #endif
69971 
69972   public:
69973     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceImageProcessingPropertiesQCOM;
69974     void *                              pNext                    = {};
69975     uint32_t                            maxWeightFilterPhases    = {};
69976     VULKAN_HPP_NAMESPACE::Extent2D      maxWeightFilterDimension = {};
69977     VULKAN_HPP_NAMESPACE::Extent2D      maxBlockMatchRegion      = {};
69978     VULKAN_HPP_NAMESPACE::Extent2D      maxBoxFilterBlockSize    = {};
69979   };
69980 
69981   template <>
69982   struct CppType<StructureType, StructureType::ePhysicalDeviceImageProcessingPropertiesQCOM>
69983   {
69984     using Type = PhysicalDeviceImageProcessingPropertiesQCOM;
69985   };
69986 
69987   struct PhysicalDeviceImageRobustnessFeatures
69988   {
69989     using NativeType = VkPhysicalDeviceImageRobustnessFeatures;
69990 
69991     static const bool                                  allowDuplicate = false;
69992     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageRobustnessFeatures;
69993 
69994 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageRobustnessFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69995     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeatures( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ = {},
69996                                                                 void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
69997       : pNext{ pNext_ }
69998       , robustImageAccess{ robustImageAccess_ }
69999     {
70000     }
70001 
70002     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeatures( PhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70003 
PhysicalDeviceImageRobustnessFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures70004     PhysicalDeviceImageRobustnessFeatures( VkPhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
70005       : PhysicalDeviceImageRobustnessFeatures( *reinterpret_cast<PhysicalDeviceImageRobustnessFeatures const *>( &rhs ) )
70006     {
70007     }
70008 
70009     PhysicalDeviceImageRobustnessFeatures & operator=( PhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70010 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70011 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures70012     PhysicalDeviceImageRobustnessFeatures & operator=( VkPhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
70013     {
70014       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures const *>( &rhs );
70015       return *this;
70016     }
70017 
70018 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures70019     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70020     {
70021       pNext = pNext_;
70022       return *this;
70023     }
70024 
setRobustImageAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures70025     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures & setRobustImageAccess( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ ) VULKAN_HPP_NOEXCEPT
70026     {
70027       robustImageAccess = robustImageAccess_;
70028       return *this;
70029     }
70030 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70031 
operator VkPhysicalDeviceImageRobustnessFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures70032     operator VkPhysicalDeviceImageRobustnessFeatures const &() const VULKAN_HPP_NOEXCEPT
70033     {
70034       return *reinterpret_cast<const VkPhysicalDeviceImageRobustnessFeatures *>( this );
70035     }
70036 
operator VkPhysicalDeviceImageRobustnessFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures70037     operator VkPhysicalDeviceImageRobustnessFeatures &() VULKAN_HPP_NOEXCEPT
70038     {
70039       return *reinterpret_cast<VkPhysicalDeviceImageRobustnessFeatures *>( this );
70040     }
70041 
70042 #if defined( VULKAN_HPP_USE_REFLECT )
70043 #  if 14 <= VULKAN_HPP_CPP_VERSION
70044     auto
70045 #  else
70046     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70047 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures70048       reflect() const VULKAN_HPP_NOEXCEPT
70049     {
70050       return std::tie( sType, pNext, robustImageAccess );
70051     }
70052 #endif
70053 
70054 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70055     auto operator<=>( PhysicalDeviceImageRobustnessFeatures const & ) const = default;
70056 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures70057     bool operator==( PhysicalDeviceImageRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
70058     {
70059 #  if defined( VULKAN_HPP_USE_REFLECT )
70060       return this->reflect() == rhs.reflect();
70061 #  else
70062       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustImageAccess == rhs.robustImageAccess );
70063 #  endif
70064     }
70065 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures70066     bool operator!=( PhysicalDeviceImageRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
70067     {
70068       return !operator==( rhs );
70069     }
70070 #endif
70071 
70072   public:
70073     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceImageRobustnessFeatures;
70074     void *                              pNext             = {};
70075     VULKAN_HPP_NAMESPACE::Bool32        robustImageAccess = {};
70076   };
70077 
70078   template <>
70079   struct CppType<StructureType, StructureType::ePhysicalDeviceImageRobustnessFeatures>
70080   {
70081     using Type = PhysicalDeviceImageRobustnessFeatures;
70082   };
70083 
70084   using PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures;
70085 
70086   struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT
70087   {
70088     using NativeType = VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
70089 
70090     static const bool                                  allowDuplicate = false;
70091     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
70092 
70093 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageSlicedViewOf3DFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT70094     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 imageSlicedViewOf3D_ = {},
70095                                                                        void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
70096       : pNext{ pNext_ }
70097       , imageSlicedViewOf3D{ imageSlicedViewOf3D_ }
70098     {
70099     }
70100 
70101     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70102 
PhysicalDeviceImageSlicedViewOf3DFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT70103     PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70104       : PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( *reinterpret_cast<PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const *>( &rhs ) )
70105     {
70106     }
70107 
70108     PhysicalDeviceImageSlicedViewOf3DFeaturesEXT & operator=( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70109 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70110 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT70111     PhysicalDeviceImageSlicedViewOf3DFeaturesEXT & operator=( VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70112     {
70113       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const *>( &rhs );
70114       return *this;
70115     }
70116 
70117 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT70118     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageSlicedViewOf3DFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70119     {
70120       pNext = pNext_;
70121       return *this;
70122     }
70123 
70124     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageSlicedViewOf3DFeaturesEXT &
setImageSlicedViewOf3DVULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT70125       setImageSlicedViewOf3D( VULKAN_HPP_NAMESPACE::Bool32 imageSlicedViewOf3D_ ) VULKAN_HPP_NOEXCEPT
70126     {
70127       imageSlicedViewOf3D = imageSlicedViewOf3D_;
70128       return *this;
70129     }
70130 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70131 
operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT70132     operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
70133     {
70134       return *reinterpret_cast<const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *>( this );
70135     }
70136 
operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT70137     operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT &() VULKAN_HPP_NOEXCEPT
70138     {
70139       return *reinterpret_cast<VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *>( this );
70140     }
70141 
70142 #if defined( VULKAN_HPP_USE_REFLECT )
70143 #  if 14 <= VULKAN_HPP_CPP_VERSION
70144     auto
70145 #  else
70146     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70147 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT70148       reflect() const VULKAN_HPP_NOEXCEPT
70149     {
70150       return std::tie( sType, pNext, imageSlicedViewOf3D );
70151     }
70152 #endif
70153 
70154 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70155     auto operator<=>( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & ) const = default;
70156 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT70157     bool operator==( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70158     {
70159 #  if defined( VULKAN_HPP_USE_REFLECT )
70160       return this->reflect() == rhs.reflect();
70161 #  else
70162       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageSlicedViewOf3D == rhs.imageSlicedViewOf3D );
70163 #  endif
70164     }
70165 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT70166     bool operator!=( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70167     {
70168       return !operator==( rhs );
70169     }
70170 #endif
70171 
70172   public:
70173     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
70174     void *                              pNext               = {};
70175     VULKAN_HPP_NAMESPACE::Bool32        imageSlicedViewOf3D = {};
70176   };
70177 
70178   template <>
70179   struct CppType<StructureType, StructureType::ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT>
70180   {
70181     using Type = PhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
70182   };
70183 
70184   struct PhysicalDeviceImageViewImageFormatInfoEXT
70185   {
70186     using NativeType = VkPhysicalDeviceImageViewImageFormatInfoEXT;
70187 
70188     static const bool                                  allowDuplicate = false;
70189     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT;
70190 
70191 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
70192     VULKAN_HPP_CONSTEXPR
PhysicalDeviceImageViewImageFormatInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT70193       PhysicalDeviceImageViewImageFormatInfoEXT( VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ = VULKAN_HPP_NAMESPACE::ImageViewType::e1D,
70194                                                  void *                              pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
70195       : pNext{ pNext_ }
70196       , imageViewType{ imageViewType_ }
70197     {
70198     }
70199 
70200     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70201 
PhysicalDeviceImageViewImageFormatInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT70202     PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70203       : PhysicalDeviceImageViewImageFormatInfoEXT( *reinterpret_cast<PhysicalDeviceImageViewImageFormatInfoEXT const *>( &rhs ) )
70204     {
70205     }
70206 
70207     PhysicalDeviceImageViewImageFormatInfoEXT & operator=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70208 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70209 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT70210     PhysicalDeviceImageViewImageFormatInfoEXT & operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70211     {
70212       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT const *>( &rhs );
70213       return *this;
70214     }
70215 
70216 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT70217     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70218     {
70219       pNext = pNext_;
70220       return *this;
70221     }
70222 
70223     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT &
setImageViewTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT70224       setImageViewType( VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ ) VULKAN_HPP_NOEXCEPT
70225     {
70226       imageViewType = imageViewType_;
70227       return *this;
70228     }
70229 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70230 
operator VkPhysicalDeviceImageViewImageFormatInfoEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT70231     operator VkPhysicalDeviceImageViewImageFormatInfoEXT const &() const VULKAN_HPP_NOEXCEPT
70232     {
70233       return *reinterpret_cast<const VkPhysicalDeviceImageViewImageFormatInfoEXT *>( this );
70234     }
70235 
operator VkPhysicalDeviceImageViewImageFormatInfoEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT70236     operator VkPhysicalDeviceImageViewImageFormatInfoEXT &() VULKAN_HPP_NOEXCEPT
70237     {
70238       return *reinterpret_cast<VkPhysicalDeviceImageViewImageFormatInfoEXT *>( this );
70239     }
70240 
70241 #if defined( VULKAN_HPP_USE_REFLECT )
70242 #  if 14 <= VULKAN_HPP_CPP_VERSION
70243     auto
70244 #  else
70245     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageViewType const &>
70246 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT70247       reflect() const VULKAN_HPP_NOEXCEPT
70248     {
70249       return std::tie( sType, pNext, imageViewType );
70250     }
70251 #endif
70252 
70253 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70254     auto operator<=>( PhysicalDeviceImageViewImageFormatInfoEXT const & ) const = default;
70255 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT70256     bool operator==( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70257     {
70258 #  if defined( VULKAN_HPP_USE_REFLECT )
70259       return this->reflect() == rhs.reflect();
70260 #  else
70261       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageViewType == rhs.imageViewType );
70262 #  endif
70263     }
70264 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT70265     bool operator!=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70266     {
70267       return !operator==( rhs );
70268     }
70269 #endif
70270 
70271   public:
70272     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT;
70273     void *                              pNext         = {};
70274     VULKAN_HPP_NAMESPACE::ImageViewType imageViewType = VULKAN_HPP_NAMESPACE::ImageViewType::e1D;
70275   };
70276 
70277   template <>
70278   struct CppType<StructureType, StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT>
70279   {
70280     using Type = PhysicalDeviceImageViewImageFormatInfoEXT;
70281   };
70282 
70283   struct PhysicalDeviceImageViewMinLodFeaturesEXT
70284   {
70285     using NativeType = VkPhysicalDeviceImageViewMinLodFeaturesEXT;
70286 
70287     static const bool                                  allowDuplicate = false;
70288     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT;
70289 
70290 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageViewMinLodFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT70291     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewMinLodFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 minLod_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
70292       : pNext{ pNext_ }
70293       , minLod{ minLod_ }
70294     {
70295     }
70296 
70297     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewMinLodFeaturesEXT( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70298 
PhysicalDeviceImageViewMinLodFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT70299     PhysicalDeviceImageViewMinLodFeaturesEXT( VkPhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70300       : PhysicalDeviceImageViewMinLodFeaturesEXT( *reinterpret_cast<PhysicalDeviceImageViewMinLodFeaturesEXT const *>( &rhs ) )
70301     {
70302     }
70303 
70304     PhysicalDeviceImageViewMinLodFeaturesEXT & operator=( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70305 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70306 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT70307     PhysicalDeviceImageViewMinLodFeaturesEXT & operator=( VkPhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70308     {
70309       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT const *>( &rhs );
70310       return *this;
70311     }
70312 
70313 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT70314     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70315     {
70316       pNext = pNext_;
70317       return *this;
70318     }
70319 
setMinLodVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT70320     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT & setMinLod( VULKAN_HPP_NAMESPACE::Bool32 minLod_ ) VULKAN_HPP_NOEXCEPT
70321     {
70322       minLod = minLod_;
70323       return *this;
70324     }
70325 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70326 
operator VkPhysicalDeviceImageViewMinLodFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT70327     operator VkPhysicalDeviceImageViewMinLodFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
70328     {
70329       return *reinterpret_cast<const VkPhysicalDeviceImageViewMinLodFeaturesEXT *>( this );
70330     }
70331 
operator VkPhysicalDeviceImageViewMinLodFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT70332     operator VkPhysicalDeviceImageViewMinLodFeaturesEXT &() VULKAN_HPP_NOEXCEPT
70333     {
70334       return *reinterpret_cast<VkPhysicalDeviceImageViewMinLodFeaturesEXT *>( this );
70335     }
70336 
70337 #if defined( VULKAN_HPP_USE_REFLECT )
70338 #  if 14 <= VULKAN_HPP_CPP_VERSION
70339     auto
70340 #  else
70341     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70342 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT70343       reflect() const VULKAN_HPP_NOEXCEPT
70344     {
70345       return std::tie( sType, pNext, minLod );
70346     }
70347 #endif
70348 
70349 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70350     auto operator<=>( PhysicalDeviceImageViewMinLodFeaturesEXT const & ) const = default;
70351 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT70352     bool operator==( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70353     {
70354 #  if defined( VULKAN_HPP_USE_REFLECT )
70355       return this->reflect() == rhs.reflect();
70356 #  else
70357       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minLod == rhs.minLod );
70358 #  endif
70359     }
70360 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT70361     bool operator!=( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70362     {
70363       return !operator==( rhs );
70364     }
70365 #endif
70366 
70367   public:
70368     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT;
70369     void *                              pNext  = {};
70370     VULKAN_HPP_NAMESPACE::Bool32        minLod = {};
70371   };
70372 
70373   template <>
70374   struct CppType<StructureType, StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT>
70375   {
70376     using Type = PhysicalDeviceImageViewMinLodFeaturesEXT;
70377   };
70378 
70379   struct PhysicalDeviceImagelessFramebufferFeatures
70380   {
70381     using NativeType = VkPhysicalDeviceImagelessFramebufferFeatures;
70382 
70383     static const bool                                  allowDuplicate = false;
70384     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImagelessFramebufferFeatures;
70385 
70386 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImagelessFramebufferFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures70387     VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ = {},
70388                                                                      void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
70389       : pNext{ pNext_ }
70390       , imagelessFramebuffer{ imagelessFramebuffer_ }
70391     {
70392     }
70393 
70394     VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70395 
PhysicalDeviceImagelessFramebufferFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures70396     PhysicalDeviceImagelessFramebufferFeatures( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
70397       : PhysicalDeviceImagelessFramebufferFeatures( *reinterpret_cast<PhysicalDeviceImagelessFramebufferFeatures const *>( &rhs ) )
70398     {
70399     }
70400 
70401     PhysicalDeviceImagelessFramebufferFeatures & operator=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70402 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70403 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures70404     PhysicalDeviceImagelessFramebufferFeatures & operator=( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
70405     {
70406       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures const *>( &rhs );
70407       return *this;
70408     }
70409 
70410 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures70411     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70412     {
70413       pNext = pNext_;
70414       return *this;
70415     }
70416 
70417     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures &
setImagelessFramebufferVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures70418       setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT
70419     {
70420       imagelessFramebuffer = imagelessFramebuffer_;
70421       return *this;
70422     }
70423 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70424 
operator VkPhysicalDeviceImagelessFramebufferFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures70425     operator VkPhysicalDeviceImagelessFramebufferFeatures const &() const VULKAN_HPP_NOEXCEPT
70426     {
70427       return *reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeatures *>( this );
70428     }
70429 
operator VkPhysicalDeviceImagelessFramebufferFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures70430     operator VkPhysicalDeviceImagelessFramebufferFeatures &() VULKAN_HPP_NOEXCEPT
70431     {
70432       return *reinterpret_cast<VkPhysicalDeviceImagelessFramebufferFeatures *>( this );
70433     }
70434 
70435 #if defined( VULKAN_HPP_USE_REFLECT )
70436 #  if 14 <= VULKAN_HPP_CPP_VERSION
70437     auto
70438 #  else
70439     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70440 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures70441       reflect() const VULKAN_HPP_NOEXCEPT
70442     {
70443       return std::tie( sType, pNext, imagelessFramebuffer );
70444     }
70445 #endif
70446 
70447 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70448     auto operator<=>( PhysicalDeviceImagelessFramebufferFeatures const & ) const = default;
70449 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures70450     bool operator==( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
70451     {
70452 #  if defined( VULKAN_HPP_USE_REFLECT )
70453       return this->reflect() == rhs.reflect();
70454 #  else
70455       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imagelessFramebuffer == rhs.imagelessFramebuffer );
70456 #  endif
70457     }
70458 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures70459     bool operator!=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
70460     {
70461       return !operator==( rhs );
70462     }
70463 #endif
70464 
70465   public:
70466     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceImagelessFramebufferFeatures;
70467     void *                              pNext                = {};
70468     VULKAN_HPP_NAMESPACE::Bool32        imagelessFramebuffer = {};
70469   };
70470 
70471   template <>
70472   struct CppType<StructureType, StructureType::ePhysicalDeviceImagelessFramebufferFeatures>
70473   {
70474     using Type = PhysicalDeviceImagelessFramebufferFeatures;
70475   };
70476 
70477   using PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
70478 
70479   struct PhysicalDeviceIndexTypeUint8Features
70480   {
70481     using NativeType = VkPhysicalDeviceIndexTypeUint8Features;
70482 
70483     static const bool                                  allowDuplicate = false;
70484     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceIndexTypeUint8Features;
70485 
70486 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceIndexTypeUint8FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features70487     VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8Features( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
70488       : pNext{ pNext_ }
70489       , indexTypeUint8{ indexTypeUint8_ }
70490     {
70491     }
70492 
70493     VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8Features( PhysicalDeviceIndexTypeUint8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70494 
PhysicalDeviceIndexTypeUint8FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features70495     PhysicalDeviceIndexTypeUint8Features( VkPhysicalDeviceIndexTypeUint8Features const & rhs ) VULKAN_HPP_NOEXCEPT
70496       : PhysicalDeviceIndexTypeUint8Features( *reinterpret_cast<PhysicalDeviceIndexTypeUint8Features const *>( &rhs ) )
70497     {
70498     }
70499 
70500     PhysicalDeviceIndexTypeUint8Features & operator=( PhysicalDeviceIndexTypeUint8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70501 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70502 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features70503     PhysicalDeviceIndexTypeUint8Features & operator=( VkPhysicalDeviceIndexTypeUint8Features const & rhs ) VULKAN_HPP_NOEXCEPT
70504     {
70505       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features const *>( &rhs );
70506       return *this;
70507     }
70508 
70509 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features70510     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70511     {
70512       pNext = pNext_;
70513       return *this;
70514     }
70515 
setIndexTypeUint8VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features70516     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8Features & setIndexTypeUint8( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ ) VULKAN_HPP_NOEXCEPT
70517     {
70518       indexTypeUint8 = indexTypeUint8_;
70519       return *this;
70520     }
70521 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70522 
operator VkPhysicalDeviceIndexTypeUint8Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features70523     operator VkPhysicalDeviceIndexTypeUint8Features const &() const VULKAN_HPP_NOEXCEPT
70524     {
70525       return *reinterpret_cast<const VkPhysicalDeviceIndexTypeUint8Features *>( this );
70526     }
70527 
operator VkPhysicalDeviceIndexTypeUint8Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features70528     operator VkPhysicalDeviceIndexTypeUint8Features &() VULKAN_HPP_NOEXCEPT
70529     {
70530       return *reinterpret_cast<VkPhysicalDeviceIndexTypeUint8Features *>( this );
70531     }
70532 
70533 #if defined( VULKAN_HPP_USE_REFLECT )
70534 #  if 14 <= VULKAN_HPP_CPP_VERSION
70535     auto
70536 #  else
70537     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70538 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features70539       reflect() const VULKAN_HPP_NOEXCEPT
70540     {
70541       return std::tie( sType, pNext, indexTypeUint8 );
70542     }
70543 #endif
70544 
70545 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70546     auto operator<=>( PhysicalDeviceIndexTypeUint8Features const & ) const = default;
70547 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features70548     bool operator==( PhysicalDeviceIndexTypeUint8Features const & rhs ) const VULKAN_HPP_NOEXCEPT
70549     {
70550 #  if defined( VULKAN_HPP_USE_REFLECT )
70551       return this->reflect() == rhs.reflect();
70552 #  else
70553       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( indexTypeUint8 == rhs.indexTypeUint8 );
70554 #  endif
70555     }
70556 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features70557     bool operator!=( PhysicalDeviceIndexTypeUint8Features const & rhs ) const VULKAN_HPP_NOEXCEPT
70558     {
70559       return !operator==( rhs );
70560     }
70561 #endif
70562 
70563   public:
70564     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceIndexTypeUint8Features;
70565     void *                              pNext          = {};
70566     VULKAN_HPP_NAMESPACE::Bool32        indexTypeUint8 = {};
70567   };
70568 
70569   template <>
70570   struct CppType<StructureType, StructureType::ePhysicalDeviceIndexTypeUint8Features>
70571   {
70572     using Type = PhysicalDeviceIndexTypeUint8Features;
70573   };
70574 
70575   using PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features;
70576   using PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features;
70577 
70578   struct PhysicalDeviceInheritedViewportScissorFeaturesNV
70579   {
70580     using NativeType = VkPhysicalDeviceInheritedViewportScissorFeaturesNV;
70581 
70582     static const bool                                  allowDuplicate = false;
70583     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV;
70584 
70585 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInheritedViewportScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70586     VULKAN_HPP_CONSTEXPR PhysicalDeviceInheritedViewportScissorFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 inheritedViewportScissor2D_ = {},
70587                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
70588       : pNext{ pNext_ }
70589       , inheritedViewportScissor2D{ inheritedViewportScissor2D_ }
70590     {
70591     }
70592 
70593     VULKAN_HPP_CONSTEXPR
70594       PhysicalDeviceInheritedViewportScissorFeaturesNV( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70595 
PhysicalDeviceInheritedViewportScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70596     PhysicalDeviceInheritedViewportScissorFeaturesNV( VkPhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
70597       : PhysicalDeviceInheritedViewportScissorFeaturesNV( *reinterpret_cast<PhysicalDeviceInheritedViewportScissorFeaturesNV const *>( &rhs ) )
70598     {
70599     }
70600 
70601     PhysicalDeviceInheritedViewportScissorFeaturesNV & operator=( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70602 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70603 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70604     PhysicalDeviceInheritedViewportScissorFeaturesNV & operator=( VkPhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
70605     {
70606       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV const *>( &rhs );
70607       return *this;
70608     }
70609 
70610 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70611     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70612     {
70613       pNext = pNext_;
70614       return *this;
70615     }
70616 
70617     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV &
setInheritedViewportScissor2DVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70618       setInheritedViewportScissor2D( VULKAN_HPP_NAMESPACE::Bool32 inheritedViewportScissor2D_ ) VULKAN_HPP_NOEXCEPT
70619     {
70620       inheritedViewportScissor2D = inheritedViewportScissor2D_;
70621       return *this;
70622     }
70623 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70624 
operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70625     operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
70626     {
70627       return *reinterpret_cast<const VkPhysicalDeviceInheritedViewportScissorFeaturesNV *>( this );
70628     }
70629 
operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70630     operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV &() VULKAN_HPP_NOEXCEPT
70631     {
70632       return *reinterpret_cast<VkPhysicalDeviceInheritedViewportScissorFeaturesNV *>( this );
70633     }
70634 
70635 #if defined( VULKAN_HPP_USE_REFLECT )
70636 #  if 14 <= VULKAN_HPP_CPP_VERSION
70637     auto
70638 #  else
70639     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70640 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70641       reflect() const VULKAN_HPP_NOEXCEPT
70642     {
70643       return std::tie( sType, pNext, inheritedViewportScissor2D );
70644     }
70645 #endif
70646 
70647 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70648     auto operator<=>( PhysicalDeviceInheritedViewportScissorFeaturesNV const & ) const = default;
70649 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70650     bool operator==( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
70651     {
70652 #  if defined( VULKAN_HPP_USE_REFLECT )
70653       return this->reflect() == rhs.reflect();
70654 #  else
70655       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( inheritedViewportScissor2D == rhs.inheritedViewportScissor2D );
70656 #  endif
70657     }
70658 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70659     bool operator!=( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
70660     {
70661       return !operator==( rhs );
70662     }
70663 #endif
70664 
70665   public:
70666     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV;
70667     void *                              pNext                      = {};
70668     VULKAN_HPP_NAMESPACE::Bool32        inheritedViewportScissor2D = {};
70669   };
70670 
70671   template <>
70672   struct CppType<StructureType, StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV>
70673   {
70674     using Type = PhysicalDeviceInheritedViewportScissorFeaturesNV;
70675   };
70676 
70677   struct PhysicalDeviceInlineUniformBlockFeatures
70678   {
70679     using NativeType = VkPhysicalDeviceInlineUniformBlockFeatures;
70680 
70681     static const bool                                  allowDuplicate = false;
70682     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceInlineUniformBlockFeatures;
70683 
70684 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInlineUniformBlockFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70685     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeatures( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_                                 = {},
70686                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {},
70687                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
70688       : pNext{ pNext_ }
70689       , inlineUniformBlock{ inlineUniformBlock_ }
70690       , descriptorBindingInlineUniformBlockUpdateAfterBind{ descriptorBindingInlineUniformBlockUpdateAfterBind_ }
70691     {
70692     }
70693 
70694     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeatures( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70695 
PhysicalDeviceInlineUniformBlockFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70696     PhysicalDeviceInlineUniformBlockFeatures( VkPhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
70697       : PhysicalDeviceInlineUniformBlockFeatures( *reinterpret_cast<PhysicalDeviceInlineUniformBlockFeatures const *>( &rhs ) )
70698     {
70699     }
70700 
70701     PhysicalDeviceInlineUniformBlockFeatures & operator=( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70702 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70703 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70704     PhysicalDeviceInlineUniformBlockFeatures & operator=( VkPhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
70705     {
70706       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures const *>( &rhs );
70707       return *this;
70708     }
70709 
70710 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70711     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70712     {
70713       pNext = pNext_;
70714       return *this;
70715     }
70716 
70717     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures &
setInlineUniformBlockVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70718       setInlineUniformBlock( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ ) VULKAN_HPP_NOEXCEPT
70719     {
70720       inlineUniformBlock = inlineUniformBlock_;
70721       return *this;
70722     }
70723 
setDescriptorBindingInlineUniformBlockUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70724     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & setDescriptorBindingInlineUniformBlockUpdateAfterBind(
70725       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
70726     {
70727       descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_;
70728       return *this;
70729     }
70730 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70731 
operator VkPhysicalDeviceInlineUniformBlockFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70732     operator VkPhysicalDeviceInlineUniformBlockFeatures const &() const VULKAN_HPP_NOEXCEPT
70733     {
70734       return *reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeatures *>( this );
70735     }
70736 
operator VkPhysicalDeviceInlineUniformBlockFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70737     operator VkPhysicalDeviceInlineUniformBlockFeatures &() VULKAN_HPP_NOEXCEPT
70738     {
70739       return *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeatures *>( this );
70740     }
70741 
70742 #if defined( VULKAN_HPP_USE_REFLECT )
70743 #  if 14 <= VULKAN_HPP_CPP_VERSION
70744     auto
70745 #  else
70746     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70747 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70748       reflect() const VULKAN_HPP_NOEXCEPT
70749     {
70750       return std::tie( sType, pNext, inlineUniformBlock, descriptorBindingInlineUniformBlockUpdateAfterBind );
70751     }
70752 #endif
70753 
70754 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70755     auto operator<=>( PhysicalDeviceInlineUniformBlockFeatures const & ) const = default;
70756 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70757     bool operator==( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
70758     {
70759 #  if defined( VULKAN_HPP_USE_REFLECT )
70760       return this->reflect() == rhs.reflect();
70761 #  else
70762       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( inlineUniformBlock == rhs.inlineUniformBlock ) &&
70763              ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind );
70764 #  endif
70765     }
70766 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70767     bool operator!=( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
70768     {
70769       return !operator==( rhs );
70770     }
70771 #endif
70772 
70773   public:
70774     VULKAN_HPP_NAMESPACE::StructureType sType                                              = StructureType::ePhysicalDeviceInlineUniformBlockFeatures;
70775     void *                              pNext                                              = {};
70776     VULKAN_HPP_NAMESPACE::Bool32        inlineUniformBlock                                 = {};
70777     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingInlineUniformBlockUpdateAfterBind = {};
70778   };
70779 
70780   template <>
70781   struct CppType<StructureType, StructureType::ePhysicalDeviceInlineUniformBlockFeatures>
70782   {
70783     using Type = PhysicalDeviceInlineUniformBlockFeatures;
70784   };
70785 
70786   using PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures;
70787 
70788   struct PhysicalDeviceInlineUniformBlockProperties
70789   {
70790     using NativeType = VkPhysicalDeviceInlineUniformBlockProperties;
70791 
70792     static const bool                                  allowDuplicate = false;
70793     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceInlineUniformBlockProperties;
70794 
70795 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInlineUniformBlockPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70796     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockProperties( uint32_t maxInlineUniformBlockSize_                               = {},
70797                                                                      uint32_t maxPerStageDescriptorInlineUniformBlocks_                = {},
70798                                                                      uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = {},
70799                                                                      uint32_t maxDescriptorSetInlineUniformBlocks_                     = {},
70800                                                                      uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_      = {},
70801                                                                      void *   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
70802       : pNext{ pNext_ }
70803       , maxInlineUniformBlockSize{ maxInlineUniformBlockSize_ }
70804       , maxPerStageDescriptorInlineUniformBlocks{ maxPerStageDescriptorInlineUniformBlocks_ }
70805       , maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks{ maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ }
70806       , maxDescriptorSetInlineUniformBlocks{ maxDescriptorSetInlineUniformBlocks_ }
70807       , maxDescriptorSetUpdateAfterBindInlineUniformBlocks{ maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ }
70808     {
70809     }
70810 
70811     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockProperties( PhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70812 
PhysicalDeviceInlineUniformBlockPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70813     PhysicalDeviceInlineUniformBlockProperties( VkPhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT
70814       : PhysicalDeviceInlineUniformBlockProperties( *reinterpret_cast<PhysicalDeviceInlineUniformBlockProperties const *>( &rhs ) )
70815     {
70816     }
70817 
70818     PhysicalDeviceInlineUniformBlockProperties & operator=( PhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70819 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70820 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70821     PhysicalDeviceInlineUniformBlockProperties & operator=( VkPhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT
70822     {
70823       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties const *>( &rhs );
70824       return *this;
70825     }
70826 
operator VkPhysicalDeviceInlineUniformBlockProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70827     operator VkPhysicalDeviceInlineUniformBlockProperties const &() const VULKAN_HPP_NOEXCEPT
70828     {
70829       return *reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockProperties *>( this );
70830     }
70831 
operator VkPhysicalDeviceInlineUniformBlockProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70832     operator VkPhysicalDeviceInlineUniformBlockProperties &() VULKAN_HPP_NOEXCEPT
70833     {
70834       return *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockProperties *>( this );
70835     }
70836 
70837 #if defined( VULKAN_HPP_USE_REFLECT )
70838 #  if 14 <= VULKAN_HPP_CPP_VERSION
70839     auto
70840 #  else
70841     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
70842                void * const &,
70843                uint32_t const &,
70844                uint32_t const &,
70845                uint32_t const &,
70846                uint32_t const &,
70847                uint32_t const &>
70848 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70849       reflect() const VULKAN_HPP_NOEXCEPT
70850     {
70851       return std::tie( sType,
70852                        pNext,
70853                        maxInlineUniformBlockSize,
70854                        maxPerStageDescriptorInlineUniformBlocks,
70855                        maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
70856                        maxDescriptorSetInlineUniformBlocks,
70857                        maxDescriptorSetUpdateAfterBindInlineUniformBlocks );
70858     }
70859 #endif
70860 
70861 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70862     auto operator<=>( PhysicalDeviceInlineUniformBlockProperties const & ) const = default;
70863 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70864     bool operator==( PhysicalDeviceInlineUniformBlockProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
70865     {
70866 #  if defined( VULKAN_HPP_USE_REFLECT )
70867       return this->reflect() == rhs.reflect();
70868 #  else
70869       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize ) &&
70870              ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks ) &&
70871              ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ) &&
70872              ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks ) &&
70873              ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks );
70874 #  endif
70875     }
70876 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70877     bool operator!=( PhysicalDeviceInlineUniformBlockProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
70878     {
70879       return !operator==( rhs );
70880     }
70881 #endif
70882 
70883   public:
70884     VULKAN_HPP_NAMESPACE::StructureType sType                                                   = StructureType::ePhysicalDeviceInlineUniformBlockProperties;
70885     void *                              pNext                                                   = {};
70886     uint32_t                            maxInlineUniformBlockSize                               = {};
70887     uint32_t                            maxPerStageDescriptorInlineUniformBlocks                = {};
70888     uint32_t                            maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = {};
70889     uint32_t                            maxDescriptorSetInlineUniformBlocks                     = {};
70890     uint32_t                            maxDescriptorSetUpdateAfterBindInlineUniformBlocks      = {};
70891   };
70892 
70893   template <>
70894   struct CppType<StructureType, StructureType::ePhysicalDeviceInlineUniformBlockProperties>
70895   {
70896     using Type = PhysicalDeviceInlineUniformBlockProperties;
70897   };
70898 
70899   using PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties;
70900 
70901   struct PhysicalDeviceInvocationMaskFeaturesHUAWEI
70902   {
70903     using NativeType = VkPhysicalDeviceInvocationMaskFeaturesHUAWEI;
70904 
70905     static const bool                                  allowDuplicate = false;
70906     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI;
70907 
70908 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInvocationMaskFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70909     VULKAN_HPP_CONSTEXPR PhysicalDeviceInvocationMaskFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 invocationMask_ = {},
70910                                                                      void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
70911       : pNext{ pNext_ }
70912       , invocationMask{ invocationMask_ }
70913     {
70914     }
70915 
70916     VULKAN_HPP_CONSTEXPR PhysicalDeviceInvocationMaskFeaturesHUAWEI( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70917 
PhysicalDeviceInvocationMaskFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70918     PhysicalDeviceInvocationMaskFeaturesHUAWEI( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
70919       : PhysicalDeviceInvocationMaskFeaturesHUAWEI( *reinterpret_cast<PhysicalDeviceInvocationMaskFeaturesHUAWEI const *>( &rhs ) )
70920     {
70921     }
70922 
70923     PhysicalDeviceInvocationMaskFeaturesHUAWEI & operator=( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70924 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70925 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70926     PhysicalDeviceInvocationMaskFeaturesHUAWEI & operator=( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
70927     {
70928       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI const *>( &rhs );
70929       return *this;
70930     }
70931 
70932 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70933     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70934     {
70935       pNext = pNext_;
70936       return *this;
70937     }
70938 
setInvocationMaskVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70939     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI & setInvocationMask( VULKAN_HPP_NAMESPACE::Bool32 invocationMask_ ) VULKAN_HPP_NOEXCEPT
70940     {
70941       invocationMask = invocationMask_;
70942       return *this;
70943     }
70944 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70945 
operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70946     operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
70947     {
70948       return *reinterpret_cast<const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *>( this );
70949     }
70950 
operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70951     operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
70952     {
70953       return *reinterpret_cast<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *>( this );
70954     }
70955 
70956 #if defined( VULKAN_HPP_USE_REFLECT )
70957 #  if 14 <= VULKAN_HPP_CPP_VERSION
70958     auto
70959 #  else
70960     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70961 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70962       reflect() const VULKAN_HPP_NOEXCEPT
70963     {
70964       return std::tie( sType, pNext, invocationMask );
70965     }
70966 #endif
70967 
70968 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70969     auto operator<=>( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & ) const = default;
70970 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70971     bool operator==( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
70972     {
70973 #  if defined( VULKAN_HPP_USE_REFLECT )
70974       return this->reflect() == rhs.reflect();
70975 #  else
70976       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( invocationMask == rhs.invocationMask );
70977 #  endif
70978     }
70979 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70980     bool operator!=( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
70981     {
70982       return !operator==( rhs );
70983     }
70984 #endif
70985 
70986   public:
70987     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI;
70988     void *                              pNext          = {};
70989     VULKAN_HPP_NAMESPACE::Bool32        invocationMask = {};
70990   };
70991 
70992   template <>
70993   struct CppType<StructureType, StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI>
70994   {
70995     using Type = PhysicalDeviceInvocationMaskFeaturesHUAWEI;
70996   };
70997 
70998   struct PhysicalDeviceLayeredApiPropertiesKHR
70999   {
71000     using NativeType = VkPhysicalDeviceLayeredApiPropertiesKHR;
71001 
71002     static const bool                                  allowDuplicate = false;
71003     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLayeredApiPropertiesKHR;
71004 
71005 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLayeredApiPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR71006     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesKHR(
71007       uint32_t                                                   vendorID_   = {},
71008       uint32_t                                                   deviceID_   = {},
71009       VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiKHR          layeredAPI_ = VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiKHR::eVulkan,
71010       std::array<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> const & deviceName_ = {},
71011       void *                                                     pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
71012       : pNext{ pNext_ }
71013       , vendorID{ vendorID_ }
71014       , deviceID{ deviceID_ }
71015       , layeredAPI{ layeredAPI_ }
71016       , deviceName{ deviceName_ }
71017     {
71018     }
71019 
71020     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesKHR( PhysicalDeviceLayeredApiPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71021 
PhysicalDeviceLayeredApiPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR71022     PhysicalDeviceLayeredApiPropertiesKHR( VkPhysicalDeviceLayeredApiPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
71023       : PhysicalDeviceLayeredApiPropertiesKHR( *reinterpret_cast<PhysicalDeviceLayeredApiPropertiesKHR const *>( &rhs ) )
71024     {
71025     }
71026 
71027     PhysicalDeviceLayeredApiPropertiesKHR & operator=( PhysicalDeviceLayeredApiPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71028 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71029 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR71030     PhysicalDeviceLayeredApiPropertiesKHR & operator=( VkPhysicalDeviceLayeredApiPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
71031     {
71032       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR const *>( &rhs );
71033       return *this;
71034     }
71035 
operator VkPhysicalDeviceLayeredApiPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR71036     operator VkPhysicalDeviceLayeredApiPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
71037     {
71038       return *reinterpret_cast<const VkPhysicalDeviceLayeredApiPropertiesKHR *>( this );
71039     }
71040 
operator VkPhysicalDeviceLayeredApiPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR71041     operator VkPhysicalDeviceLayeredApiPropertiesKHR &() VULKAN_HPP_NOEXCEPT
71042     {
71043       return *reinterpret_cast<VkPhysicalDeviceLayeredApiPropertiesKHR *>( this );
71044     }
71045 
71046 #if defined( VULKAN_HPP_USE_REFLECT )
71047 #  if 14 <= VULKAN_HPP_CPP_VERSION
71048     auto
71049 #  else
71050     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
71051                void * const &,
71052                uint32_t const &,
71053                uint32_t const &,
71054                VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiKHR const &,
71055                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> const &>
71056 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR71057       reflect() const VULKAN_HPP_NOEXCEPT
71058     {
71059       return std::tie( sType, pNext, vendorID, deviceID, layeredAPI, deviceName );
71060     }
71061 #endif
71062 
71063 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71064     auto operator<=>( PhysicalDeviceLayeredApiPropertiesKHR const & ) const = default;
71065 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR71066     bool operator==( PhysicalDeviceLayeredApiPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
71067     {
71068 #  if defined( VULKAN_HPP_USE_REFLECT )
71069       return this->reflect() == rhs.reflect();
71070 #  else
71071       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) &&
71072              ( layeredAPI == rhs.layeredAPI ) && ( deviceName == rhs.deviceName );
71073 #  endif
71074     }
71075 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR71076     bool operator!=( PhysicalDeviceLayeredApiPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
71077     {
71078       return !operator==( rhs );
71079     }
71080 #endif
71081 
71082   public:
71083     VULKAN_HPP_NAMESPACE::StructureType                                          sType      = StructureType::ePhysicalDeviceLayeredApiPropertiesKHR;
71084     void *                                                                       pNext      = {};
71085     uint32_t                                                                     vendorID   = {};
71086     uint32_t                                                                     deviceID   = {};
71087     VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiKHR                            layeredAPI = VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiKHR::eVulkan;
71088     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> deviceName = {};
71089   };
71090 
71091   template <>
71092   struct CppType<StructureType, StructureType::ePhysicalDeviceLayeredApiPropertiesKHR>
71093   {
71094     using Type = PhysicalDeviceLayeredApiPropertiesKHR;
71095   };
71096 
71097   struct PhysicalDeviceLayeredApiPropertiesListKHR
71098   {
71099     using NativeType = VkPhysicalDeviceLayeredApiPropertiesListKHR;
71100 
71101     static const bool                                  allowDuplicate = false;
71102     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLayeredApiPropertiesListKHR;
71103 
71104 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLayeredApiPropertiesListKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71105     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR( uint32_t                                                      layeredApiCount_ = {},
71106                                                                        VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR * pLayeredApis_    = {},
71107                                                                        void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
71108       : pNext{ pNext_ }
71109       , layeredApiCount{ layeredApiCount_ }
71110       , pLayeredApis{ pLayeredApis_ }
71111     {
71112     }
71113 
71114     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR( PhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71115 
PhysicalDeviceLayeredApiPropertiesListKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71116     PhysicalDeviceLayeredApiPropertiesListKHR( VkPhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) VULKAN_HPP_NOEXCEPT
71117       : PhysicalDeviceLayeredApiPropertiesListKHR( *reinterpret_cast<PhysicalDeviceLayeredApiPropertiesListKHR const *>( &rhs ) )
71118     {
71119     }
71120 
71121 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceLayeredApiPropertiesListKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71122     PhysicalDeviceLayeredApiPropertiesListKHR(
71123       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR> const & layeredApis_, void * pNext_ = nullptr )
71124       : pNext( pNext_ ), layeredApiCount( static_cast<uint32_t>( layeredApis_.size() ) ), pLayeredApis( layeredApis_.data() )
71125     {
71126     }
71127 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71128 
71129     PhysicalDeviceLayeredApiPropertiesListKHR & operator=( PhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71130 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71131 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71132     PhysicalDeviceLayeredApiPropertiesListKHR & operator=( VkPhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) VULKAN_HPP_NOEXCEPT
71133     {
71134       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR const *>( &rhs );
71135       return *this;
71136     }
71137 
71138 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71139     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
71140     {
71141       pNext = pNext_;
71142       return *this;
71143     }
71144 
setLayeredApiCountVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71145     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR & setLayeredApiCount( uint32_t layeredApiCount_ ) VULKAN_HPP_NOEXCEPT
71146     {
71147       layeredApiCount = layeredApiCount_;
71148       return *this;
71149     }
71150 
71151     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR &
setPLayeredApisVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71152       setPLayeredApis( VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR * pLayeredApis_ ) VULKAN_HPP_NOEXCEPT
71153     {
71154       pLayeredApis = pLayeredApis_;
71155       return *this;
71156     }
71157 
71158 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setLayeredApisVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71159     PhysicalDeviceLayeredApiPropertiesListKHR & setLayeredApis(
71160       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR> const & layeredApis_ ) VULKAN_HPP_NOEXCEPT
71161     {
71162       layeredApiCount = static_cast<uint32_t>( layeredApis_.size() );
71163       pLayeredApis    = layeredApis_.data();
71164       return *this;
71165     }
71166 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
71167 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71168 
operator VkPhysicalDeviceLayeredApiPropertiesListKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71169     operator VkPhysicalDeviceLayeredApiPropertiesListKHR const &() const VULKAN_HPP_NOEXCEPT
71170     {
71171       return *reinterpret_cast<const VkPhysicalDeviceLayeredApiPropertiesListKHR *>( this );
71172     }
71173 
operator VkPhysicalDeviceLayeredApiPropertiesListKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71174     operator VkPhysicalDeviceLayeredApiPropertiesListKHR &() VULKAN_HPP_NOEXCEPT
71175     {
71176       return *reinterpret_cast<VkPhysicalDeviceLayeredApiPropertiesListKHR *>( this );
71177     }
71178 
71179 #if defined( VULKAN_HPP_USE_REFLECT )
71180 #  if 14 <= VULKAN_HPP_CPP_VERSION
71181     auto
71182 #  else
71183     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
71184                void * const &,
71185                uint32_t const &,
71186                VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR * const &>
71187 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71188       reflect() const VULKAN_HPP_NOEXCEPT
71189     {
71190       return std::tie( sType, pNext, layeredApiCount, pLayeredApis );
71191     }
71192 #endif
71193 
71194 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71195     auto operator<=>( PhysicalDeviceLayeredApiPropertiesListKHR const & ) const = default;
71196 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71197     bool operator==( PhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
71198     {
71199 #  if defined( VULKAN_HPP_USE_REFLECT )
71200       return this->reflect() == rhs.reflect();
71201 #  else
71202       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( layeredApiCount == rhs.layeredApiCount ) && ( pLayeredApis == rhs.pLayeredApis );
71203 #  endif
71204     }
71205 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR71206     bool operator!=( PhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
71207     {
71208       return !operator==( rhs );
71209     }
71210 #endif
71211 
71212   public:
71213     VULKAN_HPP_NAMESPACE::StructureType                           sType           = StructureType::ePhysicalDeviceLayeredApiPropertiesListKHR;
71214     void *                                                        pNext           = {};
71215     uint32_t                                                      layeredApiCount = {};
71216     VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR * pLayeredApis    = {};
71217   };
71218 
71219   template <>
71220   struct CppType<StructureType, StructureType::ePhysicalDeviceLayeredApiPropertiesListKHR>
71221   {
71222     using Type = PhysicalDeviceLayeredApiPropertiesListKHR;
71223   };
71224 
71225   struct PhysicalDeviceLimits
71226   {
71227     using NativeType = VkPhysicalDeviceLimits;
71228 
71229 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLimitsVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71230     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits( uint32_t                               maxImageDimension1D_                             = {},
71231                                                   uint32_t                               maxImageDimension2D_                             = {},
71232                                                   uint32_t                               maxImageDimension3D_                             = {},
71233                                                   uint32_t                               maxImageDimensionCube_                           = {},
71234                                                   uint32_t                               maxImageArrayLayers_                             = {},
71235                                                   uint32_t                               maxTexelBufferElements_                          = {},
71236                                                   uint32_t                               maxUniformBufferRange_                           = {},
71237                                                   uint32_t                               maxStorageBufferRange_                           = {},
71238                                                   uint32_t                               maxPushConstantsSize_                            = {},
71239                                                   uint32_t                               maxMemoryAllocationCount_                        = {},
71240                                                   uint32_t                               maxSamplerAllocationCount_                       = {},
71241                                                   VULKAN_HPP_NAMESPACE::DeviceSize       bufferImageGranularity_                          = {},
71242                                                   VULKAN_HPP_NAMESPACE::DeviceSize       sparseAddressSpaceSize_                          = {},
71243                                                   uint32_t                               maxBoundDescriptorSets_                          = {},
71244                                                   uint32_t                               maxPerStageDescriptorSamplers_                   = {},
71245                                                   uint32_t                               maxPerStageDescriptorUniformBuffers_             = {},
71246                                                   uint32_t                               maxPerStageDescriptorStorageBuffers_             = {},
71247                                                   uint32_t                               maxPerStageDescriptorSampledImages_              = {},
71248                                                   uint32_t                               maxPerStageDescriptorStorageImages_              = {},
71249                                                   uint32_t                               maxPerStageDescriptorInputAttachments_           = {},
71250                                                   uint32_t                               maxPerStageResources_                            = {},
71251                                                   uint32_t                               maxDescriptorSetSamplers_                        = {},
71252                                                   uint32_t                               maxDescriptorSetUniformBuffers_                  = {},
71253                                                   uint32_t                               maxDescriptorSetUniformBuffersDynamic_           = {},
71254                                                   uint32_t                               maxDescriptorSetStorageBuffers_                  = {},
71255                                                   uint32_t                               maxDescriptorSetStorageBuffersDynamic_           = {},
71256                                                   uint32_t                               maxDescriptorSetSampledImages_                   = {},
71257                                                   uint32_t                               maxDescriptorSetStorageImages_                   = {},
71258                                                   uint32_t                               maxDescriptorSetInputAttachments_                = {},
71259                                                   uint32_t                               maxVertexInputAttributes_                        = {},
71260                                                   uint32_t                               maxVertexInputBindings_                          = {},
71261                                                   uint32_t                               maxVertexInputAttributeOffset_                   = {},
71262                                                   uint32_t                               maxVertexInputBindingStride_                     = {},
71263                                                   uint32_t                               maxVertexOutputComponents_                       = {},
71264                                                   uint32_t                               maxTessellationGenerationLevel_                  = {},
71265                                                   uint32_t                               maxTessellationPatchSize_                        = {},
71266                                                   uint32_t                               maxTessellationControlPerVertexInputComponents_  = {},
71267                                                   uint32_t                               maxTessellationControlPerVertexOutputComponents_ = {},
71268                                                   uint32_t                               maxTessellationControlPerPatchOutputComponents_  = {},
71269                                                   uint32_t                               maxTessellationControlTotalOutputComponents_     = {},
71270                                                   uint32_t                               maxTessellationEvaluationInputComponents_        = {},
71271                                                   uint32_t                               maxTessellationEvaluationOutputComponents_       = {},
71272                                                   uint32_t                               maxGeometryShaderInvocations_                    = {},
71273                                                   uint32_t                               maxGeometryInputComponents_                      = {},
71274                                                   uint32_t                               maxGeometryOutputComponents_                     = {},
71275                                                   uint32_t                               maxGeometryOutputVertices_                       = {},
71276                                                   uint32_t                               maxGeometryTotalOutputComponents_                = {},
71277                                                   uint32_t                               maxFragmentInputComponents_                      = {},
71278                                                   uint32_t                               maxFragmentOutputAttachments_                    = {},
71279                                                   uint32_t                               maxFragmentDualSrcAttachments_                   = {},
71280                                                   uint32_t                               maxFragmentCombinedOutputResources_              = {},
71281                                                   uint32_t                               maxComputeSharedMemorySize_                      = {},
71282                                                   std::array<uint32_t, 3> const &        maxComputeWorkGroupCount_                        = {},
71283                                                   uint32_t                               maxComputeWorkGroupInvocations_                  = {},
71284                                                   std::array<uint32_t, 3> const &        maxComputeWorkGroupSize_                         = {},
71285                                                   uint32_t                               subPixelPrecisionBits_                           = {},
71286                                                   uint32_t                               subTexelPrecisionBits_                           = {},
71287                                                   uint32_t                               mipmapPrecisionBits_                             = {},
71288                                                   uint32_t                               maxDrawIndexedIndexValue_                        = {},
71289                                                   uint32_t                               maxDrawIndirectCount_                            = {},
71290                                                   float                                  maxSamplerLodBias_                               = {},
71291                                                   float                                  maxSamplerAnisotropy_                            = {},
71292                                                   uint32_t                               maxViewports_                                    = {},
71293                                                   std::array<uint32_t, 2> const &        maxViewportDimensions_                           = {},
71294                                                   std::array<float, 2> const &           viewportBoundsRange_                             = {},
71295                                                   uint32_t                               viewportSubPixelBits_                            = {},
71296                                                   size_t                                 minMemoryMapAlignment_                           = {},
71297                                                   VULKAN_HPP_NAMESPACE::DeviceSize       minTexelBufferOffsetAlignment_                   = {},
71298                                                   VULKAN_HPP_NAMESPACE::DeviceSize       minUniformBufferOffsetAlignment_                 = {},
71299                                                   VULKAN_HPP_NAMESPACE::DeviceSize       minStorageBufferOffsetAlignment_                 = {},
71300                                                   int32_t                                minTexelOffset_                                  = {},
71301                                                   uint32_t                               maxTexelOffset_                                  = {},
71302                                                   int32_t                                minTexelGatherOffset_                            = {},
71303                                                   uint32_t                               maxTexelGatherOffset_                            = {},
71304                                                   float                                  minInterpolationOffset_                          = {},
71305                                                   float                                  maxInterpolationOffset_                          = {},
71306                                                   uint32_t                               subPixelInterpolationOffsetBits_                 = {},
71307                                                   uint32_t                               maxFramebufferWidth_                             = {},
71308                                                   uint32_t                               maxFramebufferHeight_                            = {},
71309                                                   uint32_t                               maxFramebufferLayers_                            = {},
71310                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferColorSampleCounts_                    = {},
71311                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferDepthSampleCounts_                    = {},
71312                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferStencilSampleCounts_                  = {},
71313                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferNoAttachmentsSampleCounts_            = {},
71314                                                   uint32_t                               maxColorAttachments_                             = {},
71315                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageColorSampleCounts_                   = {},
71316                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageIntegerSampleCounts_                 = {},
71317                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageDepthSampleCounts_                   = {},
71318                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageStencilSampleCounts_                 = {},
71319                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags storageImageSampleCounts_                        = {},
71320                                                   uint32_t                               maxSampleMaskWords_                              = {},
71321                                                   VULKAN_HPP_NAMESPACE::Bool32           timestampComputeAndGraphics_                     = {},
71322                                                   float                                  timestampPeriod_                                 = {},
71323                                                   uint32_t                               maxClipDistances_                                = {},
71324                                                   uint32_t                               maxCullDistances_                                = {},
71325                                                   uint32_t                               maxCombinedClipAndCullDistances_                 = {},
71326                                                   uint32_t                               discreteQueuePriorities_                         = {},
71327                                                   std::array<float, 2> const &           pointSizeRange_                                  = {},
71328                                                   std::array<float, 2> const &           lineWidthRange_                                  = {},
71329                                                   float                                  pointSizeGranularity_                            = {},
71330                                                   float                                  lineWidthGranularity_                            = {},
71331                                                   VULKAN_HPP_NAMESPACE::Bool32           strictLines_                                     = {},
71332                                                   VULKAN_HPP_NAMESPACE::Bool32           standardSampleLocations_                         = {},
71333                                                   VULKAN_HPP_NAMESPACE::DeviceSize       optimalBufferCopyOffsetAlignment_                = {},
71334                                                   VULKAN_HPP_NAMESPACE::DeviceSize       optimalBufferCopyRowPitchAlignment_              = {},
71335                                                   VULKAN_HPP_NAMESPACE::DeviceSize       nonCoherentAtomSize_ = {} ) VULKAN_HPP_NOEXCEPT
71336       : maxImageDimension1D{ maxImageDimension1D_ }
71337       , maxImageDimension2D{ maxImageDimension2D_ }
71338       , maxImageDimension3D{ maxImageDimension3D_ }
71339       , maxImageDimensionCube{ maxImageDimensionCube_ }
71340       , maxImageArrayLayers{ maxImageArrayLayers_ }
71341       , maxTexelBufferElements{ maxTexelBufferElements_ }
71342       , maxUniformBufferRange{ maxUniformBufferRange_ }
71343       , maxStorageBufferRange{ maxStorageBufferRange_ }
71344       , maxPushConstantsSize{ maxPushConstantsSize_ }
71345       , maxMemoryAllocationCount{ maxMemoryAllocationCount_ }
71346       , maxSamplerAllocationCount{ maxSamplerAllocationCount_ }
71347       , bufferImageGranularity{ bufferImageGranularity_ }
71348       , sparseAddressSpaceSize{ sparseAddressSpaceSize_ }
71349       , maxBoundDescriptorSets{ maxBoundDescriptorSets_ }
71350       , maxPerStageDescriptorSamplers{ maxPerStageDescriptorSamplers_ }
71351       , maxPerStageDescriptorUniformBuffers{ maxPerStageDescriptorUniformBuffers_ }
71352       , maxPerStageDescriptorStorageBuffers{ maxPerStageDescriptorStorageBuffers_ }
71353       , maxPerStageDescriptorSampledImages{ maxPerStageDescriptorSampledImages_ }
71354       , maxPerStageDescriptorStorageImages{ maxPerStageDescriptorStorageImages_ }
71355       , maxPerStageDescriptorInputAttachments{ maxPerStageDescriptorInputAttachments_ }
71356       , maxPerStageResources{ maxPerStageResources_ }
71357       , maxDescriptorSetSamplers{ maxDescriptorSetSamplers_ }
71358       , maxDescriptorSetUniformBuffers{ maxDescriptorSetUniformBuffers_ }
71359       , maxDescriptorSetUniformBuffersDynamic{ maxDescriptorSetUniformBuffersDynamic_ }
71360       , maxDescriptorSetStorageBuffers{ maxDescriptorSetStorageBuffers_ }
71361       , maxDescriptorSetStorageBuffersDynamic{ maxDescriptorSetStorageBuffersDynamic_ }
71362       , maxDescriptorSetSampledImages{ maxDescriptorSetSampledImages_ }
71363       , maxDescriptorSetStorageImages{ maxDescriptorSetStorageImages_ }
71364       , maxDescriptorSetInputAttachments{ maxDescriptorSetInputAttachments_ }
71365       , maxVertexInputAttributes{ maxVertexInputAttributes_ }
71366       , maxVertexInputBindings{ maxVertexInputBindings_ }
71367       , maxVertexInputAttributeOffset{ maxVertexInputAttributeOffset_ }
71368       , maxVertexInputBindingStride{ maxVertexInputBindingStride_ }
71369       , maxVertexOutputComponents{ maxVertexOutputComponents_ }
71370       , maxTessellationGenerationLevel{ maxTessellationGenerationLevel_ }
71371       , maxTessellationPatchSize{ maxTessellationPatchSize_ }
71372       , maxTessellationControlPerVertexInputComponents{ maxTessellationControlPerVertexInputComponents_ }
71373       , maxTessellationControlPerVertexOutputComponents{ maxTessellationControlPerVertexOutputComponents_ }
71374       , maxTessellationControlPerPatchOutputComponents{ maxTessellationControlPerPatchOutputComponents_ }
71375       , maxTessellationControlTotalOutputComponents{ maxTessellationControlTotalOutputComponents_ }
71376       , maxTessellationEvaluationInputComponents{ maxTessellationEvaluationInputComponents_ }
71377       , maxTessellationEvaluationOutputComponents{ maxTessellationEvaluationOutputComponents_ }
71378       , maxGeometryShaderInvocations{ maxGeometryShaderInvocations_ }
71379       , maxGeometryInputComponents{ maxGeometryInputComponents_ }
71380       , maxGeometryOutputComponents{ maxGeometryOutputComponents_ }
71381       , maxGeometryOutputVertices{ maxGeometryOutputVertices_ }
71382       , maxGeometryTotalOutputComponents{ maxGeometryTotalOutputComponents_ }
71383       , maxFragmentInputComponents{ maxFragmentInputComponents_ }
71384       , maxFragmentOutputAttachments{ maxFragmentOutputAttachments_ }
71385       , maxFragmentDualSrcAttachments{ maxFragmentDualSrcAttachments_ }
71386       , maxFragmentCombinedOutputResources{ maxFragmentCombinedOutputResources_ }
71387       , maxComputeSharedMemorySize{ maxComputeSharedMemorySize_ }
71388       , maxComputeWorkGroupCount{ maxComputeWorkGroupCount_ }
71389       , maxComputeWorkGroupInvocations{ maxComputeWorkGroupInvocations_ }
71390       , maxComputeWorkGroupSize{ maxComputeWorkGroupSize_ }
71391       , subPixelPrecisionBits{ subPixelPrecisionBits_ }
71392       , subTexelPrecisionBits{ subTexelPrecisionBits_ }
71393       , mipmapPrecisionBits{ mipmapPrecisionBits_ }
71394       , maxDrawIndexedIndexValue{ maxDrawIndexedIndexValue_ }
71395       , maxDrawIndirectCount{ maxDrawIndirectCount_ }
71396       , maxSamplerLodBias{ maxSamplerLodBias_ }
71397       , maxSamplerAnisotropy{ maxSamplerAnisotropy_ }
71398       , maxViewports{ maxViewports_ }
71399       , maxViewportDimensions{ maxViewportDimensions_ }
71400       , viewportBoundsRange{ viewportBoundsRange_ }
71401       , viewportSubPixelBits{ viewportSubPixelBits_ }
71402       , minMemoryMapAlignment{ minMemoryMapAlignment_ }
71403       , minTexelBufferOffsetAlignment{ minTexelBufferOffsetAlignment_ }
71404       , minUniformBufferOffsetAlignment{ minUniformBufferOffsetAlignment_ }
71405       , minStorageBufferOffsetAlignment{ minStorageBufferOffsetAlignment_ }
71406       , minTexelOffset{ minTexelOffset_ }
71407       , maxTexelOffset{ maxTexelOffset_ }
71408       , minTexelGatherOffset{ minTexelGatherOffset_ }
71409       , maxTexelGatherOffset{ maxTexelGatherOffset_ }
71410       , minInterpolationOffset{ minInterpolationOffset_ }
71411       , maxInterpolationOffset{ maxInterpolationOffset_ }
71412       , subPixelInterpolationOffsetBits{ subPixelInterpolationOffsetBits_ }
71413       , maxFramebufferWidth{ maxFramebufferWidth_ }
71414       , maxFramebufferHeight{ maxFramebufferHeight_ }
71415       , maxFramebufferLayers{ maxFramebufferLayers_ }
71416       , framebufferColorSampleCounts{ framebufferColorSampleCounts_ }
71417       , framebufferDepthSampleCounts{ framebufferDepthSampleCounts_ }
71418       , framebufferStencilSampleCounts{ framebufferStencilSampleCounts_ }
71419       , framebufferNoAttachmentsSampleCounts{ framebufferNoAttachmentsSampleCounts_ }
71420       , maxColorAttachments{ maxColorAttachments_ }
71421       , sampledImageColorSampleCounts{ sampledImageColorSampleCounts_ }
71422       , sampledImageIntegerSampleCounts{ sampledImageIntegerSampleCounts_ }
71423       , sampledImageDepthSampleCounts{ sampledImageDepthSampleCounts_ }
71424       , sampledImageStencilSampleCounts{ sampledImageStencilSampleCounts_ }
71425       , storageImageSampleCounts{ storageImageSampleCounts_ }
71426       , maxSampleMaskWords{ maxSampleMaskWords_ }
71427       , timestampComputeAndGraphics{ timestampComputeAndGraphics_ }
71428       , timestampPeriod{ timestampPeriod_ }
71429       , maxClipDistances{ maxClipDistances_ }
71430       , maxCullDistances{ maxCullDistances_ }
71431       , maxCombinedClipAndCullDistances{ maxCombinedClipAndCullDistances_ }
71432       , discreteQueuePriorities{ discreteQueuePriorities_ }
71433       , pointSizeRange{ pointSizeRange_ }
71434       , lineWidthRange{ lineWidthRange_ }
71435       , pointSizeGranularity{ pointSizeGranularity_ }
71436       , lineWidthGranularity{ lineWidthGranularity_ }
71437       , strictLines{ strictLines_ }
71438       , standardSampleLocations{ standardSampleLocations_ }
71439       , optimalBufferCopyOffsetAlignment{ optimalBufferCopyOffsetAlignment_ }
71440       , optimalBufferCopyRowPitchAlignment{ optimalBufferCopyRowPitchAlignment_ }
71441       , nonCoherentAtomSize{ nonCoherentAtomSize_ }
71442     {
71443     }
71444 
71445     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71446 
PhysicalDeviceLimitsVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71447     PhysicalDeviceLimits( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
71448       : PhysicalDeviceLimits( *reinterpret_cast<PhysicalDeviceLimits const *>( &rhs ) )
71449     {
71450     }
71451 
71452     PhysicalDeviceLimits & operator=( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71453 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71454 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71455     PhysicalDeviceLimits & operator=( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
71456     {
71457       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const *>( &rhs );
71458       return *this;
71459     }
71460 
operator VkPhysicalDeviceLimits const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71461     operator VkPhysicalDeviceLimits const &() const VULKAN_HPP_NOEXCEPT
71462     {
71463       return *reinterpret_cast<const VkPhysicalDeviceLimits *>( this );
71464     }
71465 
operator VkPhysicalDeviceLimits&VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71466     operator VkPhysicalDeviceLimits &() VULKAN_HPP_NOEXCEPT
71467     {
71468       return *reinterpret_cast<VkPhysicalDeviceLimits *>( this );
71469     }
71470 
71471 #if defined( VULKAN_HPP_USE_REFLECT )
71472 #  if 14 <= VULKAN_HPP_CPP_VERSION
71473     auto
71474 #  else
71475     std::tuple<uint32_t const &,
71476                uint32_t const &,
71477                uint32_t const &,
71478                uint32_t const &,
71479                uint32_t const &,
71480                uint32_t const &,
71481                uint32_t const &,
71482                uint32_t const &,
71483                uint32_t const &,
71484                uint32_t const &,
71485                uint32_t const &,
71486                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71487                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71488                uint32_t const &,
71489                uint32_t const &,
71490                uint32_t const &,
71491                uint32_t const &,
71492                uint32_t const &,
71493                uint32_t const &,
71494                uint32_t const &,
71495                uint32_t const &,
71496                uint32_t const &,
71497                uint32_t const &,
71498                uint32_t const &,
71499                uint32_t const &,
71500                uint32_t const &,
71501                uint32_t const &,
71502                uint32_t const &,
71503                uint32_t const &,
71504                uint32_t const &,
71505                uint32_t const &,
71506                uint32_t const &,
71507                uint32_t const &,
71508                uint32_t const &,
71509                uint32_t const &,
71510                uint32_t const &,
71511                uint32_t const &,
71512                uint32_t const &,
71513                uint32_t const &,
71514                uint32_t const &,
71515                uint32_t const &,
71516                uint32_t const &,
71517                uint32_t const &,
71518                uint32_t const &,
71519                uint32_t const &,
71520                uint32_t const &,
71521                uint32_t const &,
71522                uint32_t const &,
71523                uint32_t const &,
71524                uint32_t const &,
71525                uint32_t const &,
71526                uint32_t const &,
71527                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
71528                uint32_t const &,
71529                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
71530                uint32_t const &,
71531                uint32_t const &,
71532                uint32_t const &,
71533                uint32_t const &,
71534                uint32_t const &,
71535                float const &,
71536                float const &,
71537                uint32_t const &,
71538                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 2> const &,
71539                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
71540                uint32_t const &,
71541                size_t const &,
71542                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71543                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71544                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71545                int32_t const &,
71546                uint32_t const &,
71547                int32_t const &,
71548                uint32_t const &,
71549                float const &,
71550                float const &,
71551                uint32_t const &,
71552                uint32_t const &,
71553                uint32_t const &,
71554                uint32_t const &,
71555                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71556                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71557                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71558                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71559                uint32_t const &,
71560                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71561                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71562                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71563                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71564                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71565                uint32_t const &,
71566                VULKAN_HPP_NAMESPACE::Bool32 const &,
71567                float const &,
71568                uint32_t const &,
71569                uint32_t const &,
71570                uint32_t const &,
71571                uint32_t const &,
71572                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
71573                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
71574                float const &,
71575                float const &,
71576                VULKAN_HPP_NAMESPACE::Bool32 const &,
71577                VULKAN_HPP_NAMESPACE::Bool32 const &,
71578                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71579                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71580                VULKAN_HPP_NAMESPACE::DeviceSize const &>
71581 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71582       reflect() const VULKAN_HPP_NOEXCEPT
71583     {
71584       return std::tie( maxImageDimension1D,
71585                        maxImageDimension2D,
71586                        maxImageDimension3D,
71587                        maxImageDimensionCube,
71588                        maxImageArrayLayers,
71589                        maxTexelBufferElements,
71590                        maxUniformBufferRange,
71591                        maxStorageBufferRange,
71592                        maxPushConstantsSize,
71593                        maxMemoryAllocationCount,
71594                        maxSamplerAllocationCount,
71595                        bufferImageGranularity,
71596                        sparseAddressSpaceSize,
71597                        maxBoundDescriptorSets,
71598                        maxPerStageDescriptorSamplers,
71599                        maxPerStageDescriptorUniformBuffers,
71600                        maxPerStageDescriptorStorageBuffers,
71601                        maxPerStageDescriptorSampledImages,
71602                        maxPerStageDescriptorStorageImages,
71603                        maxPerStageDescriptorInputAttachments,
71604                        maxPerStageResources,
71605                        maxDescriptorSetSamplers,
71606                        maxDescriptorSetUniformBuffers,
71607                        maxDescriptorSetUniformBuffersDynamic,
71608                        maxDescriptorSetStorageBuffers,
71609                        maxDescriptorSetStorageBuffersDynamic,
71610                        maxDescriptorSetSampledImages,
71611                        maxDescriptorSetStorageImages,
71612                        maxDescriptorSetInputAttachments,
71613                        maxVertexInputAttributes,
71614                        maxVertexInputBindings,
71615                        maxVertexInputAttributeOffset,
71616                        maxVertexInputBindingStride,
71617                        maxVertexOutputComponents,
71618                        maxTessellationGenerationLevel,
71619                        maxTessellationPatchSize,
71620                        maxTessellationControlPerVertexInputComponents,
71621                        maxTessellationControlPerVertexOutputComponents,
71622                        maxTessellationControlPerPatchOutputComponents,
71623                        maxTessellationControlTotalOutputComponents,
71624                        maxTessellationEvaluationInputComponents,
71625                        maxTessellationEvaluationOutputComponents,
71626                        maxGeometryShaderInvocations,
71627                        maxGeometryInputComponents,
71628                        maxGeometryOutputComponents,
71629                        maxGeometryOutputVertices,
71630                        maxGeometryTotalOutputComponents,
71631                        maxFragmentInputComponents,
71632                        maxFragmentOutputAttachments,
71633                        maxFragmentDualSrcAttachments,
71634                        maxFragmentCombinedOutputResources,
71635                        maxComputeSharedMemorySize,
71636                        maxComputeWorkGroupCount,
71637                        maxComputeWorkGroupInvocations,
71638                        maxComputeWorkGroupSize,
71639                        subPixelPrecisionBits,
71640                        subTexelPrecisionBits,
71641                        mipmapPrecisionBits,
71642                        maxDrawIndexedIndexValue,
71643                        maxDrawIndirectCount,
71644                        maxSamplerLodBias,
71645                        maxSamplerAnisotropy,
71646                        maxViewports,
71647                        maxViewportDimensions,
71648                        viewportBoundsRange,
71649                        viewportSubPixelBits,
71650                        minMemoryMapAlignment,
71651                        minTexelBufferOffsetAlignment,
71652                        minUniformBufferOffsetAlignment,
71653                        minStorageBufferOffsetAlignment,
71654                        minTexelOffset,
71655                        maxTexelOffset,
71656                        minTexelGatherOffset,
71657                        maxTexelGatherOffset,
71658                        minInterpolationOffset,
71659                        maxInterpolationOffset,
71660                        subPixelInterpolationOffsetBits,
71661                        maxFramebufferWidth,
71662                        maxFramebufferHeight,
71663                        maxFramebufferLayers,
71664                        framebufferColorSampleCounts,
71665                        framebufferDepthSampleCounts,
71666                        framebufferStencilSampleCounts,
71667                        framebufferNoAttachmentsSampleCounts,
71668                        maxColorAttachments,
71669                        sampledImageColorSampleCounts,
71670                        sampledImageIntegerSampleCounts,
71671                        sampledImageDepthSampleCounts,
71672                        sampledImageStencilSampleCounts,
71673                        storageImageSampleCounts,
71674                        maxSampleMaskWords,
71675                        timestampComputeAndGraphics,
71676                        timestampPeriod,
71677                        maxClipDistances,
71678                        maxCullDistances,
71679                        maxCombinedClipAndCullDistances,
71680                        discreteQueuePriorities,
71681                        pointSizeRange,
71682                        lineWidthRange,
71683                        pointSizeGranularity,
71684                        lineWidthGranularity,
71685                        strictLines,
71686                        standardSampleLocations,
71687                        optimalBufferCopyOffsetAlignment,
71688                        optimalBufferCopyRowPitchAlignment,
71689                        nonCoherentAtomSize );
71690     }
71691 #endif
71692 
71693 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71694     auto operator<=>( PhysicalDeviceLimits const & ) const = default;
71695 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71696     bool operator==( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT
71697     {
71698 #  if defined( VULKAN_HPP_USE_REFLECT )
71699       return this->reflect() == rhs.reflect();
71700 #  else
71701       return ( maxImageDimension1D == rhs.maxImageDimension1D ) && ( maxImageDimension2D == rhs.maxImageDimension2D ) &&
71702              ( maxImageDimension3D == rhs.maxImageDimension3D ) && ( maxImageDimensionCube == rhs.maxImageDimensionCube ) &&
71703              ( maxImageArrayLayers == rhs.maxImageArrayLayers ) && ( maxTexelBufferElements == rhs.maxTexelBufferElements ) &&
71704              ( maxUniformBufferRange == rhs.maxUniformBufferRange ) && ( maxStorageBufferRange == rhs.maxStorageBufferRange ) &&
71705              ( maxPushConstantsSize == rhs.maxPushConstantsSize ) && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount ) &&
71706              ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount ) && ( bufferImageGranularity == rhs.bufferImageGranularity ) &&
71707              ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize ) && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets ) &&
71708              ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers ) &&
71709              ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers ) &&
71710              ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers ) &&
71711              ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages ) &&
71712              ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages ) &&
71713              ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments ) && ( maxPerStageResources == rhs.maxPerStageResources ) &&
71714              ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers ) && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers ) &&
71715              ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic ) &&
71716              ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers ) &&
71717              ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic ) &&
71718              ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages ) && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages ) &&
71719              ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments ) && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes ) &&
71720              ( maxVertexInputBindings == rhs.maxVertexInputBindings ) && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset ) &&
71721              ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride ) && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents ) &&
71722              ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel ) && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize ) &&
71723              ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents ) &&
71724              ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents ) &&
71725              ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents ) &&
71726              ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents ) &&
71727              ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents ) &&
71728              ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents ) &&
71729              ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations ) && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents ) &&
71730              ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents ) && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices ) &&
71731              ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents ) && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents ) &&
71732              ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments ) && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments ) &&
71733              ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources ) &&
71734              ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize ) && ( maxComputeWorkGroupCount == rhs.maxComputeWorkGroupCount ) &&
71735              ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations ) && ( maxComputeWorkGroupSize == rhs.maxComputeWorkGroupSize ) &&
71736              ( subPixelPrecisionBits == rhs.subPixelPrecisionBits ) && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits ) &&
71737              ( mipmapPrecisionBits == rhs.mipmapPrecisionBits ) && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue ) &&
71738              ( maxDrawIndirectCount == rhs.maxDrawIndirectCount ) && ( maxSamplerLodBias == rhs.maxSamplerLodBias ) &&
71739              ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy ) && ( maxViewports == rhs.maxViewports ) &&
71740              ( maxViewportDimensions == rhs.maxViewportDimensions ) && ( viewportBoundsRange == rhs.viewportBoundsRange ) &&
71741              ( viewportSubPixelBits == rhs.viewportSubPixelBits ) && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment ) &&
71742              ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment ) &&
71743              ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment ) &&
71744              ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment ) && ( minTexelOffset == rhs.minTexelOffset ) &&
71745              ( maxTexelOffset == rhs.maxTexelOffset ) && ( minTexelGatherOffset == rhs.minTexelGatherOffset ) &&
71746              ( maxTexelGatherOffset == rhs.maxTexelGatherOffset ) && ( minInterpolationOffset == rhs.minInterpolationOffset ) &&
71747              ( maxInterpolationOffset == rhs.maxInterpolationOffset ) && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits ) &&
71748              ( maxFramebufferWidth == rhs.maxFramebufferWidth ) && ( maxFramebufferHeight == rhs.maxFramebufferHeight ) &&
71749              ( maxFramebufferLayers == rhs.maxFramebufferLayers ) && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts ) &&
71750              ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts ) && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts ) &&
71751              ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts ) && ( maxColorAttachments == rhs.maxColorAttachments ) &&
71752              ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts ) &&
71753              ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts ) &&
71754              ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts ) &&
71755              ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts ) && ( storageImageSampleCounts == rhs.storageImageSampleCounts ) &&
71756              ( maxSampleMaskWords == rhs.maxSampleMaskWords ) && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics ) &&
71757              ( timestampPeriod == rhs.timestampPeriod ) && ( maxClipDistances == rhs.maxClipDistances ) && ( maxCullDistances == rhs.maxCullDistances ) &&
71758              ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances ) && ( discreteQueuePriorities == rhs.discreteQueuePriorities ) &&
71759              ( pointSizeRange == rhs.pointSizeRange ) && ( lineWidthRange == rhs.lineWidthRange ) && ( pointSizeGranularity == rhs.pointSizeGranularity ) &&
71760              ( lineWidthGranularity == rhs.lineWidthGranularity ) && ( strictLines == rhs.strictLines ) &&
71761              ( standardSampleLocations == rhs.standardSampleLocations ) && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment ) &&
71762              ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment ) && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
71763 #  endif
71764     }
71765 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71766     bool operator!=( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT
71767     {
71768       return !operator==( rhs );
71769     }
71770 #endif
71771 
71772   public:
71773     uint32_t                                          maxImageDimension1D                             = {};
71774     uint32_t                                          maxImageDimension2D                             = {};
71775     uint32_t                                          maxImageDimension3D                             = {};
71776     uint32_t                                          maxImageDimensionCube                           = {};
71777     uint32_t                                          maxImageArrayLayers                             = {};
71778     uint32_t                                          maxTexelBufferElements                          = {};
71779     uint32_t                                          maxUniformBufferRange                           = {};
71780     uint32_t                                          maxStorageBufferRange                           = {};
71781     uint32_t                                          maxPushConstantsSize                            = {};
71782     uint32_t                                          maxMemoryAllocationCount                        = {};
71783     uint32_t                                          maxSamplerAllocationCount                       = {};
71784     VULKAN_HPP_NAMESPACE::DeviceSize                  bufferImageGranularity                          = {};
71785     VULKAN_HPP_NAMESPACE::DeviceSize                  sparseAddressSpaceSize                          = {};
71786     uint32_t                                          maxBoundDescriptorSets                          = {};
71787     uint32_t                                          maxPerStageDescriptorSamplers                   = {};
71788     uint32_t                                          maxPerStageDescriptorUniformBuffers             = {};
71789     uint32_t                                          maxPerStageDescriptorStorageBuffers             = {};
71790     uint32_t                                          maxPerStageDescriptorSampledImages              = {};
71791     uint32_t                                          maxPerStageDescriptorStorageImages              = {};
71792     uint32_t                                          maxPerStageDescriptorInputAttachments           = {};
71793     uint32_t                                          maxPerStageResources                            = {};
71794     uint32_t                                          maxDescriptorSetSamplers                        = {};
71795     uint32_t                                          maxDescriptorSetUniformBuffers                  = {};
71796     uint32_t                                          maxDescriptorSetUniformBuffersDynamic           = {};
71797     uint32_t                                          maxDescriptorSetStorageBuffers                  = {};
71798     uint32_t                                          maxDescriptorSetStorageBuffersDynamic           = {};
71799     uint32_t                                          maxDescriptorSetSampledImages                   = {};
71800     uint32_t                                          maxDescriptorSetStorageImages                   = {};
71801     uint32_t                                          maxDescriptorSetInputAttachments                = {};
71802     uint32_t                                          maxVertexInputAttributes                        = {};
71803     uint32_t                                          maxVertexInputBindings                          = {};
71804     uint32_t                                          maxVertexInputAttributeOffset                   = {};
71805     uint32_t                                          maxVertexInputBindingStride                     = {};
71806     uint32_t                                          maxVertexOutputComponents                       = {};
71807     uint32_t                                          maxTessellationGenerationLevel                  = {};
71808     uint32_t                                          maxTessellationPatchSize                        = {};
71809     uint32_t                                          maxTessellationControlPerVertexInputComponents  = {};
71810     uint32_t                                          maxTessellationControlPerVertexOutputComponents = {};
71811     uint32_t                                          maxTessellationControlPerPatchOutputComponents  = {};
71812     uint32_t                                          maxTessellationControlTotalOutputComponents     = {};
71813     uint32_t                                          maxTessellationEvaluationInputComponents        = {};
71814     uint32_t                                          maxTessellationEvaluationOutputComponents       = {};
71815     uint32_t                                          maxGeometryShaderInvocations                    = {};
71816     uint32_t                                          maxGeometryInputComponents                      = {};
71817     uint32_t                                          maxGeometryOutputComponents                     = {};
71818     uint32_t                                          maxGeometryOutputVertices                       = {};
71819     uint32_t                                          maxGeometryTotalOutputComponents                = {};
71820     uint32_t                                          maxFragmentInputComponents                      = {};
71821     uint32_t                                          maxFragmentOutputAttachments                    = {};
71822     uint32_t                                          maxFragmentDualSrcAttachments                   = {};
71823     uint32_t                                          maxFragmentCombinedOutputResources              = {};
71824     uint32_t                                          maxComputeSharedMemorySize                      = {};
71825     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxComputeWorkGroupCount                        = {};
71826     uint32_t                                          maxComputeWorkGroupInvocations                  = {};
71827     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxComputeWorkGroupSize                         = {};
71828     uint32_t                                          subPixelPrecisionBits                           = {};
71829     uint32_t                                          subTexelPrecisionBits                           = {};
71830     uint32_t                                          mipmapPrecisionBits                             = {};
71831     uint32_t                                          maxDrawIndexedIndexValue                        = {};
71832     uint32_t                                          maxDrawIndirectCount                            = {};
71833     float                                             maxSamplerLodBias                               = {};
71834     float                                             maxSamplerAnisotropy                            = {};
71835     uint32_t                                          maxViewports                                    = {};
71836     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 2> maxViewportDimensions                           = {};
71837     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2>    viewportBoundsRange                             = {};
71838     uint32_t                                          viewportSubPixelBits                            = {};
71839     size_t                                            minMemoryMapAlignment                           = {};
71840     VULKAN_HPP_NAMESPACE::DeviceSize                  minTexelBufferOffsetAlignment                   = {};
71841     VULKAN_HPP_NAMESPACE::DeviceSize                  minUniformBufferOffsetAlignment                 = {};
71842     VULKAN_HPP_NAMESPACE::DeviceSize                  minStorageBufferOffsetAlignment                 = {};
71843     int32_t                                           minTexelOffset                                  = {};
71844     uint32_t                                          maxTexelOffset                                  = {};
71845     int32_t                                           minTexelGatherOffset                            = {};
71846     uint32_t                                          maxTexelGatherOffset                            = {};
71847     float                                             minInterpolationOffset                          = {};
71848     float                                             maxInterpolationOffset                          = {};
71849     uint32_t                                          subPixelInterpolationOffsetBits                 = {};
71850     uint32_t                                          maxFramebufferWidth                             = {};
71851     uint32_t                                          maxFramebufferHeight                            = {};
71852     uint32_t                                          maxFramebufferLayers                            = {};
71853     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferColorSampleCounts                    = {};
71854     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferDepthSampleCounts                    = {};
71855     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferStencilSampleCounts                  = {};
71856     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferNoAttachmentsSampleCounts            = {};
71857     uint32_t                                          maxColorAttachments                             = {};
71858     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageColorSampleCounts                   = {};
71859     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageIntegerSampleCounts                 = {};
71860     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageDepthSampleCounts                   = {};
71861     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageStencilSampleCounts                 = {};
71862     VULKAN_HPP_NAMESPACE::SampleCountFlags            storageImageSampleCounts                        = {};
71863     uint32_t                                          maxSampleMaskWords                              = {};
71864     VULKAN_HPP_NAMESPACE::Bool32                      timestampComputeAndGraphics                     = {};
71865     float                                             timestampPeriod                                 = {};
71866     uint32_t                                          maxClipDistances                                = {};
71867     uint32_t                                          maxCullDistances                                = {};
71868     uint32_t                                          maxCombinedClipAndCullDistances                 = {};
71869     uint32_t                                          discreteQueuePriorities                         = {};
71870     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2>    pointSizeRange                                  = {};
71871     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2>    lineWidthRange                                  = {};
71872     float                                             pointSizeGranularity                            = {};
71873     float                                             lineWidthGranularity                            = {};
71874     VULKAN_HPP_NAMESPACE::Bool32                      strictLines                                     = {};
71875     VULKAN_HPP_NAMESPACE::Bool32                      standardSampleLocations                         = {};
71876     VULKAN_HPP_NAMESPACE::DeviceSize                  optimalBufferCopyOffsetAlignment                = {};
71877     VULKAN_HPP_NAMESPACE::DeviceSize                  optimalBufferCopyRowPitchAlignment              = {};
71878     VULKAN_HPP_NAMESPACE::DeviceSize                  nonCoherentAtomSize                             = {};
71879   };
71880 
71881   struct PhysicalDeviceSparseProperties
71882   {
71883     using NativeType = VkPhysicalDeviceSparseProperties;
71884 
71885 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSparsePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties71886     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties( VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape_            = {},
71887                                                          VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape_ = {},
71888                                                          VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape_            = {},
71889                                                          VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize_                  = {},
71890                                                          VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict_               = {} ) VULKAN_HPP_NOEXCEPT
71891       : residencyStandard2DBlockShape{ residencyStandard2DBlockShape_ }
71892       , residencyStandard2DMultisampleBlockShape{ residencyStandard2DMultisampleBlockShape_ }
71893       , residencyStandard3DBlockShape{ residencyStandard3DBlockShape_ }
71894       , residencyAlignedMipSize{ residencyAlignedMipSize_ }
71895       , residencyNonResidentStrict{ residencyNonResidentStrict_ }
71896     {
71897     }
71898 
71899     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71900 
PhysicalDeviceSparsePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties71901     PhysicalDeviceSparseProperties( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
71902       : PhysicalDeviceSparseProperties( *reinterpret_cast<PhysicalDeviceSparseProperties const *>( &rhs ) )
71903     {
71904     }
71905 
71906     PhysicalDeviceSparseProperties & operator=( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71907 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71908 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties71909     PhysicalDeviceSparseProperties & operator=( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
71910     {
71911       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const *>( &rhs );
71912       return *this;
71913     }
71914 
operator VkPhysicalDeviceSparseProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties71915     operator VkPhysicalDeviceSparseProperties const &() const VULKAN_HPP_NOEXCEPT
71916     {
71917       return *reinterpret_cast<const VkPhysicalDeviceSparseProperties *>( this );
71918     }
71919 
operator VkPhysicalDeviceSparseProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties71920     operator VkPhysicalDeviceSparseProperties &() VULKAN_HPP_NOEXCEPT
71921     {
71922       return *reinterpret_cast<VkPhysicalDeviceSparseProperties *>( this );
71923     }
71924 
71925 #if defined( VULKAN_HPP_USE_REFLECT )
71926 #  if 14 <= VULKAN_HPP_CPP_VERSION
71927     auto
71928 #  else
71929     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &,
71930                VULKAN_HPP_NAMESPACE::Bool32 const &,
71931                VULKAN_HPP_NAMESPACE::Bool32 const &,
71932                VULKAN_HPP_NAMESPACE::Bool32 const &,
71933                VULKAN_HPP_NAMESPACE::Bool32 const &>
71934 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties71935       reflect() const VULKAN_HPP_NOEXCEPT
71936     {
71937       return std::tie( residencyStandard2DBlockShape,
71938                        residencyStandard2DMultisampleBlockShape,
71939                        residencyStandard3DBlockShape,
71940                        residencyAlignedMipSize,
71941                        residencyNonResidentStrict );
71942     }
71943 #endif
71944 
71945 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71946     auto operator<=>( PhysicalDeviceSparseProperties const & ) const = default;
71947 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties71948     bool operator==( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
71949     {
71950 #  if defined( VULKAN_HPP_USE_REFLECT )
71951       return this->reflect() == rhs.reflect();
71952 #  else
71953       return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape ) &&
71954              ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape ) &&
71955              ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape ) && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize ) &&
71956              ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
71957 #  endif
71958     }
71959 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties71960     bool operator!=( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
71961     {
71962       return !operator==( rhs );
71963     }
71964 #endif
71965 
71966   public:
71967     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape            = {};
71968     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape = {};
71969     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape            = {};
71970     VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize                  = {};
71971     VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict               = {};
71972   };
71973 
71974   struct PhysicalDeviceProperties
71975   {
71976     using NativeType = VkPhysicalDeviceProperties;
71977 
71978 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties71979     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties( uint32_t                                 apiVersion_    = {},
71980                                                       uint32_t                                 driverVersion_ = {},
71981                                                       uint32_t                                 vendorID_      = {},
71982                                                       uint32_t                                 deviceID_      = {},
71983                                                       VULKAN_HPP_NAMESPACE::PhysicalDeviceType deviceType_ = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther,
71984                                                       std::array<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> const & deviceName_        = {},
71985                                                       std::array<uint8_t, VK_UUID_SIZE> const &                  pipelineCacheUUID_ = {},
71986                                                       VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits                 limits_            = {},
71987                                                       VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties       sparseProperties_  = {} ) VULKAN_HPP_NOEXCEPT
71988       : apiVersion{ apiVersion_ }
71989       , driverVersion{ driverVersion_ }
71990       , vendorID{ vendorID_ }
71991       , deviceID{ deviceID_ }
71992       , deviceType{ deviceType_ }
71993       , deviceName{ deviceName_ }
71994       , pipelineCacheUUID{ pipelineCacheUUID_ }
71995       , limits{ limits_ }
71996       , sparseProperties{ sparseProperties_ }
71997     {
71998     }
71999 
72000     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72001 
PhysicalDevicePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties72002     PhysicalDeviceProperties( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
72003       : PhysicalDeviceProperties( *reinterpret_cast<PhysicalDeviceProperties const *>( &rhs ) )
72004     {
72005     }
72006 
72007     PhysicalDeviceProperties & operator=( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72008 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72009 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties72010     PhysicalDeviceProperties & operator=( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
72011     {
72012       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const *>( &rhs );
72013       return *this;
72014     }
72015 
operator VkPhysicalDeviceProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties72016     operator VkPhysicalDeviceProperties const &() const VULKAN_HPP_NOEXCEPT
72017     {
72018       return *reinterpret_cast<const VkPhysicalDeviceProperties *>( this );
72019     }
72020 
operator VkPhysicalDeviceProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties72021     operator VkPhysicalDeviceProperties &() VULKAN_HPP_NOEXCEPT
72022     {
72023       return *reinterpret_cast<VkPhysicalDeviceProperties *>( this );
72024     }
72025 
72026 #if defined( VULKAN_HPP_USE_REFLECT )
72027 #  if 14 <= VULKAN_HPP_CPP_VERSION
72028     auto
72029 #  else
72030     std::tuple<uint32_t const &,
72031                uint32_t const &,
72032                uint32_t const &,
72033                uint32_t const &,
72034                VULKAN_HPP_NAMESPACE::PhysicalDeviceType const &,
72035                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> const &,
72036                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
72037                VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const &,
72038                VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const &>
72039 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties72040       reflect() const VULKAN_HPP_NOEXCEPT
72041     {
72042       return std::tie( apiVersion, driverVersion, vendorID, deviceID, deviceType, deviceName, pipelineCacheUUID, limits, sparseProperties );
72043     }
72044 #endif
72045 
72046 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties72047     std::partial_ordering operator<=>( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
72048     {
72049       if ( auto cmp = apiVersion <=> rhs.apiVersion; cmp != 0 )
72050         return cmp;
72051       if ( auto cmp = driverVersion <=> rhs.driverVersion; cmp != 0 )
72052         return cmp;
72053       if ( auto cmp = vendorID <=> rhs.vendorID; cmp != 0 )
72054         return cmp;
72055       if ( auto cmp = deviceID <=> rhs.deviceID; cmp != 0 )
72056         return cmp;
72057       if ( auto cmp = deviceType <=> rhs.deviceType; cmp != 0 )
72058         return cmp;
72059       if ( auto cmp = strcmp( deviceName, rhs.deviceName ); cmp != 0 )
72060         return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater;
72061       if ( auto cmp = pipelineCacheUUID <=> rhs.pipelineCacheUUID; cmp != 0 )
72062         return cmp;
72063       if ( auto cmp = limits <=> rhs.limits; cmp != 0 )
72064         return cmp;
72065       if ( auto cmp = sparseProperties <=> rhs.sparseProperties; cmp != 0 )
72066         return cmp;
72067 
72068       return std::partial_ordering::equivalent;
72069     }
72070 #endif
72071 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties72072     bool operator==( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
72073     {
72074       return ( apiVersion == rhs.apiVersion ) && ( driverVersion == rhs.driverVersion ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) &&
72075              ( deviceType == rhs.deviceType ) && ( strcmp( deviceName, rhs.deviceName ) == 0 ) && ( pipelineCacheUUID == rhs.pipelineCacheUUID ) &&
72076              ( limits == rhs.limits ) && ( sparseProperties == rhs.sparseProperties );
72077     }
72078 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties72079     bool operator!=( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
72080     {
72081       return !operator==( rhs );
72082     }
72083 
72084   public:
72085     uint32_t                                                                     apiVersion        = {};
72086     uint32_t                                                                     driverVersion     = {};
72087     uint32_t                                                                     vendorID          = {};
72088     uint32_t                                                                     deviceID          = {};
72089     VULKAN_HPP_NAMESPACE::PhysicalDeviceType                                     deviceType        = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther;
72090     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> deviceName        = {};
72091     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE>                  pipelineCacheUUID = {};
72092     VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits                                   limits            = {};
72093     VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties                         sparseProperties  = {};
72094   };
72095 
72096   struct PhysicalDeviceProperties2
72097   {
72098     using NativeType = VkPhysicalDeviceProperties2;
72099 
72100     static const bool                                  allowDuplicate = false;
72101     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProperties2;
72102 
72103 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties272104     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties_ = {},
72105                                                        void *                                         pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
72106       : pNext{ pNext_ }
72107       , properties{ properties_ }
72108     {
72109     }
72110 
72111     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72112 
PhysicalDeviceProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties272113     PhysicalDeviceProperties2( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
72114       : PhysicalDeviceProperties2( *reinterpret_cast<PhysicalDeviceProperties2 const *>( &rhs ) )
72115     {
72116     }
72117 
72118     PhysicalDeviceProperties2 & operator=( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72119 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72120 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties272121     PhysicalDeviceProperties2 & operator=( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
72122     {
72123       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 const *>( &rhs );
72124       return *this;
72125     }
72126 
operator VkPhysicalDeviceProperties2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties272127     operator VkPhysicalDeviceProperties2 const &() const VULKAN_HPP_NOEXCEPT
72128     {
72129       return *reinterpret_cast<const VkPhysicalDeviceProperties2 *>( this );
72130     }
72131 
operator VkPhysicalDeviceProperties2&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties272132     operator VkPhysicalDeviceProperties2 &() VULKAN_HPP_NOEXCEPT
72133     {
72134       return *reinterpret_cast<VkPhysicalDeviceProperties2 *>( this );
72135     }
72136 
72137 #if defined( VULKAN_HPP_USE_REFLECT )
72138 #  if 14 <= VULKAN_HPP_CPP_VERSION
72139     auto
72140 #  else
72141     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const &>
72142 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties272143       reflect() const VULKAN_HPP_NOEXCEPT
72144     {
72145       return std::tie( sType, pNext, properties );
72146     }
72147 #endif
72148 
72149 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72150     auto operator<=>( PhysicalDeviceProperties2 const & ) const = default;
72151 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties272152     bool operator==( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
72153     {
72154 #  if defined( VULKAN_HPP_USE_REFLECT )
72155       return this->reflect() == rhs.reflect();
72156 #  else
72157       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( properties == rhs.properties );
72158 #  endif
72159     }
72160 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties272161     bool operator!=( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
72162     {
72163       return !operator==( rhs );
72164     }
72165 #endif
72166 
72167   public:
72168     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::ePhysicalDeviceProperties2;
72169     void *                                         pNext      = {};
72170     VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties = {};
72171   };
72172 
72173   template <>
72174   struct CppType<StructureType, StructureType::ePhysicalDeviceProperties2>
72175   {
72176     using Type = PhysicalDeviceProperties2;
72177   };
72178 
72179   using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
72180 
72181   struct PhysicalDeviceLayeredApiVulkanPropertiesKHR
72182   {
72183     using NativeType = VkPhysicalDeviceLayeredApiVulkanPropertiesKHR;
72184 
72185     static const bool                                  allowDuplicate = false;
72186     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLayeredApiVulkanPropertiesKHR;
72187 
72188 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLayeredApiVulkanPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR72189     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiVulkanPropertiesKHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties_ = {},
72190                                                                          void *                                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
72191       : pNext{ pNext_ }
72192       , properties{ properties_ }
72193     {
72194     }
72195 
72196     VULKAN_HPP_CONSTEXPR_14
72197       PhysicalDeviceLayeredApiVulkanPropertiesKHR( PhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72198 
PhysicalDeviceLayeredApiVulkanPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR72199     PhysicalDeviceLayeredApiVulkanPropertiesKHR( VkPhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72200       : PhysicalDeviceLayeredApiVulkanPropertiesKHR( *reinterpret_cast<PhysicalDeviceLayeredApiVulkanPropertiesKHR const *>( &rhs ) )
72201     {
72202     }
72203 
72204     PhysicalDeviceLayeredApiVulkanPropertiesKHR & operator=( PhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72205 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72206 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR72207     PhysicalDeviceLayeredApiVulkanPropertiesKHR & operator=( VkPhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72208     {
72209       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR const *>( &rhs );
72210       return *this;
72211     }
72212 
operator VkPhysicalDeviceLayeredApiVulkanPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR72213     operator VkPhysicalDeviceLayeredApiVulkanPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
72214     {
72215       return *reinterpret_cast<const VkPhysicalDeviceLayeredApiVulkanPropertiesKHR *>( this );
72216     }
72217 
operator VkPhysicalDeviceLayeredApiVulkanPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR72218     operator VkPhysicalDeviceLayeredApiVulkanPropertiesKHR &() VULKAN_HPP_NOEXCEPT
72219     {
72220       return *reinterpret_cast<VkPhysicalDeviceLayeredApiVulkanPropertiesKHR *>( this );
72221     }
72222 
72223 #if defined( VULKAN_HPP_USE_REFLECT )
72224 #  if 14 <= VULKAN_HPP_CPP_VERSION
72225     auto
72226 #  else
72227     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 const &>
72228 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR72229       reflect() const VULKAN_HPP_NOEXCEPT
72230     {
72231       return std::tie( sType, pNext, properties );
72232     }
72233 #endif
72234 
72235 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72236     auto operator<=>( PhysicalDeviceLayeredApiVulkanPropertiesKHR const & ) const = default;
72237 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR72238     bool operator==( PhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72239     {
72240 #  if defined( VULKAN_HPP_USE_REFLECT )
72241       return this->reflect() == rhs.reflect();
72242 #  else
72243       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( properties == rhs.properties );
72244 #  endif
72245     }
72246 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR72247     bool operator!=( PhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72248     {
72249       return !operator==( rhs );
72250     }
72251 #endif
72252 
72253   public:
72254     VULKAN_HPP_NAMESPACE::StructureType             sType      = StructureType::ePhysicalDeviceLayeredApiVulkanPropertiesKHR;
72255     void *                                          pNext      = {};
72256     VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties = {};
72257   };
72258 
72259   template <>
72260   struct CppType<StructureType, StructureType::ePhysicalDeviceLayeredApiVulkanPropertiesKHR>
72261   {
72262     using Type = PhysicalDeviceLayeredApiVulkanPropertiesKHR;
72263   };
72264 
72265   struct PhysicalDeviceLayeredDriverPropertiesMSFT
72266   {
72267     using NativeType = VkPhysicalDeviceLayeredDriverPropertiesMSFT;
72268 
72269     static const bool                                  allowDuplicate = false;
72270     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLayeredDriverPropertiesMSFT;
72271 
72272 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLayeredDriverPropertiesMSFTVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT72273     VULKAN_HPP_CONSTEXPR PhysicalDeviceLayeredDriverPropertiesMSFT(
72274       VULKAN_HPP_NAMESPACE::LayeredDriverUnderlyingApiMSFT underlyingAPI_ = VULKAN_HPP_NAMESPACE::LayeredDriverUnderlyingApiMSFT::eNone,
72275       void *                                               pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
72276       : pNext{ pNext_ }
72277       , underlyingAPI{ underlyingAPI_ }
72278     {
72279     }
72280 
72281     VULKAN_HPP_CONSTEXPR PhysicalDeviceLayeredDriverPropertiesMSFT( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72282 
PhysicalDeviceLayeredDriverPropertiesMSFTVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT72283     PhysicalDeviceLayeredDriverPropertiesMSFT( VkPhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT
72284       : PhysicalDeviceLayeredDriverPropertiesMSFT( *reinterpret_cast<PhysicalDeviceLayeredDriverPropertiesMSFT const *>( &rhs ) )
72285     {
72286     }
72287 
72288     PhysicalDeviceLayeredDriverPropertiesMSFT & operator=( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72289 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72290 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT72291     PhysicalDeviceLayeredDriverPropertiesMSFT & operator=( VkPhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT
72292     {
72293       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT const *>( &rhs );
72294       return *this;
72295     }
72296 
operator VkPhysicalDeviceLayeredDriverPropertiesMSFT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT72297     operator VkPhysicalDeviceLayeredDriverPropertiesMSFT const &() const VULKAN_HPP_NOEXCEPT
72298     {
72299       return *reinterpret_cast<const VkPhysicalDeviceLayeredDriverPropertiesMSFT *>( this );
72300     }
72301 
operator VkPhysicalDeviceLayeredDriverPropertiesMSFT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT72302     operator VkPhysicalDeviceLayeredDriverPropertiesMSFT &() VULKAN_HPP_NOEXCEPT
72303     {
72304       return *reinterpret_cast<VkPhysicalDeviceLayeredDriverPropertiesMSFT *>( this );
72305     }
72306 
72307 #if defined( VULKAN_HPP_USE_REFLECT )
72308 #  if 14 <= VULKAN_HPP_CPP_VERSION
72309     auto
72310 #  else
72311     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::LayeredDriverUnderlyingApiMSFT const &>
72312 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT72313       reflect() const VULKAN_HPP_NOEXCEPT
72314     {
72315       return std::tie( sType, pNext, underlyingAPI );
72316     }
72317 #endif
72318 
72319 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72320     auto operator<=>( PhysicalDeviceLayeredDriverPropertiesMSFT const & ) const = default;
72321 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT72322     bool operator==( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) const VULKAN_HPP_NOEXCEPT
72323     {
72324 #  if defined( VULKAN_HPP_USE_REFLECT )
72325       return this->reflect() == rhs.reflect();
72326 #  else
72327       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( underlyingAPI == rhs.underlyingAPI );
72328 #  endif
72329     }
72330 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT72331     bool operator!=( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) const VULKAN_HPP_NOEXCEPT
72332     {
72333       return !operator==( rhs );
72334     }
72335 #endif
72336 
72337   public:
72338     VULKAN_HPP_NAMESPACE::StructureType                  sType         = StructureType::ePhysicalDeviceLayeredDriverPropertiesMSFT;
72339     void *                                               pNext         = {};
72340     VULKAN_HPP_NAMESPACE::LayeredDriverUnderlyingApiMSFT underlyingAPI = VULKAN_HPP_NAMESPACE::LayeredDriverUnderlyingApiMSFT::eNone;
72341   };
72342 
72343   template <>
72344   struct CppType<StructureType, StructureType::ePhysicalDeviceLayeredDriverPropertiesMSFT>
72345   {
72346     using Type = PhysicalDeviceLayeredDriverPropertiesMSFT;
72347   };
72348 
72349   struct PhysicalDeviceLegacyDitheringFeaturesEXT
72350   {
72351     using NativeType = VkPhysicalDeviceLegacyDitheringFeaturesEXT;
72352 
72353     static const bool                                  allowDuplicate = false;
72354     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLegacyDitheringFeaturesEXT;
72355 
72356 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLegacyDitheringFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT72357     VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyDitheringFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 legacyDithering_ = {},
72358                                                                    void *                       pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
72359       : pNext{ pNext_ }
72360       , legacyDithering{ legacyDithering_ }
72361     {
72362     }
72363 
72364     VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyDitheringFeaturesEXT( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72365 
PhysicalDeviceLegacyDitheringFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT72366     PhysicalDeviceLegacyDitheringFeaturesEXT( VkPhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72367       : PhysicalDeviceLegacyDitheringFeaturesEXT( *reinterpret_cast<PhysicalDeviceLegacyDitheringFeaturesEXT const *>( &rhs ) )
72368     {
72369     }
72370 
72371     PhysicalDeviceLegacyDitheringFeaturesEXT & operator=( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72372 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72373 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT72374     PhysicalDeviceLegacyDitheringFeaturesEXT & operator=( VkPhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72375     {
72376       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT const *>( &rhs );
72377       return *this;
72378     }
72379 
72380 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT72381     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyDitheringFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
72382     {
72383       pNext = pNext_;
72384       return *this;
72385     }
72386 
setLegacyDitheringVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT72387     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyDitheringFeaturesEXT & setLegacyDithering( VULKAN_HPP_NAMESPACE::Bool32 legacyDithering_ ) VULKAN_HPP_NOEXCEPT
72388     {
72389       legacyDithering = legacyDithering_;
72390       return *this;
72391     }
72392 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72393 
operator VkPhysicalDeviceLegacyDitheringFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT72394     operator VkPhysicalDeviceLegacyDitheringFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
72395     {
72396       return *reinterpret_cast<const VkPhysicalDeviceLegacyDitheringFeaturesEXT *>( this );
72397     }
72398 
operator VkPhysicalDeviceLegacyDitheringFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT72399     operator VkPhysicalDeviceLegacyDitheringFeaturesEXT &() VULKAN_HPP_NOEXCEPT
72400     {
72401       return *reinterpret_cast<VkPhysicalDeviceLegacyDitheringFeaturesEXT *>( this );
72402     }
72403 
72404 #if defined( VULKAN_HPP_USE_REFLECT )
72405 #  if 14 <= VULKAN_HPP_CPP_VERSION
72406     auto
72407 #  else
72408     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
72409 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT72410       reflect() const VULKAN_HPP_NOEXCEPT
72411     {
72412       return std::tie( sType, pNext, legacyDithering );
72413     }
72414 #endif
72415 
72416 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72417     auto operator<=>( PhysicalDeviceLegacyDitheringFeaturesEXT const & ) const = default;
72418 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT72419     bool operator==( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72420     {
72421 #  if defined( VULKAN_HPP_USE_REFLECT )
72422       return this->reflect() == rhs.reflect();
72423 #  else
72424       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( legacyDithering == rhs.legacyDithering );
72425 #  endif
72426     }
72427 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT72428     bool operator!=( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72429     {
72430       return !operator==( rhs );
72431     }
72432 #endif
72433 
72434   public:
72435     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceLegacyDitheringFeaturesEXT;
72436     void *                              pNext           = {};
72437     VULKAN_HPP_NAMESPACE::Bool32        legacyDithering = {};
72438   };
72439 
72440   template <>
72441   struct CppType<StructureType, StructureType::ePhysicalDeviceLegacyDitheringFeaturesEXT>
72442   {
72443     using Type = PhysicalDeviceLegacyDitheringFeaturesEXT;
72444   };
72445 
72446   struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT
72447   {
72448     using NativeType = VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT;
72449 
72450     static const bool                                  allowDuplicate = false;
72451     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLegacyVertexAttributesFeaturesEXT;
72452 
72453 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLegacyVertexAttributesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT72454     VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyVertexAttributesFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 legacyVertexAttributes_ = {},
72455                                                                           void *                       pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
72456       : pNext{ pNext_ }
72457       , legacyVertexAttributes{ legacyVertexAttributes_ }
72458     {
72459     }
72460 
72461     VULKAN_HPP_CONSTEXPR
72462       PhysicalDeviceLegacyVertexAttributesFeaturesEXT( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72463 
PhysicalDeviceLegacyVertexAttributesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT72464     PhysicalDeviceLegacyVertexAttributesFeaturesEXT( VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72465       : PhysicalDeviceLegacyVertexAttributesFeaturesEXT( *reinterpret_cast<PhysicalDeviceLegacyVertexAttributesFeaturesEXT const *>( &rhs ) )
72466     {
72467     }
72468 
72469     PhysicalDeviceLegacyVertexAttributesFeaturesEXT & operator=( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72470 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72471 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT72472     PhysicalDeviceLegacyVertexAttributesFeaturesEXT & operator=( VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72473     {
72474       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT const *>( &rhs );
72475       return *this;
72476     }
72477 
72478 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT72479     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
72480     {
72481       pNext = pNext_;
72482       return *this;
72483     }
72484 
72485     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesFeaturesEXT &
setLegacyVertexAttributesVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT72486       setLegacyVertexAttributes( VULKAN_HPP_NAMESPACE::Bool32 legacyVertexAttributes_ ) VULKAN_HPP_NOEXCEPT
72487     {
72488       legacyVertexAttributes = legacyVertexAttributes_;
72489       return *this;
72490     }
72491 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72492 
operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT72493     operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
72494     {
72495       return *reinterpret_cast<const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT *>( this );
72496     }
72497 
operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT72498     operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT &() VULKAN_HPP_NOEXCEPT
72499     {
72500       return *reinterpret_cast<VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT *>( this );
72501     }
72502 
72503 #if defined( VULKAN_HPP_USE_REFLECT )
72504 #  if 14 <= VULKAN_HPP_CPP_VERSION
72505     auto
72506 #  else
72507     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
72508 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT72509       reflect() const VULKAN_HPP_NOEXCEPT
72510     {
72511       return std::tie( sType, pNext, legacyVertexAttributes );
72512     }
72513 #endif
72514 
72515 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72516     auto operator<=>( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & ) const = default;
72517 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT72518     bool operator==( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72519     {
72520 #  if defined( VULKAN_HPP_USE_REFLECT )
72521       return this->reflect() == rhs.reflect();
72522 #  else
72523       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( legacyVertexAttributes == rhs.legacyVertexAttributes );
72524 #  endif
72525     }
72526 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT72527     bool operator!=( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72528     {
72529       return !operator==( rhs );
72530     }
72531 #endif
72532 
72533   public:
72534     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceLegacyVertexAttributesFeaturesEXT;
72535     void *                              pNext                  = {};
72536     VULKAN_HPP_NAMESPACE::Bool32        legacyVertexAttributes = {};
72537   };
72538 
72539   template <>
72540   struct CppType<StructureType, StructureType::ePhysicalDeviceLegacyVertexAttributesFeaturesEXT>
72541   {
72542     using Type = PhysicalDeviceLegacyVertexAttributesFeaturesEXT;
72543   };
72544 
72545   struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT
72546   {
72547     using NativeType = VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT;
72548 
72549     static const bool                                  allowDuplicate = false;
72550     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLegacyVertexAttributesPropertiesEXT;
72551 
72552 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLegacyVertexAttributesPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT72553     VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyVertexAttributesPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 nativeUnalignedPerformance_ = {},
72554                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
72555       : pNext{ pNext_ }
72556       , nativeUnalignedPerformance{ nativeUnalignedPerformance_ }
72557     {
72558     }
72559 
72560     VULKAN_HPP_CONSTEXPR
72561       PhysicalDeviceLegacyVertexAttributesPropertiesEXT( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72562 
PhysicalDeviceLegacyVertexAttributesPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT72563     PhysicalDeviceLegacyVertexAttributesPropertiesEXT( VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72564       : PhysicalDeviceLegacyVertexAttributesPropertiesEXT( *reinterpret_cast<PhysicalDeviceLegacyVertexAttributesPropertiesEXT const *>( &rhs ) )
72565     {
72566     }
72567 
72568     PhysicalDeviceLegacyVertexAttributesPropertiesEXT &
72569       operator=( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72570 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72571 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT72572     PhysicalDeviceLegacyVertexAttributesPropertiesEXT & operator=( VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72573     {
72574       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT const *>( &rhs );
72575       return *this;
72576     }
72577 
72578 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT72579     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesPropertiesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
72580     {
72581       pNext = pNext_;
72582       return *this;
72583     }
72584 
72585     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesPropertiesEXT &
setNativeUnalignedPerformanceVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT72586       setNativeUnalignedPerformance( VULKAN_HPP_NAMESPACE::Bool32 nativeUnalignedPerformance_ ) VULKAN_HPP_NOEXCEPT
72587     {
72588       nativeUnalignedPerformance = nativeUnalignedPerformance_;
72589       return *this;
72590     }
72591 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72592 
operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT72593     operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
72594     {
72595       return *reinterpret_cast<const VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT *>( this );
72596     }
72597 
operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT72598     operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT &() VULKAN_HPP_NOEXCEPT
72599     {
72600       return *reinterpret_cast<VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT *>( this );
72601     }
72602 
72603 #if defined( VULKAN_HPP_USE_REFLECT )
72604 #  if 14 <= VULKAN_HPP_CPP_VERSION
72605     auto
72606 #  else
72607     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
72608 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT72609       reflect() const VULKAN_HPP_NOEXCEPT
72610     {
72611       return std::tie( sType, pNext, nativeUnalignedPerformance );
72612     }
72613 #endif
72614 
72615 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72616     auto operator<=>( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & ) const = default;
72617 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT72618     bool operator==( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72619     {
72620 #  if defined( VULKAN_HPP_USE_REFLECT )
72621       return this->reflect() == rhs.reflect();
72622 #  else
72623       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( nativeUnalignedPerformance == rhs.nativeUnalignedPerformance );
72624 #  endif
72625     }
72626 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT72627     bool operator!=( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72628     {
72629       return !operator==( rhs );
72630     }
72631 #endif
72632 
72633   public:
72634     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceLegacyVertexAttributesPropertiesEXT;
72635     void *                              pNext                      = {};
72636     VULKAN_HPP_NAMESPACE::Bool32        nativeUnalignedPerformance = {};
72637   };
72638 
72639   template <>
72640   struct CppType<StructureType, StructureType::ePhysicalDeviceLegacyVertexAttributesPropertiesEXT>
72641   {
72642     using Type = PhysicalDeviceLegacyVertexAttributesPropertiesEXT;
72643   };
72644 
72645   struct PhysicalDeviceLineRasterizationFeatures
72646   {
72647     using NativeType = VkPhysicalDeviceLineRasterizationFeatures;
72648 
72649     static const bool                                  allowDuplicate = false;
72650     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLineRasterizationFeatures;
72651 
72652 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLineRasterizationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72653     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeatures( VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_         = {},
72654                                                                   VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_           = {},
72655                                                                   VULKAN_HPP_NAMESPACE::Bool32 smoothLines_              = {},
72656                                                                   VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ = {},
72657                                                                   VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_   = {},
72658                                                                   VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_      = {},
72659                                                                   void *                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
72660       : pNext{ pNext_ }
72661       , rectangularLines{ rectangularLines_ }
72662       , bresenhamLines{ bresenhamLines_ }
72663       , smoothLines{ smoothLines_ }
72664       , stippledRectangularLines{ stippledRectangularLines_ }
72665       , stippledBresenhamLines{ stippledBresenhamLines_ }
72666       , stippledSmoothLines{ stippledSmoothLines_ }
72667     {
72668     }
72669 
72670     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeatures( PhysicalDeviceLineRasterizationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72671 
PhysicalDeviceLineRasterizationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72672     PhysicalDeviceLineRasterizationFeatures( VkPhysicalDeviceLineRasterizationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
72673       : PhysicalDeviceLineRasterizationFeatures( *reinterpret_cast<PhysicalDeviceLineRasterizationFeatures const *>( &rhs ) )
72674     {
72675     }
72676 
72677     PhysicalDeviceLineRasterizationFeatures & operator=( PhysicalDeviceLineRasterizationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72678 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72679 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72680     PhysicalDeviceLineRasterizationFeatures & operator=( VkPhysicalDeviceLineRasterizationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
72681     {
72682       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures const *>( &rhs );
72683       return *this;
72684     }
72685 
72686 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72687     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
72688     {
72689       pNext = pNext_;
72690       return *this;
72691     }
72692 
setRectangularLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72693     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_ ) VULKAN_HPP_NOEXCEPT
72694     {
72695       rectangularLines = rectangularLines_;
72696       return *this;
72697     }
72698 
setBresenhamLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72699     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_ ) VULKAN_HPP_NOEXCEPT
72700     {
72701       bresenhamLines = bresenhamLines_;
72702       return *this;
72703     }
72704 
setSmoothLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72705     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 smoothLines_ ) VULKAN_HPP_NOEXCEPT
72706     {
72707       smoothLines = smoothLines_;
72708       return *this;
72709     }
72710 
72711     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures &
setStippledRectangularLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72712       setStippledRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ ) VULKAN_HPP_NOEXCEPT
72713     {
72714       stippledRectangularLines = stippledRectangularLines_;
72715       return *this;
72716     }
72717 
72718     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures &
setStippledBresenhamLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72719       setStippledBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_ ) VULKAN_HPP_NOEXCEPT
72720     {
72721       stippledBresenhamLines = stippledBresenhamLines_;
72722       return *this;
72723     }
72724 
72725     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures &
setStippledSmoothLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72726       setStippledSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_ ) VULKAN_HPP_NOEXCEPT
72727     {
72728       stippledSmoothLines = stippledSmoothLines_;
72729       return *this;
72730     }
72731 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72732 
operator VkPhysicalDeviceLineRasterizationFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72733     operator VkPhysicalDeviceLineRasterizationFeatures const &() const VULKAN_HPP_NOEXCEPT
72734     {
72735       return *reinterpret_cast<const VkPhysicalDeviceLineRasterizationFeatures *>( this );
72736     }
72737 
operator VkPhysicalDeviceLineRasterizationFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72738     operator VkPhysicalDeviceLineRasterizationFeatures &() VULKAN_HPP_NOEXCEPT
72739     {
72740       return *reinterpret_cast<VkPhysicalDeviceLineRasterizationFeatures *>( this );
72741     }
72742 
72743 #if defined( VULKAN_HPP_USE_REFLECT )
72744 #  if 14 <= VULKAN_HPP_CPP_VERSION
72745     auto
72746 #  else
72747     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
72748                void * const &,
72749                VULKAN_HPP_NAMESPACE::Bool32 const &,
72750                VULKAN_HPP_NAMESPACE::Bool32 const &,
72751                VULKAN_HPP_NAMESPACE::Bool32 const &,
72752                VULKAN_HPP_NAMESPACE::Bool32 const &,
72753                VULKAN_HPP_NAMESPACE::Bool32 const &,
72754                VULKAN_HPP_NAMESPACE::Bool32 const &>
72755 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72756       reflect() const VULKAN_HPP_NOEXCEPT
72757     {
72758       return std::tie( sType, pNext, rectangularLines, bresenhamLines, smoothLines, stippledRectangularLines, stippledBresenhamLines, stippledSmoothLines );
72759     }
72760 #endif
72761 
72762 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72763     auto operator<=>( PhysicalDeviceLineRasterizationFeatures const & ) const = default;
72764 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72765     bool operator==( PhysicalDeviceLineRasterizationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
72766     {
72767 #  if defined( VULKAN_HPP_USE_REFLECT )
72768       return this->reflect() == rhs.reflect();
72769 #  else
72770       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rectangularLines == rhs.rectangularLines ) && ( bresenhamLines == rhs.bresenhamLines ) &&
72771              ( smoothLines == rhs.smoothLines ) && ( stippledRectangularLines == rhs.stippledRectangularLines ) &&
72772              ( stippledBresenhamLines == rhs.stippledBresenhamLines ) && ( stippledSmoothLines == rhs.stippledSmoothLines );
72773 #  endif
72774     }
72775 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures72776     bool operator!=( PhysicalDeviceLineRasterizationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
72777     {
72778       return !operator==( rhs );
72779     }
72780 #endif
72781 
72782   public:
72783     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceLineRasterizationFeatures;
72784     void *                              pNext                    = {};
72785     VULKAN_HPP_NAMESPACE::Bool32        rectangularLines         = {};
72786     VULKAN_HPP_NAMESPACE::Bool32        bresenhamLines           = {};
72787     VULKAN_HPP_NAMESPACE::Bool32        smoothLines              = {};
72788     VULKAN_HPP_NAMESPACE::Bool32        stippledRectangularLines = {};
72789     VULKAN_HPP_NAMESPACE::Bool32        stippledBresenhamLines   = {};
72790     VULKAN_HPP_NAMESPACE::Bool32        stippledSmoothLines      = {};
72791   };
72792 
72793   template <>
72794   struct CppType<StructureType, StructureType::ePhysicalDeviceLineRasterizationFeatures>
72795   {
72796     using Type = PhysicalDeviceLineRasterizationFeatures;
72797   };
72798 
72799   using PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures;
72800   using PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures;
72801 
72802   struct PhysicalDeviceLineRasterizationProperties
72803   {
72804     using NativeType = VkPhysicalDeviceLineRasterizationProperties;
72805 
72806     static const bool                                  allowDuplicate = false;
72807     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLineRasterizationProperties;
72808 
72809 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLineRasterizationPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties72810     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationProperties( uint32_t lineSubPixelPrecisionBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
72811       : pNext{ pNext_ }
72812       , lineSubPixelPrecisionBits{ lineSubPixelPrecisionBits_ }
72813     {
72814     }
72815 
72816     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationProperties( PhysicalDeviceLineRasterizationProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72817 
PhysicalDeviceLineRasterizationPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties72818     PhysicalDeviceLineRasterizationProperties( VkPhysicalDeviceLineRasterizationProperties const & rhs ) VULKAN_HPP_NOEXCEPT
72819       : PhysicalDeviceLineRasterizationProperties( *reinterpret_cast<PhysicalDeviceLineRasterizationProperties const *>( &rhs ) )
72820     {
72821     }
72822 
72823     PhysicalDeviceLineRasterizationProperties & operator=( PhysicalDeviceLineRasterizationProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72824 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72825 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties72826     PhysicalDeviceLineRasterizationProperties & operator=( VkPhysicalDeviceLineRasterizationProperties const & rhs ) VULKAN_HPP_NOEXCEPT
72827     {
72828       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties const *>( &rhs );
72829       return *this;
72830     }
72831 
operator VkPhysicalDeviceLineRasterizationProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties72832     operator VkPhysicalDeviceLineRasterizationProperties const &() const VULKAN_HPP_NOEXCEPT
72833     {
72834       return *reinterpret_cast<const VkPhysicalDeviceLineRasterizationProperties *>( this );
72835     }
72836 
operator VkPhysicalDeviceLineRasterizationProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties72837     operator VkPhysicalDeviceLineRasterizationProperties &() VULKAN_HPP_NOEXCEPT
72838     {
72839       return *reinterpret_cast<VkPhysicalDeviceLineRasterizationProperties *>( this );
72840     }
72841 
72842 #if defined( VULKAN_HPP_USE_REFLECT )
72843 #  if 14 <= VULKAN_HPP_CPP_VERSION
72844     auto
72845 #  else
72846     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
72847 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties72848       reflect() const VULKAN_HPP_NOEXCEPT
72849     {
72850       return std::tie( sType, pNext, lineSubPixelPrecisionBits );
72851     }
72852 #endif
72853 
72854 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72855     auto operator<=>( PhysicalDeviceLineRasterizationProperties const & ) const = default;
72856 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties72857     bool operator==( PhysicalDeviceLineRasterizationProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
72858     {
72859 #  if defined( VULKAN_HPP_USE_REFLECT )
72860       return this->reflect() == rhs.reflect();
72861 #  else
72862       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lineSubPixelPrecisionBits == rhs.lineSubPixelPrecisionBits );
72863 #  endif
72864     }
72865 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties72866     bool operator!=( PhysicalDeviceLineRasterizationProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
72867     {
72868       return !operator==( rhs );
72869     }
72870 #endif
72871 
72872   public:
72873     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceLineRasterizationProperties;
72874     void *                              pNext                     = {};
72875     uint32_t                            lineSubPixelPrecisionBits = {};
72876   };
72877 
72878   template <>
72879   struct CppType<StructureType, StructureType::ePhysicalDeviceLineRasterizationProperties>
72880   {
72881     using Type = PhysicalDeviceLineRasterizationProperties;
72882   };
72883 
72884   using PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties;
72885   using PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties;
72886 
72887   struct PhysicalDeviceLinearColorAttachmentFeaturesNV
72888   {
72889     using NativeType = VkPhysicalDeviceLinearColorAttachmentFeaturesNV;
72890 
72891     static const bool                                  allowDuplicate = false;
72892     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV;
72893 
72894 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLinearColorAttachmentFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV72895     VULKAN_HPP_CONSTEXPR PhysicalDeviceLinearColorAttachmentFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 linearColorAttachment_ = {},
72896                                                                         void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
72897       : pNext{ pNext_ }
72898       , linearColorAttachment{ linearColorAttachment_ }
72899     {
72900     }
72901 
72902     VULKAN_HPP_CONSTEXPR
72903       PhysicalDeviceLinearColorAttachmentFeaturesNV( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72904 
PhysicalDeviceLinearColorAttachmentFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV72905     PhysicalDeviceLinearColorAttachmentFeaturesNV( VkPhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
72906       : PhysicalDeviceLinearColorAttachmentFeaturesNV( *reinterpret_cast<PhysicalDeviceLinearColorAttachmentFeaturesNV const *>( &rhs ) )
72907     {
72908     }
72909 
72910     PhysicalDeviceLinearColorAttachmentFeaturesNV & operator=( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72911 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72912 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV72913     PhysicalDeviceLinearColorAttachmentFeaturesNV & operator=( VkPhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
72914     {
72915       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV const *>( &rhs );
72916       return *this;
72917     }
72918 
72919 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV72920     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
72921     {
72922       pNext = pNext_;
72923       return *this;
72924     }
72925 
72926     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV &
setLinearColorAttachmentVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV72927       setLinearColorAttachment( VULKAN_HPP_NAMESPACE::Bool32 linearColorAttachment_ ) VULKAN_HPP_NOEXCEPT
72928     {
72929       linearColorAttachment = linearColorAttachment_;
72930       return *this;
72931     }
72932 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72933 
operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV72934     operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
72935     {
72936       return *reinterpret_cast<const VkPhysicalDeviceLinearColorAttachmentFeaturesNV *>( this );
72937     }
72938 
operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV72939     operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV &() VULKAN_HPP_NOEXCEPT
72940     {
72941       return *reinterpret_cast<VkPhysicalDeviceLinearColorAttachmentFeaturesNV *>( this );
72942     }
72943 
72944 #if defined( VULKAN_HPP_USE_REFLECT )
72945 #  if 14 <= VULKAN_HPP_CPP_VERSION
72946     auto
72947 #  else
72948     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
72949 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV72950       reflect() const VULKAN_HPP_NOEXCEPT
72951     {
72952       return std::tie( sType, pNext, linearColorAttachment );
72953     }
72954 #endif
72955 
72956 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72957     auto operator<=>( PhysicalDeviceLinearColorAttachmentFeaturesNV const & ) const = default;
72958 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV72959     bool operator==( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
72960     {
72961 #  if defined( VULKAN_HPP_USE_REFLECT )
72962       return this->reflect() == rhs.reflect();
72963 #  else
72964       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( linearColorAttachment == rhs.linearColorAttachment );
72965 #  endif
72966     }
72967 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV72968     bool operator!=( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
72969     {
72970       return !operator==( rhs );
72971     }
72972 #endif
72973 
72974   public:
72975     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV;
72976     void *                              pNext                 = {};
72977     VULKAN_HPP_NAMESPACE::Bool32        linearColorAttachment = {};
72978   };
72979 
72980   template <>
72981   struct CppType<StructureType, StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV>
72982   {
72983     using Type = PhysicalDeviceLinearColorAttachmentFeaturesNV;
72984   };
72985 
72986   struct PhysicalDeviceMaintenance3Properties
72987   {
72988     using NativeType = VkPhysicalDeviceMaintenance3Properties;
72989 
72990     static const bool                                  allowDuplicate = false;
72991     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance3Properties;
72992 
72993 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance3PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties72994     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( uint32_t                         maxPerSetDescriptors_    = {},
72995                                                                VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize_ = {},
72996                                                                void *                           pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
72997       : pNext{ pNext_ }
72998       , maxPerSetDescriptors{ maxPerSetDescriptors_ }
72999       , maxMemoryAllocationSize{ maxMemoryAllocationSize_ }
73000     {
73001     }
73002 
73003     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73004 
PhysicalDeviceMaintenance3PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties73005     PhysicalDeviceMaintenance3Properties( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
73006       : PhysicalDeviceMaintenance3Properties( *reinterpret_cast<PhysicalDeviceMaintenance3Properties const *>( &rhs ) )
73007     {
73008     }
73009 
73010     PhysicalDeviceMaintenance3Properties & operator=( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73011 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73012 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties73013     PhysicalDeviceMaintenance3Properties & operator=( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
73014     {
73015       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties const *>( &rhs );
73016       return *this;
73017     }
73018 
operator VkPhysicalDeviceMaintenance3Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties73019     operator VkPhysicalDeviceMaintenance3Properties const &() const VULKAN_HPP_NOEXCEPT
73020     {
73021       return *reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties *>( this );
73022     }
73023 
operator VkPhysicalDeviceMaintenance3Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties73024     operator VkPhysicalDeviceMaintenance3Properties &() VULKAN_HPP_NOEXCEPT
73025     {
73026       return *reinterpret_cast<VkPhysicalDeviceMaintenance3Properties *>( this );
73027     }
73028 
73029 #if defined( VULKAN_HPP_USE_REFLECT )
73030 #  if 14 <= VULKAN_HPP_CPP_VERSION
73031     auto
73032 #  else
73033     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
73034 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties73035       reflect() const VULKAN_HPP_NOEXCEPT
73036     {
73037       return std::tie( sType, pNext, maxPerSetDescriptors, maxMemoryAllocationSize );
73038     }
73039 #endif
73040 
73041 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73042     auto operator<=>( PhysicalDeviceMaintenance3Properties const & ) const = default;
73043 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties73044     bool operator==( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
73045     {
73046 #  if defined( VULKAN_HPP_USE_REFLECT )
73047       return this->reflect() == rhs.reflect();
73048 #  else
73049       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors ) &&
73050              ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize );
73051 #  endif
73052     }
73053 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties73054     bool operator!=( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
73055     {
73056       return !operator==( rhs );
73057     }
73058 #endif
73059 
73060   public:
73061     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceMaintenance3Properties;
73062     void *                              pNext                   = {};
73063     uint32_t                            maxPerSetDescriptors    = {};
73064     VULKAN_HPP_NAMESPACE::DeviceSize    maxMemoryAllocationSize = {};
73065   };
73066 
73067   template <>
73068   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance3Properties>
73069   {
73070     using Type = PhysicalDeviceMaintenance3Properties;
73071   };
73072 
73073   using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
73074 
73075   struct PhysicalDeviceMaintenance4Features
73076   {
73077     using NativeType = VkPhysicalDeviceMaintenance4Features;
73078 
73079     static const bool                                  allowDuplicate = false;
73080     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance4Features;
73081 
73082 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance4FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features73083     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Features( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73084       : pNext{ pNext_ }
73085       , maintenance4{ maintenance4_ }
73086     {
73087     }
73088 
73089     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Features( PhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73090 
PhysicalDeviceMaintenance4FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features73091     PhysicalDeviceMaintenance4Features( VkPhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT
73092       : PhysicalDeviceMaintenance4Features( *reinterpret_cast<PhysicalDeviceMaintenance4Features const *>( &rhs ) )
73093     {
73094     }
73095 
73096     PhysicalDeviceMaintenance4Features & operator=( PhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73097 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73098 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features73099     PhysicalDeviceMaintenance4Features & operator=( VkPhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT
73100     {
73101       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features const *>( &rhs );
73102       return *this;
73103     }
73104 
73105 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features73106     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
73107     {
73108       pNext = pNext_;
73109       return *this;
73110     }
73111 
setMaintenance4VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features73112     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features & setMaintenance4( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ ) VULKAN_HPP_NOEXCEPT
73113     {
73114       maintenance4 = maintenance4_;
73115       return *this;
73116     }
73117 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73118 
operator VkPhysicalDeviceMaintenance4Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features73119     operator VkPhysicalDeviceMaintenance4Features const &() const VULKAN_HPP_NOEXCEPT
73120     {
73121       return *reinterpret_cast<const VkPhysicalDeviceMaintenance4Features *>( this );
73122     }
73123 
operator VkPhysicalDeviceMaintenance4Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features73124     operator VkPhysicalDeviceMaintenance4Features &() VULKAN_HPP_NOEXCEPT
73125     {
73126       return *reinterpret_cast<VkPhysicalDeviceMaintenance4Features *>( this );
73127     }
73128 
73129 #if defined( VULKAN_HPP_USE_REFLECT )
73130 #  if 14 <= VULKAN_HPP_CPP_VERSION
73131     auto
73132 #  else
73133     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
73134 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features73135       reflect() const VULKAN_HPP_NOEXCEPT
73136     {
73137       return std::tie( sType, pNext, maintenance4 );
73138     }
73139 #endif
73140 
73141 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73142     auto operator<=>( PhysicalDeviceMaintenance4Features const & ) const = default;
73143 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features73144     bool operator==( PhysicalDeviceMaintenance4Features const & rhs ) const VULKAN_HPP_NOEXCEPT
73145     {
73146 #  if defined( VULKAN_HPP_USE_REFLECT )
73147       return this->reflect() == rhs.reflect();
73148 #  else
73149       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance4 == rhs.maintenance4 );
73150 #  endif
73151     }
73152 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features73153     bool operator!=( PhysicalDeviceMaintenance4Features const & rhs ) const VULKAN_HPP_NOEXCEPT
73154     {
73155       return !operator==( rhs );
73156     }
73157 #endif
73158 
73159   public:
73160     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceMaintenance4Features;
73161     void *                              pNext        = {};
73162     VULKAN_HPP_NAMESPACE::Bool32        maintenance4 = {};
73163   };
73164 
73165   template <>
73166   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance4Features>
73167   {
73168     using Type = PhysicalDeviceMaintenance4Features;
73169   };
73170 
73171   using PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features;
73172 
73173   struct PhysicalDeviceMaintenance4Properties
73174   {
73175     using NativeType = VkPhysicalDeviceMaintenance4Properties;
73176 
73177     static const bool                                  allowDuplicate = false;
73178     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance4Properties;
73179 
73180 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance4PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties73181     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Properties( VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize_ = {},
73182                                                                void *                           pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
73183       : pNext{ pNext_ }
73184       , maxBufferSize{ maxBufferSize_ }
73185     {
73186     }
73187 
73188     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Properties( PhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73189 
PhysicalDeviceMaintenance4PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties73190     PhysicalDeviceMaintenance4Properties( VkPhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT
73191       : PhysicalDeviceMaintenance4Properties( *reinterpret_cast<PhysicalDeviceMaintenance4Properties const *>( &rhs ) )
73192     {
73193     }
73194 
73195     PhysicalDeviceMaintenance4Properties & operator=( PhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73196 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73197 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties73198     PhysicalDeviceMaintenance4Properties & operator=( VkPhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT
73199     {
73200       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties const *>( &rhs );
73201       return *this;
73202     }
73203 
operator VkPhysicalDeviceMaintenance4Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties73204     operator VkPhysicalDeviceMaintenance4Properties const &() const VULKAN_HPP_NOEXCEPT
73205     {
73206       return *reinterpret_cast<const VkPhysicalDeviceMaintenance4Properties *>( this );
73207     }
73208 
operator VkPhysicalDeviceMaintenance4Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties73209     operator VkPhysicalDeviceMaintenance4Properties &() VULKAN_HPP_NOEXCEPT
73210     {
73211       return *reinterpret_cast<VkPhysicalDeviceMaintenance4Properties *>( this );
73212     }
73213 
73214 #if defined( VULKAN_HPP_USE_REFLECT )
73215 #  if 14 <= VULKAN_HPP_CPP_VERSION
73216     auto
73217 #  else
73218     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
73219 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties73220       reflect() const VULKAN_HPP_NOEXCEPT
73221     {
73222       return std::tie( sType, pNext, maxBufferSize );
73223     }
73224 #endif
73225 
73226 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73227     auto operator<=>( PhysicalDeviceMaintenance4Properties const & ) const = default;
73228 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties73229     bool operator==( PhysicalDeviceMaintenance4Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
73230     {
73231 #  if defined( VULKAN_HPP_USE_REFLECT )
73232       return this->reflect() == rhs.reflect();
73233 #  else
73234       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxBufferSize == rhs.maxBufferSize );
73235 #  endif
73236     }
73237 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties73238     bool operator!=( PhysicalDeviceMaintenance4Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
73239     {
73240       return !operator==( rhs );
73241     }
73242 #endif
73243 
73244   public:
73245     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceMaintenance4Properties;
73246     void *                              pNext         = {};
73247     VULKAN_HPP_NAMESPACE::DeviceSize    maxBufferSize = {};
73248   };
73249 
73250   template <>
73251   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance4Properties>
73252   {
73253     using Type = PhysicalDeviceMaintenance4Properties;
73254   };
73255 
73256   using PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties;
73257 
73258   struct PhysicalDeviceMaintenance5Features
73259   {
73260     using NativeType = VkPhysicalDeviceMaintenance5Features;
73261 
73262     static const bool                                  allowDuplicate = false;
73263     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance5Features;
73264 
73265 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance5FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features73266     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5Features( VULKAN_HPP_NAMESPACE::Bool32 maintenance5_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73267       : pNext{ pNext_ }
73268       , maintenance5{ maintenance5_ }
73269     {
73270     }
73271 
73272     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5Features( PhysicalDeviceMaintenance5Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73273 
PhysicalDeviceMaintenance5FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features73274     PhysicalDeviceMaintenance5Features( VkPhysicalDeviceMaintenance5Features const & rhs ) VULKAN_HPP_NOEXCEPT
73275       : PhysicalDeviceMaintenance5Features( *reinterpret_cast<PhysicalDeviceMaintenance5Features const *>( &rhs ) )
73276     {
73277     }
73278 
73279     PhysicalDeviceMaintenance5Features & operator=( PhysicalDeviceMaintenance5Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73280 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73281 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features73282     PhysicalDeviceMaintenance5Features & operator=( VkPhysicalDeviceMaintenance5Features const & rhs ) VULKAN_HPP_NOEXCEPT
73283     {
73284       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features const *>( &rhs );
73285       return *this;
73286     }
73287 
73288 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features73289     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance5Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
73290     {
73291       pNext = pNext_;
73292       return *this;
73293     }
73294 
setMaintenance5VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features73295     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance5Features & setMaintenance5( VULKAN_HPP_NAMESPACE::Bool32 maintenance5_ ) VULKAN_HPP_NOEXCEPT
73296     {
73297       maintenance5 = maintenance5_;
73298       return *this;
73299     }
73300 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73301 
operator VkPhysicalDeviceMaintenance5Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features73302     operator VkPhysicalDeviceMaintenance5Features const &() const VULKAN_HPP_NOEXCEPT
73303     {
73304       return *reinterpret_cast<const VkPhysicalDeviceMaintenance5Features *>( this );
73305     }
73306 
operator VkPhysicalDeviceMaintenance5Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features73307     operator VkPhysicalDeviceMaintenance5Features &() VULKAN_HPP_NOEXCEPT
73308     {
73309       return *reinterpret_cast<VkPhysicalDeviceMaintenance5Features *>( this );
73310     }
73311 
73312 #if defined( VULKAN_HPP_USE_REFLECT )
73313 #  if 14 <= VULKAN_HPP_CPP_VERSION
73314     auto
73315 #  else
73316     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
73317 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features73318       reflect() const VULKAN_HPP_NOEXCEPT
73319     {
73320       return std::tie( sType, pNext, maintenance5 );
73321     }
73322 #endif
73323 
73324 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73325     auto operator<=>( PhysicalDeviceMaintenance5Features const & ) const = default;
73326 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features73327     bool operator==( PhysicalDeviceMaintenance5Features const & rhs ) const VULKAN_HPP_NOEXCEPT
73328     {
73329 #  if defined( VULKAN_HPP_USE_REFLECT )
73330       return this->reflect() == rhs.reflect();
73331 #  else
73332       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance5 == rhs.maintenance5 );
73333 #  endif
73334     }
73335 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features73336     bool operator!=( PhysicalDeviceMaintenance5Features const & rhs ) const VULKAN_HPP_NOEXCEPT
73337     {
73338       return !operator==( rhs );
73339     }
73340 #endif
73341 
73342   public:
73343     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceMaintenance5Features;
73344     void *                              pNext        = {};
73345     VULKAN_HPP_NAMESPACE::Bool32        maintenance5 = {};
73346   };
73347 
73348   template <>
73349   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance5Features>
73350   {
73351     using Type = PhysicalDeviceMaintenance5Features;
73352   };
73353 
73354   using PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features;
73355 
73356   struct PhysicalDeviceMaintenance5Properties
73357   {
73358     using NativeType = VkPhysicalDeviceMaintenance5Properties;
73359 
73360     static const bool                                  allowDuplicate = false;
73361     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance5Properties;
73362 
73363 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance5PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties73364     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5Properties( VULKAN_HPP_NAMESPACE::Bool32 earlyFragmentMultisampleCoverageAfterSampleCounting_ = {},
73365                                                                VULKAN_HPP_NAMESPACE::Bool32 earlyFragmentSampleMaskTestBeforeSampleCounting_     = {},
73366                                                                VULKAN_HPP_NAMESPACE::Bool32 depthStencilSwizzleOneSupport_                       = {},
73367                                                                VULKAN_HPP_NAMESPACE::Bool32 polygonModePointSize_                                = {},
73368                                                                VULKAN_HPP_NAMESPACE::Bool32 nonStrictSinglePixelWideLinesUseParallelogram_       = {},
73369                                                                VULKAN_HPP_NAMESPACE::Bool32 nonStrictWideLinesUseParallelogram_                  = {},
73370                                                                void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73371       : pNext{ pNext_ }
73372       , earlyFragmentMultisampleCoverageAfterSampleCounting{ earlyFragmentMultisampleCoverageAfterSampleCounting_ }
73373       , earlyFragmentSampleMaskTestBeforeSampleCounting{ earlyFragmentSampleMaskTestBeforeSampleCounting_ }
73374       , depthStencilSwizzleOneSupport{ depthStencilSwizzleOneSupport_ }
73375       , polygonModePointSize{ polygonModePointSize_ }
73376       , nonStrictSinglePixelWideLinesUseParallelogram{ nonStrictSinglePixelWideLinesUseParallelogram_ }
73377       , nonStrictWideLinesUseParallelogram{ nonStrictWideLinesUseParallelogram_ }
73378     {
73379     }
73380 
73381     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5Properties( PhysicalDeviceMaintenance5Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73382 
PhysicalDeviceMaintenance5PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties73383     PhysicalDeviceMaintenance5Properties( VkPhysicalDeviceMaintenance5Properties const & rhs ) VULKAN_HPP_NOEXCEPT
73384       : PhysicalDeviceMaintenance5Properties( *reinterpret_cast<PhysicalDeviceMaintenance5Properties const *>( &rhs ) )
73385     {
73386     }
73387 
73388     PhysicalDeviceMaintenance5Properties & operator=( PhysicalDeviceMaintenance5Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73389 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73390 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties73391     PhysicalDeviceMaintenance5Properties & operator=( VkPhysicalDeviceMaintenance5Properties const & rhs ) VULKAN_HPP_NOEXCEPT
73392     {
73393       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties const *>( &rhs );
73394       return *this;
73395     }
73396 
operator VkPhysicalDeviceMaintenance5Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties73397     operator VkPhysicalDeviceMaintenance5Properties const &() const VULKAN_HPP_NOEXCEPT
73398     {
73399       return *reinterpret_cast<const VkPhysicalDeviceMaintenance5Properties *>( this );
73400     }
73401 
operator VkPhysicalDeviceMaintenance5Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties73402     operator VkPhysicalDeviceMaintenance5Properties &() VULKAN_HPP_NOEXCEPT
73403     {
73404       return *reinterpret_cast<VkPhysicalDeviceMaintenance5Properties *>( this );
73405     }
73406 
73407 #if defined( VULKAN_HPP_USE_REFLECT )
73408 #  if 14 <= VULKAN_HPP_CPP_VERSION
73409     auto
73410 #  else
73411     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73412                void * const &,
73413                VULKAN_HPP_NAMESPACE::Bool32 const &,
73414                VULKAN_HPP_NAMESPACE::Bool32 const &,
73415                VULKAN_HPP_NAMESPACE::Bool32 const &,
73416                VULKAN_HPP_NAMESPACE::Bool32 const &,
73417                VULKAN_HPP_NAMESPACE::Bool32 const &,
73418                VULKAN_HPP_NAMESPACE::Bool32 const &>
73419 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties73420       reflect() const VULKAN_HPP_NOEXCEPT
73421     {
73422       return std::tie( sType,
73423                        pNext,
73424                        earlyFragmentMultisampleCoverageAfterSampleCounting,
73425                        earlyFragmentSampleMaskTestBeforeSampleCounting,
73426                        depthStencilSwizzleOneSupport,
73427                        polygonModePointSize,
73428                        nonStrictSinglePixelWideLinesUseParallelogram,
73429                        nonStrictWideLinesUseParallelogram );
73430     }
73431 #endif
73432 
73433 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73434     auto operator<=>( PhysicalDeviceMaintenance5Properties const & ) const = default;
73435 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties73436     bool operator==( PhysicalDeviceMaintenance5Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
73437     {
73438 #  if defined( VULKAN_HPP_USE_REFLECT )
73439       return this->reflect() == rhs.reflect();
73440 #  else
73441       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
73442              ( earlyFragmentMultisampleCoverageAfterSampleCounting == rhs.earlyFragmentMultisampleCoverageAfterSampleCounting ) &&
73443              ( earlyFragmentSampleMaskTestBeforeSampleCounting == rhs.earlyFragmentSampleMaskTestBeforeSampleCounting ) &&
73444              ( depthStencilSwizzleOneSupport == rhs.depthStencilSwizzleOneSupport ) && ( polygonModePointSize == rhs.polygonModePointSize ) &&
73445              ( nonStrictSinglePixelWideLinesUseParallelogram == rhs.nonStrictSinglePixelWideLinesUseParallelogram ) &&
73446              ( nonStrictWideLinesUseParallelogram == rhs.nonStrictWideLinesUseParallelogram );
73447 #  endif
73448     }
73449 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties73450     bool operator!=( PhysicalDeviceMaintenance5Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
73451     {
73452       return !operator==( rhs );
73453     }
73454 #endif
73455 
73456   public:
73457     VULKAN_HPP_NAMESPACE::StructureType sType                                               = StructureType::ePhysicalDeviceMaintenance5Properties;
73458     void *                              pNext                                               = {};
73459     VULKAN_HPP_NAMESPACE::Bool32        earlyFragmentMultisampleCoverageAfterSampleCounting = {};
73460     VULKAN_HPP_NAMESPACE::Bool32        earlyFragmentSampleMaskTestBeforeSampleCounting     = {};
73461     VULKAN_HPP_NAMESPACE::Bool32        depthStencilSwizzleOneSupport                       = {};
73462     VULKAN_HPP_NAMESPACE::Bool32        polygonModePointSize                                = {};
73463     VULKAN_HPP_NAMESPACE::Bool32        nonStrictSinglePixelWideLinesUseParallelogram       = {};
73464     VULKAN_HPP_NAMESPACE::Bool32        nonStrictWideLinesUseParallelogram                  = {};
73465   };
73466 
73467   template <>
73468   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance5Properties>
73469   {
73470     using Type = PhysicalDeviceMaintenance5Properties;
73471   };
73472 
73473   using PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties;
73474 
73475   struct PhysicalDeviceMaintenance6Features
73476   {
73477     using NativeType = VkPhysicalDeviceMaintenance6Features;
73478 
73479     static const bool                                  allowDuplicate = false;
73480     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance6Features;
73481 
73482 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance6FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features73483     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6Features( VULKAN_HPP_NAMESPACE::Bool32 maintenance6_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73484       : pNext{ pNext_ }
73485       , maintenance6{ maintenance6_ }
73486     {
73487     }
73488 
73489     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6Features( PhysicalDeviceMaintenance6Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73490 
PhysicalDeviceMaintenance6FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features73491     PhysicalDeviceMaintenance6Features( VkPhysicalDeviceMaintenance6Features const & rhs ) VULKAN_HPP_NOEXCEPT
73492       : PhysicalDeviceMaintenance6Features( *reinterpret_cast<PhysicalDeviceMaintenance6Features const *>( &rhs ) )
73493     {
73494     }
73495 
73496     PhysicalDeviceMaintenance6Features & operator=( PhysicalDeviceMaintenance6Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73497 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73498 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features73499     PhysicalDeviceMaintenance6Features & operator=( VkPhysicalDeviceMaintenance6Features const & rhs ) VULKAN_HPP_NOEXCEPT
73500     {
73501       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features const *>( &rhs );
73502       return *this;
73503     }
73504 
73505 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features73506     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance6Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
73507     {
73508       pNext = pNext_;
73509       return *this;
73510     }
73511 
setMaintenance6VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features73512     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance6Features & setMaintenance6( VULKAN_HPP_NAMESPACE::Bool32 maintenance6_ ) VULKAN_HPP_NOEXCEPT
73513     {
73514       maintenance6 = maintenance6_;
73515       return *this;
73516     }
73517 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73518 
operator VkPhysicalDeviceMaintenance6Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features73519     operator VkPhysicalDeviceMaintenance6Features const &() const VULKAN_HPP_NOEXCEPT
73520     {
73521       return *reinterpret_cast<const VkPhysicalDeviceMaintenance6Features *>( this );
73522     }
73523 
operator VkPhysicalDeviceMaintenance6Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features73524     operator VkPhysicalDeviceMaintenance6Features &() VULKAN_HPP_NOEXCEPT
73525     {
73526       return *reinterpret_cast<VkPhysicalDeviceMaintenance6Features *>( this );
73527     }
73528 
73529 #if defined( VULKAN_HPP_USE_REFLECT )
73530 #  if 14 <= VULKAN_HPP_CPP_VERSION
73531     auto
73532 #  else
73533     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
73534 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features73535       reflect() const VULKAN_HPP_NOEXCEPT
73536     {
73537       return std::tie( sType, pNext, maintenance6 );
73538     }
73539 #endif
73540 
73541 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73542     auto operator<=>( PhysicalDeviceMaintenance6Features const & ) const = default;
73543 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features73544     bool operator==( PhysicalDeviceMaintenance6Features const & rhs ) const VULKAN_HPP_NOEXCEPT
73545     {
73546 #  if defined( VULKAN_HPP_USE_REFLECT )
73547       return this->reflect() == rhs.reflect();
73548 #  else
73549       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance6 == rhs.maintenance6 );
73550 #  endif
73551     }
73552 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features73553     bool operator!=( PhysicalDeviceMaintenance6Features const & rhs ) const VULKAN_HPP_NOEXCEPT
73554     {
73555       return !operator==( rhs );
73556     }
73557 #endif
73558 
73559   public:
73560     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceMaintenance6Features;
73561     void *                              pNext        = {};
73562     VULKAN_HPP_NAMESPACE::Bool32        maintenance6 = {};
73563   };
73564 
73565   template <>
73566   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance6Features>
73567   {
73568     using Type = PhysicalDeviceMaintenance6Features;
73569   };
73570 
73571   using PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features;
73572 
73573   struct PhysicalDeviceMaintenance6Properties
73574   {
73575     using NativeType = VkPhysicalDeviceMaintenance6Properties;
73576 
73577     static const bool                                  allowDuplicate = false;
73578     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance6Properties;
73579 
73580 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance6PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties73581     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6Properties( VULKAN_HPP_NAMESPACE::Bool32 blockTexelViewCompatibleMultipleLayers_ = {},
73582                                                                uint32_t                     maxCombinedImageSamplerDescriptorCount_ = {},
73583                                                                VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateClampCombinerInputs_ = {},
73584                                                                void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73585       : pNext{ pNext_ }
73586       , blockTexelViewCompatibleMultipleLayers{ blockTexelViewCompatibleMultipleLayers_ }
73587       , maxCombinedImageSamplerDescriptorCount{ maxCombinedImageSamplerDescriptorCount_ }
73588       , fragmentShadingRateClampCombinerInputs{ fragmentShadingRateClampCombinerInputs_ }
73589     {
73590     }
73591 
73592     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6Properties( PhysicalDeviceMaintenance6Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73593 
PhysicalDeviceMaintenance6PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties73594     PhysicalDeviceMaintenance6Properties( VkPhysicalDeviceMaintenance6Properties const & rhs ) VULKAN_HPP_NOEXCEPT
73595       : PhysicalDeviceMaintenance6Properties( *reinterpret_cast<PhysicalDeviceMaintenance6Properties const *>( &rhs ) )
73596     {
73597     }
73598 
73599     PhysicalDeviceMaintenance6Properties & operator=( PhysicalDeviceMaintenance6Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73600 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73601 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties73602     PhysicalDeviceMaintenance6Properties & operator=( VkPhysicalDeviceMaintenance6Properties const & rhs ) VULKAN_HPP_NOEXCEPT
73603     {
73604       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties const *>( &rhs );
73605       return *this;
73606     }
73607 
operator VkPhysicalDeviceMaintenance6Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties73608     operator VkPhysicalDeviceMaintenance6Properties const &() const VULKAN_HPP_NOEXCEPT
73609     {
73610       return *reinterpret_cast<const VkPhysicalDeviceMaintenance6Properties *>( this );
73611     }
73612 
operator VkPhysicalDeviceMaintenance6Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties73613     operator VkPhysicalDeviceMaintenance6Properties &() VULKAN_HPP_NOEXCEPT
73614     {
73615       return *reinterpret_cast<VkPhysicalDeviceMaintenance6Properties *>( this );
73616     }
73617 
73618 #if defined( VULKAN_HPP_USE_REFLECT )
73619 #  if 14 <= VULKAN_HPP_CPP_VERSION
73620     auto
73621 #  else
73622     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73623                void * const &,
73624                VULKAN_HPP_NAMESPACE::Bool32 const &,
73625                uint32_t const &,
73626                VULKAN_HPP_NAMESPACE::Bool32 const &>
73627 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties73628       reflect() const VULKAN_HPP_NOEXCEPT
73629     {
73630       return std::tie( sType, pNext, blockTexelViewCompatibleMultipleLayers, maxCombinedImageSamplerDescriptorCount, fragmentShadingRateClampCombinerInputs );
73631     }
73632 #endif
73633 
73634 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73635     auto operator<=>( PhysicalDeviceMaintenance6Properties const & ) const = default;
73636 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties73637     bool operator==( PhysicalDeviceMaintenance6Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
73638     {
73639 #  if defined( VULKAN_HPP_USE_REFLECT )
73640       return this->reflect() == rhs.reflect();
73641 #  else
73642       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( blockTexelViewCompatibleMultipleLayers == rhs.blockTexelViewCompatibleMultipleLayers ) &&
73643              ( maxCombinedImageSamplerDescriptorCount == rhs.maxCombinedImageSamplerDescriptorCount ) &&
73644              ( fragmentShadingRateClampCombinerInputs == rhs.fragmentShadingRateClampCombinerInputs );
73645 #  endif
73646     }
73647 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties73648     bool operator!=( PhysicalDeviceMaintenance6Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
73649     {
73650       return !operator==( rhs );
73651     }
73652 #endif
73653 
73654   public:
73655     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceMaintenance6Properties;
73656     void *                              pNext                                  = {};
73657     VULKAN_HPP_NAMESPACE::Bool32        blockTexelViewCompatibleMultipleLayers = {};
73658     uint32_t                            maxCombinedImageSamplerDescriptorCount = {};
73659     VULKAN_HPP_NAMESPACE::Bool32        fragmentShadingRateClampCombinerInputs = {};
73660   };
73661 
73662   template <>
73663   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance6Properties>
73664   {
73665     using Type = PhysicalDeviceMaintenance6Properties;
73666   };
73667 
73668   using PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties;
73669 
73670   struct PhysicalDeviceMaintenance7FeaturesKHR
73671   {
73672     using NativeType = VkPhysicalDeviceMaintenance7FeaturesKHR;
73673 
73674     static const bool                                  allowDuplicate = false;
73675     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance7FeaturesKHR;
73676 
73677 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance7FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR73678     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance7FeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 maintenance7_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73679       : pNext{ pNext_ }
73680       , maintenance7{ maintenance7_ }
73681     {
73682     }
73683 
73684     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance7FeaturesKHR( PhysicalDeviceMaintenance7FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73685 
PhysicalDeviceMaintenance7FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR73686     PhysicalDeviceMaintenance7FeaturesKHR( VkPhysicalDeviceMaintenance7FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
73687       : PhysicalDeviceMaintenance7FeaturesKHR( *reinterpret_cast<PhysicalDeviceMaintenance7FeaturesKHR const *>( &rhs ) )
73688     {
73689     }
73690 
73691     PhysicalDeviceMaintenance7FeaturesKHR & operator=( PhysicalDeviceMaintenance7FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73692 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73693 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR73694     PhysicalDeviceMaintenance7FeaturesKHR & operator=( VkPhysicalDeviceMaintenance7FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
73695     {
73696       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR const *>( &rhs );
73697       return *this;
73698     }
73699 
73700 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR73701     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance7FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
73702     {
73703       pNext = pNext_;
73704       return *this;
73705     }
73706 
setMaintenance7VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR73707     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance7FeaturesKHR & setMaintenance7( VULKAN_HPP_NAMESPACE::Bool32 maintenance7_ ) VULKAN_HPP_NOEXCEPT
73708     {
73709       maintenance7 = maintenance7_;
73710       return *this;
73711     }
73712 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73713 
operator VkPhysicalDeviceMaintenance7FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR73714     operator VkPhysicalDeviceMaintenance7FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
73715     {
73716       return *reinterpret_cast<const VkPhysicalDeviceMaintenance7FeaturesKHR *>( this );
73717     }
73718 
operator VkPhysicalDeviceMaintenance7FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR73719     operator VkPhysicalDeviceMaintenance7FeaturesKHR &() VULKAN_HPP_NOEXCEPT
73720     {
73721       return *reinterpret_cast<VkPhysicalDeviceMaintenance7FeaturesKHR *>( this );
73722     }
73723 
73724 #if defined( VULKAN_HPP_USE_REFLECT )
73725 #  if 14 <= VULKAN_HPP_CPP_VERSION
73726     auto
73727 #  else
73728     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
73729 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR73730       reflect() const VULKAN_HPP_NOEXCEPT
73731     {
73732       return std::tie( sType, pNext, maintenance7 );
73733     }
73734 #endif
73735 
73736 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73737     auto operator<=>( PhysicalDeviceMaintenance7FeaturesKHR const & ) const = default;
73738 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR73739     bool operator==( PhysicalDeviceMaintenance7FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
73740     {
73741 #  if defined( VULKAN_HPP_USE_REFLECT )
73742       return this->reflect() == rhs.reflect();
73743 #  else
73744       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance7 == rhs.maintenance7 );
73745 #  endif
73746     }
73747 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR73748     bool operator!=( PhysicalDeviceMaintenance7FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
73749     {
73750       return !operator==( rhs );
73751     }
73752 #endif
73753 
73754   public:
73755     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceMaintenance7FeaturesKHR;
73756     void *                              pNext        = {};
73757     VULKAN_HPP_NAMESPACE::Bool32        maintenance7 = {};
73758   };
73759 
73760   template <>
73761   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance7FeaturesKHR>
73762   {
73763     using Type = PhysicalDeviceMaintenance7FeaturesKHR;
73764   };
73765 
73766   struct PhysicalDeviceMaintenance7PropertiesKHR
73767   {
73768     using NativeType = VkPhysicalDeviceMaintenance7PropertiesKHR;
73769 
73770     static const bool                                  allowDuplicate = false;
73771     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance7PropertiesKHR;
73772 
73773 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance7PropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR73774     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance7PropertiesKHR( VULKAN_HPP_NAMESPACE::Bool32 robustFragmentShadingRateAttachmentAccess_                 = {},
73775                                                                   VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilAttachmentAccess_                      = {},
73776                                                                   uint32_t                     maxDescriptorSetTotalUniformBuffersDynamic_                = {},
73777                                                                   uint32_t                     maxDescriptorSetTotalStorageBuffersDynamic_                = {},
73778                                                                   uint32_t                     maxDescriptorSetTotalBuffersDynamic_                       = {},
73779                                                                   uint32_t                     maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic_ = {},
73780                                                                   uint32_t                     maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic_ = {},
73781                                                                   uint32_t                     maxDescriptorSetUpdateAfterBindTotalBuffersDynamic_        = {},
73782                                                                   void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73783       : pNext{ pNext_ }
73784       , robustFragmentShadingRateAttachmentAccess{ robustFragmentShadingRateAttachmentAccess_ }
73785       , separateDepthStencilAttachmentAccess{ separateDepthStencilAttachmentAccess_ }
73786       , maxDescriptorSetTotalUniformBuffersDynamic{ maxDescriptorSetTotalUniformBuffersDynamic_ }
73787       , maxDescriptorSetTotalStorageBuffersDynamic{ maxDescriptorSetTotalStorageBuffersDynamic_ }
73788       , maxDescriptorSetTotalBuffersDynamic{ maxDescriptorSetTotalBuffersDynamic_ }
73789       , maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic{ maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic_ }
73790       , maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic{ maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic_ }
73791       , maxDescriptorSetUpdateAfterBindTotalBuffersDynamic{ maxDescriptorSetUpdateAfterBindTotalBuffersDynamic_ }
73792     {
73793     }
73794 
73795     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance7PropertiesKHR( PhysicalDeviceMaintenance7PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73796 
PhysicalDeviceMaintenance7PropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR73797     PhysicalDeviceMaintenance7PropertiesKHR( VkPhysicalDeviceMaintenance7PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
73798       : PhysicalDeviceMaintenance7PropertiesKHR( *reinterpret_cast<PhysicalDeviceMaintenance7PropertiesKHR const *>( &rhs ) )
73799     {
73800     }
73801 
73802     PhysicalDeviceMaintenance7PropertiesKHR & operator=( PhysicalDeviceMaintenance7PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73803 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73804 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR73805     PhysicalDeviceMaintenance7PropertiesKHR & operator=( VkPhysicalDeviceMaintenance7PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
73806     {
73807       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR const *>( &rhs );
73808       return *this;
73809     }
73810 
operator VkPhysicalDeviceMaintenance7PropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR73811     operator VkPhysicalDeviceMaintenance7PropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
73812     {
73813       return *reinterpret_cast<const VkPhysicalDeviceMaintenance7PropertiesKHR *>( this );
73814     }
73815 
operator VkPhysicalDeviceMaintenance7PropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR73816     operator VkPhysicalDeviceMaintenance7PropertiesKHR &() VULKAN_HPP_NOEXCEPT
73817     {
73818       return *reinterpret_cast<VkPhysicalDeviceMaintenance7PropertiesKHR *>( this );
73819     }
73820 
73821 #if defined( VULKAN_HPP_USE_REFLECT )
73822 #  if 14 <= VULKAN_HPP_CPP_VERSION
73823     auto
73824 #  else
73825     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73826                void * const &,
73827                VULKAN_HPP_NAMESPACE::Bool32 const &,
73828                VULKAN_HPP_NAMESPACE::Bool32 const &,
73829                uint32_t const &,
73830                uint32_t const &,
73831                uint32_t const &,
73832                uint32_t const &,
73833                uint32_t const &,
73834                uint32_t const &>
73835 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR73836       reflect() const VULKAN_HPP_NOEXCEPT
73837     {
73838       return std::tie( sType,
73839                        pNext,
73840                        robustFragmentShadingRateAttachmentAccess,
73841                        separateDepthStencilAttachmentAccess,
73842                        maxDescriptorSetTotalUniformBuffersDynamic,
73843                        maxDescriptorSetTotalStorageBuffersDynamic,
73844                        maxDescriptorSetTotalBuffersDynamic,
73845                        maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic,
73846                        maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic,
73847                        maxDescriptorSetUpdateAfterBindTotalBuffersDynamic );
73848     }
73849 #endif
73850 
73851 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73852     auto operator<=>( PhysicalDeviceMaintenance7PropertiesKHR const & ) const = default;
73853 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR73854     bool operator==( PhysicalDeviceMaintenance7PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
73855     {
73856 #  if defined( VULKAN_HPP_USE_REFLECT )
73857       return this->reflect() == rhs.reflect();
73858 #  else
73859       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
73860              ( robustFragmentShadingRateAttachmentAccess == rhs.robustFragmentShadingRateAttachmentAccess ) &&
73861              ( separateDepthStencilAttachmentAccess == rhs.separateDepthStencilAttachmentAccess ) &&
73862              ( maxDescriptorSetTotalUniformBuffersDynamic == rhs.maxDescriptorSetTotalUniformBuffersDynamic ) &&
73863              ( maxDescriptorSetTotalStorageBuffersDynamic == rhs.maxDescriptorSetTotalStorageBuffersDynamic ) &&
73864              ( maxDescriptorSetTotalBuffersDynamic == rhs.maxDescriptorSetTotalBuffersDynamic ) &&
73865              ( maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic ) &&
73866              ( maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic ) &&
73867              ( maxDescriptorSetUpdateAfterBindTotalBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindTotalBuffersDynamic );
73868 #  endif
73869     }
73870 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR73871     bool operator!=( PhysicalDeviceMaintenance7PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
73872     {
73873       return !operator==( rhs );
73874     }
73875 #endif
73876 
73877   public:
73878     VULKAN_HPP_NAMESPACE::StructureType sType                                                     = StructureType::ePhysicalDeviceMaintenance7PropertiesKHR;
73879     void *                              pNext                                                     = {};
73880     VULKAN_HPP_NAMESPACE::Bool32        robustFragmentShadingRateAttachmentAccess                 = {};
73881     VULKAN_HPP_NAMESPACE::Bool32        separateDepthStencilAttachmentAccess                      = {};
73882     uint32_t                            maxDescriptorSetTotalUniformBuffersDynamic                = {};
73883     uint32_t                            maxDescriptorSetTotalStorageBuffersDynamic                = {};
73884     uint32_t                            maxDescriptorSetTotalBuffersDynamic                       = {};
73885     uint32_t                            maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic = {};
73886     uint32_t                            maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic = {};
73887     uint32_t                            maxDescriptorSetUpdateAfterBindTotalBuffersDynamic        = {};
73888   };
73889 
73890   template <>
73891   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance7PropertiesKHR>
73892   {
73893     using Type = PhysicalDeviceMaintenance7PropertiesKHR;
73894   };
73895 
73896   struct PhysicalDeviceMapMemoryPlacedFeaturesEXT
73897   {
73898     using NativeType = VkPhysicalDeviceMapMemoryPlacedFeaturesEXT;
73899 
73900     static const bool                                  allowDuplicate = false;
73901     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMapMemoryPlacedFeaturesEXT;
73902 
73903 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMapMemoryPlacedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73904     VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 memoryMapPlaced_      = {},
73905                                                                    VULKAN_HPP_NAMESPACE::Bool32 memoryMapRangePlaced_ = {},
73906                                                                    VULKAN_HPP_NAMESPACE::Bool32 memoryUnmapReserve_   = {},
73907                                                                    void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
73908       : pNext{ pNext_ }
73909       , memoryMapPlaced{ memoryMapPlaced_ }
73910       , memoryMapRangePlaced{ memoryMapRangePlaced_ }
73911       , memoryUnmapReserve{ memoryUnmapReserve_ }
73912     {
73913     }
73914 
73915     VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedFeaturesEXT( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73916 
PhysicalDeviceMapMemoryPlacedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73917     PhysicalDeviceMapMemoryPlacedFeaturesEXT( VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73918       : PhysicalDeviceMapMemoryPlacedFeaturesEXT( *reinterpret_cast<PhysicalDeviceMapMemoryPlacedFeaturesEXT const *>( &rhs ) )
73919     {
73920     }
73921 
73922     PhysicalDeviceMapMemoryPlacedFeaturesEXT & operator=( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73923 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73924 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73925     PhysicalDeviceMapMemoryPlacedFeaturesEXT & operator=( VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73926     {
73927       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT const *>( &rhs );
73928       return *this;
73929     }
73930 
73931 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73932     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
73933     {
73934       pNext = pNext_;
73935       return *this;
73936     }
73937 
setMemoryMapPlacedVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73938     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT & setMemoryMapPlaced( VULKAN_HPP_NAMESPACE::Bool32 memoryMapPlaced_ ) VULKAN_HPP_NOEXCEPT
73939     {
73940       memoryMapPlaced = memoryMapPlaced_;
73941       return *this;
73942     }
73943 
73944     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT &
setMemoryMapRangePlacedVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73945       setMemoryMapRangePlaced( VULKAN_HPP_NAMESPACE::Bool32 memoryMapRangePlaced_ ) VULKAN_HPP_NOEXCEPT
73946     {
73947       memoryMapRangePlaced = memoryMapRangePlaced_;
73948       return *this;
73949     }
73950 
73951     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT &
setMemoryUnmapReserveVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73952       setMemoryUnmapReserve( VULKAN_HPP_NAMESPACE::Bool32 memoryUnmapReserve_ ) VULKAN_HPP_NOEXCEPT
73953     {
73954       memoryUnmapReserve = memoryUnmapReserve_;
73955       return *this;
73956     }
73957 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73958 
operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73959     operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
73960     {
73961       return *reinterpret_cast<const VkPhysicalDeviceMapMemoryPlacedFeaturesEXT *>( this );
73962     }
73963 
operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73964     operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT &() VULKAN_HPP_NOEXCEPT
73965     {
73966       return *reinterpret_cast<VkPhysicalDeviceMapMemoryPlacedFeaturesEXT *>( this );
73967     }
73968 
73969 #if defined( VULKAN_HPP_USE_REFLECT )
73970 #  if 14 <= VULKAN_HPP_CPP_VERSION
73971     auto
73972 #  else
73973     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73974                void * const &,
73975                VULKAN_HPP_NAMESPACE::Bool32 const &,
73976                VULKAN_HPP_NAMESPACE::Bool32 const &,
73977                VULKAN_HPP_NAMESPACE::Bool32 const &>
73978 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73979       reflect() const VULKAN_HPP_NOEXCEPT
73980     {
73981       return std::tie( sType, pNext, memoryMapPlaced, memoryMapRangePlaced, memoryUnmapReserve );
73982     }
73983 #endif
73984 
73985 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73986     auto operator<=>( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & ) const = default;
73987 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73988     bool operator==( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
73989     {
73990 #  if defined( VULKAN_HPP_USE_REFLECT )
73991       return this->reflect() == rhs.reflect();
73992 #  else
73993       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryMapPlaced == rhs.memoryMapPlaced ) &&
73994              ( memoryMapRangePlaced == rhs.memoryMapRangePlaced ) && ( memoryUnmapReserve == rhs.memoryUnmapReserve );
73995 #  endif
73996     }
73997 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT73998     bool operator!=( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
73999     {
74000       return !operator==( rhs );
74001     }
74002 #endif
74003 
74004   public:
74005     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceMapMemoryPlacedFeaturesEXT;
74006     void *                              pNext                = {};
74007     VULKAN_HPP_NAMESPACE::Bool32        memoryMapPlaced      = {};
74008     VULKAN_HPP_NAMESPACE::Bool32        memoryMapRangePlaced = {};
74009     VULKAN_HPP_NAMESPACE::Bool32        memoryUnmapReserve   = {};
74010   };
74011 
74012   template <>
74013   struct CppType<StructureType, StructureType::ePhysicalDeviceMapMemoryPlacedFeaturesEXT>
74014   {
74015     using Type = PhysicalDeviceMapMemoryPlacedFeaturesEXT;
74016   };
74017 
74018   struct PhysicalDeviceMapMemoryPlacedPropertiesEXT
74019   {
74020     using NativeType = VkPhysicalDeviceMapMemoryPlacedPropertiesEXT;
74021 
74022     static const bool                                  allowDuplicate = false;
74023     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMapMemoryPlacedPropertiesEXT;
74024 
74025 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMapMemoryPlacedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT74026     VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedPropertiesEXT( VULKAN_HPP_NAMESPACE::DeviceSize minPlacedMemoryMapAlignment_ = {},
74027                                                                      void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74028       : pNext{ pNext_ }
74029       , minPlacedMemoryMapAlignment{ minPlacedMemoryMapAlignment_ }
74030     {
74031     }
74032 
74033     VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedPropertiesEXT( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74034 
PhysicalDeviceMapMemoryPlacedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT74035     PhysicalDeviceMapMemoryPlacedPropertiesEXT( VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74036       : PhysicalDeviceMapMemoryPlacedPropertiesEXT( *reinterpret_cast<PhysicalDeviceMapMemoryPlacedPropertiesEXT const *>( &rhs ) )
74037     {
74038     }
74039 
74040     PhysicalDeviceMapMemoryPlacedPropertiesEXT & operator=( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74041 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74042 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT74043     PhysicalDeviceMapMemoryPlacedPropertiesEXT & operator=( VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74044     {
74045       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT const *>( &rhs );
74046       return *this;
74047     }
74048 
operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT74049     operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
74050     {
74051       return *reinterpret_cast<const VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *>( this );
74052     }
74053 
operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT74054     operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT &() VULKAN_HPP_NOEXCEPT
74055     {
74056       return *reinterpret_cast<VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *>( this );
74057     }
74058 
74059 #if defined( VULKAN_HPP_USE_REFLECT )
74060 #  if 14 <= VULKAN_HPP_CPP_VERSION
74061     auto
74062 #  else
74063     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
74064 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT74065       reflect() const VULKAN_HPP_NOEXCEPT
74066     {
74067       return std::tie( sType, pNext, minPlacedMemoryMapAlignment );
74068     }
74069 #endif
74070 
74071 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74072     auto operator<=>( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & ) const = default;
74073 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT74074     bool operator==( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74075     {
74076 #  if defined( VULKAN_HPP_USE_REFLECT )
74077       return this->reflect() == rhs.reflect();
74078 #  else
74079       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minPlacedMemoryMapAlignment == rhs.minPlacedMemoryMapAlignment );
74080 #  endif
74081     }
74082 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT74083     bool operator!=( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74084     {
74085       return !operator==( rhs );
74086     }
74087 #endif
74088 
74089   public:
74090     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceMapMemoryPlacedPropertiesEXT;
74091     void *                              pNext                       = {};
74092     VULKAN_HPP_NAMESPACE::DeviceSize    minPlacedMemoryMapAlignment = {};
74093   };
74094 
74095   template <>
74096   struct CppType<StructureType, StructureType::ePhysicalDeviceMapMemoryPlacedPropertiesEXT>
74097   {
74098     using Type = PhysicalDeviceMapMemoryPlacedPropertiesEXT;
74099   };
74100 
74101   struct PhysicalDeviceMemoryBudgetPropertiesEXT
74102   {
74103     using NativeType = VkPhysicalDeviceMemoryBudgetPropertiesEXT;
74104 
74105     static const bool                                  allowDuplicate = false;
74106     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT;
74107 
74108 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryBudgetPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT74109     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT( std::array<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const & heapBudget_ = {},
74110                                                                      std::array<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const & heapUsage_  = {},
74111                                                                      void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74112       : pNext{ pNext_ }
74113       , heapBudget{ heapBudget_ }
74114       , heapUsage{ heapUsage_ }
74115     {
74116     }
74117 
74118     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74119 
PhysicalDeviceMemoryBudgetPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT74120     PhysicalDeviceMemoryBudgetPropertiesEXT( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74121       : PhysicalDeviceMemoryBudgetPropertiesEXT( *reinterpret_cast<PhysicalDeviceMemoryBudgetPropertiesEXT const *>( &rhs ) )
74122     {
74123     }
74124 
74125     PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74126 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74127 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT74128     PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74129     {
74130       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT const *>( &rhs );
74131       return *this;
74132     }
74133 
operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT74134     operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
74135     {
74136       return *reinterpret_cast<const VkPhysicalDeviceMemoryBudgetPropertiesEXT *>( this );
74137     }
74138 
operator VkPhysicalDeviceMemoryBudgetPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT74139     operator VkPhysicalDeviceMemoryBudgetPropertiesEXT &() VULKAN_HPP_NOEXCEPT
74140     {
74141       return *reinterpret_cast<VkPhysicalDeviceMemoryBudgetPropertiesEXT *>( this );
74142     }
74143 
74144 #if defined( VULKAN_HPP_USE_REFLECT )
74145 #  if 14 <= VULKAN_HPP_CPP_VERSION
74146     auto
74147 #  else
74148     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
74149                void * const &,
74150                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const &,
74151                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const &>
74152 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT74153       reflect() const VULKAN_HPP_NOEXCEPT
74154     {
74155       return std::tie( sType, pNext, heapBudget, heapUsage );
74156     }
74157 #endif
74158 
74159 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74160     auto operator<=>( PhysicalDeviceMemoryBudgetPropertiesEXT const & ) const = default;
74161 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT74162     bool operator==( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74163     {
74164 #  if defined( VULKAN_HPP_USE_REFLECT )
74165       return this->reflect() == rhs.reflect();
74166 #  else
74167       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( heapBudget == rhs.heapBudget ) && ( heapUsage == rhs.heapUsage );
74168 #  endif
74169     }
74170 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT74171     bool operator!=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74172     {
74173       return !operator==( rhs );
74174     }
74175 #endif
74176 
74177   public:
74178     VULKAN_HPP_NAMESPACE::StructureType                                                         sType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT;
74179     void *                                                                                      pNext = {};
74180     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> heapBudget = {};
74181     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> heapUsage  = {};
74182   };
74183 
74184   template <>
74185   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT>
74186   {
74187     using Type = PhysicalDeviceMemoryBudgetPropertiesEXT;
74188   };
74189 
74190   struct PhysicalDeviceMemoryDecompressionFeaturesNV
74191   {
74192     using NativeType = VkPhysicalDeviceMemoryDecompressionFeaturesNV;
74193 
74194     static const bool                                  allowDuplicate = false;
74195     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryDecompressionFeaturesNV;
74196 
74197 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryDecompressionFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV74198     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryDecompressionFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 memoryDecompression_ = {},
74199                                                                       void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
74200       : pNext{ pNext_ }
74201       , memoryDecompression{ memoryDecompression_ }
74202     {
74203     }
74204 
74205     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryDecompressionFeaturesNV( PhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74206 
PhysicalDeviceMemoryDecompressionFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV74207     PhysicalDeviceMemoryDecompressionFeaturesNV( VkPhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
74208       : PhysicalDeviceMemoryDecompressionFeaturesNV( *reinterpret_cast<PhysicalDeviceMemoryDecompressionFeaturesNV const *>( &rhs ) )
74209     {
74210     }
74211 
74212     PhysicalDeviceMemoryDecompressionFeaturesNV & operator=( PhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74213 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74214 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV74215     PhysicalDeviceMemoryDecompressionFeaturesNV & operator=( VkPhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
74216     {
74217       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV const *>( &rhs );
74218       return *this;
74219     }
74220 
74221 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV74222     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryDecompressionFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74223     {
74224       pNext = pNext_;
74225       return *this;
74226     }
74227 
74228     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryDecompressionFeaturesNV &
setMemoryDecompressionVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV74229       setMemoryDecompression( VULKAN_HPP_NAMESPACE::Bool32 memoryDecompression_ ) VULKAN_HPP_NOEXCEPT
74230     {
74231       memoryDecompression = memoryDecompression_;
74232       return *this;
74233     }
74234 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74235 
operator VkPhysicalDeviceMemoryDecompressionFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV74236     operator VkPhysicalDeviceMemoryDecompressionFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
74237     {
74238       return *reinterpret_cast<const VkPhysicalDeviceMemoryDecompressionFeaturesNV *>( this );
74239     }
74240 
operator VkPhysicalDeviceMemoryDecompressionFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV74241     operator VkPhysicalDeviceMemoryDecompressionFeaturesNV &() VULKAN_HPP_NOEXCEPT
74242     {
74243       return *reinterpret_cast<VkPhysicalDeviceMemoryDecompressionFeaturesNV *>( this );
74244     }
74245 
74246 #if defined( VULKAN_HPP_USE_REFLECT )
74247 #  if 14 <= VULKAN_HPP_CPP_VERSION
74248     auto
74249 #  else
74250     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
74251 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV74252       reflect() const VULKAN_HPP_NOEXCEPT
74253     {
74254       return std::tie( sType, pNext, memoryDecompression );
74255     }
74256 #endif
74257 
74258 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74259     auto operator<=>( PhysicalDeviceMemoryDecompressionFeaturesNV const & ) const = default;
74260 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV74261     bool operator==( PhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
74262     {
74263 #  if defined( VULKAN_HPP_USE_REFLECT )
74264       return this->reflect() == rhs.reflect();
74265 #  else
74266       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryDecompression == rhs.memoryDecompression );
74267 #  endif
74268     }
74269 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV74270     bool operator!=( PhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
74271     {
74272       return !operator==( rhs );
74273     }
74274 #endif
74275 
74276   public:
74277     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceMemoryDecompressionFeaturesNV;
74278     void *                              pNext               = {};
74279     VULKAN_HPP_NAMESPACE::Bool32        memoryDecompression = {};
74280   };
74281 
74282   template <>
74283   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryDecompressionFeaturesNV>
74284   {
74285     using Type = PhysicalDeviceMemoryDecompressionFeaturesNV;
74286   };
74287 
74288   struct PhysicalDeviceMemoryDecompressionPropertiesNV
74289   {
74290     using NativeType = VkPhysicalDeviceMemoryDecompressionPropertiesNV;
74291 
74292     static const bool                                  allowDuplicate = false;
74293     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryDecompressionPropertiesNV;
74294 
74295 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryDecompressionPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV74296     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryDecompressionPropertiesNV( VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV decompressionMethods_ = {},
74297                                                                         uint64_t maxDecompressionIndirectCount_                                      = {},
74298                                                                         void *   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74299       : pNext{ pNext_ }
74300       , decompressionMethods{ decompressionMethods_ }
74301       , maxDecompressionIndirectCount{ maxDecompressionIndirectCount_ }
74302     {
74303     }
74304 
74305     VULKAN_HPP_CONSTEXPR
74306       PhysicalDeviceMemoryDecompressionPropertiesNV( PhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74307 
PhysicalDeviceMemoryDecompressionPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV74308     PhysicalDeviceMemoryDecompressionPropertiesNV( VkPhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
74309       : PhysicalDeviceMemoryDecompressionPropertiesNV( *reinterpret_cast<PhysicalDeviceMemoryDecompressionPropertiesNV const *>( &rhs ) )
74310     {
74311     }
74312 
74313     PhysicalDeviceMemoryDecompressionPropertiesNV & operator=( PhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74314 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74315 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV74316     PhysicalDeviceMemoryDecompressionPropertiesNV & operator=( VkPhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
74317     {
74318       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV const *>( &rhs );
74319       return *this;
74320     }
74321 
operator VkPhysicalDeviceMemoryDecompressionPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV74322     operator VkPhysicalDeviceMemoryDecompressionPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
74323     {
74324       return *reinterpret_cast<const VkPhysicalDeviceMemoryDecompressionPropertiesNV *>( this );
74325     }
74326 
operator VkPhysicalDeviceMemoryDecompressionPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV74327     operator VkPhysicalDeviceMemoryDecompressionPropertiesNV &() VULKAN_HPP_NOEXCEPT
74328     {
74329       return *reinterpret_cast<VkPhysicalDeviceMemoryDecompressionPropertiesNV *>( this );
74330     }
74331 
74332 #if defined( VULKAN_HPP_USE_REFLECT )
74333 #  if 14 <= VULKAN_HPP_CPP_VERSION
74334     auto
74335 #  else
74336     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV const &, uint64_t const &>
74337 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV74338       reflect() const VULKAN_HPP_NOEXCEPT
74339     {
74340       return std::tie( sType, pNext, decompressionMethods, maxDecompressionIndirectCount );
74341     }
74342 #endif
74343 
74344 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74345     auto operator<=>( PhysicalDeviceMemoryDecompressionPropertiesNV const & ) const = default;
74346 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV74347     bool operator==( PhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
74348     {
74349 #  if defined( VULKAN_HPP_USE_REFLECT )
74350       return this->reflect() == rhs.reflect();
74351 #  else
74352       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decompressionMethods == rhs.decompressionMethods ) &&
74353              ( maxDecompressionIndirectCount == rhs.maxDecompressionIndirectCount );
74354 #  endif
74355     }
74356 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV74357     bool operator!=( PhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
74358     {
74359       return !operator==( rhs );
74360     }
74361 #endif
74362 
74363   public:
74364     VULKAN_HPP_NAMESPACE::StructureType                    sType                         = StructureType::ePhysicalDeviceMemoryDecompressionPropertiesNV;
74365     void *                                                 pNext                         = {};
74366     VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV decompressionMethods          = {};
74367     uint64_t                                               maxDecompressionIndirectCount = {};
74368   };
74369 
74370   template <>
74371   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryDecompressionPropertiesNV>
74372   {
74373     using Type = PhysicalDeviceMemoryDecompressionPropertiesNV;
74374   };
74375 
74376   struct PhysicalDeviceMemoryPriorityFeaturesEXT
74377   {
74378     using NativeType = VkPhysicalDeviceMemoryPriorityFeaturesEXT;
74379 
74380     static const bool                                  allowDuplicate = false;
74381     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT;
74382 
74383 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryPriorityFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT74384     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 memoryPriority_ = {},
74385                                                                   void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
74386       : pNext{ pNext_ }
74387       , memoryPriority{ memoryPriority_ }
74388     {
74389     }
74390 
74391     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74392 
PhysicalDeviceMemoryPriorityFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT74393     PhysicalDeviceMemoryPriorityFeaturesEXT( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74394       : PhysicalDeviceMemoryPriorityFeaturesEXT( *reinterpret_cast<PhysicalDeviceMemoryPriorityFeaturesEXT const *>( &rhs ) )
74395     {
74396     }
74397 
74398     PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74399 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74400 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT74401     PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74402     {
74403       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT const *>( &rhs );
74404       return *this;
74405     }
74406 
74407 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT74408     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74409     {
74410       pNext = pNext_;
74411       return *this;
74412     }
74413 
setMemoryPriorityVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT74414     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & setMemoryPriority( VULKAN_HPP_NAMESPACE::Bool32 memoryPriority_ ) VULKAN_HPP_NOEXCEPT
74415     {
74416       memoryPriority = memoryPriority_;
74417       return *this;
74418     }
74419 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74420 
operator VkPhysicalDeviceMemoryPriorityFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT74421     operator VkPhysicalDeviceMemoryPriorityFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
74422     {
74423       return *reinterpret_cast<const VkPhysicalDeviceMemoryPriorityFeaturesEXT *>( this );
74424     }
74425 
operator VkPhysicalDeviceMemoryPriorityFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT74426     operator VkPhysicalDeviceMemoryPriorityFeaturesEXT &() VULKAN_HPP_NOEXCEPT
74427     {
74428       return *reinterpret_cast<VkPhysicalDeviceMemoryPriorityFeaturesEXT *>( this );
74429     }
74430 
74431 #if defined( VULKAN_HPP_USE_REFLECT )
74432 #  if 14 <= VULKAN_HPP_CPP_VERSION
74433     auto
74434 #  else
74435     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
74436 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT74437       reflect() const VULKAN_HPP_NOEXCEPT
74438     {
74439       return std::tie( sType, pNext, memoryPriority );
74440     }
74441 #endif
74442 
74443 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74444     auto operator<=>( PhysicalDeviceMemoryPriorityFeaturesEXT const & ) const = default;
74445 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT74446     bool operator==( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74447     {
74448 #  if defined( VULKAN_HPP_USE_REFLECT )
74449       return this->reflect() == rhs.reflect();
74450 #  else
74451       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryPriority == rhs.memoryPriority );
74452 #  endif
74453     }
74454 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT74455     bool operator!=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74456     {
74457       return !operator==( rhs );
74458     }
74459 #endif
74460 
74461   public:
74462     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT;
74463     void *                              pNext          = {};
74464     VULKAN_HPP_NAMESPACE::Bool32        memoryPriority = {};
74465   };
74466 
74467   template <>
74468   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT>
74469   {
74470     using Type = PhysicalDeviceMemoryPriorityFeaturesEXT;
74471   };
74472 
74473   struct PhysicalDeviceMemoryProperties
74474   {
74475     using NativeType = VkPhysicalDeviceMemoryProperties;
74476 
74477 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
74478     VULKAN_HPP_CONSTEXPR_14
PhysicalDeviceMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties74479       PhysicalDeviceMemoryProperties( uint32_t                                                                  memoryTypeCount_ = {},
74480                                       std::array<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> const & memoryTypes_     = {},
74481                                       uint32_t                                                                  memoryHeapCount_ = {},
74482                                       std::array<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> const & memoryHeaps_     = {} ) VULKAN_HPP_NOEXCEPT
74483       : memoryTypeCount{ memoryTypeCount_ }
74484       , memoryTypes{ memoryTypes_ }
74485       , memoryHeapCount{ memoryHeapCount_ }
74486       , memoryHeaps{ memoryHeaps_ }
74487     {
74488     }
74489 
74490     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74491 
PhysicalDeviceMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties74492     PhysicalDeviceMemoryProperties( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
74493       : PhysicalDeviceMemoryProperties( *reinterpret_cast<PhysicalDeviceMemoryProperties const *>( &rhs ) )
74494     {
74495     }
74496 
74497     PhysicalDeviceMemoryProperties & operator=( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74498 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74499 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties74500     PhysicalDeviceMemoryProperties & operator=( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
74501     {
74502       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const *>( &rhs );
74503       return *this;
74504     }
74505 
operator VkPhysicalDeviceMemoryProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties74506     operator VkPhysicalDeviceMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
74507     {
74508       return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties *>( this );
74509     }
74510 
operator VkPhysicalDeviceMemoryProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties74511     operator VkPhysicalDeviceMemoryProperties &() VULKAN_HPP_NOEXCEPT
74512     {
74513       return *reinterpret_cast<VkPhysicalDeviceMemoryProperties *>( this );
74514     }
74515 
74516 #if defined( VULKAN_HPP_USE_REFLECT )
74517 #  if 14 <= VULKAN_HPP_CPP_VERSION
74518     auto
74519 #  else
74520     std::tuple<uint32_t const &,
74521                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> const &,
74522                uint32_t const &,
74523                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> const &>
74524 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties74525       reflect() const VULKAN_HPP_NOEXCEPT
74526     {
74527       return std::tie( memoryTypeCount, memoryTypes, memoryHeapCount, memoryHeaps );
74528     }
74529 #endif
74530 
74531 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties74532     std::strong_ordering operator<=>( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
74533     {
74534       if ( auto cmp = memoryTypeCount <=> rhs.memoryTypeCount; cmp != 0 )
74535         return cmp;
74536       for ( size_t i = 0; i < memoryTypeCount; ++i )
74537       {
74538         if ( auto cmp = memoryTypes[i] <=> rhs.memoryTypes[i]; cmp != 0 )
74539           return cmp;
74540       }
74541       if ( auto cmp = memoryHeapCount <=> rhs.memoryHeapCount; cmp != 0 )
74542         return cmp;
74543       for ( size_t i = 0; i < memoryHeapCount; ++i )
74544       {
74545         if ( auto cmp = memoryHeaps[i] <=> rhs.memoryHeaps[i]; cmp != 0 )
74546           return cmp;
74547       }
74548 
74549       return std::strong_ordering::equivalent;
74550     }
74551 #endif
74552 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties74553     bool operator==( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
74554     {
74555       return ( memoryTypeCount == rhs.memoryTypeCount ) &&
74556              ( memcmp( memoryTypes, rhs.memoryTypes, memoryTypeCount * sizeof( VULKAN_HPP_NAMESPACE::MemoryType ) ) == 0 ) &&
74557              ( memoryHeapCount == rhs.memoryHeapCount ) &&
74558              ( memcmp( memoryHeaps, rhs.memoryHeaps, memoryHeapCount * sizeof( VULKAN_HPP_NAMESPACE::MemoryHeap ) ) == 0 );
74559     }
74560 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties74561     bool operator!=( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
74562     {
74563       return !operator==( rhs );
74564     }
74565 
74566   public:
74567     uint32_t                                                                                    memoryTypeCount = {};
74568     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> memoryTypes     = {};
74569     uint32_t                                                                                    memoryHeapCount = {};
74570     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> memoryHeaps     = {};
74571   };
74572 
74573   struct PhysicalDeviceMemoryProperties2
74574   {
74575     using NativeType = VkPhysicalDeviceMemoryProperties2;
74576 
74577     static const bool                                  allowDuplicate = false;
74578     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryProperties2;
74579 
74580 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties274581     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties_ = {},
74582                                                              void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74583       : pNext{ pNext_ }
74584       , memoryProperties{ memoryProperties_ }
74585     {
74586     }
74587 
74588     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74589 
PhysicalDeviceMemoryProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties274590     PhysicalDeviceMemoryProperties2( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
74591       : PhysicalDeviceMemoryProperties2( *reinterpret_cast<PhysicalDeviceMemoryProperties2 const *>( &rhs ) )
74592     {
74593     }
74594 
74595     PhysicalDeviceMemoryProperties2 & operator=( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74596 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74597 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties274598     PhysicalDeviceMemoryProperties2 & operator=( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
74599     {
74600       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 const *>( &rhs );
74601       return *this;
74602     }
74603 
operator VkPhysicalDeviceMemoryProperties2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties274604     operator VkPhysicalDeviceMemoryProperties2 const &() const VULKAN_HPP_NOEXCEPT
74605     {
74606       return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2 *>( this );
74607     }
74608 
operator VkPhysicalDeviceMemoryProperties2&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties274609     operator VkPhysicalDeviceMemoryProperties2 &() VULKAN_HPP_NOEXCEPT
74610     {
74611       return *reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( this );
74612     }
74613 
74614 #if defined( VULKAN_HPP_USE_REFLECT )
74615 #  if 14 <= VULKAN_HPP_CPP_VERSION
74616     auto
74617 #  else
74618     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const &>
74619 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties274620       reflect() const VULKAN_HPP_NOEXCEPT
74621     {
74622       return std::tie( sType, pNext, memoryProperties );
74623     }
74624 #endif
74625 
74626 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74627     auto operator<=>( PhysicalDeviceMemoryProperties2 const & ) const = default;
74628 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties274629     bool operator==( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
74630     {
74631 #  if defined( VULKAN_HPP_USE_REFLECT )
74632       return this->reflect() == rhs.reflect();
74633 #  else
74634       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryProperties == rhs.memoryProperties );
74635 #  endif
74636     }
74637 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties274638     bool operator!=( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
74639     {
74640       return !operator==( rhs );
74641     }
74642 #endif
74643 
74644   public:
74645     VULKAN_HPP_NAMESPACE::StructureType                  sType            = StructureType::ePhysicalDeviceMemoryProperties2;
74646     void *                                               pNext            = {};
74647     VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties = {};
74648   };
74649 
74650   template <>
74651   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryProperties2>
74652   {
74653     using Type = PhysicalDeviceMemoryProperties2;
74654   };
74655 
74656   using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
74657 
74658   struct PhysicalDeviceMeshShaderFeaturesEXT
74659   {
74660     using NativeType = VkPhysicalDeviceMeshShaderFeaturesEXT;
74661 
74662     static const bool                                  allowDuplicate = false;
74663     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMeshShaderFeaturesEXT;
74664 
74665 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMeshShaderFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74666     VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 taskShader_                             = {},
74667                                                               VULKAN_HPP_NAMESPACE::Bool32 meshShader_                             = {},
74668                                                               VULKAN_HPP_NAMESPACE::Bool32 multiviewMeshShader_                    = {},
74669                                                               VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRateMeshShader_ = {},
74670                                                               VULKAN_HPP_NAMESPACE::Bool32 meshShaderQueries_                      = {},
74671                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74672       : pNext{ pNext_ }
74673       , taskShader{ taskShader_ }
74674       , meshShader{ meshShader_ }
74675       , multiviewMeshShader{ multiviewMeshShader_ }
74676       , primitiveFragmentShadingRateMeshShader{ primitiveFragmentShadingRateMeshShader_ }
74677       , meshShaderQueries{ meshShaderQueries_ }
74678     {
74679     }
74680 
74681     VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesEXT( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74682 
PhysicalDeviceMeshShaderFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74683     PhysicalDeviceMeshShaderFeaturesEXT( VkPhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74684       : PhysicalDeviceMeshShaderFeaturesEXT( *reinterpret_cast<PhysicalDeviceMeshShaderFeaturesEXT const *>( &rhs ) )
74685     {
74686     }
74687 
74688     PhysicalDeviceMeshShaderFeaturesEXT & operator=( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74689 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74690 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74691     PhysicalDeviceMeshShaderFeaturesEXT & operator=( VkPhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74692     {
74693       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT const *>( &rhs );
74694       return *this;
74695     }
74696 
74697 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74698     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74699     {
74700       pNext = pNext_;
74701       return *this;
74702     }
74703 
setTaskShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74704     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setTaskShader( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ ) VULKAN_HPP_NOEXCEPT
74705     {
74706       taskShader = taskShader_;
74707       return *this;
74708     }
74709 
setMeshShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74710     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setMeshShader( VULKAN_HPP_NAMESPACE::Bool32 meshShader_ ) VULKAN_HPP_NOEXCEPT
74711     {
74712       meshShader = meshShader_;
74713       return *this;
74714     }
74715 
74716     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT &
setMultiviewMeshShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74717       setMultiviewMeshShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewMeshShader_ ) VULKAN_HPP_NOEXCEPT
74718     {
74719       multiviewMeshShader = multiviewMeshShader_;
74720       return *this;
74721     }
74722 
74723     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT &
setPrimitiveFragmentShadingRateMeshShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74724       setPrimitiveFragmentShadingRateMeshShader( VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRateMeshShader_ ) VULKAN_HPP_NOEXCEPT
74725     {
74726       primitiveFragmentShadingRateMeshShader = primitiveFragmentShadingRateMeshShader_;
74727       return *this;
74728     }
74729 
setMeshShaderQueriesVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74730     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setMeshShaderQueries( VULKAN_HPP_NAMESPACE::Bool32 meshShaderQueries_ ) VULKAN_HPP_NOEXCEPT
74731     {
74732       meshShaderQueries = meshShaderQueries_;
74733       return *this;
74734     }
74735 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74736 
operator VkPhysicalDeviceMeshShaderFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74737     operator VkPhysicalDeviceMeshShaderFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
74738     {
74739       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesEXT *>( this );
74740     }
74741 
operator VkPhysicalDeviceMeshShaderFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74742     operator VkPhysicalDeviceMeshShaderFeaturesEXT &() VULKAN_HPP_NOEXCEPT
74743     {
74744       return *reinterpret_cast<VkPhysicalDeviceMeshShaderFeaturesEXT *>( this );
74745     }
74746 
74747 #if defined( VULKAN_HPP_USE_REFLECT )
74748 #  if 14 <= VULKAN_HPP_CPP_VERSION
74749     auto
74750 #  else
74751     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
74752                void * const &,
74753                VULKAN_HPP_NAMESPACE::Bool32 const &,
74754                VULKAN_HPP_NAMESPACE::Bool32 const &,
74755                VULKAN_HPP_NAMESPACE::Bool32 const &,
74756                VULKAN_HPP_NAMESPACE::Bool32 const &,
74757                VULKAN_HPP_NAMESPACE::Bool32 const &>
74758 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74759       reflect() const VULKAN_HPP_NOEXCEPT
74760     {
74761       return std::tie( sType, pNext, taskShader, meshShader, multiviewMeshShader, primitiveFragmentShadingRateMeshShader, meshShaderQueries );
74762     }
74763 #endif
74764 
74765 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74766     auto operator<=>( PhysicalDeviceMeshShaderFeaturesEXT const & ) const = default;
74767 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74768     bool operator==( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74769     {
74770 #  if defined( VULKAN_HPP_USE_REFLECT )
74771       return this->reflect() == rhs.reflect();
74772 #  else
74773       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( taskShader == rhs.taskShader ) && ( meshShader == rhs.meshShader ) &&
74774              ( multiviewMeshShader == rhs.multiviewMeshShader ) && ( primitiveFragmentShadingRateMeshShader == rhs.primitiveFragmentShadingRateMeshShader ) &&
74775              ( meshShaderQueries == rhs.meshShaderQueries );
74776 #  endif
74777     }
74778 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT74779     bool operator!=( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74780     {
74781       return !operator==( rhs );
74782     }
74783 #endif
74784 
74785   public:
74786     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceMeshShaderFeaturesEXT;
74787     void *                              pNext                                  = {};
74788     VULKAN_HPP_NAMESPACE::Bool32        taskShader                             = {};
74789     VULKAN_HPP_NAMESPACE::Bool32        meshShader                             = {};
74790     VULKAN_HPP_NAMESPACE::Bool32        multiviewMeshShader                    = {};
74791     VULKAN_HPP_NAMESPACE::Bool32        primitiveFragmentShadingRateMeshShader = {};
74792     VULKAN_HPP_NAMESPACE::Bool32        meshShaderQueries                      = {};
74793   };
74794 
74795   template <>
74796   struct CppType<StructureType, StructureType::ePhysicalDeviceMeshShaderFeaturesEXT>
74797   {
74798     using Type = PhysicalDeviceMeshShaderFeaturesEXT;
74799   };
74800 
74801   struct PhysicalDeviceMeshShaderFeaturesNV
74802   {
74803     using NativeType = VkPhysicalDeviceMeshShaderFeaturesNV;
74804 
74805     static const bool                                  allowDuplicate = false;
74806     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMeshShaderFeaturesNV;
74807 
74808 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMeshShaderFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74809     VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ = {},
74810                                                              VULKAN_HPP_NAMESPACE::Bool32 meshShader_ = {},
74811                                                              void *                       pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
74812       : pNext{ pNext_ }
74813       , taskShader{ taskShader_ }
74814       , meshShader{ meshShader_ }
74815     {
74816     }
74817 
74818     VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesNV( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74819 
PhysicalDeviceMeshShaderFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74820     PhysicalDeviceMeshShaderFeaturesNV( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
74821       : PhysicalDeviceMeshShaderFeaturesNV( *reinterpret_cast<PhysicalDeviceMeshShaderFeaturesNV const *>( &rhs ) )
74822     {
74823     }
74824 
74825     PhysicalDeviceMeshShaderFeaturesNV & operator=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74826 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74827 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74828     PhysicalDeviceMeshShaderFeaturesNV & operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
74829     {
74830       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV const *>( &rhs );
74831       return *this;
74832     }
74833 
74834 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74835     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74836     {
74837       pNext = pNext_;
74838       return *this;
74839     }
74840 
setTaskShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74841     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setTaskShader( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ ) VULKAN_HPP_NOEXCEPT
74842     {
74843       taskShader = taskShader_;
74844       return *this;
74845     }
74846 
setMeshShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74847     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setMeshShader( VULKAN_HPP_NAMESPACE::Bool32 meshShader_ ) VULKAN_HPP_NOEXCEPT
74848     {
74849       meshShader = meshShader_;
74850       return *this;
74851     }
74852 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74853 
operator VkPhysicalDeviceMeshShaderFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74854     operator VkPhysicalDeviceMeshShaderFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
74855     {
74856       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesNV *>( this );
74857     }
74858 
operator VkPhysicalDeviceMeshShaderFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74859     operator VkPhysicalDeviceMeshShaderFeaturesNV &() VULKAN_HPP_NOEXCEPT
74860     {
74861       return *reinterpret_cast<VkPhysicalDeviceMeshShaderFeaturesNV *>( this );
74862     }
74863 
74864 #if defined( VULKAN_HPP_USE_REFLECT )
74865 #  if 14 <= VULKAN_HPP_CPP_VERSION
74866     auto
74867 #  else
74868     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
74869 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74870       reflect() const VULKAN_HPP_NOEXCEPT
74871     {
74872       return std::tie( sType, pNext, taskShader, meshShader );
74873     }
74874 #endif
74875 
74876 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74877     auto operator<=>( PhysicalDeviceMeshShaderFeaturesNV const & ) const = default;
74878 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74879     bool operator==( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
74880     {
74881 #  if defined( VULKAN_HPP_USE_REFLECT )
74882       return this->reflect() == rhs.reflect();
74883 #  else
74884       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( taskShader == rhs.taskShader ) && ( meshShader == rhs.meshShader );
74885 #  endif
74886     }
74887 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV74888     bool operator!=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
74889     {
74890       return !operator==( rhs );
74891     }
74892 #endif
74893 
74894   public:
74895     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::ePhysicalDeviceMeshShaderFeaturesNV;
74896     void *                              pNext      = {};
74897     VULKAN_HPP_NAMESPACE::Bool32        taskShader = {};
74898     VULKAN_HPP_NAMESPACE::Bool32        meshShader = {};
74899   };
74900 
74901   template <>
74902   struct CppType<StructureType, StructureType::ePhysicalDeviceMeshShaderFeaturesNV>
74903   {
74904     using Type = PhysicalDeviceMeshShaderFeaturesNV;
74905   };
74906 
74907   struct PhysicalDeviceMeshShaderPropertiesEXT
74908   {
74909     using NativeType = VkPhysicalDeviceMeshShaderPropertiesEXT;
74910 
74911     static const bool                                  allowDuplicate = false;
74912     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMeshShaderPropertiesEXT;
74913 
74914 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMeshShaderPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT74915     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesEXT( uint32_t                        maxTaskWorkGroupTotalCount_            = {},
74916                                                                    std::array<uint32_t, 3> const & maxTaskWorkGroupCount_                 = {},
74917                                                                    uint32_t                        maxTaskWorkGroupInvocations_           = {},
74918                                                                    std::array<uint32_t, 3> const & maxTaskWorkGroupSize_                  = {},
74919                                                                    uint32_t                        maxTaskPayloadSize_                    = {},
74920                                                                    uint32_t                        maxTaskSharedMemorySize_               = {},
74921                                                                    uint32_t                        maxTaskPayloadAndSharedMemorySize_     = {},
74922                                                                    uint32_t                        maxMeshWorkGroupTotalCount_            = {},
74923                                                                    std::array<uint32_t, 3> const & maxMeshWorkGroupCount_                 = {},
74924                                                                    uint32_t                        maxMeshWorkGroupInvocations_           = {},
74925                                                                    std::array<uint32_t, 3> const & maxMeshWorkGroupSize_                  = {},
74926                                                                    uint32_t                        maxMeshSharedMemorySize_               = {},
74927                                                                    uint32_t                        maxMeshPayloadAndSharedMemorySize_     = {},
74928                                                                    uint32_t                        maxMeshOutputMemorySize_               = {},
74929                                                                    uint32_t                        maxMeshPayloadAndOutputMemorySize_     = {},
74930                                                                    uint32_t                        maxMeshOutputComponents_               = {},
74931                                                                    uint32_t                        maxMeshOutputVertices_                 = {},
74932                                                                    uint32_t                        maxMeshOutputPrimitives_               = {},
74933                                                                    uint32_t                        maxMeshOutputLayers_                   = {},
74934                                                                    uint32_t                        maxMeshMultiviewViewCount_             = {},
74935                                                                    uint32_t                        meshOutputPerVertexGranularity_        = {},
74936                                                                    uint32_t                        meshOutputPerPrimitiveGranularity_     = {},
74937                                                                    uint32_t                        maxPreferredTaskWorkGroupInvocations_  = {},
74938                                                                    uint32_t                        maxPreferredMeshWorkGroupInvocations_  = {},
74939                                                                    VULKAN_HPP_NAMESPACE::Bool32    prefersLocalInvocationVertexOutput_    = {},
74940                                                                    VULKAN_HPP_NAMESPACE::Bool32    prefersLocalInvocationPrimitiveOutput_ = {},
74941                                                                    VULKAN_HPP_NAMESPACE::Bool32    prefersCompactVertexOutput_            = {},
74942                                                                    VULKAN_HPP_NAMESPACE::Bool32    prefersCompactPrimitiveOutput_         = {},
74943                                                                    void *                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74944       : pNext{ pNext_ }
74945       , maxTaskWorkGroupTotalCount{ maxTaskWorkGroupTotalCount_ }
74946       , maxTaskWorkGroupCount{ maxTaskWorkGroupCount_ }
74947       , maxTaskWorkGroupInvocations{ maxTaskWorkGroupInvocations_ }
74948       , maxTaskWorkGroupSize{ maxTaskWorkGroupSize_ }
74949       , maxTaskPayloadSize{ maxTaskPayloadSize_ }
74950       , maxTaskSharedMemorySize{ maxTaskSharedMemorySize_ }
74951       , maxTaskPayloadAndSharedMemorySize{ maxTaskPayloadAndSharedMemorySize_ }
74952       , maxMeshWorkGroupTotalCount{ maxMeshWorkGroupTotalCount_ }
74953       , maxMeshWorkGroupCount{ maxMeshWorkGroupCount_ }
74954       , maxMeshWorkGroupInvocations{ maxMeshWorkGroupInvocations_ }
74955       , maxMeshWorkGroupSize{ maxMeshWorkGroupSize_ }
74956       , maxMeshSharedMemorySize{ maxMeshSharedMemorySize_ }
74957       , maxMeshPayloadAndSharedMemorySize{ maxMeshPayloadAndSharedMemorySize_ }
74958       , maxMeshOutputMemorySize{ maxMeshOutputMemorySize_ }
74959       , maxMeshPayloadAndOutputMemorySize{ maxMeshPayloadAndOutputMemorySize_ }
74960       , maxMeshOutputComponents{ maxMeshOutputComponents_ }
74961       , maxMeshOutputVertices{ maxMeshOutputVertices_ }
74962       , maxMeshOutputPrimitives{ maxMeshOutputPrimitives_ }
74963       , maxMeshOutputLayers{ maxMeshOutputLayers_ }
74964       , maxMeshMultiviewViewCount{ maxMeshMultiviewViewCount_ }
74965       , meshOutputPerVertexGranularity{ meshOutputPerVertexGranularity_ }
74966       , meshOutputPerPrimitiveGranularity{ meshOutputPerPrimitiveGranularity_ }
74967       , maxPreferredTaskWorkGroupInvocations{ maxPreferredTaskWorkGroupInvocations_ }
74968       , maxPreferredMeshWorkGroupInvocations{ maxPreferredMeshWorkGroupInvocations_ }
74969       , prefersLocalInvocationVertexOutput{ prefersLocalInvocationVertexOutput_ }
74970       , prefersLocalInvocationPrimitiveOutput{ prefersLocalInvocationPrimitiveOutput_ }
74971       , prefersCompactVertexOutput{ prefersCompactVertexOutput_ }
74972       , prefersCompactPrimitiveOutput{ prefersCompactPrimitiveOutput_ }
74973     {
74974     }
74975 
74976     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesEXT( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74977 
PhysicalDeviceMeshShaderPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT74978     PhysicalDeviceMeshShaderPropertiesEXT( VkPhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74979       : PhysicalDeviceMeshShaderPropertiesEXT( *reinterpret_cast<PhysicalDeviceMeshShaderPropertiesEXT const *>( &rhs ) )
74980     {
74981     }
74982 
74983     PhysicalDeviceMeshShaderPropertiesEXT & operator=( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74984 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74985 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT74986     PhysicalDeviceMeshShaderPropertiesEXT & operator=( VkPhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74987     {
74988       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT const *>( &rhs );
74989       return *this;
74990     }
74991 
operator VkPhysicalDeviceMeshShaderPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT74992     operator VkPhysicalDeviceMeshShaderPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
74993     {
74994       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderPropertiesEXT *>( this );
74995     }
74996 
operator VkPhysicalDeviceMeshShaderPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT74997     operator VkPhysicalDeviceMeshShaderPropertiesEXT &() VULKAN_HPP_NOEXCEPT
74998     {
74999       return *reinterpret_cast<VkPhysicalDeviceMeshShaderPropertiesEXT *>( this );
75000     }
75001 
75002 #if defined( VULKAN_HPP_USE_REFLECT )
75003 #  if 14 <= VULKAN_HPP_CPP_VERSION
75004     auto
75005 #  else
75006     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
75007                void * const &,
75008                uint32_t const &,
75009                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
75010                uint32_t const &,
75011                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
75012                uint32_t const &,
75013                uint32_t const &,
75014                uint32_t const &,
75015                uint32_t const &,
75016                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
75017                uint32_t const &,
75018                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
75019                uint32_t const &,
75020                uint32_t const &,
75021                uint32_t const &,
75022                uint32_t const &,
75023                uint32_t const &,
75024                uint32_t const &,
75025                uint32_t const &,
75026                uint32_t const &,
75027                uint32_t const &,
75028                uint32_t const &,
75029                uint32_t const &,
75030                uint32_t const &,
75031                uint32_t const &,
75032                VULKAN_HPP_NAMESPACE::Bool32 const &,
75033                VULKAN_HPP_NAMESPACE::Bool32 const &,
75034                VULKAN_HPP_NAMESPACE::Bool32 const &,
75035                VULKAN_HPP_NAMESPACE::Bool32 const &>
75036 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT75037       reflect() const VULKAN_HPP_NOEXCEPT
75038     {
75039       return std::tie( sType,
75040                        pNext,
75041                        maxTaskWorkGroupTotalCount,
75042                        maxTaskWorkGroupCount,
75043                        maxTaskWorkGroupInvocations,
75044                        maxTaskWorkGroupSize,
75045                        maxTaskPayloadSize,
75046                        maxTaskSharedMemorySize,
75047                        maxTaskPayloadAndSharedMemorySize,
75048                        maxMeshWorkGroupTotalCount,
75049                        maxMeshWorkGroupCount,
75050                        maxMeshWorkGroupInvocations,
75051                        maxMeshWorkGroupSize,
75052                        maxMeshSharedMemorySize,
75053                        maxMeshPayloadAndSharedMemorySize,
75054                        maxMeshOutputMemorySize,
75055                        maxMeshPayloadAndOutputMemorySize,
75056                        maxMeshOutputComponents,
75057                        maxMeshOutputVertices,
75058                        maxMeshOutputPrimitives,
75059                        maxMeshOutputLayers,
75060                        maxMeshMultiviewViewCount,
75061                        meshOutputPerVertexGranularity,
75062                        meshOutputPerPrimitiveGranularity,
75063                        maxPreferredTaskWorkGroupInvocations,
75064                        maxPreferredMeshWorkGroupInvocations,
75065                        prefersLocalInvocationVertexOutput,
75066                        prefersLocalInvocationPrimitiveOutput,
75067                        prefersCompactVertexOutput,
75068                        prefersCompactPrimitiveOutput );
75069     }
75070 #endif
75071 
75072 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75073     auto operator<=>( PhysicalDeviceMeshShaderPropertiesEXT const & ) const = default;
75074 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT75075     bool operator==( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75076     {
75077 #  if defined( VULKAN_HPP_USE_REFLECT )
75078       return this->reflect() == rhs.reflect();
75079 #  else
75080       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTaskWorkGroupTotalCount == rhs.maxTaskWorkGroupTotalCount ) &&
75081              ( maxTaskWorkGroupCount == rhs.maxTaskWorkGroupCount ) && ( maxTaskWorkGroupInvocations == rhs.maxTaskWorkGroupInvocations ) &&
75082              ( maxTaskWorkGroupSize == rhs.maxTaskWorkGroupSize ) && ( maxTaskPayloadSize == rhs.maxTaskPayloadSize ) &&
75083              ( maxTaskSharedMemorySize == rhs.maxTaskSharedMemorySize ) && ( maxTaskPayloadAndSharedMemorySize == rhs.maxTaskPayloadAndSharedMemorySize ) &&
75084              ( maxMeshWorkGroupTotalCount == rhs.maxMeshWorkGroupTotalCount ) && ( maxMeshWorkGroupCount == rhs.maxMeshWorkGroupCount ) &&
75085              ( maxMeshWorkGroupInvocations == rhs.maxMeshWorkGroupInvocations ) && ( maxMeshWorkGroupSize == rhs.maxMeshWorkGroupSize ) &&
75086              ( maxMeshSharedMemorySize == rhs.maxMeshSharedMemorySize ) && ( maxMeshPayloadAndSharedMemorySize == rhs.maxMeshPayloadAndSharedMemorySize ) &&
75087              ( maxMeshOutputMemorySize == rhs.maxMeshOutputMemorySize ) && ( maxMeshPayloadAndOutputMemorySize == rhs.maxMeshPayloadAndOutputMemorySize ) &&
75088              ( maxMeshOutputComponents == rhs.maxMeshOutputComponents ) && ( maxMeshOutputVertices == rhs.maxMeshOutputVertices ) &&
75089              ( maxMeshOutputPrimitives == rhs.maxMeshOutputPrimitives ) && ( maxMeshOutputLayers == rhs.maxMeshOutputLayers ) &&
75090              ( maxMeshMultiviewViewCount == rhs.maxMeshMultiviewViewCount ) && ( meshOutputPerVertexGranularity == rhs.meshOutputPerVertexGranularity ) &&
75091              ( meshOutputPerPrimitiveGranularity == rhs.meshOutputPerPrimitiveGranularity ) &&
75092              ( maxPreferredTaskWorkGroupInvocations == rhs.maxPreferredTaskWorkGroupInvocations ) &&
75093              ( maxPreferredMeshWorkGroupInvocations == rhs.maxPreferredMeshWorkGroupInvocations ) &&
75094              ( prefersLocalInvocationVertexOutput == rhs.prefersLocalInvocationVertexOutput ) &&
75095              ( prefersLocalInvocationPrimitiveOutput == rhs.prefersLocalInvocationPrimitiveOutput ) &&
75096              ( prefersCompactVertexOutput == rhs.prefersCompactVertexOutput ) && ( prefersCompactPrimitiveOutput == rhs.prefersCompactPrimitiveOutput );
75097 #  endif
75098     }
75099 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT75100     bool operator!=( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75101     {
75102       return !operator==( rhs );
75103     }
75104 #endif
75105 
75106   public:
75107     VULKAN_HPP_NAMESPACE::StructureType               sType                                 = StructureType::ePhysicalDeviceMeshShaderPropertiesEXT;
75108     void *                                            pNext                                 = {};
75109     uint32_t                                          maxTaskWorkGroupTotalCount            = {};
75110     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxTaskWorkGroupCount                 = {};
75111     uint32_t                                          maxTaskWorkGroupInvocations           = {};
75112     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxTaskWorkGroupSize                  = {};
75113     uint32_t                                          maxTaskPayloadSize                    = {};
75114     uint32_t                                          maxTaskSharedMemorySize               = {};
75115     uint32_t                                          maxTaskPayloadAndSharedMemorySize     = {};
75116     uint32_t                                          maxMeshWorkGroupTotalCount            = {};
75117     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxMeshWorkGroupCount                 = {};
75118     uint32_t                                          maxMeshWorkGroupInvocations           = {};
75119     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxMeshWorkGroupSize                  = {};
75120     uint32_t                                          maxMeshSharedMemorySize               = {};
75121     uint32_t                                          maxMeshPayloadAndSharedMemorySize     = {};
75122     uint32_t                                          maxMeshOutputMemorySize               = {};
75123     uint32_t                                          maxMeshPayloadAndOutputMemorySize     = {};
75124     uint32_t                                          maxMeshOutputComponents               = {};
75125     uint32_t                                          maxMeshOutputVertices                 = {};
75126     uint32_t                                          maxMeshOutputPrimitives               = {};
75127     uint32_t                                          maxMeshOutputLayers                   = {};
75128     uint32_t                                          maxMeshMultiviewViewCount             = {};
75129     uint32_t                                          meshOutputPerVertexGranularity        = {};
75130     uint32_t                                          meshOutputPerPrimitiveGranularity     = {};
75131     uint32_t                                          maxPreferredTaskWorkGroupInvocations  = {};
75132     uint32_t                                          maxPreferredMeshWorkGroupInvocations  = {};
75133     VULKAN_HPP_NAMESPACE::Bool32                      prefersLocalInvocationVertexOutput    = {};
75134     VULKAN_HPP_NAMESPACE::Bool32                      prefersLocalInvocationPrimitiveOutput = {};
75135     VULKAN_HPP_NAMESPACE::Bool32                      prefersCompactVertexOutput            = {};
75136     VULKAN_HPP_NAMESPACE::Bool32                      prefersCompactPrimitiveOutput         = {};
75137   };
75138 
75139   template <>
75140   struct CppType<StructureType, StructureType::ePhysicalDeviceMeshShaderPropertiesEXT>
75141   {
75142     using Type = PhysicalDeviceMeshShaderPropertiesEXT;
75143   };
75144 
75145   struct PhysicalDeviceMeshShaderPropertiesNV
75146   {
75147     using NativeType = VkPhysicalDeviceMeshShaderPropertiesNV;
75148 
75149     static const bool                                  allowDuplicate = false;
75150     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMeshShaderPropertiesNV;
75151 
75152 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMeshShaderPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV75153     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV( uint32_t                        maxDrawMeshTasksCount_             = {},
75154                                                                   uint32_t                        maxTaskWorkGroupInvocations_       = {},
75155                                                                   std::array<uint32_t, 3> const & maxTaskWorkGroupSize_              = {},
75156                                                                   uint32_t                        maxTaskTotalMemorySize_            = {},
75157                                                                   uint32_t                        maxTaskOutputCount_                = {},
75158                                                                   uint32_t                        maxMeshWorkGroupInvocations_       = {},
75159                                                                   std::array<uint32_t, 3> const & maxMeshWorkGroupSize_              = {},
75160                                                                   uint32_t                        maxMeshTotalMemorySize_            = {},
75161                                                                   uint32_t                        maxMeshOutputVertices_             = {},
75162                                                                   uint32_t                        maxMeshOutputPrimitives_           = {},
75163                                                                   uint32_t                        maxMeshMultiviewViewCount_         = {},
75164                                                                   uint32_t                        meshOutputPerVertexGranularity_    = {},
75165                                                                   uint32_t                        meshOutputPerPrimitiveGranularity_ = {},
75166                                                                   void *                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75167       : pNext{ pNext_ }
75168       , maxDrawMeshTasksCount{ maxDrawMeshTasksCount_ }
75169       , maxTaskWorkGroupInvocations{ maxTaskWorkGroupInvocations_ }
75170       , maxTaskWorkGroupSize{ maxTaskWorkGroupSize_ }
75171       , maxTaskTotalMemorySize{ maxTaskTotalMemorySize_ }
75172       , maxTaskOutputCount{ maxTaskOutputCount_ }
75173       , maxMeshWorkGroupInvocations{ maxMeshWorkGroupInvocations_ }
75174       , maxMeshWorkGroupSize{ maxMeshWorkGroupSize_ }
75175       , maxMeshTotalMemorySize{ maxMeshTotalMemorySize_ }
75176       , maxMeshOutputVertices{ maxMeshOutputVertices_ }
75177       , maxMeshOutputPrimitives{ maxMeshOutputPrimitives_ }
75178       , maxMeshMultiviewViewCount{ maxMeshMultiviewViewCount_ }
75179       , meshOutputPerVertexGranularity{ meshOutputPerVertexGranularity_ }
75180       , meshOutputPerPrimitiveGranularity{ meshOutputPerPrimitiveGranularity_ }
75181     {
75182     }
75183 
75184     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75185 
PhysicalDeviceMeshShaderPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV75186     PhysicalDeviceMeshShaderPropertiesNV( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
75187       : PhysicalDeviceMeshShaderPropertiesNV( *reinterpret_cast<PhysicalDeviceMeshShaderPropertiesNV const *>( &rhs ) )
75188     {
75189     }
75190 
75191     PhysicalDeviceMeshShaderPropertiesNV & operator=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75192 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75193 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV75194     PhysicalDeviceMeshShaderPropertiesNV & operator=( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
75195     {
75196       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV const *>( &rhs );
75197       return *this;
75198     }
75199 
operator VkPhysicalDeviceMeshShaderPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV75200     operator VkPhysicalDeviceMeshShaderPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
75201     {
75202       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderPropertiesNV *>( this );
75203     }
75204 
operator VkPhysicalDeviceMeshShaderPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV75205     operator VkPhysicalDeviceMeshShaderPropertiesNV &() VULKAN_HPP_NOEXCEPT
75206     {
75207       return *reinterpret_cast<VkPhysicalDeviceMeshShaderPropertiesNV *>( this );
75208     }
75209 
75210 #if defined( VULKAN_HPP_USE_REFLECT )
75211 #  if 14 <= VULKAN_HPP_CPP_VERSION
75212     auto
75213 #  else
75214     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
75215                void * const &,
75216                uint32_t const &,
75217                uint32_t const &,
75218                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
75219                uint32_t const &,
75220                uint32_t const &,
75221                uint32_t const &,
75222                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
75223                uint32_t const &,
75224                uint32_t const &,
75225                uint32_t const &,
75226                uint32_t const &,
75227                uint32_t const &,
75228                uint32_t const &>
75229 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV75230       reflect() const VULKAN_HPP_NOEXCEPT
75231     {
75232       return std::tie( sType,
75233                        pNext,
75234                        maxDrawMeshTasksCount,
75235                        maxTaskWorkGroupInvocations,
75236                        maxTaskWorkGroupSize,
75237                        maxTaskTotalMemorySize,
75238                        maxTaskOutputCount,
75239                        maxMeshWorkGroupInvocations,
75240                        maxMeshWorkGroupSize,
75241                        maxMeshTotalMemorySize,
75242                        maxMeshOutputVertices,
75243                        maxMeshOutputPrimitives,
75244                        maxMeshMultiviewViewCount,
75245                        meshOutputPerVertexGranularity,
75246                        meshOutputPerPrimitiveGranularity );
75247     }
75248 #endif
75249 
75250 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75251     auto operator<=>( PhysicalDeviceMeshShaderPropertiesNV const & ) const = default;
75252 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV75253     bool operator==( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
75254     {
75255 #  if defined( VULKAN_HPP_USE_REFLECT )
75256       return this->reflect() == rhs.reflect();
75257 #  else
75258       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDrawMeshTasksCount == rhs.maxDrawMeshTasksCount ) &&
75259              ( maxTaskWorkGroupInvocations == rhs.maxTaskWorkGroupInvocations ) && ( maxTaskWorkGroupSize == rhs.maxTaskWorkGroupSize ) &&
75260              ( maxTaskTotalMemorySize == rhs.maxTaskTotalMemorySize ) && ( maxTaskOutputCount == rhs.maxTaskOutputCount ) &&
75261              ( maxMeshWorkGroupInvocations == rhs.maxMeshWorkGroupInvocations ) && ( maxMeshWorkGroupSize == rhs.maxMeshWorkGroupSize ) &&
75262              ( maxMeshTotalMemorySize == rhs.maxMeshTotalMemorySize ) && ( maxMeshOutputVertices == rhs.maxMeshOutputVertices ) &&
75263              ( maxMeshOutputPrimitives == rhs.maxMeshOutputPrimitives ) && ( maxMeshMultiviewViewCount == rhs.maxMeshMultiviewViewCount ) &&
75264              ( meshOutputPerVertexGranularity == rhs.meshOutputPerVertexGranularity ) &&
75265              ( meshOutputPerPrimitiveGranularity == rhs.meshOutputPerPrimitiveGranularity );
75266 #  endif
75267     }
75268 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV75269     bool operator!=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
75270     {
75271       return !operator==( rhs );
75272     }
75273 #endif
75274 
75275   public:
75276     VULKAN_HPP_NAMESPACE::StructureType               sType                             = StructureType::ePhysicalDeviceMeshShaderPropertiesNV;
75277     void *                                            pNext                             = {};
75278     uint32_t                                          maxDrawMeshTasksCount             = {};
75279     uint32_t                                          maxTaskWorkGroupInvocations       = {};
75280     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxTaskWorkGroupSize              = {};
75281     uint32_t                                          maxTaskTotalMemorySize            = {};
75282     uint32_t                                          maxTaskOutputCount                = {};
75283     uint32_t                                          maxMeshWorkGroupInvocations       = {};
75284     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxMeshWorkGroupSize              = {};
75285     uint32_t                                          maxMeshTotalMemorySize            = {};
75286     uint32_t                                          maxMeshOutputVertices             = {};
75287     uint32_t                                          maxMeshOutputPrimitives           = {};
75288     uint32_t                                          maxMeshMultiviewViewCount         = {};
75289     uint32_t                                          meshOutputPerVertexGranularity    = {};
75290     uint32_t                                          meshOutputPerPrimitiveGranularity = {};
75291   };
75292 
75293   template <>
75294   struct CppType<StructureType, StructureType::ePhysicalDeviceMeshShaderPropertiesNV>
75295   {
75296     using Type = PhysicalDeviceMeshShaderPropertiesNV;
75297   };
75298 
75299   struct PhysicalDeviceMultiDrawFeaturesEXT
75300   {
75301     using NativeType = VkPhysicalDeviceMultiDrawFeaturesEXT;
75302 
75303     static const bool                                  allowDuplicate = false;
75304     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiDrawFeaturesEXT;
75305 
75306 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiDrawFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT75307     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 multiDraw_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75308       : pNext{ pNext_ }
75309       , multiDraw{ multiDraw_ }
75310     {
75311     }
75312 
75313     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawFeaturesEXT( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75314 
PhysicalDeviceMultiDrawFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT75315     PhysicalDeviceMultiDrawFeaturesEXT( VkPhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75316       : PhysicalDeviceMultiDrawFeaturesEXT( *reinterpret_cast<PhysicalDeviceMultiDrawFeaturesEXT const *>( &rhs ) )
75317     {
75318     }
75319 
75320     PhysicalDeviceMultiDrawFeaturesEXT & operator=( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75321 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75322 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT75323     PhysicalDeviceMultiDrawFeaturesEXT & operator=( VkPhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75324     {
75325       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT const *>( &rhs );
75326       return *this;
75327     }
75328 
75329 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT75330     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75331     {
75332       pNext = pNext_;
75333       return *this;
75334     }
75335 
setMultiDrawVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT75336     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT & setMultiDraw( VULKAN_HPP_NAMESPACE::Bool32 multiDraw_ ) VULKAN_HPP_NOEXCEPT
75337     {
75338       multiDraw = multiDraw_;
75339       return *this;
75340     }
75341 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75342 
operator VkPhysicalDeviceMultiDrawFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT75343     operator VkPhysicalDeviceMultiDrawFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
75344     {
75345       return *reinterpret_cast<const VkPhysicalDeviceMultiDrawFeaturesEXT *>( this );
75346     }
75347 
operator VkPhysicalDeviceMultiDrawFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT75348     operator VkPhysicalDeviceMultiDrawFeaturesEXT &() VULKAN_HPP_NOEXCEPT
75349     {
75350       return *reinterpret_cast<VkPhysicalDeviceMultiDrawFeaturesEXT *>( this );
75351     }
75352 
75353 #if defined( VULKAN_HPP_USE_REFLECT )
75354 #  if 14 <= VULKAN_HPP_CPP_VERSION
75355     auto
75356 #  else
75357     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
75358 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT75359       reflect() const VULKAN_HPP_NOEXCEPT
75360     {
75361       return std::tie( sType, pNext, multiDraw );
75362     }
75363 #endif
75364 
75365 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75366     auto operator<=>( PhysicalDeviceMultiDrawFeaturesEXT const & ) const = default;
75367 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT75368     bool operator==( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75369     {
75370 #  if defined( VULKAN_HPP_USE_REFLECT )
75371       return this->reflect() == rhs.reflect();
75372 #  else
75373       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiDraw == rhs.multiDraw );
75374 #  endif
75375     }
75376 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT75377     bool operator!=( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75378     {
75379       return !operator==( rhs );
75380     }
75381 #endif
75382 
75383   public:
75384     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::ePhysicalDeviceMultiDrawFeaturesEXT;
75385     void *                              pNext     = {};
75386     VULKAN_HPP_NAMESPACE::Bool32        multiDraw = {};
75387   };
75388 
75389   template <>
75390   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiDrawFeaturesEXT>
75391   {
75392     using Type = PhysicalDeviceMultiDrawFeaturesEXT;
75393   };
75394 
75395   struct PhysicalDeviceMultiDrawPropertiesEXT
75396   {
75397     using NativeType = VkPhysicalDeviceMultiDrawPropertiesEXT;
75398 
75399     static const bool                                  allowDuplicate = false;
75400     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiDrawPropertiesEXT;
75401 
75402 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiDrawPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT75403     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawPropertiesEXT( uint32_t maxMultiDrawCount_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75404       : pNext{ pNext_ }
75405       , maxMultiDrawCount{ maxMultiDrawCount_ }
75406     {
75407     }
75408 
75409     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawPropertiesEXT( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75410 
PhysicalDeviceMultiDrawPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT75411     PhysicalDeviceMultiDrawPropertiesEXT( VkPhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75412       : PhysicalDeviceMultiDrawPropertiesEXT( *reinterpret_cast<PhysicalDeviceMultiDrawPropertiesEXT const *>( &rhs ) )
75413     {
75414     }
75415 
75416     PhysicalDeviceMultiDrawPropertiesEXT & operator=( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75417 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75418 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT75419     PhysicalDeviceMultiDrawPropertiesEXT & operator=( VkPhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75420     {
75421       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT const *>( &rhs );
75422       return *this;
75423     }
75424 
operator VkPhysicalDeviceMultiDrawPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT75425     operator VkPhysicalDeviceMultiDrawPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
75426     {
75427       return *reinterpret_cast<const VkPhysicalDeviceMultiDrawPropertiesEXT *>( this );
75428     }
75429 
operator VkPhysicalDeviceMultiDrawPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT75430     operator VkPhysicalDeviceMultiDrawPropertiesEXT &() VULKAN_HPP_NOEXCEPT
75431     {
75432       return *reinterpret_cast<VkPhysicalDeviceMultiDrawPropertiesEXT *>( this );
75433     }
75434 
75435 #if defined( VULKAN_HPP_USE_REFLECT )
75436 #  if 14 <= VULKAN_HPP_CPP_VERSION
75437     auto
75438 #  else
75439     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
75440 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT75441       reflect() const VULKAN_HPP_NOEXCEPT
75442     {
75443       return std::tie( sType, pNext, maxMultiDrawCount );
75444     }
75445 #endif
75446 
75447 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75448     auto operator<=>( PhysicalDeviceMultiDrawPropertiesEXT const & ) const = default;
75449 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT75450     bool operator==( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75451     {
75452 #  if defined( VULKAN_HPP_USE_REFLECT )
75453       return this->reflect() == rhs.reflect();
75454 #  else
75455       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxMultiDrawCount == rhs.maxMultiDrawCount );
75456 #  endif
75457     }
75458 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT75459     bool operator!=( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75460     {
75461       return !operator==( rhs );
75462     }
75463 #endif
75464 
75465   public:
75466     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceMultiDrawPropertiesEXT;
75467     void *                              pNext             = {};
75468     uint32_t                            maxMultiDrawCount = {};
75469   };
75470 
75471   template <>
75472   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiDrawPropertiesEXT>
75473   {
75474     using Type = PhysicalDeviceMultiDrawPropertiesEXT;
75475   };
75476 
75477   struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
75478   {
75479     using NativeType = VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
75480 
75481     static const bool                                  allowDuplicate = false;
75482     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
75483 
75484 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT75485     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 multisampledRenderToSingleSampled_ = {},
75486                                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75487       : pNext{ pNext_ }
75488       , multisampledRenderToSingleSampled{ multisampledRenderToSingleSampled_ }
75489     {
75490     }
75491 
75492     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs )
75493       VULKAN_HPP_NOEXCEPT = default;
75494 
PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT75495     PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT( VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75496       : PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT(
75497           *reinterpret_cast<PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const *>( &rhs ) )
75498     {
75499     }
75500 
75501     PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &
75502       operator=( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75503 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75504 
75505     PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT75506       operator=( VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75507     {
75508       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const *>( &rhs );
75509       return *this;
75510     }
75511 
75512 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT75513     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75514     {
75515       pNext = pNext_;
75516       return *this;
75517     }
75518 
75519     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &
setMultisampledRenderToSingleSampledVULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT75520       setMultisampledRenderToSingleSampled( VULKAN_HPP_NAMESPACE::Bool32 multisampledRenderToSingleSampled_ ) VULKAN_HPP_NOEXCEPT
75521     {
75522       multisampledRenderToSingleSampled = multisampledRenderToSingleSampled_;
75523       return *this;
75524     }
75525 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75526 
operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT75527     operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
75528     {
75529       return *reinterpret_cast<const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *>( this );
75530     }
75531 
operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT75532     operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &() VULKAN_HPP_NOEXCEPT
75533     {
75534       return *reinterpret_cast<VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *>( this );
75535     }
75536 
75537 #if defined( VULKAN_HPP_USE_REFLECT )
75538 #  if 14 <= VULKAN_HPP_CPP_VERSION
75539     auto
75540 #  else
75541     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
75542 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT75543       reflect() const VULKAN_HPP_NOEXCEPT
75544     {
75545       return std::tie( sType, pNext, multisampledRenderToSingleSampled );
75546     }
75547 #endif
75548 
75549 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75550     auto operator<=>( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & ) const = default;
75551 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT75552     bool operator==( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75553     {
75554 #  if defined( VULKAN_HPP_USE_REFLECT )
75555       return this->reflect() == rhs.reflect();
75556 #  else
75557       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multisampledRenderToSingleSampled == rhs.multisampledRenderToSingleSampled );
75558 #  endif
75559     }
75560 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT75561     bool operator!=( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75562     {
75563       return !operator==( rhs );
75564     }
75565 #endif
75566 
75567   public:
75568     VULKAN_HPP_NAMESPACE::StructureType sType                             = StructureType::ePhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
75569     void *                              pNext                             = {};
75570     VULKAN_HPP_NAMESPACE::Bool32        multisampledRenderToSingleSampled = {};
75571   };
75572 
75573   template <>
75574   struct CppType<StructureType, StructureType::ePhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>
75575   {
75576     using Type = PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
75577   };
75578 
75579   struct PhysicalDeviceMultiviewFeatures
75580   {
75581     using NativeType = VkPhysicalDeviceMultiviewFeatures;
75582 
75583     static const bool                                  allowDuplicate = false;
75584     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewFeatures;
75585 
75586 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75587     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures( VULKAN_HPP_NAMESPACE::Bool32 multiview_                   = {},
75588                                                           VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_     = {},
75589                                                           VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ = {},
75590                                                           void *                       pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
75591       : pNext{ pNext_ }
75592       , multiview{ multiview_ }
75593       , multiviewGeometryShader{ multiviewGeometryShader_ }
75594       , multiviewTessellationShader{ multiviewTessellationShader_ }
75595     {
75596     }
75597 
75598     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75599 
PhysicalDeviceMultiviewFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75600     PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
75601       : PhysicalDeviceMultiviewFeatures( *reinterpret_cast<PhysicalDeviceMultiviewFeatures const *>( &rhs ) )
75602     {
75603     }
75604 
75605     PhysicalDeviceMultiviewFeatures & operator=( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75606 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75607 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75608     PhysicalDeviceMultiviewFeatures & operator=( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
75609     {
75610       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures const *>( &rhs );
75611       return *this;
75612     }
75613 
75614 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75615     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75616     {
75617       pNext = pNext_;
75618       return *this;
75619     }
75620 
setMultiviewVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75621     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT
75622     {
75623       multiview = multiview_;
75624       return *this;
75625     }
75626 
75627     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures &
setMultiviewGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75628       setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT
75629     {
75630       multiviewGeometryShader = multiviewGeometryShader_;
75631       return *this;
75632     }
75633 
75634     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures &
setMultiviewTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75635       setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT
75636     {
75637       multiviewTessellationShader = multiviewTessellationShader_;
75638       return *this;
75639     }
75640 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75641 
operator VkPhysicalDeviceMultiviewFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75642     operator VkPhysicalDeviceMultiviewFeatures const &() const VULKAN_HPP_NOEXCEPT
75643     {
75644       return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures *>( this );
75645     }
75646 
operator VkPhysicalDeviceMultiviewFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75647     operator VkPhysicalDeviceMultiviewFeatures &() VULKAN_HPP_NOEXCEPT
75648     {
75649       return *reinterpret_cast<VkPhysicalDeviceMultiviewFeatures *>( this );
75650     }
75651 
75652 #if defined( VULKAN_HPP_USE_REFLECT )
75653 #  if 14 <= VULKAN_HPP_CPP_VERSION
75654     auto
75655 #  else
75656     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
75657                void * const &,
75658                VULKAN_HPP_NAMESPACE::Bool32 const &,
75659                VULKAN_HPP_NAMESPACE::Bool32 const &,
75660                VULKAN_HPP_NAMESPACE::Bool32 const &>
75661 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75662       reflect() const VULKAN_HPP_NOEXCEPT
75663     {
75664       return std::tie( sType, pNext, multiview, multiviewGeometryShader, multiviewTessellationShader );
75665     }
75666 #endif
75667 
75668 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75669     auto operator<=>( PhysicalDeviceMultiviewFeatures const & ) const = default;
75670 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75671     bool operator==( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
75672     {
75673 #  if defined( VULKAN_HPP_USE_REFLECT )
75674       return this->reflect() == rhs.reflect();
75675 #  else
75676       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiview == rhs.multiview ) && ( multiviewGeometryShader == rhs.multiviewGeometryShader ) &&
75677              ( multiviewTessellationShader == rhs.multiviewTessellationShader );
75678 #  endif
75679     }
75680 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures75681     bool operator!=( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
75682     {
75683       return !operator==( rhs );
75684     }
75685 #endif
75686 
75687   public:
75688     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceMultiviewFeatures;
75689     void *                              pNext                       = {};
75690     VULKAN_HPP_NAMESPACE::Bool32        multiview                   = {};
75691     VULKAN_HPP_NAMESPACE::Bool32        multiviewGeometryShader     = {};
75692     VULKAN_HPP_NAMESPACE::Bool32        multiviewTessellationShader = {};
75693   };
75694 
75695   template <>
75696   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewFeatures>
75697   {
75698     using Type = PhysicalDeviceMultiviewFeatures;
75699   };
75700 
75701   using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
75702 
75703   struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
75704   {
75705     using NativeType = VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
75706 
75707     static const bool                                  allowDuplicate = false;
75708     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
75709 
75710 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX75711     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( VULKAN_HPP_NAMESPACE::Bool32 perViewPositionAllComponents_ = {},
75712                                                                                 void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75713       : pNext{ pNext_ }
75714       , perViewPositionAllComponents{ perViewPositionAllComponents_ }
75715     {
75716     }
75717 
75718     VULKAN_HPP_CONSTEXPR
75719       PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75720 
PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX75721     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
75722       : PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( *reinterpret_cast<PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *>( &rhs ) )
75723     {
75724     }
75725 
75726     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &
75727       operator=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75728 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75729 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX75730     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX & operator=( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
75731     {
75732       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *>( &rhs );
75733       return *this;
75734     }
75735 
operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX75736     operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &() const VULKAN_HPP_NOEXCEPT
75737     {
75738       return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *>( this );
75739     }
75740 
operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX75741     operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &() VULKAN_HPP_NOEXCEPT
75742     {
75743       return *reinterpret_cast<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *>( this );
75744     }
75745 
75746 #if defined( VULKAN_HPP_USE_REFLECT )
75747 #  if 14 <= VULKAN_HPP_CPP_VERSION
75748     auto
75749 #  else
75750     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
75751 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX75752       reflect() const VULKAN_HPP_NOEXCEPT
75753     {
75754       return std::tie( sType, pNext, perViewPositionAllComponents );
75755     }
75756 #endif
75757 
75758 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75759     auto operator<=>( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & ) const = default;
75760 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX75761     bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
75762     {
75763 #  if defined( VULKAN_HPP_USE_REFLECT )
75764       return this->reflect() == rhs.reflect();
75765 #  else
75766       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
75767 #  endif
75768     }
75769 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX75770     bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
75771     {
75772       return !operator==( rhs );
75773     }
75774 #endif
75775 
75776   public:
75777     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
75778     void *                              pNext                        = {};
75779     VULKAN_HPP_NAMESPACE::Bool32        perViewPositionAllComponents = {};
75780   };
75781 
75782   template <>
75783   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>
75784   {
75785     using Type = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
75786   };
75787 
75788   struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
75789   {
75790     using NativeType = VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
75791 
75792     static const bool                                  allowDuplicate = false;
75793     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
75794 
75795 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM75796     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 multiviewPerViewRenderAreas_ = {},
75797                                                                                 void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75798       : pNext{ pNext_ }
75799       , multiviewPerViewRenderAreas{ multiviewPerViewRenderAreas_ }
75800     {
75801     }
75802 
75803     VULKAN_HPP_CONSTEXPR
75804       PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75805 
PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM75806     PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
75807       : PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( *reinterpret_cast<PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const *>( &rhs ) )
75808     {
75809     }
75810 
75811     PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM &
75812       operator=( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75813 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75814 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM75815     PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM & operator=( VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
75816     {
75817       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const *>( &rhs );
75818       return *this;
75819     }
75820 
75821 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM75822     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75823     {
75824       pNext = pNext_;
75825       return *this;
75826     }
75827 
75828     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM &
setMultiviewPerViewRenderAreasVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM75829       setMultiviewPerViewRenderAreas( VULKAN_HPP_NAMESPACE::Bool32 multiviewPerViewRenderAreas_ ) VULKAN_HPP_NOEXCEPT
75830     {
75831       multiviewPerViewRenderAreas = multiviewPerViewRenderAreas_;
75832       return *this;
75833     }
75834 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75835 
operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM75836     operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
75837     {
75838       return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM *>( this );
75839     }
75840 
operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM75841     operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
75842     {
75843       return *reinterpret_cast<VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM *>( this );
75844     }
75845 
75846 #if defined( VULKAN_HPP_USE_REFLECT )
75847 #  if 14 <= VULKAN_HPP_CPP_VERSION
75848     auto
75849 #  else
75850     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
75851 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM75852       reflect() const VULKAN_HPP_NOEXCEPT
75853     {
75854       return std::tie( sType, pNext, multiviewPerViewRenderAreas );
75855     }
75856 #endif
75857 
75858 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75859     auto operator<=>( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & ) const = default;
75860 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM75861     bool operator==( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
75862     {
75863 #  if defined( VULKAN_HPP_USE_REFLECT )
75864       return this->reflect() == rhs.reflect();
75865 #  else
75866       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiviewPerViewRenderAreas == rhs.multiviewPerViewRenderAreas );
75867 #  endif
75868     }
75869 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM75870     bool operator!=( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
75871     {
75872       return !operator==( rhs );
75873     }
75874 #endif
75875 
75876   public:
75877     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
75878     void *                              pNext                       = {};
75879     VULKAN_HPP_NAMESPACE::Bool32        multiviewPerViewRenderAreas = {};
75880   };
75881 
75882   template <>
75883   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM>
75884   {
75885     using Type = PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
75886   };
75887 
75888   struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
75889   {
75890     using NativeType = VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
75891 
75892     static const bool                                  allowDuplicate = false;
75893     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
75894 
75895 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM75896     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 multiviewPerViewViewports_ = {},
75897                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75898       : pNext{ pNext_ }
75899       , multiviewPerViewViewports{ multiviewPerViewViewports_ }
75900     {
75901     }
75902 
75903     VULKAN_HPP_CONSTEXPR
75904       PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75905 
PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM75906     PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
75907       : PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( *reinterpret_cast<PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const *>( &rhs ) )
75908     {
75909     }
75910 
75911     PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM &
75912       operator=( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75913 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75914 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM75915     PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM & operator=( VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
75916     {
75917       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const *>( &rhs );
75918       return *this;
75919     }
75920 
75921 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM75922     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75923     {
75924       pNext = pNext_;
75925       return *this;
75926     }
75927 
75928     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM &
setMultiviewPerViewViewportsVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM75929       setMultiviewPerViewViewports( VULKAN_HPP_NAMESPACE::Bool32 multiviewPerViewViewports_ ) VULKAN_HPP_NOEXCEPT
75930     {
75931       multiviewPerViewViewports = multiviewPerViewViewports_;
75932       return *this;
75933     }
75934 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75935 
operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM75936     operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
75937     {
75938       return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *>( this );
75939     }
75940 
operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM75941     operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
75942     {
75943       return *reinterpret_cast<VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *>( this );
75944     }
75945 
75946 #if defined( VULKAN_HPP_USE_REFLECT )
75947 #  if 14 <= VULKAN_HPP_CPP_VERSION
75948     auto
75949 #  else
75950     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
75951 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM75952       reflect() const VULKAN_HPP_NOEXCEPT
75953     {
75954       return std::tie( sType, pNext, multiviewPerViewViewports );
75955     }
75956 #endif
75957 
75958 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75959     auto operator<=>( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & ) const = default;
75960 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM75961     bool operator==( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
75962     {
75963 #  if defined( VULKAN_HPP_USE_REFLECT )
75964       return this->reflect() == rhs.reflect();
75965 #  else
75966       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiviewPerViewViewports == rhs.multiviewPerViewViewports );
75967 #  endif
75968     }
75969 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM75970     bool operator!=( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
75971     {
75972       return !operator==( rhs );
75973     }
75974 #endif
75975 
75976   public:
75977     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
75978     void *                              pNext                     = {};
75979     VULKAN_HPP_NAMESPACE::Bool32        multiviewPerViewViewports = {};
75980   };
75981 
75982   template <>
75983   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM>
75984   {
75985     using Type = PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
75986   };
75987 
75988   struct PhysicalDeviceMultiviewProperties
75989   {
75990     using NativeType = VkPhysicalDeviceMultiviewProperties;
75991 
75992     static const bool                                  allowDuplicate = false;
75993     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewProperties;
75994 
75995 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties75996     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewProperties( uint32_t maxMultiviewViewCount_     = {},
75997                                                             uint32_t maxMultiviewInstanceIndex_ = {},
75998                                                             void *   pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
75999       : pNext{ pNext_ }
76000       , maxMultiviewViewCount{ maxMultiviewViewCount_ }
76001       , maxMultiviewInstanceIndex{ maxMultiviewInstanceIndex_ }
76002     {
76003     }
76004 
76005     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewProperties( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76006 
PhysicalDeviceMultiviewPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties76007     PhysicalDeviceMultiviewProperties( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
76008       : PhysicalDeviceMultiviewProperties( *reinterpret_cast<PhysicalDeviceMultiviewProperties const *>( &rhs ) )
76009     {
76010     }
76011 
76012     PhysicalDeviceMultiviewProperties & operator=( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76013 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76014 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties76015     PhysicalDeviceMultiviewProperties & operator=( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
76016     {
76017       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties const *>( &rhs );
76018       return *this;
76019     }
76020 
operator VkPhysicalDeviceMultiviewProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties76021     operator VkPhysicalDeviceMultiviewProperties const &() const VULKAN_HPP_NOEXCEPT
76022     {
76023       return *reinterpret_cast<const VkPhysicalDeviceMultiviewProperties *>( this );
76024     }
76025 
operator VkPhysicalDeviceMultiviewProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties76026     operator VkPhysicalDeviceMultiviewProperties &() VULKAN_HPP_NOEXCEPT
76027     {
76028       return *reinterpret_cast<VkPhysicalDeviceMultiviewProperties *>( this );
76029     }
76030 
76031 #if defined( VULKAN_HPP_USE_REFLECT )
76032 #  if 14 <= VULKAN_HPP_CPP_VERSION
76033     auto
76034 #  else
76035     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
76036 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties76037       reflect() const VULKAN_HPP_NOEXCEPT
76038     {
76039       return std::tie( sType, pNext, maxMultiviewViewCount, maxMultiviewInstanceIndex );
76040     }
76041 #endif
76042 
76043 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76044     auto operator<=>( PhysicalDeviceMultiviewProperties const & ) const = default;
76045 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties76046     bool operator==( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
76047     {
76048 #  if defined( VULKAN_HPP_USE_REFLECT )
76049       return this->reflect() == rhs.reflect();
76050 #  else
76051       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount ) &&
76052              ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
76053 #  endif
76054     }
76055 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties76056     bool operator!=( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
76057     {
76058       return !operator==( rhs );
76059     }
76060 #endif
76061 
76062   public:
76063     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceMultiviewProperties;
76064     void *                              pNext                     = {};
76065     uint32_t                            maxMultiviewViewCount     = {};
76066     uint32_t                            maxMultiviewInstanceIndex = {};
76067   };
76068 
76069   template <>
76070   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewProperties>
76071   {
76072     using Type = PhysicalDeviceMultiviewProperties;
76073   };
76074 
76075   using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
76076 
76077   struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT
76078   {
76079     using NativeType = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT;
76080 
76081     static const bool                                  allowDuplicate = false;
76082     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesEXT;
76083 
76084 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMutableDescriptorTypeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT76085     VULKAN_HPP_CONSTEXPR PhysicalDeviceMutableDescriptorTypeFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType_ = {},
76086                                                                          void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
76087       : pNext{ pNext_ }
76088       , mutableDescriptorType{ mutableDescriptorType_ }
76089     {
76090     }
76091 
76092     VULKAN_HPP_CONSTEXPR
76093       PhysicalDeviceMutableDescriptorTypeFeaturesEXT( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76094 
PhysicalDeviceMutableDescriptorTypeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT76095     PhysicalDeviceMutableDescriptorTypeFeaturesEXT( VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76096       : PhysicalDeviceMutableDescriptorTypeFeaturesEXT( *reinterpret_cast<PhysicalDeviceMutableDescriptorTypeFeaturesEXT const *>( &rhs ) )
76097     {
76098     }
76099 
76100     PhysicalDeviceMutableDescriptorTypeFeaturesEXT & operator=( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76101 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76102 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT76103     PhysicalDeviceMutableDescriptorTypeFeaturesEXT & operator=( VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76104     {
76105       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT const *>( &rhs );
76106       return *this;
76107     }
76108 
76109 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT76110     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76111     {
76112       pNext = pNext_;
76113       return *this;
76114     }
76115 
76116     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesEXT &
setMutableDescriptorTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT76117       setMutableDescriptorType( VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType_ ) VULKAN_HPP_NOEXCEPT
76118     {
76119       mutableDescriptorType = mutableDescriptorType_;
76120       return *this;
76121     }
76122 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76123 
operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT76124     operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
76125     {
76126       return *reinterpret_cast<const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *>( this );
76127     }
76128 
operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT76129     operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT &() VULKAN_HPP_NOEXCEPT
76130     {
76131       return *reinterpret_cast<VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *>( this );
76132     }
76133 
76134 #if defined( VULKAN_HPP_USE_REFLECT )
76135 #  if 14 <= VULKAN_HPP_CPP_VERSION
76136     auto
76137 #  else
76138     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
76139 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT76140       reflect() const VULKAN_HPP_NOEXCEPT
76141     {
76142       return std::tie( sType, pNext, mutableDescriptorType );
76143     }
76144 #endif
76145 
76146 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76147     auto operator<=>( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & ) const = default;
76148 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT76149     bool operator==( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76150     {
76151 #  if defined( VULKAN_HPP_USE_REFLECT )
76152       return this->reflect() == rhs.reflect();
76153 #  else
76154       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mutableDescriptorType == rhs.mutableDescriptorType );
76155 #  endif
76156     }
76157 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT76158     bool operator!=( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76159     {
76160       return !operator==( rhs );
76161     }
76162 #endif
76163 
76164   public:
76165     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesEXT;
76166     void *                              pNext                 = {};
76167     VULKAN_HPP_NAMESPACE::Bool32        mutableDescriptorType = {};
76168   };
76169 
76170   template <>
76171   struct CppType<StructureType, StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesEXT>
76172   {
76173     using Type = PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
76174   };
76175 
76176   using PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
76177 
76178   struct PhysicalDeviceNestedCommandBufferFeaturesEXT
76179   {
76180     using NativeType = VkPhysicalDeviceNestedCommandBufferFeaturesEXT;
76181 
76182     static const bool                                  allowDuplicate = false;
76183     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceNestedCommandBufferFeaturesEXT;
76184 
76185 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceNestedCommandBufferFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76186     VULKAN_HPP_CONSTEXPR PhysicalDeviceNestedCommandBufferFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBuffer_                = {},
76187                                                                        VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBufferRendering_       = {},
76188                                                                        VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBufferSimultaneousUse_ = {},
76189                                                                        void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
76190       : pNext{ pNext_ }
76191       , nestedCommandBuffer{ nestedCommandBuffer_ }
76192       , nestedCommandBufferRendering{ nestedCommandBufferRendering_ }
76193       , nestedCommandBufferSimultaneousUse{ nestedCommandBufferSimultaneousUse_ }
76194     {
76195     }
76196 
76197     VULKAN_HPP_CONSTEXPR PhysicalDeviceNestedCommandBufferFeaturesEXT( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76198 
PhysicalDeviceNestedCommandBufferFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76199     PhysicalDeviceNestedCommandBufferFeaturesEXT( VkPhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76200       : PhysicalDeviceNestedCommandBufferFeaturesEXT( *reinterpret_cast<PhysicalDeviceNestedCommandBufferFeaturesEXT const *>( &rhs ) )
76201     {
76202     }
76203 
76204     PhysicalDeviceNestedCommandBufferFeaturesEXT & operator=( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76205 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76206 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76207     PhysicalDeviceNestedCommandBufferFeaturesEXT & operator=( VkPhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76208     {
76209       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT const *>( &rhs );
76210       return *this;
76211     }
76212 
76213 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76214     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76215     {
76216       pNext = pNext_;
76217       return *this;
76218     }
76219 
76220     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT &
setNestedCommandBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76221       setNestedCommandBuffer( VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBuffer_ ) VULKAN_HPP_NOEXCEPT
76222     {
76223       nestedCommandBuffer = nestedCommandBuffer_;
76224       return *this;
76225     }
76226 
76227     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT &
setNestedCommandBufferRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76228       setNestedCommandBufferRendering( VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBufferRendering_ ) VULKAN_HPP_NOEXCEPT
76229     {
76230       nestedCommandBufferRendering = nestedCommandBufferRendering_;
76231       return *this;
76232     }
76233 
76234     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT &
setNestedCommandBufferSimultaneousUseVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76235       setNestedCommandBufferSimultaneousUse( VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBufferSimultaneousUse_ ) VULKAN_HPP_NOEXCEPT
76236     {
76237       nestedCommandBufferSimultaneousUse = nestedCommandBufferSimultaneousUse_;
76238       return *this;
76239     }
76240 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76241 
operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76242     operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
76243     {
76244       return *reinterpret_cast<const VkPhysicalDeviceNestedCommandBufferFeaturesEXT *>( this );
76245     }
76246 
operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76247     operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT &() VULKAN_HPP_NOEXCEPT
76248     {
76249       return *reinterpret_cast<VkPhysicalDeviceNestedCommandBufferFeaturesEXT *>( this );
76250     }
76251 
76252 #if defined( VULKAN_HPP_USE_REFLECT )
76253 #  if 14 <= VULKAN_HPP_CPP_VERSION
76254     auto
76255 #  else
76256     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
76257                void * const &,
76258                VULKAN_HPP_NAMESPACE::Bool32 const &,
76259                VULKAN_HPP_NAMESPACE::Bool32 const &,
76260                VULKAN_HPP_NAMESPACE::Bool32 const &>
76261 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76262       reflect() const VULKAN_HPP_NOEXCEPT
76263     {
76264       return std::tie( sType, pNext, nestedCommandBuffer, nestedCommandBufferRendering, nestedCommandBufferSimultaneousUse );
76265     }
76266 #endif
76267 
76268 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76269     auto operator<=>( PhysicalDeviceNestedCommandBufferFeaturesEXT const & ) const = default;
76270 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76271     bool operator==( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76272     {
76273 #  if defined( VULKAN_HPP_USE_REFLECT )
76274       return this->reflect() == rhs.reflect();
76275 #  else
76276       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( nestedCommandBuffer == rhs.nestedCommandBuffer ) &&
76277              ( nestedCommandBufferRendering == rhs.nestedCommandBufferRendering ) &&
76278              ( nestedCommandBufferSimultaneousUse == rhs.nestedCommandBufferSimultaneousUse );
76279 #  endif
76280     }
76281 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT76282     bool operator!=( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76283     {
76284       return !operator==( rhs );
76285     }
76286 #endif
76287 
76288   public:
76289     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceNestedCommandBufferFeaturesEXT;
76290     void *                              pNext                              = {};
76291     VULKAN_HPP_NAMESPACE::Bool32        nestedCommandBuffer                = {};
76292     VULKAN_HPP_NAMESPACE::Bool32        nestedCommandBufferRendering       = {};
76293     VULKAN_HPP_NAMESPACE::Bool32        nestedCommandBufferSimultaneousUse = {};
76294   };
76295 
76296   template <>
76297   struct CppType<StructureType, StructureType::ePhysicalDeviceNestedCommandBufferFeaturesEXT>
76298   {
76299     using Type = PhysicalDeviceNestedCommandBufferFeaturesEXT;
76300   };
76301 
76302   struct PhysicalDeviceNestedCommandBufferPropertiesEXT
76303   {
76304     using NativeType = VkPhysicalDeviceNestedCommandBufferPropertiesEXT;
76305 
76306     static const bool                                  allowDuplicate = false;
76307     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceNestedCommandBufferPropertiesEXT;
76308 
76309 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceNestedCommandBufferPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT76310     VULKAN_HPP_CONSTEXPR PhysicalDeviceNestedCommandBufferPropertiesEXT( uint32_t maxCommandBufferNestingLevel_ = {},
76311                                                                          void *   pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
76312       : pNext{ pNext_ }
76313       , maxCommandBufferNestingLevel{ maxCommandBufferNestingLevel_ }
76314     {
76315     }
76316 
76317     VULKAN_HPP_CONSTEXPR
76318       PhysicalDeviceNestedCommandBufferPropertiesEXT( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76319 
PhysicalDeviceNestedCommandBufferPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT76320     PhysicalDeviceNestedCommandBufferPropertiesEXT( VkPhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76321       : PhysicalDeviceNestedCommandBufferPropertiesEXT( *reinterpret_cast<PhysicalDeviceNestedCommandBufferPropertiesEXT const *>( &rhs ) )
76322     {
76323     }
76324 
76325     PhysicalDeviceNestedCommandBufferPropertiesEXT & operator=( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76326 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76327 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT76328     PhysicalDeviceNestedCommandBufferPropertiesEXT & operator=( VkPhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76329     {
76330       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT const *>( &rhs );
76331       return *this;
76332     }
76333 
76334 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT76335     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferPropertiesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76336     {
76337       pNext = pNext_;
76338       return *this;
76339     }
76340 
76341     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferPropertiesEXT &
setMaxCommandBufferNestingLevelVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT76342       setMaxCommandBufferNestingLevel( uint32_t maxCommandBufferNestingLevel_ ) VULKAN_HPP_NOEXCEPT
76343     {
76344       maxCommandBufferNestingLevel = maxCommandBufferNestingLevel_;
76345       return *this;
76346     }
76347 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76348 
operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT76349     operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
76350     {
76351       return *reinterpret_cast<const VkPhysicalDeviceNestedCommandBufferPropertiesEXT *>( this );
76352     }
76353 
operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT76354     operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT &() VULKAN_HPP_NOEXCEPT
76355     {
76356       return *reinterpret_cast<VkPhysicalDeviceNestedCommandBufferPropertiesEXT *>( this );
76357     }
76358 
76359 #if defined( VULKAN_HPP_USE_REFLECT )
76360 #  if 14 <= VULKAN_HPP_CPP_VERSION
76361     auto
76362 #  else
76363     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
76364 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT76365       reflect() const VULKAN_HPP_NOEXCEPT
76366     {
76367       return std::tie( sType, pNext, maxCommandBufferNestingLevel );
76368     }
76369 #endif
76370 
76371 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76372     auto operator<=>( PhysicalDeviceNestedCommandBufferPropertiesEXT const & ) const = default;
76373 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT76374     bool operator==( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76375     {
76376 #  if defined( VULKAN_HPP_USE_REFLECT )
76377       return this->reflect() == rhs.reflect();
76378 #  else
76379       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxCommandBufferNestingLevel == rhs.maxCommandBufferNestingLevel );
76380 #  endif
76381     }
76382 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT76383     bool operator!=( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76384     {
76385       return !operator==( rhs );
76386     }
76387 #endif
76388 
76389   public:
76390     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceNestedCommandBufferPropertiesEXT;
76391     void *                              pNext                        = {};
76392     uint32_t                            maxCommandBufferNestingLevel = {};
76393   };
76394 
76395   template <>
76396   struct CppType<StructureType, StructureType::ePhysicalDeviceNestedCommandBufferPropertiesEXT>
76397   {
76398     using Type = PhysicalDeviceNestedCommandBufferPropertiesEXT;
76399   };
76400 
76401   struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT
76402   {
76403     using NativeType = VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
76404 
76405     static const bool                                  allowDuplicate = false;
76406     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
76407 
76408 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceNonSeamlessCubeMapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT76409     VULKAN_HPP_CONSTEXPR PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 nonSeamlessCubeMap_ = {},
76410                                                                       void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
76411       : pNext{ pNext_ }
76412       , nonSeamlessCubeMap{ nonSeamlessCubeMap_ }
76413     {
76414     }
76415 
76416     VULKAN_HPP_CONSTEXPR PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76417 
PhysicalDeviceNonSeamlessCubeMapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT76418     PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76419       : PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( *reinterpret_cast<PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const *>( &rhs ) )
76420     {
76421     }
76422 
76423     PhysicalDeviceNonSeamlessCubeMapFeaturesEXT & operator=( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76424 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76425 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT76426     PhysicalDeviceNonSeamlessCubeMapFeaturesEXT & operator=( VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76427     {
76428       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const *>( &rhs );
76429       return *this;
76430     }
76431 
76432 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT76433     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNonSeamlessCubeMapFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76434     {
76435       pNext = pNext_;
76436       return *this;
76437     }
76438 
76439     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNonSeamlessCubeMapFeaturesEXT &
setNonSeamlessCubeMapVULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT76440       setNonSeamlessCubeMap( VULKAN_HPP_NAMESPACE::Bool32 nonSeamlessCubeMap_ ) VULKAN_HPP_NOEXCEPT
76441     {
76442       nonSeamlessCubeMap = nonSeamlessCubeMap_;
76443       return *this;
76444     }
76445 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76446 
operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT76447     operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
76448     {
76449       return *reinterpret_cast<const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *>( this );
76450     }
76451 
operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT76452     operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT &() VULKAN_HPP_NOEXCEPT
76453     {
76454       return *reinterpret_cast<VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *>( this );
76455     }
76456 
76457 #if defined( VULKAN_HPP_USE_REFLECT )
76458 #  if 14 <= VULKAN_HPP_CPP_VERSION
76459     auto
76460 #  else
76461     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
76462 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT76463       reflect() const VULKAN_HPP_NOEXCEPT
76464     {
76465       return std::tie( sType, pNext, nonSeamlessCubeMap );
76466     }
76467 #endif
76468 
76469 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76470     auto operator<=>( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & ) const = default;
76471 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT76472     bool operator==( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76473     {
76474 #  if defined( VULKAN_HPP_USE_REFLECT )
76475       return this->reflect() == rhs.reflect();
76476 #  else
76477       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( nonSeamlessCubeMap == rhs.nonSeamlessCubeMap );
76478 #  endif
76479     }
76480 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT76481     bool operator!=( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76482     {
76483       return !operator==( rhs );
76484     }
76485 #endif
76486 
76487   public:
76488     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
76489     void *                              pNext              = {};
76490     VULKAN_HPP_NAMESPACE::Bool32        nonSeamlessCubeMap = {};
76491   };
76492 
76493   template <>
76494   struct CppType<StructureType, StructureType::ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT>
76495   {
76496     using Type = PhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
76497   };
76498 
76499   struct PhysicalDeviceOpacityMicromapFeaturesEXT
76500   {
76501     using NativeType = VkPhysicalDeviceOpacityMicromapFeaturesEXT;
76502 
76503     static const bool                                  allowDuplicate = false;
76504     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceOpacityMicromapFeaturesEXT;
76505 
76506 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceOpacityMicromapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76507     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 micromap_              = {},
76508                                                                    VULKAN_HPP_NAMESPACE::Bool32 micromapCaptureReplay_ = {},
76509                                                                    VULKAN_HPP_NAMESPACE::Bool32 micromapHostCommands_  = {},
76510                                                                    void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
76511       : pNext{ pNext_ }
76512       , micromap{ micromap_ }
76513       , micromapCaptureReplay{ micromapCaptureReplay_ }
76514       , micromapHostCommands{ micromapHostCommands_ }
76515     {
76516     }
76517 
76518     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapFeaturesEXT( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76519 
PhysicalDeviceOpacityMicromapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76520     PhysicalDeviceOpacityMicromapFeaturesEXT( VkPhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76521       : PhysicalDeviceOpacityMicromapFeaturesEXT( *reinterpret_cast<PhysicalDeviceOpacityMicromapFeaturesEXT const *>( &rhs ) )
76522     {
76523     }
76524 
76525     PhysicalDeviceOpacityMicromapFeaturesEXT & operator=( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76526 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76527 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76528     PhysicalDeviceOpacityMicromapFeaturesEXT & operator=( VkPhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76529     {
76530       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT const *>( &rhs );
76531       return *this;
76532     }
76533 
76534 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76535     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76536     {
76537       pNext = pNext_;
76538       return *this;
76539     }
76540 
setMicromapVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76541     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT & setMicromap( VULKAN_HPP_NAMESPACE::Bool32 micromap_ ) VULKAN_HPP_NOEXCEPT
76542     {
76543       micromap = micromap_;
76544       return *this;
76545     }
76546 
76547     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT &
setMicromapCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76548       setMicromapCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 micromapCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
76549     {
76550       micromapCaptureReplay = micromapCaptureReplay_;
76551       return *this;
76552     }
76553 
76554     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT &
setMicromapHostCommandsVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76555       setMicromapHostCommands( VULKAN_HPP_NAMESPACE::Bool32 micromapHostCommands_ ) VULKAN_HPP_NOEXCEPT
76556     {
76557       micromapHostCommands = micromapHostCommands_;
76558       return *this;
76559     }
76560 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76561 
operator VkPhysicalDeviceOpacityMicromapFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76562     operator VkPhysicalDeviceOpacityMicromapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
76563     {
76564       return *reinterpret_cast<const VkPhysicalDeviceOpacityMicromapFeaturesEXT *>( this );
76565     }
76566 
operator VkPhysicalDeviceOpacityMicromapFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76567     operator VkPhysicalDeviceOpacityMicromapFeaturesEXT &() VULKAN_HPP_NOEXCEPT
76568     {
76569       return *reinterpret_cast<VkPhysicalDeviceOpacityMicromapFeaturesEXT *>( this );
76570     }
76571 
76572 #if defined( VULKAN_HPP_USE_REFLECT )
76573 #  if 14 <= VULKAN_HPP_CPP_VERSION
76574     auto
76575 #  else
76576     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
76577                void * const &,
76578                VULKAN_HPP_NAMESPACE::Bool32 const &,
76579                VULKAN_HPP_NAMESPACE::Bool32 const &,
76580                VULKAN_HPP_NAMESPACE::Bool32 const &>
76581 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76582       reflect() const VULKAN_HPP_NOEXCEPT
76583     {
76584       return std::tie( sType, pNext, micromap, micromapCaptureReplay, micromapHostCommands );
76585     }
76586 #endif
76587 
76588 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76589     auto operator<=>( PhysicalDeviceOpacityMicromapFeaturesEXT const & ) const = default;
76590 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76591     bool operator==( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76592     {
76593 #  if defined( VULKAN_HPP_USE_REFLECT )
76594       return this->reflect() == rhs.reflect();
76595 #  else
76596       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( micromap == rhs.micromap ) && ( micromapCaptureReplay == rhs.micromapCaptureReplay ) &&
76597              ( micromapHostCommands == rhs.micromapHostCommands );
76598 #  endif
76599     }
76600 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT76601     bool operator!=( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76602     {
76603       return !operator==( rhs );
76604     }
76605 #endif
76606 
76607   public:
76608     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceOpacityMicromapFeaturesEXT;
76609     void *                              pNext                 = {};
76610     VULKAN_HPP_NAMESPACE::Bool32        micromap              = {};
76611     VULKAN_HPP_NAMESPACE::Bool32        micromapCaptureReplay = {};
76612     VULKAN_HPP_NAMESPACE::Bool32        micromapHostCommands  = {};
76613   };
76614 
76615   template <>
76616   struct CppType<StructureType, StructureType::ePhysicalDeviceOpacityMicromapFeaturesEXT>
76617   {
76618     using Type = PhysicalDeviceOpacityMicromapFeaturesEXT;
76619   };
76620 
76621   struct PhysicalDeviceOpacityMicromapPropertiesEXT
76622   {
76623     using NativeType = VkPhysicalDeviceOpacityMicromapPropertiesEXT;
76624 
76625     static const bool                                  allowDuplicate = false;
76626     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceOpacityMicromapPropertiesEXT;
76627 
76628 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceOpacityMicromapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT76629     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapPropertiesEXT( uint32_t maxOpacity2StateSubdivisionLevel_ = {},
76630                                                                      uint32_t maxOpacity4StateSubdivisionLevel_ = {},
76631                                                                      void *   pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
76632       : pNext{ pNext_ }
76633       , maxOpacity2StateSubdivisionLevel{ maxOpacity2StateSubdivisionLevel_ }
76634       , maxOpacity4StateSubdivisionLevel{ maxOpacity4StateSubdivisionLevel_ }
76635     {
76636     }
76637 
76638     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapPropertiesEXT( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76639 
PhysicalDeviceOpacityMicromapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT76640     PhysicalDeviceOpacityMicromapPropertiesEXT( VkPhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76641       : PhysicalDeviceOpacityMicromapPropertiesEXT( *reinterpret_cast<PhysicalDeviceOpacityMicromapPropertiesEXT const *>( &rhs ) )
76642     {
76643     }
76644 
76645     PhysicalDeviceOpacityMicromapPropertiesEXT & operator=( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76646 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76647 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT76648     PhysicalDeviceOpacityMicromapPropertiesEXT & operator=( VkPhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76649     {
76650       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT const *>( &rhs );
76651       return *this;
76652     }
76653 
operator VkPhysicalDeviceOpacityMicromapPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT76654     operator VkPhysicalDeviceOpacityMicromapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
76655     {
76656       return *reinterpret_cast<const VkPhysicalDeviceOpacityMicromapPropertiesEXT *>( this );
76657     }
76658 
operator VkPhysicalDeviceOpacityMicromapPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT76659     operator VkPhysicalDeviceOpacityMicromapPropertiesEXT &() VULKAN_HPP_NOEXCEPT
76660     {
76661       return *reinterpret_cast<VkPhysicalDeviceOpacityMicromapPropertiesEXT *>( this );
76662     }
76663 
76664 #if defined( VULKAN_HPP_USE_REFLECT )
76665 #  if 14 <= VULKAN_HPP_CPP_VERSION
76666     auto
76667 #  else
76668     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
76669 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT76670       reflect() const VULKAN_HPP_NOEXCEPT
76671     {
76672       return std::tie( sType, pNext, maxOpacity2StateSubdivisionLevel, maxOpacity4StateSubdivisionLevel );
76673     }
76674 #endif
76675 
76676 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76677     auto operator<=>( PhysicalDeviceOpacityMicromapPropertiesEXT const & ) const = default;
76678 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT76679     bool operator==( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76680     {
76681 #  if defined( VULKAN_HPP_USE_REFLECT )
76682       return this->reflect() == rhs.reflect();
76683 #  else
76684       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxOpacity2StateSubdivisionLevel == rhs.maxOpacity2StateSubdivisionLevel ) &&
76685              ( maxOpacity4StateSubdivisionLevel == rhs.maxOpacity4StateSubdivisionLevel );
76686 #  endif
76687     }
76688 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT76689     bool operator!=( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76690     {
76691       return !operator==( rhs );
76692     }
76693 #endif
76694 
76695   public:
76696     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceOpacityMicromapPropertiesEXT;
76697     void *                              pNext                            = {};
76698     uint32_t                            maxOpacity2StateSubdivisionLevel = {};
76699     uint32_t                            maxOpacity4StateSubdivisionLevel = {};
76700   };
76701 
76702   template <>
76703   struct CppType<StructureType, StructureType::ePhysicalDeviceOpacityMicromapPropertiesEXT>
76704   {
76705     using Type = PhysicalDeviceOpacityMicromapPropertiesEXT;
76706   };
76707 
76708   struct PhysicalDeviceOpticalFlowFeaturesNV
76709   {
76710     using NativeType = VkPhysicalDeviceOpticalFlowFeaturesNV;
76711 
76712     static const bool                                  allowDuplicate = false;
76713     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceOpticalFlowFeaturesNV;
76714 
76715 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceOpticalFlowFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV76716     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 opticalFlow_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
76717       : pNext{ pNext_ }
76718       , opticalFlow{ opticalFlow_ }
76719     {
76720     }
76721 
76722     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowFeaturesNV( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76723 
PhysicalDeviceOpticalFlowFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV76724     PhysicalDeviceOpticalFlowFeaturesNV( VkPhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
76725       : PhysicalDeviceOpticalFlowFeaturesNV( *reinterpret_cast<PhysicalDeviceOpticalFlowFeaturesNV const *>( &rhs ) )
76726     {
76727     }
76728 
76729     PhysicalDeviceOpticalFlowFeaturesNV & operator=( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76730 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76731 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV76732     PhysicalDeviceOpticalFlowFeaturesNV & operator=( VkPhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
76733     {
76734       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV const *>( &rhs );
76735       return *this;
76736     }
76737 
76738 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV76739     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpticalFlowFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76740     {
76741       pNext = pNext_;
76742       return *this;
76743     }
76744 
setOpticalFlowVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV76745     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpticalFlowFeaturesNV & setOpticalFlow( VULKAN_HPP_NAMESPACE::Bool32 opticalFlow_ ) VULKAN_HPP_NOEXCEPT
76746     {
76747       opticalFlow = opticalFlow_;
76748       return *this;
76749     }
76750 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76751 
operator VkPhysicalDeviceOpticalFlowFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV76752     operator VkPhysicalDeviceOpticalFlowFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
76753     {
76754       return *reinterpret_cast<const VkPhysicalDeviceOpticalFlowFeaturesNV *>( this );
76755     }
76756 
operator VkPhysicalDeviceOpticalFlowFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV76757     operator VkPhysicalDeviceOpticalFlowFeaturesNV &() VULKAN_HPP_NOEXCEPT
76758     {
76759       return *reinterpret_cast<VkPhysicalDeviceOpticalFlowFeaturesNV *>( this );
76760     }
76761 
76762 #if defined( VULKAN_HPP_USE_REFLECT )
76763 #  if 14 <= VULKAN_HPP_CPP_VERSION
76764     auto
76765 #  else
76766     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
76767 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV76768       reflect() const VULKAN_HPP_NOEXCEPT
76769     {
76770       return std::tie( sType, pNext, opticalFlow );
76771     }
76772 #endif
76773 
76774 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76775     auto operator<=>( PhysicalDeviceOpticalFlowFeaturesNV const & ) const = default;
76776 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV76777     bool operator==( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
76778     {
76779 #  if defined( VULKAN_HPP_USE_REFLECT )
76780       return this->reflect() == rhs.reflect();
76781 #  else
76782       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opticalFlow == rhs.opticalFlow );
76783 #  endif
76784     }
76785 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV76786     bool operator!=( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
76787     {
76788       return !operator==( rhs );
76789     }
76790 #endif
76791 
76792   public:
76793     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDeviceOpticalFlowFeaturesNV;
76794     void *                              pNext       = {};
76795     VULKAN_HPP_NAMESPACE::Bool32        opticalFlow = {};
76796   };
76797 
76798   template <>
76799   struct CppType<StructureType, StructureType::ePhysicalDeviceOpticalFlowFeaturesNV>
76800   {
76801     using Type = PhysicalDeviceOpticalFlowFeaturesNV;
76802   };
76803 
76804   struct PhysicalDeviceOpticalFlowPropertiesNV
76805   {
76806     using NativeType = VkPhysicalDeviceOpticalFlowPropertiesNV;
76807 
76808     static const bool                                  allowDuplicate = false;
76809     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceOpticalFlowPropertiesNV;
76810 
76811 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceOpticalFlowPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV76812     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowPropertiesNV( VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV supportedOutputGridSizes_   = {},
76813                                                                 VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV supportedHintGridSizes_     = {},
76814                                                                 VULKAN_HPP_NAMESPACE::Bool32                     hintSupported_              = {},
76815                                                                 VULKAN_HPP_NAMESPACE::Bool32                     costSupported_              = {},
76816                                                                 VULKAN_HPP_NAMESPACE::Bool32                     bidirectionalFlowSupported_ = {},
76817                                                                 VULKAN_HPP_NAMESPACE::Bool32                     globalFlowSupported_        = {},
76818                                                                 uint32_t                                         minWidth_                   = {},
76819                                                                 uint32_t                                         minHeight_                  = {},
76820                                                                 uint32_t                                         maxWidth_                   = {},
76821                                                                 uint32_t                                         maxHeight_                  = {},
76822                                                                 uint32_t                                         maxNumRegionsOfInterest_    = {},
76823                                                                 void *                                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
76824       : pNext{ pNext_ }
76825       , supportedOutputGridSizes{ supportedOutputGridSizes_ }
76826       , supportedHintGridSizes{ supportedHintGridSizes_ }
76827       , hintSupported{ hintSupported_ }
76828       , costSupported{ costSupported_ }
76829       , bidirectionalFlowSupported{ bidirectionalFlowSupported_ }
76830       , globalFlowSupported{ globalFlowSupported_ }
76831       , minWidth{ minWidth_ }
76832       , minHeight{ minHeight_ }
76833       , maxWidth{ maxWidth_ }
76834       , maxHeight{ maxHeight_ }
76835       , maxNumRegionsOfInterest{ maxNumRegionsOfInterest_ }
76836     {
76837     }
76838 
76839     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowPropertiesNV( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76840 
PhysicalDeviceOpticalFlowPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV76841     PhysicalDeviceOpticalFlowPropertiesNV( VkPhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
76842       : PhysicalDeviceOpticalFlowPropertiesNV( *reinterpret_cast<PhysicalDeviceOpticalFlowPropertiesNV const *>( &rhs ) )
76843     {
76844     }
76845 
76846     PhysicalDeviceOpticalFlowPropertiesNV & operator=( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76847 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76848 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV76849     PhysicalDeviceOpticalFlowPropertiesNV & operator=( VkPhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
76850     {
76851       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV const *>( &rhs );
76852       return *this;
76853     }
76854 
operator VkPhysicalDeviceOpticalFlowPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV76855     operator VkPhysicalDeviceOpticalFlowPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
76856     {
76857       return *reinterpret_cast<const VkPhysicalDeviceOpticalFlowPropertiesNV *>( this );
76858     }
76859 
operator VkPhysicalDeviceOpticalFlowPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV76860     operator VkPhysicalDeviceOpticalFlowPropertiesNV &() VULKAN_HPP_NOEXCEPT
76861     {
76862       return *reinterpret_cast<VkPhysicalDeviceOpticalFlowPropertiesNV *>( this );
76863     }
76864 
76865 #if defined( VULKAN_HPP_USE_REFLECT )
76866 #  if 14 <= VULKAN_HPP_CPP_VERSION
76867     auto
76868 #  else
76869     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
76870                void * const &,
76871                VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV const &,
76872                VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV const &,
76873                VULKAN_HPP_NAMESPACE::Bool32 const &,
76874                VULKAN_HPP_NAMESPACE::Bool32 const &,
76875                VULKAN_HPP_NAMESPACE::Bool32 const &,
76876                VULKAN_HPP_NAMESPACE::Bool32 const &,
76877                uint32_t const &,
76878                uint32_t const &,
76879                uint32_t const &,
76880                uint32_t const &,
76881                uint32_t const &>
76882 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV76883       reflect() const VULKAN_HPP_NOEXCEPT
76884     {
76885       return std::tie( sType,
76886                        pNext,
76887                        supportedOutputGridSizes,
76888                        supportedHintGridSizes,
76889                        hintSupported,
76890                        costSupported,
76891                        bidirectionalFlowSupported,
76892                        globalFlowSupported,
76893                        minWidth,
76894                        minHeight,
76895                        maxWidth,
76896                        maxHeight,
76897                        maxNumRegionsOfInterest );
76898     }
76899 #endif
76900 
76901 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76902     auto operator<=>( PhysicalDeviceOpticalFlowPropertiesNV const & ) const = default;
76903 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV76904     bool operator==( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
76905     {
76906 #  if defined( VULKAN_HPP_USE_REFLECT )
76907       return this->reflect() == rhs.reflect();
76908 #  else
76909       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedOutputGridSizes == rhs.supportedOutputGridSizes ) &&
76910              ( supportedHintGridSizes == rhs.supportedHintGridSizes ) && ( hintSupported == rhs.hintSupported ) && ( costSupported == rhs.costSupported ) &&
76911              ( bidirectionalFlowSupported == rhs.bidirectionalFlowSupported ) && ( globalFlowSupported == rhs.globalFlowSupported ) &&
76912              ( minWidth == rhs.minWidth ) && ( minHeight == rhs.minHeight ) && ( maxWidth == rhs.maxWidth ) && ( maxHeight == rhs.maxHeight ) &&
76913              ( maxNumRegionsOfInterest == rhs.maxNumRegionsOfInterest );
76914 #  endif
76915     }
76916 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV76917     bool operator!=( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
76918     {
76919       return !operator==( rhs );
76920     }
76921 #endif
76922 
76923   public:
76924     VULKAN_HPP_NAMESPACE::StructureType              sType                      = StructureType::ePhysicalDeviceOpticalFlowPropertiesNV;
76925     void *                                           pNext                      = {};
76926     VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV supportedOutputGridSizes   = {};
76927     VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV supportedHintGridSizes     = {};
76928     VULKAN_HPP_NAMESPACE::Bool32                     hintSupported              = {};
76929     VULKAN_HPP_NAMESPACE::Bool32                     costSupported              = {};
76930     VULKAN_HPP_NAMESPACE::Bool32                     bidirectionalFlowSupported = {};
76931     VULKAN_HPP_NAMESPACE::Bool32                     globalFlowSupported        = {};
76932     uint32_t                                         minWidth                   = {};
76933     uint32_t                                         minHeight                  = {};
76934     uint32_t                                         maxWidth                   = {};
76935     uint32_t                                         maxHeight                  = {};
76936     uint32_t                                         maxNumRegionsOfInterest    = {};
76937   };
76938 
76939   template <>
76940   struct CppType<StructureType, StructureType::ePhysicalDeviceOpticalFlowPropertiesNV>
76941   {
76942     using Type = PhysicalDeviceOpticalFlowPropertiesNV;
76943   };
76944 
76945   struct PhysicalDevicePCIBusInfoPropertiesEXT
76946   {
76947     using NativeType = VkPhysicalDevicePCIBusInfoPropertiesEXT;
76948 
76949     static const bool                                  allowDuplicate = false;
76950     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
76951 
76952 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePCIBusInfoPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT76953     VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT(
76954       uint32_t pciDomain_ = {}, uint32_t pciBus_ = {}, uint32_t pciDevice_ = {}, uint32_t pciFunction_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
76955       : pNext{ pNext_ }
76956       , pciDomain{ pciDomain_ }
76957       , pciBus{ pciBus_ }
76958       , pciDevice{ pciDevice_ }
76959       , pciFunction{ pciFunction_ }
76960     {
76961     }
76962 
76963     VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76964 
PhysicalDevicePCIBusInfoPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT76965     PhysicalDevicePCIBusInfoPropertiesEXT( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76966       : PhysicalDevicePCIBusInfoPropertiesEXT( *reinterpret_cast<PhysicalDevicePCIBusInfoPropertiesEXT const *>( &rhs ) )
76967     {
76968     }
76969 
76970     PhysicalDevicePCIBusInfoPropertiesEXT & operator=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76971 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76972 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT76973     PhysicalDevicePCIBusInfoPropertiesEXT & operator=( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76974     {
76975       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT const *>( &rhs );
76976       return *this;
76977     }
76978 
operator VkPhysicalDevicePCIBusInfoPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT76979     operator VkPhysicalDevicePCIBusInfoPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
76980     {
76981       return *reinterpret_cast<const VkPhysicalDevicePCIBusInfoPropertiesEXT *>( this );
76982     }
76983 
operator VkPhysicalDevicePCIBusInfoPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT76984     operator VkPhysicalDevicePCIBusInfoPropertiesEXT &() VULKAN_HPP_NOEXCEPT
76985     {
76986       return *reinterpret_cast<VkPhysicalDevicePCIBusInfoPropertiesEXT *>( this );
76987     }
76988 
76989 #if defined( VULKAN_HPP_USE_REFLECT )
76990 #  if 14 <= VULKAN_HPP_CPP_VERSION
76991     auto
76992 #  else
76993     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
76994 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT76995       reflect() const VULKAN_HPP_NOEXCEPT
76996     {
76997       return std::tie( sType, pNext, pciDomain, pciBus, pciDevice, pciFunction );
76998     }
76999 #endif
77000 
77001 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77002     auto operator<=>( PhysicalDevicePCIBusInfoPropertiesEXT const & ) const = default;
77003 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT77004     bool operator==( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77005     {
77006 #  if defined( VULKAN_HPP_USE_REFLECT )
77007       return this->reflect() == rhs.reflect();
77008 #  else
77009       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pciDomain == rhs.pciDomain ) && ( pciBus == rhs.pciBus ) && ( pciDevice == rhs.pciDevice ) &&
77010              ( pciFunction == rhs.pciFunction );
77011 #  endif
77012     }
77013 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT77014     bool operator!=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77015     {
77016       return !operator==( rhs );
77017     }
77018 #endif
77019 
77020   public:
77021     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
77022     void *                              pNext       = {};
77023     uint32_t                            pciDomain   = {};
77024     uint32_t                            pciBus      = {};
77025     uint32_t                            pciDevice   = {};
77026     uint32_t                            pciFunction = {};
77027   };
77028 
77029   template <>
77030   struct CppType<StructureType, StructureType::ePhysicalDevicePciBusInfoPropertiesEXT>
77031   {
77032     using Type = PhysicalDevicePCIBusInfoPropertiesEXT;
77033   };
77034 
77035   struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
77036   {
77037     using NativeType = VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
77038 
77039     static const bool                                  allowDuplicate = false;
77040     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
77041 
77042 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT77043     VULKAN_HPP_CONSTEXPR PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 pageableDeviceLocalMemory_ = {},
77044                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77045       : pNext{ pNext_ }
77046       , pageableDeviceLocalMemory{ pageableDeviceLocalMemory_ }
77047     {
77048     }
77049 
77050     VULKAN_HPP_CONSTEXPR
77051       PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77052 
PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT77053     PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77054       : PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( *reinterpret_cast<PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const *>( &rhs ) )
77055     {
77056     }
77057 
77058     PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &
77059       operator=( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77060 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77061 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT77062     PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & operator=( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77063     {
77064       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const *>( &rhs );
77065       return *this;
77066     }
77067 
77068 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT77069     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77070     {
77071       pNext = pNext_;
77072       return *this;
77073     }
77074 
77075     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &
setPageableDeviceLocalMemoryVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT77076       setPageableDeviceLocalMemory( VULKAN_HPP_NAMESPACE::Bool32 pageableDeviceLocalMemory_ ) VULKAN_HPP_NOEXCEPT
77077     {
77078       pageableDeviceLocalMemory = pageableDeviceLocalMemory_;
77079       return *this;
77080     }
77081 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77082 
operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT77083     operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
77084     {
77085       return *reinterpret_cast<const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *>( this );
77086     }
77087 
operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT77088     operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &() VULKAN_HPP_NOEXCEPT
77089     {
77090       return *reinterpret_cast<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *>( this );
77091     }
77092 
77093 #if defined( VULKAN_HPP_USE_REFLECT )
77094 #  if 14 <= VULKAN_HPP_CPP_VERSION
77095     auto
77096 #  else
77097     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77098 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT77099       reflect() const VULKAN_HPP_NOEXCEPT
77100     {
77101       return std::tie( sType, pNext, pageableDeviceLocalMemory );
77102     }
77103 #endif
77104 
77105 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77106     auto operator<=>( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & ) const = default;
77107 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT77108     bool operator==( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77109     {
77110 #  if defined( VULKAN_HPP_USE_REFLECT )
77111       return this->reflect() == rhs.reflect();
77112 #  else
77113       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pageableDeviceLocalMemory == rhs.pageableDeviceLocalMemory );
77114 #  endif
77115     }
77116 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT77117     bool operator!=( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77118     {
77119       return !operator==( rhs );
77120     }
77121 #endif
77122 
77123   public:
77124     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
77125     void *                              pNext                     = {};
77126     VULKAN_HPP_NAMESPACE::Bool32        pageableDeviceLocalMemory = {};
77127   };
77128 
77129   template <>
77130   struct CppType<StructureType, StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>
77131   {
77132     using Type = PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
77133   };
77134 
77135   struct PhysicalDevicePerStageDescriptorSetFeaturesNV
77136   {
77137     using NativeType = VkPhysicalDevicePerStageDescriptorSetFeaturesNV;
77138 
77139     static const bool                                  allowDuplicate = false;
77140     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePerStageDescriptorSetFeaturesNV;
77141 
77142 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePerStageDescriptorSetFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77143     VULKAN_HPP_CONSTEXPR PhysicalDevicePerStageDescriptorSetFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 perStageDescriptorSet_ = {},
77144                                                                         VULKAN_HPP_NAMESPACE::Bool32 dynamicPipelineLayout_ = {},
77145                                                                         void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
77146       : pNext{ pNext_ }
77147       , perStageDescriptorSet{ perStageDescriptorSet_ }
77148       , dynamicPipelineLayout{ dynamicPipelineLayout_ }
77149     {
77150     }
77151 
77152     VULKAN_HPP_CONSTEXPR
77153       PhysicalDevicePerStageDescriptorSetFeaturesNV( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77154 
PhysicalDevicePerStageDescriptorSetFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77155     PhysicalDevicePerStageDescriptorSetFeaturesNV( VkPhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
77156       : PhysicalDevicePerStageDescriptorSetFeaturesNV( *reinterpret_cast<PhysicalDevicePerStageDescriptorSetFeaturesNV const *>( &rhs ) )
77157     {
77158     }
77159 
77160     PhysicalDevicePerStageDescriptorSetFeaturesNV & operator=( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77161 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77162 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77163     PhysicalDevicePerStageDescriptorSetFeaturesNV & operator=( VkPhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
77164     {
77165       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV const *>( &rhs );
77166       return *this;
77167     }
77168 
77169 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77170     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77171     {
77172       pNext = pNext_;
77173       return *this;
77174     }
77175 
77176     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV &
setPerStageDescriptorSetVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77177       setPerStageDescriptorSet( VULKAN_HPP_NAMESPACE::Bool32 perStageDescriptorSet_ ) VULKAN_HPP_NOEXCEPT
77178     {
77179       perStageDescriptorSet = perStageDescriptorSet_;
77180       return *this;
77181     }
77182 
77183     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV &
setDynamicPipelineLayoutVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77184       setDynamicPipelineLayout( VULKAN_HPP_NAMESPACE::Bool32 dynamicPipelineLayout_ ) VULKAN_HPP_NOEXCEPT
77185     {
77186       dynamicPipelineLayout = dynamicPipelineLayout_;
77187       return *this;
77188     }
77189 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77190 
operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77191     operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
77192     {
77193       return *reinterpret_cast<const VkPhysicalDevicePerStageDescriptorSetFeaturesNV *>( this );
77194     }
77195 
operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77196     operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV &() VULKAN_HPP_NOEXCEPT
77197     {
77198       return *reinterpret_cast<VkPhysicalDevicePerStageDescriptorSetFeaturesNV *>( this );
77199     }
77200 
77201 #if defined( VULKAN_HPP_USE_REFLECT )
77202 #  if 14 <= VULKAN_HPP_CPP_VERSION
77203     auto
77204 #  else
77205     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77206 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77207       reflect() const VULKAN_HPP_NOEXCEPT
77208     {
77209       return std::tie( sType, pNext, perStageDescriptorSet, dynamicPipelineLayout );
77210     }
77211 #endif
77212 
77213 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77214     auto operator<=>( PhysicalDevicePerStageDescriptorSetFeaturesNV const & ) const = default;
77215 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77216     bool operator==( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
77217     {
77218 #  if defined( VULKAN_HPP_USE_REFLECT )
77219       return this->reflect() == rhs.reflect();
77220 #  else
77221       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perStageDescriptorSet == rhs.perStageDescriptorSet ) &&
77222              ( dynamicPipelineLayout == rhs.dynamicPipelineLayout );
77223 #  endif
77224     }
77225 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV77226     bool operator!=( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
77227     {
77228       return !operator==( rhs );
77229     }
77230 #endif
77231 
77232   public:
77233     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDevicePerStageDescriptorSetFeaturesNV;
77234     void *                              pNext                 = {};
77235     VULKAN_HPP_NAMESPACE::Bool32        perStageDescriptorSet = {};
77236     VULKAN_HPP_NAMESPACE::Bool32        dynamicPipelineLayout = {};
77237   };
77238 
77239   template <>
77240   struct CppType<StructureType, StructureType::ePhysicalDevicePerStageDescriptorSetFeaturesNV>
77241   {
77242     using Type = PhysicalDevicePerStageDescriptorSetFeaturesNV;
77243   };
77244 
77245   struct PhysicalDevicePerformanceQueryFeaturesKHR
77246   {
77247     using NativeType = VkPhysicalDevicePerformanceQueryFeaturesKHR;
77248 
77249     static const bool                                  allowDuplicate = false;
77250     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR;
77251 
77252 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePerformanceQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77253     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_         = {},
77254                                                                     VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ = {},
77255                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77256       : pNext{ pNext_ }
77257       , performanceCounterQueryPools{ performanceCounterQueryPools_ }
77258       , performanceCounterMultipleQueryPools{ performanceCounterMultipleQueryPools_ }
77259     {
77260     }
77261 
77262     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77263 
PhysicalDevicePerformanceQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77264     PhysicalDevicePerformanceQueryFeaturesKHR( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77265       : PhysicalDevicePerformanceQueryFeaturesKHR( *reinterpret_cast<PhysicalDevicePerformanceQueryFeaturesKHR const *>( &rhs ) )
77266     {
77267     }
77268 
77269     PhysicalDevicePerformanceQueryFeaturesKHR & operator=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77270 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77271 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77272     PhysicalDevicePerformanceQueryFeaturesKHR & operator=( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77273     {
77274       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR const *>( &rhs );
77275       return *this;
77276     }
77277 
77278 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77279     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77280     {
77281       pNext = pNext_;
77282       return *this;
77283     }
77284 
77285     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR &
setPerformanceCounterQueryPoolsVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77286       setPerformanceCounterQueryPools( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_ ) VULKAN_HPP_NOEXCEPT
77287     {
77288       performanceCounterQueryPools = performanceCounterQueryPools_;
77289       return *this;
77290     }
77291 
77292     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR &
setPerformanceCounterMultipleQueryPoolsVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77293       setPerformanceCounterMultipleQueryPools( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ ) VULKAN_HPP_NOEXCEPT
77294     {
77295       performanceCounterMultipleQueryPools = performanceCounterMultipleQueryPools_;
77296       return *this;
77297     }
77298 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77299 
operator VkPhysicalDevicePerformanceQueryFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77300     operator VkPhysicalDevicePerformanceQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
77301     {
77302       return *reinterpret_cast<const VkPhysicalDevicePerformanceQueryFeaturesKHR *>( this );
77303     }
77304 
operator VkPhysicalDevicePerformanceQueryFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77305     operator VkPhysicalDevicePerformanceQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT
77306     {
77307       return *reinterpret_cast<VkPhysicalDevicePerformanceQueryFeaturesKHR *>( this );
77308     }
77309 
77310 #if defined( VULKAN_HPP_USE_REFLECT )
77311 #  if 14 <= VULKAN_HPP_CPP_VERSION
77312     auto
77313 #  else
77314     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77315 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77316       reflect() const VULKAN_HPP_NOEXCEPT
77317     {
77318       return std::tie( sType, pNext, performanceCounterQueryPools, performanceCounterMultipleQueryPools );
77319     }
77320 #endif
77321 
77322 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77323     auto operator<=>( PhysicalDevicePerformanceQueryFeaturesKHR const & ) const = default;
77324 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77325     bool operator==( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77326     {
77327 #  if defined( VULKAN_HPP_USE_REFLECT )
77328       return this->reflect() == rhs.reflect();
77329 #  else
77330       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( performanceCounterQueryPools == rhs.performanceCounterQueryPools ) &&
77331              ( performanceCounterMultipleQueryPools == rhs.performanceCounterMultipleQueryPools );
77332 #  endif
77333     }
77334 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR77335     bool operator!=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77336     {
77337       return !operator==( rhs );
77338     }
77339 #endif
77340 
77341   public:
77342     VULKAN_HPP_NAMESPACE::StructureType sType                                = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR;
77343     void *                              pNext                                = {};
77344     VULKAN_HPP_NAMESPACE::Bool32        performanceCounterQueryPools         = {};
77345     VULKAN_HPP_NAMESPACE::Bool32        performanceCounterMultipleQueryPools = {};
77346   };
77347 
77348   template <>
77349   struct CppType<StructureType, StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR>
77350   {
77351     using Type = PhysicalDevicePerformanceQueryFeaturesKHR;
77352   };
77353 
77354   struct PhysicalDevicePerformanceQueryPropertiesKHR
77355   {
77356     using NativeType = VkPhysicalDevicePerformanceQueryPropertiesKHR;
77357 
77358     static const bool                                  allowDuplicate = false;
77359     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR;
77360 
77361 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePerformanceQueryPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR77362     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( VULKAN_HPP_NAMESPACE::Bool32 allowCommandBufferQueryCopies_ = {},
77363                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77364       : pNext{ pNext_ }
77365       , allowCommandBufferQueryCopies{ allowCommandBufferQueryCopies_ }
77366     {
77367     }
77368 
77369     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77370 
PhysicalDevicePerformanceQueryPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR77371     PhysicalDevicePerformanceQueryPropertiesKHR( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77372       : PhysicalDevicePerformanceQueryPropertiesKHR( *reinterpret_cast<PhysicalDevicePerformanceQueryPropertiesKHR const *>( &rhs ) )
77373     {
77374     }
77375 
77376     PhysicalDevicePerformanceQueryPropertiesKHR & operator=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77377 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77378 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR77379     PhysicalDevicePerformanceQueryPropertiesKHR & operator=( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77380     {
77381       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR const *>( &rhs );
77382       return *this;
77383     }
77384 
operator VkPhysicalDevicePerformanceQueryPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR77385     operator VkPhysicalDevicePerformanceQueryPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
77386     {
77387       return *reinterpret_cast<const VkPhysicalDevicePerformanceQueryPropertiesKHR *>( this );
77388     }
77389 
operator VkPhysicalDevicePerformanceQueryPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR77390     operator VkPhysicalDevicePerformanceQueryPropertiesKHR &() VULKAN_HPP_NOEXCEPT
77391     {
77392       return *reinterpret_cast<VkPhysicalDevicePerformanceQueryPropertiesKHR *>( this );
77393     }
77394 
77395 #if defined( VULKAN_HPP_USE_REFLECT )
77396 #  if 14 <= VULKAN_HPP_CPP_VERSION
77397     auto
77398 #  else
77399     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77400 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR77401       reflect() const VULKAN_HPP_NOEXCEPT
77402     {
77403       return std::tie( sType, pNext, allowCommandBufferQueryCopies );
77404     }
77405 #endif
77406 
77407 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77408     auto operator<=>( PhysicalDevicePerformanceQueryPropertiesKHR const & ) const = default;
77409 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR77410     bool operator==( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77411     {
77412 #  if defined( VULKAN_HPP_USE_REFLECT )
77413       return this->reflect() == rhs.reflect();
77414 #  else
77415       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allowCommandBufferQueryCopies == rhs.allowCommandBufferQueryCopies );
77416 #  endif
77417     }
77418 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR77419     bool operator!=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77420     {
77421       return !operator==( rhs );
77422     }
77423 #endif
77424 
77425   public:
77426     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR;
77427     void *                              pNext                         = {};
77428     VULKAN_HPP_NAMESPACE::Bool32        allowCommandBufferQueryCopies = {};
77429   };
77430 
77431   template <>
77432   struct CppType<StructureType, StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR>
77433   {
77434     using Type = PhysicalDevicePerformanceQueryPropertiesKHR;
77435   };
77436 
77437   struct PhysicalDevicePipelineBinaryFeaturesKHR
77438   {
77439     using NativeType = VkPhysicalDevicePipelineBinaryFeaturesKHR;
77440 
77441     static const bool                                  allowDuplicate = false;
77442     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineBinaryFeaturesKHR;
77443 
77444 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineBinaryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR77445     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineBinaryFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaries_ = {},
77446                                                                   void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
77447       : pNext{ pNext_ }
77448       , pipelineBinaries{ pipelineBinaries_ }
77449     {
77450     }
77451 
77452     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineBinaryFeaturesKHR( PhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77453 
PhysicalDevicePipelineBinaryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR77454     PhysicalDevicePipelineBinaryFeaturesKHR( VkPhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77455       : PhysicalDevicePipelineBinaryFeaturesKHR( *reinterpret_cast<PhysicalDevicePipelineBinaryFeaturesKHR const *>( &rhs ) )
77456     {
77457     }
77458 
77459     PhysicalDevicePipelineBinaryFeaturesKHR & operator=( PhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77460 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77461 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR77462     PhysicalDevicePipelineBinaryFeaturesKHR & operator=( VkPhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77463     {
77464       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR const *>( &rhs );
77465       return *this;
77466     }
77467 
77468 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR77469     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77470     {
77471       pNext = pNext_;
77472       return *this;
77473     }
77474 
setPipelineBinariesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR77475     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryFeaturesKHR & setPipelineBinaries( VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaries_ ) VULKAN_HPP_NOEXCEPT
77476     {
77477       pipelineBinaries = pipelineBinaries_;
77478       return *this;
77479     }
77480 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77481 
operator VkPhysicalDevicePipelineBinaryFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR77482     operator VkPhysicalDevicePipelineBinaryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
77483     {
77484       return *reinterpret_cast<const VkPhysicalDevicePipelineBinaryFeaturesKHR *>( this );
77485     }
77486 
operator VkPhysicalDevicePipelineBinaryFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR77487     operator VkPhysicalDevicePipelineBinaryFeaturesKHR &() VULKAN_HPP_NOEXCEPT
77488     {
77489       return *reinterpret_cast<VkPhysicalDevicePipelineBinaryFeaturesKHR *>( this );
77490     }
77491 
77492 #if defined( VULKAN_HPP_USE_REFLECT )
77493 #  if 14 <= VULKAN_HPP_CPP_VERSION
77494     auto
77495 #  else
77496     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77497 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR77498       reflect() const VULKAN_HPP_NOEXCEPT
77499     {
77500       return std::tie( sType, pNext, pipelineBinaries );
77501     }
77502 #endif
77503 
77504 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77505     auto operator<=>( PhysicalDevicePipelineBinaryFeaturesKHR const & ) const = default;
77506 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR77507     bool operator==( PhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77508     {
77509 #  if defined( VULKAN_HPP_USE_REFLECT )
77510       return this->reflect() == rhs.reflect();
77511 #  else
77512       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBinaries == rhs.pipelineBinaries );
77513 #  endif
77514     }
77515 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR77516     bool operator!=( PhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77517     {
77518       return !operator==( rhs );
77519     }
77520 #endif
77521 
77522   public:
77523     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDevicePipelineBinaryFeaturesKHR;
77524     void *                              pNext            = {};
77525     VULKAN_HPP_NAMESPACE::Bool32        pipelineBinaries = {};
77526   };
77527 
77528   template <>
77529   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineBinaryFeaturesKHR>
77530   {
77531     using Type = PhysicalDevicePipelineBinaryFeaturesKHR;
77532   };
77533 
77534   struct PhysicalDevicePipelineBinaryPropertiesKHR
77535   {
77536     using NativeType = VkPhysicalDevicePipelineBinaryPropertiesKHR;
77537 
77538     static const bool                                  allowDuplicate = false;
77539     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineBinaryPropertiesKHR;
77540 
77541 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineBinaryPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77542     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineBinaryPropertiesKHR( VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaryInternalCache_            = {},
77543                                                                     VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaryInternalCacheControl_     = {},
77544                                                                     VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaryPrefersInternalCache_     = {},
77545                                                                     VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaryPrecompiledInternalCache_ = {},
77546                                                                     VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaryCompressedData_           = {},
77547                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77548       : pNext{ pNext_ }
77549       , pipelineBinaryInternalCache{ pipelineBinaryInternalCache_ }
77550       , pipelineBinaryInternalCacheControl{ pipelineBinaryInternalCacheControl_ }
77551       , pipelineBinaryPrefersInternalCache{ pipelineBinaryPrefersInternalCache_ }
77552       , pipelineBinaryPrecompiledInternalCache{ pipelineBinaryPrecompiledInternalCache_ }
77553       , pipelineBinaryCompressedData{ pipelineBinaryCompressedData_ }
77554     {
77555     }
77556 
77557     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineBinaryPropertiesKHR( PhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77558 
PhysicalDevicePipelineBinaryPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77559     PhysicalDevicePipelineBinaryPropertiesKHR( VkPhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77560       : PhysicalDevicePipelineBinaryPropertiesKHR( *reinterpret_cast<PhysicalDevicePipelineBinaryPropertiesKHR const *>( &rhs ) )
77561     {
77562     }
77563 
77564     PhysicalDevicePipelineBinaryPropertiesKHR & operator=( PhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77565 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77566 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77567     PhysicalDevicePipelineBinaryPropertiesKHR & operator=( VkPhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77568     {
77569       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR const *>( &rhs );
77570       return *this;
77571     }
77572 
77573 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77574     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryPropertiesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77575     {
77576       pNext = pNext_;
77577       return *this;
77578     }
77579 
77580     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryPropertiesKHR &
setPipelineBinaryInternalCacheVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77581       setPipelineBinaryInternalCache( VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaryInternalCache_ ) VULKAN_HPP_NOEXCEPT
77582     {
77583       pipelineBinaryInternalCache = pipelineBinaryInternalCache_;
77584       return *this;
77585     }
77586 
77587     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryPropertiesKHR &
setPipelineBinaryInternalCacheControlVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77588       setPipelineBinaryInternalCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaryInternalCacheControl_ ) VULKAN_HPP_NOEXCEPT
77589     {
77590       pipelineBinaryInternalCacheControl = pipelineBinaryInternalCacheControl_;
77591       return *this;
77592     }
77593 
77594     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryPropertiesKHR &
setPipelineBinaryPrefersInternalCacheVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77595       setPipelineBinaryPrefersInternalCache( VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaryPrefersInternalCache_ ) VULKAN_HPP_NOEXCEPT
77596     {
77597       pipelineBinaryPrefersInternalCache = pipelineBinaryPrefersInternalCache_;
77598       return *this;
77599     }
77600 
77601     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryPropertiesKHR &
setPipelineBinaryPrecompiledInternalCacheVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77602       setPipelineBinaryPrecompiledInternalCache( VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaryPrecompiledInternalCache_ ) VULKAN_HPP_NOEXCEPT
77603     {
77604       pipelineBinaryPrecompiledInternalCache = pipelineBinaryPrecompiledInternalCache_;
77605       return *this;
77606     }
77607 
77608     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryPropertiesKHR &
setPipelineBinaryCompressedDataVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77609       setPipelineBinaryCompressedData( VULKAN_HPP_NAMESPACE::Bool32 pipelineBinaryCompressedData_ ) VULKAN_HPP_NOEXCEPT
77610     {
77611       pipelineBinaryCompressedData = pipelineBinaryCompressedData_;
77612       return *this;
77613     }
77614 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77615 
operator VkPhysicalDevicePipelineBinaryPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77616     operator VkPhysicalDevicePipelineBinaryPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
77617     {
77618       return *reinterpret_cast<const VkPhysicalDevicePipelineBinaryPropertiesKHR *>( this );
77619     }
77620 
operator VkPhysicalDevicePipelineBinaryPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77621     operator VkPhysicalDevicePipelineBinaryPropertiesKHR &() VULKAN_HPP_NOEXCEPT
77622     {
77623       return *reinterpret_cast<VkPhysicalDevicePipelineBinaryPropertiesKHR *>( this );
77624     }
77625 
77626 #if defined( VULKAN_HPP_USE_REFLECT )
77627 #  if 14 <= VULKAN_HPP_CPP_VERSION
77628     auto
77629 #  else
77630     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
77631                void * const &,
77632                VULKAN_HPP_NAMESPACE::Bool32 const &,
77633                VULKAN_HPP_NAMESPACE::Bool32 const &,
77634                VULKAN_HPP_NAMESPACE::Bool32 const &,
77635                VULKAN_HPP_NAMESPACE::Bool32 const &,
77636                VULKAN_HPP_NAMESPACE::Bool32 const &>
77637 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77638       reflect() const VULKAN_HPP_NOEXCEPT
77639     {
77640       return std::tie( sType,
77641                        pNext,
77642                        pipelineBinaryInternalCache,
77643                        pipelineBinaryInternalCacheControl,
77644                        pipelineBinaryPrefersInternalCache,
77645                        pipelineBinaryPrecompiledInternalCache,
77646                        pipelineBinaryCompressedData );
77647     }
77648 #endif
77649 
77650 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77651     auto operator<=>( PhysicalDevicePipelineBinaryPropertiesKHR const & ) const = default;
77652 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77653     bool operator==( PhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77654     {
77655 #  if defined( VULKAN_HPP_USE_REFLECT )
77656       return this->reflect() == rhs.reflect();
77657 #  else
77658       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBinaryInternalCache == rhs.pipelineBinaryInternalCache ) &&
77659              ( pipelineBinaryInternalCacheControl == rhs.pipelineBinaryInternalCacheControl ) &&
77660              ( pipelineBinaryPrefersInternalCache == rhs.pipelineBinaryPrefersInternalCache ) &&
77661              ( pipelineBinaryPrecompiledInternalCache == rhs.pipelineBinaryPrecompiledInternalCache ) &&
77662              ( pipelineBinaryCompressedData == rhs.pipelineBinaryCompressedData );
77663 #  endif
77664     }
77665 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR77666     bool operator!=( PhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77667     {
77668       return !operator==( rhs );
77669     }
77670 #endif
77671 
77672   public:
77673     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDevicePipelineBinaryPropertiesKHR;
77674     void *                              pNext                                  = {};
77675     VULKAN_HPP_NAMESPACE::Bool32        pipelineBinaryInternalCache            = {};
77676     VULKAN_HPP_NAMESPACE::Bool32        pipelineBinaryInternalCacheControl     = {};
77677     VULKAN_HPP_NAMESPACE::Bool32        pipelineBinaryPrefersInternalCache     = {};
77678     VULKAN_HPP_NAMESPACE::Bool32        pipelineBinaryPrecompiledInternalCache = {};
77679     VULKAN_HPP_NAMESPACE::Bool32        pipelineBinaryCompressedData           = {};
77680   };
77681 
77682   template <>
77683   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineBinaryPropertiesKHR>
77684   {
77685     using Type = PhysicalDevicePipelineBinaryPropertiesKHR;
77686   };
77687 
77688   struct PhysicalDevicePipelineCreationCacheControlFeatures
77689   {
77690     using NativeType = VkPhysicalDevicePipelineCreationCacheControlFeatures;
77691 
77692     static const bool                                  allowDuplicate = false;
77693     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures;
77694 
77695 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineCreationCacheControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures77696     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeatures( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ = {},
77697                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77698       : pNext{ pNext_ }
77699       , pipelineCreationCacheControl{ pipelineCreationCacheControl_ }
77700     {
77701     }
77702 
77703     VULKAN_HPP_CONSTEXPR
77704       PhysicalDevicePipelineCreationCacheControlFeatures( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77705 
PhysicalDevicePipelineCreationCacheControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures77706     PhysicalDevicePipelineCreationCacheControlFeatures( VkPhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
77707       : PhysicalDevicePipelineCreationCacheControlFeatures( *reinterpret_cast<PhysicalDevicePipelineCreationCacheControlFeatures const *>( &rhs ) )
77708     {
77709     }
77710 
77711     PhysicalDevicePipelineCreationCacheControlFeatures &
77712       operator=( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77713 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77714 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures77715     PhysicalDevicePipelineCreationCacheControlFeatures & operator=( VkPhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
77716     {
77717       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures const *>( &rhs );
77718       return *this;
77719     }
77720 
77721 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures77722     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77723     {
77724       pNext = pNext_;
77725       return *this;
77726     }
77727 
77728     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures &
setPipelineCreationCacheControlVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures77729       setPipelineCreationCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ ) VULKAN_HPP_NOEXCEPT
77730     {
77731       pipelineCreationCacheControl = pipelineCreationCacheControl_;
77732       return *this;
77733     }
77734 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77735 
operator VkPhysicalDevicePipelineCreationCacheControlFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures77736     operator VkPhysicalDevicePipelineCreationCacheControlFeatures const &() const VULKAN_HPP_NOEXCEPT
77737     {
77738       return *reinterpret_cast<const VkPhysicalDevicePipelineCreationCacheControlFeatures *>( this );
77739     }
77740 
operator VkPhysicalDevicePipelineCreationCacheControlFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures77741     operator VkPhysicalDevicePipelineCreationCacheControlFeatures &() VULKAN_HPP_NOEXCEPT
77742     {
77743       return *reinterpret_cast<VkPhysicalDevicePipelineCreationCacheControlFeatures *>( this );
77744     }
77745 
77746 #if defined( VULKAN_HPP_USE_REFLECT )
77747 #  if 14 <= VULKAN_HPP_CPP_VERSION
77748     auto
77749 #  else
77750     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77751 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures77752       reflect() const VULKAN_HPP_NOEXCEPT
77753     {
77754       return std::tie( sType, pNext, pipelineCreationCacheControl );
77755     }
77756 #endif
77757 
77758 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77759     auto operator<=>( PhysicalDevicePipelineCreationCacheControlFeatures const & ) const = default;
77760 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures77761     bool operator==( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
77762     {
77763 #  if defined( VULKAN_HPP_USE_REFLECT )
77764       return this->reflect() == rhs.reflect();
77765 #  else
77766       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl );
77767 #  endif
77768     }
77769 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures77770     bool operator!=( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
77771     {
77772       return !operator==( rhs );
77773     }
77774 #endif
77775 
77776   public:
77777     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures;
77778     void *                              pNext                        = {};
77779     VULKAN_HPP_NAMESPACE::Bool32        pipelineCreationCacheControl = {};
77780   };
77781 
77782   template <>
77783   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures>
77784   {
77785     using Type = PhysicalDevicePipelineCreationCacheControlFeatures;
77786   };
77787 
77788   using PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeatures;
77789 
77790   struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR
77791   {
77792     using NativeType = VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
77793 
77794     static const bool                                  allowDuplicate = false;
77795     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
77796 
77797 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineExecutablePropertiesFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR77798     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo_ = {},
77799                                                                                 void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77800       : pNext{ pNext_ }
77801       , pipelineExecutableInfo{ pipelineExecutableInfo_ }
77802     {
77803     }
77804 
77805     VULKAN_HPP_CONSTEXPR
77806       PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77807 
PhysicalDevicePipelineExecutablePropertiesFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR77808     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77809       : PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( *reinterpret_cast<PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *>( &rhs ) )
77810     {
77811     }
77812 
77813     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR &
77814       operator=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77815 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77816 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR77817     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & operator=( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77818     {
77819       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *>( &rhs );
77820       return *this;
77821     }
77822 
77823 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR77824     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77825     {
77826       pNext = pNext_;
77827       return *this;
77828     }
77829 
77830     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR &
setPipelineExecutableInfoVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR77831       setPipelineExecutableInfo( VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo_ ) VULKAN_HPP_NOEXCEPT
77832     {
77833       pipelineExecutableInfo = pipelineExecutableInfo_;
77834       return *this;
77835     }
77836 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77837 
operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR77838     operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
77839     {
77840       return *reinterpret_cast<const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *>( this );
77841     }
77842 
operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR77843     operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR &() VULKAN_HPP_NOEXCEPT
77844     {
77845       return *reinterpret_cast<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *>( this );
77846     }
77847 
77848 #if defined( VULKAN_HPP_USE_REFLECT )
77849 #  if 14 <= VULKAN_HPP_CPP_VERSION
77850     auto
77851 #  else
77852     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77853 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR77854       reflect() const VULKAN_HPP_NOEXCEPT
77855     {
77856       return std::tie( sType, pNext, pipelineExecutableInfo );
77857     }
77858 #endif
77859 
77860 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77861     auto operator<=>( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & ) const = default;
77862 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR77863     bool operator==( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77864     {
77865 #  if defined( VULKAN_HPP_USE_REFLECT )
77866       return this->reflect() == rhs.reflect();
77867 #  else
77868       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineExecutableInfo == rhs.pipelineExecutableInfo );
77869 #  endif
77870     }
77871 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR77872     bool operator!=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77873     {
77874       return !operator==( rhs );
77875     }
77876 #endif
77877 
77878   public:
77879     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
77880     void *                              pNext                  = {};
77881     VULKAN_HPP_NAMESPACE::Bool32        pipelineExecutableInfo = {};
77882   };
77883 
77884   template <>
77885   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR>
77886   {
77887     using Type = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
77888   };
77889 
77890   struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT
77891   {
77892     using NativeType = VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
77893 
77894     static const bool                                  allowDuplicate = false;
77895     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
77896 
77897 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT77898     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 pipelineLibraryGroupHandles_ = {},
77899                                                                                void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77900       : pNext{ pNext_ }
77901       , pipelineLibraryGroupHandles{ pipelineLibraryGroupHandles_ }
77902     {
77903     }
77904 
77905     VULKAN_HPP_CONSTEXPR
77906       PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77907 
PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT77908     PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77909       : PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( *reinterpret_cast<PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const *>( &rhs ) )
77910     {
77911     }
77912 
77913     PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT &
77914       operator=( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77915 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77916 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT77917     PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT & operator=( VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77918     {
77919       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const *>( &rhs );
77920       return *this;
77921     }
77922 
77923 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT77924     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77925     {
77926       pNext = pNext_;
77927       return *this;
77928     }
77929 
77930     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT &
setPipelineLibraryGroupHandlesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT77931       setPipelineLibraryGroupHandles( VULKAN_HPP_NAMESPACE::Bool32 pipelineLibraryGroupHandles_ ) VULKAN_HPP_NOEXCEPT
77932     {
77933       pipelineLibraryGroupHandles = pipelineLibraryGroupHandles_;
77934       return *this;
77935     }
77936 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77937 
operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT77938     operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
77939     {
77940       return *reinterpret_cast<const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT *>( this );
77941     }
77942 
operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT77943     operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT &() VULKAN_HPP_NOEXCEPT
77944     {
77945       return *reinterpret_cast<VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT *>( this );
77946     }
77947 
77948 #if defined( VULKAN_HPP_USE_REFLECT )
77949 #  if 14 <= VULKAN_HPP_CPP_VERSION
77950     auto
77951 #  else
77952     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77953 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT77954       reflect() const VULKAN_HPP_NOEXCEPT
77955     {
77956       return std::tie( sType, pNext, pipelineLibraryGroupHandles );
77957     }
77958 #endif
77959 
77960 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77961     auto operator<=>( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & ) const = default;
77962 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT77963     bool operator==( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77964     {
77965 #  if defined( VULKAN_HPP_USE_REFLECT )
77966       return this->reflect() == rhs.reflect();
77967 #  else
77968       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineLibraryGroupHandles == rhs.pipelineLibraryGroupHandles );
77969 #  endif
77970     }
77971 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT77972     bool operator!=( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77973     {
77974       return !operator==( rhs );
77975     }
77976 #endif
77977 
77978   public:
77979     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
77980     void *                              pNext                       = {};
77981     VULKAN_HPP_NAMESPACE::Bool32        pipelineLibraryGroupHandles = {};
77982   };
77983 
77984   template <>
77985   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT>
77986   {
77987     using Type = PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
77988   };
77989 
77990   struct PhysicalDevicePipelinePropertiesFeaturesEXT
77991   {
77992     using NativeType = VkPhysicalDevicePipelinePropertiesFeaturesEXT;
77993 
77994     static const bool                                  allowDuplicate = false;
77995     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelinePropertiesFeaturesEXT;
77996 
77997 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelinePropertiesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT77998     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelinePropertiesFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 pipelinePropertiesIdentifier_ = {},
77999                                                                       void *                       pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
78000       : pNext{ pNext_ }
78001       , pipelinePropertiesIdentifier{ pipelinePropertiesIdentifier_ }
78002     {
78003     }
78004 
78005     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelinePropertiesFeaturesEXT( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78006 
PhysicalDevicePipelinePropertiesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT78007     PhysicalDevicePipelinePropertiesFeaturesEXT( VkPhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78008       : PhysicalDevicePipelinePropertiesFeaturesEXT( *reinterpret_cast<PhysicalDevicePipelinePropertiesFeaturesEXT const *>( &rhs ) )
78009     {
78010     }
78011 
78012     PhysicalDevicePipelinePropertiesFeaturesEXT & operator=( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78013 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78014 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT78015     PhysicalDevicePipelinePropertiesFeaturesEXT & operator=( VkPhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78016     {
78017       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT const *>( &rhs );
78018       return *this;
78019     }
78020 
78021 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT78022     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelinePropertiesFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78023     {
78024       pNext = pNext_;
78025       return *this;
78026     }
78027 
78028     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelinePropertiesFeaturesEXT &
setPipelinePropertiesIdentifierVULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT78029       setPipelinePropertiesIdentifier( VULKAN_HPP_NAMESPACE::Bool32 pipelinePropertiesIdentifier_ ) VULKAN_HPP_NOEXCEPT
78030     {
78031       pipelinePropertiesIdentifier = pipelinePropertiesIdentifier_;
78032       return *this;
78033     }
78034 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78035 
operator VkPhysicalDevicePipelinePropertiesFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT78036     operator VkPhysicalDevicePipelinePropertiesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
78037     {
78038       return *reinterpret_cast<const VkPhysicalDevicePipelinePropertiesFeaturesEXT *>( this );
78039     }
78040 
operator VkPhysicalDevicePipelinePropertiesFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT78041     operator VkPhysicalDevicePipelinePropertiesFeaturesEXT &() VULKAN_HPP_NOEXCEPT
78042     {
78043       return *reinterpret_cast<VkPhysicalDevicePipelinePropertiesFeaturesEXT *>( this );
78044     }
78045 
78046 #if defined( VULKAN_HPP_USE_REFLECT )
78047 #  if 14 <= VULKAN_HPP_CPP_VERSION
78048     auto
78049 #  else
78050     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
78051 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT78052       reflect() const VULKAN_HPP_NOEXCEPT
78053     {
78054       return std::tie( sType, pNext, pipelinePropertiesIdentifier );
78055     }
78056 #endif
78057 
78058 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78059     auto operator<=>( PhysicalDevicePipelinePropertiesFeaturesEXT const & ) const = default;
78060 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT78061     bool operator==( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78062     {
78063 #  if defined( VULKAN_HPP_USE_REFLECT )
78064       return this->reflect() == rhs.reflect();
78065 #  else
78066       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelinePropertiesIdentifier == rhs.pipelinePropertiesIdentifier );
78067 #  endif
78068     }
78069 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT78070     bool operator!=( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78071     {
78072       return !operator==( rhs );
78073     }
78074 #endif
78075 
78076   public:
78077     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDevicePipelinePropertiesFeaturesEXT;
78078     void *                              pNext                        = {};
78079     VULKAN_HPP_NAMESPACE::Bool32        pipelinePropertiesIdentifier = {};
78080   };
78081 
78082   template <>
78083   struct CppType<StructureType, StructureType::ePhysicalDevicePipelinePropertiesFeaturesEXT>
78084   {
78085     using Type = PhysicalDevicePipelinePropertiesFeaturesEXT;
78086   };
78087 
78088   struct PhysicalDevicePipelineProtectedAccessFeatures
78089   {
78090     using NativeType = VkPhysicalDevicePipelineProtectedAccessFeatures;
78091 
78092     static const bool                                  allowDuplicate = false;
78093     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineProtectedAccessFeatures;
78094 
78095 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineProtectedAccessFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures78096     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineProtectedAccessFeatures( VULKAN_HPP_NAMESPACE::Bool32 pipelineProtectedAccess_ = {},
78097                                                                         void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
78098       : pNext{ pNext_ }
78099       , pipelineProtectedAccess{ pipelineProtectedAccess_ }
78100     {
78101     }
78102 
78103     VULKAN_HPP_CONSTEXPR
78104       PhysicalDevicePipelineProtectedAccessFeatures( PhysicalDevicePipelineProtectedAccessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78105 
PhysicalDevicePipelineProtectedAccessFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures78106     PhysicalDevicePipelineProtectedAccessFeatures( VkPhysicalDevicePipelineProtectedAccessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
78107       : PhysicalDevicePipelineProtectedAccessFeatures( *reinterpret_cast<PhysicalDevicePipelineProtectedAccessFeatures const *>( &rhs ) )
78108     {
78109     }
78110 
78111     PhysicalDevicePipelineProtectedAccessFeatures & operator=( PhysicalDevicePipelineProtectedAccessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78112 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78113 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures78114     PhysicalDevicePipelineProtectedAccessFeatures & operator=( VkPhysicalDevicePipelineProtectedAccessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
78115     {
78116       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures const *>( &rhs );
78117       return *this;
78118     }
78119 
78120 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures78121     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineProtectedAccessFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78122     {
78123       pNext = pNext_;
78124       return *this;
78125     }
78126 
78127     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineProtectedAccessFeatures &
setPipelineProtectedAccessVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures78128       setPipelineProtectedAccess( VULKAN_HPP_NAMESPACE::Bool32 pipelineProtectedAccess_ ) VULKAN_HPP_NOEXCEPT
78129     {
78130       pipelineProtectedAccess = pipelineProtectedAccess_;
78131       return *this;
78132     }
78133 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78134 
operator VkPhysicalDevicePipelineProtectedAccessFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures78135     operator VkPhysicalDevicePipelineProtectedAccessFeatures const &() const VULKAN_HPP_NOEXCEPT
78136     {
78137       return *reinterpret_cast<const VkPhysicalDevicePipelineProtectedAccessFeatures *>( this );
78138     }
78139 
operator VkPhysicalDevicePipelineProtectedAccessFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures78140     operator VkPhysicalDevicePipelineProtectedAccessFeatures &() VULKAN_HPP_NOEXCEPT
78141     {
78142       return *reinterpret_cast<VkPhysicalDevicePipelineProtectedAccessFeatures *>( this );
78143     }
78144 
78145 #if defined( VULKAN_HPP_USE_REFLECT )
78146 #  if 14 <= VULKAN_HPP_CPP_VERSION
78147     auto
78148 #  else
78149     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
78150 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures78151       reflect() const VULKAN_HPP_NOEXCEPT
78152     {
78153       return std::tie( sType, pNext, pipelineProtectedAccess );
78154     }
78155 #endif
78156 
78157 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78158     auto operator<=>( PhysicalDevicePipelineProtectedAccessFeatures const & ) const = default;
78159 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures78160     bool operator==( PhysicalDevicePipelineProtectedAccessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
78161     {
78162 #  if defined( VULKAN_HPP_USE_REFLECT )
78163       return this->reflect() == rhs.reflect();
78164 #  else
78165       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineProtectedAccess == rhs.pipelineProtectedAccess );
78166 #  endif
78167     }
78168 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures78169     bool operator!=( PhysicalDevicePipelineProtectedAccessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
78170     {
78171       return !operator==( rhs );
78172     }
78173 #endif
78174 
78175   public:
78176     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDevicePipelineProtectedAccessFeatures;
78177     void *                              pNext                   = {};
78178     VULKAN_HPP_NAMESPACE::Bool32        pipelineProtectedAccess = {};
78179   };
78180 
78181   template <>
78182   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineProtectedAccessFeatures>
78183   {
78184     using Type = PhysicalDevicePipelineProtectedAccessFeatures;
78185   };
78186 
78187   using PhysicalDevicePipelineProtectedAccessFeaturesEXT = PhysicalDevicePipelineProtectedAccessFeatures;
78188 
78189   struct PhysicalDevicePipelineRobustnessFeatures
78190   {
78191     using NativeType = VkPhysicalDevicePipelineRobustnessFeatures;
78192 
78193     static const bool                                  allowDuplicate = false;
78194     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineRobustnessFeatures;
78195 
78196 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineRobustnessFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures78197     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineRobustnessFeatures( VULKAN_HPP_NAMESPACE::Bool32 pipelineRobustness_ = {},
78198                                                                    void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
78199       : pNext{ pNext_ }
78200       , pipelineRobustness{ pipelineRobustness_ }
78201     {
78202     }
78203 
78204     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineRobustnessFeatures( PhysicalDevicePipelineRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78205 
PhysicalDevicePipelineRobustnessFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures78206     PhysicalDevicePipelineRobustnessFeatures( VkPhysicalDevicePipelineRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
78207       : PhysicalDevicePipelineRobustnessFeatures( *reinterpret_cast<PhysicalDevicePipelineRobustnessFeatures const *>( &rhs ) )
78208     {
78209     }
78210 
78211     PhysicalDevicePipelineRobustnessFeatures & operator=( PhysicalDevicePipelineRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78212 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78213 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures78214     PhysicalDevicePipelineRobustnessFeatures & operator=( VkPhysicalDevicePipelineRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
78215     {
78216       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures const *>( &rhs );
78217       return *this;
78218     }
78219 
78220 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures78221     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineRobustnessFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78222     {
78223       pNext = pNext_;
78224       return *this;
78225     }
78226 
78227     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineRobustnessFeatures &
setPipelineRobustnessVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures78228       setPipelineRobustness( VULKAN_HPP_NAMESPACE::Bool32 pipelineRobustness_ ) VULKAN_HPP_NOEXCEPT
78229     {
78230       pipelineRobustness = pipelineRobustness_;
78231       return *this;
78232     }
78233 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78234 
operator VkPhysicalDevicePipelineRobustnessFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures78235     operator VkPhysicalDevicePipelineRobustnessFeatures const &() const VULKAN_HPP_NOEXCEPT
78236     {
78237       return *reinterpret_cast<const VkPhysicalDevicePipelineRobustnessFeatures *>( this );
78238     }
78239 
operator VkPhysicalDevicePipelineRobustnessFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures78240     operator VkPhysicalDevicePipelineRobustnessFeatures &() VULKAN_HPP_NOEXCEPT
78241     {
78242       return *reinterpret_cast<VkPhysicalDevicePipelineRobustnessFeatures *>( this );
78243     }
78244 
78245 #if defined( VULKAN_HPP_USE_REFLECT )
78246 #  if 14 <= VULKAN_HPP_CPP_VERSION
78247     auto
78248 #  else
78249     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
78250 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures78251       reflect() const VULKAN_HPP_NOEXCEPT
78252     {
78253       return std::tie( sType, pNext, pipelineRobustness );
78254     }
78255 #endif
78256 
78257 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78258     auto operator<=>( PhysicalDevicePipelineRobustnessFeatures const & ) const = default;
78259 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures78260     bool operator==( PhysicalDevicePipelineRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
78261     {
78262 #  if defined( VULKAN_HPP_USE_REFLECT )
78263       return this->reflect() == rhs.reflect();
78264 #  else
78265       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineRobustness == rhs.pipelineRobustness );
78266 #  endif
78267     }
78268 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures78269     bool operator!=( PhysicalDevicePipelineRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
78270     {
78271       return !operator==( rhs );
78272     }
78273 #endif
78274 
78275   public:
78276     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDevicePipelineRobustnessFeatures;
78277     void *                              pNext              = {};
78278     VULKAN_HPP_NAMESPACE::Bool32        pipelineRobustness = {};
78279   };
78280 
78281   template <>
78282   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineRobustnessFeatures>
78283   {
78284     using Type = PhysicalDevicePipelineRobustnessFeatures;
78285   };
78286 
78287   using PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures;
78288 
78289   struct PhysicalDevicePipelineRobustnessProperties
78290   {
78291     using NativeType = VkPhysicalDevicePipelineRobustnessProperties;
78292 
78293     static const bool                                  allowDuplicate = false;
78294     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineRobustnessProperties;
78295 
78296 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineRobustnessPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties78297     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineRobustnessProperties(
78298       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers_ =
78299         VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault,
78300       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers_ =
78301         VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault,
78302       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessVertexInputs_ =
78303         VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault,
78304       VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior defaultRobustnessImages_ = VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior::eDeviceDefault,
78305       void *                                                pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
78306       : pNext{ pNext_ }
78307       , defaultRobustnessStorageBuffers{ defaultRobustnessStorageBuffers_ }
78308       , defaultRobustnessUniformBuffers{ defaultRobustnessUniformBuffers_ }
78309       , defaultRobustnessVertexInputs{ defaultRobustnessVertexInputs_ }
78310       , defaultRobustnessImages{ defaultRobustnessImages_ }
78311     {
78312     }
78313 
78314     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineRobustnessProperties( PhysicalDevicePipelineRobustnessProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78315 
PhysicalDevicePipelineRobustnessPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties78316     PhysicalDevicePipelineRobustnessProperties( VkPhysicalDevicePipelineRobustnessProperties const & rhs ) VULKAN_HPP_NOEXCEPT
78317       : PhysicalDevicePipelineRobustnessProperties( *reinterpret_cast<PhysicalDevicePipelineRobustnessProperties const *>( &rhs ) )
78318     {
78319     }
78320 
78321     PhysicalDevicePipelineRobustnessProperties & operator=( PhysicalDevicePipelineRobustnessProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78322 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78323 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties78324     PhysicalDevicePipelineRobustnessProperties & operator=( VkPhysicalDevicePipelineRobustnessProperties const & rhs ) VULKAN_HPP_NOEXCEPT
78325     {
78326       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties const *>( &rhs );
78327       return *this;
78328     }
78329 
operator VkPhysicalDevicePipelineRobustnessProperties const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties78330     operator VkPhysicalDevicePipelineRobustnessProperties const &() const VULKAN_HPP_NOEXCEPT
78331     {
78332       return *reinterpret_cast<const VkPhysicalDevicePipelineRobustnessProperties *>( this );
78333     }
78334 
operator VkPhysicalDevicePipelineRobustnessProperties&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties78335     operator VkPhysicalDevicePipelineRobustnessProperties &() VULKAN_HPP_NOEXCEPT
78336     {
78337       return *reinterpret_cast<VkPhysicalDevicePipelineRobustnessProperties *>( this );
78338     }
78339 
78340 #if defined( VULKAN_HPP_USE_REFLECT )
78341 #  if 14 <= VULKAN_HPP_CPP_VERSION
78342     auto
78343 #  else
78344     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
78345                void * const &,
78346                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior const &,
78347                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior const &,
78348                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior const &,
78349                VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior const &>
78350 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties78351       reflect() const VULKAN_HPP_NOEXCEPT
78352     {
78353       return std::tie( sType, pNext, defaultRobustnessStorageBuffers, defaultRobustnessUniformBuffers, defaultRobustnessVertexInputs, defaultRobustnessImages );
78354     }
78355 #endif
78356 
78357 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78358     auto operator<=>( PhysicalDevicePipelineRobustnessProperties const & ) const = default;
78359 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties78360     bool operator==( PhysicalDevicePipelineRobustnessProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
78361     {
78362 #  if defined( VULKAN_HPP_USE_REFLECT )
78363       return this->reflect() == rhs.reflect();
78364 #  else
78365       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( defaultRobustnessStorageBuffers == rhs.defaultRobustnessStorageBuffers ) &&
78366              ( defaultRobustnessUniformBuffers == rhs.defaultRobustnessUniformBuffers ) &&
78367              ( defaultRobustnessVertexInputs == rhs.defaultRobustnessVertexInputs ) && ( defaultRobustnessImages == rhs.defaultRobustnessImages );
78368 #  endif
78369     }
78370 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties78371     bool operator!=( PhysicalDevicePipelineRobustnessProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
78372     {
78373       return !operator==( rhs );
78374     }
78375 #endif
78376 
78377   public:
78378     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::ePhysicalDevicePipelineRobustnessProperties;
78379     void *                                                 pNext = {};
78380     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers =
78381       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault;
78382     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers =
78383       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault;
78384     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessVertexInputs =
78385       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault;
78386     VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior defaultRobustnessImages = VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior::eDeviceDefault;
78387   };
78388 
78389   template <>
78390   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineRobustnessProperties>
78391   {
78392     using Type = PhysicalDevicePipelineRobustnessProperties;
78393   };
78394 
78395   using PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties;
78396 
78397   struct PhysicalDevicePointClippingProperties
78398   {
78399     using NativeType = VkPhysicalDevicePointClippingProperties;
78400 
78401     static const bool                                  allowDuplicate = false;
78402     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePointClippingProperties;
78403 
78404 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePointClippingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties78405     VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties(
78406       VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_ = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes,
78407       void *                                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
78408       : pNext{ pNext_ }
78409       , pointClippingBehavior{ pointClippingBehavior_ }
78410     {
78411     }
78412 
78413     VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78414 
PhysicalDevicePointClippingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties78415     PhysicalDevicePointClippingProperties( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
78416       : PhysicalDevicePointClippingProperties( *reinterpret_cast<PhysicalDevicePointClippingProperties const *>( &rhs ) )
78417     {
78418     }
78419 
78420     PhysicalDevicePointClippingProperties & operator=( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78421 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78422 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties78423     PhysicalDevicePointClippingProperties & operator=( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
78424     {
78425       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties const *>( &rhs );
78426       return *this;
78427     }
78428 
operator VkPhysicalDevicePointClippingProperties const&VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties78429     operator VkPhysicalDevicePointClippingProperties const &() const VULKAN_HPP_NOEXCEPT
78430     {
78431       return *reinterpret_cast<const VkPhysicalDevicePointClippingProperties *>( this );
78432     }
78433 
operator VkPhysicalDevicePointClippingProperties&VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties78434     operator VkPhysicalDevicePointClippingProperties &() VULKAN_HPP_NOEXCEPT
78435     {
78436       return *reinterpret_cast<VkPhysicalDevicePointClippingProperties *>( this );
78437     }
78438 
78439 #if defined( VULKAN_HPP_USE_REFLECT )
78440 #  if 14 <= VULKAN_HPP_CPP_VERSION
78441     auto
78442 #  else
78443     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PointClippingBehavior const &>
78444 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties78445       reflect() const VULKAN_HPP_NOEXCEPT
78446     {
78447       return std::tie( sType, pNext, pointClippingBehavior );
78448     }
78449 #endif
78450 
78451 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78452     auto operator<=>( PhysicalDevicePointClippingProperties const & ) const = default;
78453 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties78454     bool operator==( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
78455     {
78456 #  if defined( VULKAN_HPP_USE_REFLECT )
78457       return this->reflect() == rhs.reflect();
78458 #  else
78459       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pointClippingBehavior == rhs.pointClippingBehavior );
78460 #  endif
78461     }
78462 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties78463     bool operator!=( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
78464     {
78465       return !operator==( rhs );
78466     }
78467 #endif
78468 
78469   public:
78470     VULKAN_HPP_NAMESPACE::StructureType         sType                 = StructureType::ePhysicalDevicePointClippingProperties;
78471     void *                                      pNext                 = {};
78472     VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes;
78473   };
78474 
78475   template <>
78476   struct CppType<StructureType, StructureType::ePhysicalDevicePointClippingProperties>
78477   {
78478     using Type = PhysicalDevicePointClippingProperties;
78479   };
78480 
78481   using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
78482 
78483 #if defined( VK_ENABLE_BETA_EXTENSIONS )
78484   struct PhysicalDevicePortabilitySubsetFeaturesKHR
78485   {
78486     using NativeType = VkPhysicalDevicePortabilitySubsetFeaturesKHR;
78487 
78488     static const bool                                  allowDuplicate = false;
78489     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR;
78490 
78491 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePortabilitySubsetFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78492     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors_         = {},
78493                                                                      VULKAN_HPP_NAMESPACE::Bool32 events_                                 = {},
78494                                                                      VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation_        = {},
78495                                                                      VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle_                 = {},
78496                                                                      VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage_                   = {},
78497                                                                      VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage_                  = {},
78498                                                                      VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers_              = {},
78499                                                                      VULKAN_HPP_NAMESPACE::Bool32 pointPolygons_                          = {},
78500                                                                      VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias_                      = {},
78501                                                                      VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef_                 = {},
78502                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions_ = {},
78503                                                                      VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines_                   = {},
78504                                                                      VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode_                  = {},
78505                                                                      VULKAN_HPP_NAMESPACE::Bool32 triangleFans_                           = {},
78506                                                                      VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride_      = {},
78507                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
78508       : pNext{ pNext_ }
78509       , constantAlphaColorBlendFactors{ constantAlphaColorBlendFactors_ }
78510       , events{ events_ }
78511       , imageViewFormatReinterpretation{ imageViewFormatReinterpretation_ }
78512       , imageViewFormatSwizzle{ imageViewFormatSwizzle_ }
78513       , imageView2DOn3DImage{ imageView2DOn3DImage_ }
78514       , multisampleArrayImage{ multisampleArrayImage_ }
78515       , mutableComparisonSamplers{ mutableComparisonSamplers_ }
78516       , pointPolygons{ pointPolygons_ }
78517       , samplerMipLodBias{ samplerMipLodBias_ }
78518       , separateStencilMaskRef{ separateStencilMaskRef_ }
78519       , shaderSampleRateInterpolationFunctions{ shaderSampleRateInterpolationFunctions_ }
78520       , tessellationIsolines{ tessellationIsolines_ }
78521       , tessellationPointMode{ tessellationPointMode_ }
78522       , triangleFans{ triangleFans_ }
78523       , vertexAttributeAccessBeyondStride{ vertexAttributeAccessBeyondStride_ }
78524     {
78525     }
78526 
78527     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78528 
PhysicalDevicePortabilitySubsetFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78529     PhysicalDevicePortabilitySubsetFeaturesKHR( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78530       : PhysicalDevicePortabilitySubsetFeaturesKHR( *reinterpret_cast<PhysicalDevicePortabilitySubsetFeaturesKHR const *>( &rhs ) )
78531     {
78532     }
78533 
78534     PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78535 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78536 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78537     PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78538     {
78539       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR const *>( &rhs );
78540       return *this;
78541     }
78542 
78543 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78544     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78545     {
78546       pNext = pNext_;
78547       return *this;
78548     }
78549 
78550     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setConstantAlphaColorBlendFactorsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78551       setConstantAlphaColorBlendFactors( VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors_ ) VULKAN_HPP_NOEXCEPT
78552     {
78553       constantAlphaColorBlendFactors = constantAlphaColorBlendFactors_;
78554       return *this;
78555     }
78556 
setEventsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78557     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setEvents( VULKAN_HPP_NAMESPACE::Bool32 events_ ) VULKAN_HPP_NOEXCEPT
78558     {
78559       events = events_;
78560       return *this;
78561     }
78562 
78563     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setImageViewFormatReinterpretationVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78564       setImageViewFormatReinterpretation( VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation_ ) VULKAN_HPP_NOEXCEPT
78565     {
78566       imageViewFormatReinterpretation = imageViewFormatReinterpretation_;
78567       return *this;
78568     }
78569 
78570     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setImageViewFormatSwizzleVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78571       setImageViewFormatSwizzle( VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle_ ) VULKAN_HPP_NOEXCEPT
78572     {
78573       imageViewFormatSwizzle = imageViewFormatSwizzle_;
78574       return *this;
78575     }
78576 
78577     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setImageView2DOn3DImageVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78578       setImageView2DOn3DImage( VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage_ ) VULKAN_HPP_NOEXCEPT
78579     {
78580       imageView2DOn3DImage = imageView2DOn3DImage_;
78581       return *this;
78582     }
78583 
78584     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setMultisampleArrayImageVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78585       setMultisampleArrayImage( VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage_ ) VULKAN_HPP_NOEXCEPT
78586     {
78587       multisampleArrayImage = multisampleArrayImage_;
78588       return *this;
78589     }
78590 
78591     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setMutableComparisonSamplersVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78592       setMutableComparisonSamplers( VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers_ ) VULKAN_HPP_NOEXCEPT
78593     {
78594       mutableComparisonSamplers = mutableComparisonSamplers_;
78595       return *this;
78596     }
78597 
setPointPolygonsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78598     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setPointPolygons( VULKAN_HPP_NAMESPACE::Bool32 pointPolygons_ ) VULKAN_HPP_NOEXCEPT
78599     {
78600       pointPolygons = pointPolygons_;
78601       return *this;
78602     }
78603 
78604     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setSamplerMipLodBiasVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78605       setSamplerMipLodBias( VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias_ ) VULKAN_HPP_NOEXCEPT
78606     {
78607       samplerMipLodBias = samplerMipLodBias_;
78608       return *this;
78609     }
78610 
78611     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setSeparateStencilMaskRefVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78612       setSeparateStencilMaskRef( VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef_ ) VULKAN_HPP_NOEXCEPT
78613     {
78614       separateStencilMaskRef = separateStencilMaskRef_;
78615       return *this;
78616     }
78617 
78618     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setShaderSampleRateInterpolationFunctionsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78619       setShaderSampleRateInterpolationFunctions( VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions_ ) VULKAN_HPP_NOEXCEPT
78620     {
78621       shaderSampleRateInterpolationFunctions = shaderSampleRateInterpolationFunctions_;
78622       return *this;
78623     }
78624 
78625     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setTessellationIsolinesVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78626       setTessellationIsolines( VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines_ ) VULKAN_HPP_NOEXCEPT
78627     {
78628       tessellationIsolines = tessellationIsolines_;
78629       return *this;
78630     }
78631 
78632     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setTessellationPointModeVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78633       setTessellationPointMode( VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode_ ) VULKAN_HPP_NOEXCEPT
78634     {
78635       tessellationPointMode = tessellationPointMode_;
78636       return *this;
78637     }
78638 
setTriangleFansVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78639     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setTriangleFans( VULKAN_HPP_NAMESPACE::Bool32 triangleFans_ ) VULKAN_HPP_NOEXCEPT
78640     {
78641       triangleFans = triangleFans_;
78642       return *this;
78643     }
78644 
78645     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setVertexAttributeAccessBeyondStrideVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78646       setVertexAttributeAccessBeyondStride( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride_ ) VULKAN_HPP_NOEXCEPT
78647     {
78648       vertexAttributeAccessBeyondStride = vertexAttributeAccessBeyondStride_;
78649       return *this;
78650     }
78651 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78652 
operator VkPhysicalDevicePortabilitySubsetFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78653     operator VkPhysicalDevicePortabilitySubsetFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
78654     {
78655       return *reinterpret_cast<const VkPhysicalDevicePortabilitySubsetFeaturesKHR *>( this );
78656     }
78657 
operator VkPhysicalDevicePortabilitySubsetFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78658     operator VkPhysicalDevicePortabilitySubsetFeaturesKHR &() VULKAN_HPP_NOEXCEPT
78659     {
78660       return *reinterpret_cast<VkPhysicalDevicePortabilitySubsetFeaturesKHR *>( this );
78661     }
78662 
78663 #  if defined( VULKAN_HPP_USE_REFLECT )
78664 #    if 14 <= VULKAN_HPP_CPP_VERSION
78665     auto
78666 #    else
78667     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
78668                void * const &,
78669                VULKAN_HPP_NAMESPACE::Bool32 const &,
78670                VULKAN_HPP_NAMESPACE::Bool32 const &,
78671                VULKAN_HPP_NAMESPACE::Bool32 const &,
78672                VULKAN_HPP_NAMESPACE::Bool32 const &,
78673                VULKAN_HPP_NAMESPACE::Bool32 const &,
78674                VULKAN_HPP_NAMESPACE::Bool32 const &,
78675                VULKAN_HPP_NAMESPACE::Bool32 const &,
78676                VULKAN_HPP_NAMESPACE::Bool32 const &,
78677                VULKAN_HPP_NAMESPACE::Bool32 const &,
78678                VULKAN_HPP_NAMESPACE::Bool32 const &,
78679                VULKAN_HPP_NAMESPACE::Bool32 const &,
78680                VULKAN_HPP_NAMESPACE::Bool32 const &,
78681                VULKAN_HPP_NAMESPACE::Bool32 const &,
78682                VULKAN_HPP_NAMESPACE::Bool32 const &,
78683                VULKAN_HPP_NAMESPACE::Bool32 const &>
78684 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78685       reflect() const VULKAN_HPP_NOEXCEPT
78686     {
78687       return std::tie( sType,
78688                        pNext,
78689                        constantAlphaColorBlendFactors,
78690                        events,
78691                        imageViewFormatReinterpretation,
78692                        imageViewFormatSwizzle,
78693                        imageView2DOn3DImage,
78694                        multisampleArrayImage,
78695                        mutableComparisonSamplers,
78696                        pointPolygons,
78697                        samplerMipLodBias,
78698                        separateStencilMaskRef,
78699                        shaderSampleRateInterpolationFunctions,
78700                        tessellationIsolines,
78701                        tessellationPointMode,
78702                        triangleFans,
78703                        vertexAttributeAccessBeyondStride );
78704     }
78705 #  endif
78706 
78707 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78708     auto operator<=>( PhysicalDevicePortabilitySubsetFeaturesKHR const & ) const = default;
78709 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78710     bool operator==( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
78711     {
78712 #    if defined( VULKAN_HPP_USE_REFLECT )
78713       return this->reflect() == rhs.reflect();
78714 #    else
78715       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( constantAlphaColorBlendFactors == rhs.constantAlphaColorBlendFactors ) &&
78716              ( events == rhs.events ) && ( imageViewFormatReinterpretation == rhs.imageViewFormatReinterpretation ) &&
78717              ( imageViewFormatSwizzle == rhs.imageViewFormatSwizzle ) && ( imageView2DOn3DImage == rhs.imageView2DOn3DImage ) &&
78718              ( multisampleArrayImage == rhs.multisampleArrayImage ) && ( mutableComparisonSamplers == rhs.mutableComparisonSamplers ) &&
78719              ( pointPolygons == rhs.pointPolygons ) && ( samplerMipLodBias == rhs.samplerMipLodBias ) &&
78720              ( separateStencilMaskRef == rhs.separateStencilMaskRef ) &&
78721              ( shaderSampleRateInterpolationFunctions == rhs.shaderSampleRateInterpolationFunctions ) && ( tessellationIsolines == rhs.tessellationIsolines ) &&
78722              ( tessellationPointMode == rhs.tessellationPointMode ) && ( triangleFans == rhs.triangleFans ) &&
78723              ( vertexAttributeAccessBeyondStride == rhs.vertexAttributeAccessBeyondStride );
78724 #    endif
78725     }
78726 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR78727     bool operator!=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
78728     {
78729       return !operator==( rhs );
78730     }
78731 #  endif
78732 
78733   public:
78734     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR;
78735     void *                              pNext                                  = {};
78736     VULKAN_HPP_NAMESPACE::Bool32        constantAlphaColorBlendFactors         = {};
78737     VULKAN_HPP_NAMESPACE::Bool32        events                                 = {};
78738     VULKAN_HPP_NAMESPACE::Bool32        imageViewFormatReinterpretation        = {};
78739     VULKAN_HPP_NAMESPACE::Bool32        imageViewFormatSwizzle                 = {};
78740     VULKAN_HPP_NAMESPACE::Bool32        imageView2DOn3DImage                   = {};
78741     VULKAN_HPP_NAMESPACE::Bool32        multisampleArrayImage                  = {};
78742     VULKAN_HPP_NAMESPACE::Bool32        mutableComparisonSamplers              = {};
78743     VULKAN_HPP_NAMESPACE::Bool32        pointPolygons                          = {};
78744     VULKAN_HPP_NAMESPACE::Bool32        samplerMipLodBias                      = {};
78745     VULKAN_HPP_NAMESPACE::Bool32        separateStencilMaskRef                 = {};
78746     VULKAN_HPP_NAMESPACE::Bool32        shaderSampleRateInterpolationFunctions = {};
78747     VULKAN_HPP_NAMESPACE::Bool32        tessellationIsolines                   = {};
78748     VULKAN_HPP_NAMESPACE::Bool32        tessellationPointMode                  = {};
78749     VULKAN_HPP_NAMESPACE::Bool32        triangleFans                           = {};
78750     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeAccessBeyondStride      = {};
78751   };
78752 
78753   template <>
78754   struct CppType<StructureType, StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR>
78755   {
78756     using Type = PhysicalDevicePortabilitySubsetFeaturesKHR;
78757   };
78758 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
78759 
78760 #if defined( VK_ENABLE_BETA_EXTENSIONS )
78761   struct PhysicalDevicePortabilitySubsetPropertiesKHR
78762   {
78763     using NativeType = VkPhysicalDevicePortabilitySubsetPropertiesKHR;
78764 
78765     static const bool                                  allowDuplicate = false;
78766     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR;
78767 
78768 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePortabilitySubsetPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR78769     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR( uint32_t minVertexInputBindingStrideAlignment_ = {},
78770                                                                        void *   pNext_                                = nullptr ) VULKAN_HPP_NOEXCEPT
78771       : pNext{ pNext_ }
78772       , minVertexInputBindingStrideAlignment{ minVertexInputBindingStrideAlignment_ }
78773     {
78774     }
78775 
78776     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78777 
PhysicalDevicePortabilitySubsetPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR78778     PhysicalDevicePortabilitySubsetPropertiesKHR( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78779       : PhysicalDevicePortabilitySubsetPropertiesKHR( *reinterpret_cast<PhysicalDevicePortabilitySubsetPropertiesKHR const *>( &rhs ) )
78780     {
78781     }
78782 
78783     PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78784 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78785 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR78786     PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78787     {
78788       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR const *>( &rhs );
78789       return *this;
78790     }
78791 
78792 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR78793     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetPropertiesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78794     {
78795       pNext = pNext_;
78796       return *this;
78797     }
78798 
78799     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetPropertiesKHR &
setMinVertexInputBindingStrideAlignmentVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR78800       setMinVertexInputBindingStrideAlignment( uint32_t minVertexInputBindingStrideAlignment_ ) VULKAN_HPP_NOEXCEPT
78801     {
78802       minVertexInputBindingStrideAlignment = minVertexInputBindingStrideAlignment_;
78803       return *this;
78804     }
78805 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78806 
operator VkPhysicalDevicePortabilitySubsetPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR78807     operator VkPhysicalDevicePortabilitySubsetPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
78808     {
78809       return *reinterpret_cast<const VkPhysicalDevicePortabilitySubsetPropertiesKHR *>( this );
78810     }
78811 
operator VkPhysicalDevicePortabilitySubsetPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR78812     operator VkPhysicalDevicePortabilitySubsetPropertiesKHR &() VULKAN_HPP_NOEXCEPT
78813     {
78814       return *reinterpret_cast<VkPhysicalDevicePortabilitySubsetPropertiesKHR *>( this );
78815     }
78816 
78817 #  if defined( VULKAN_HPP_USE_REFLECT )
78818 #    if 14 <= VULKAN_HPP_CPP_VERSION
78819     auto
78820 #    else
78821     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
78822 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR78823       reflect() const VULKAN_HPP_NOEXCEPT
78824     {
78825       return std::tie( sType, pNext, minVertexInputBindingStrideAlignment );
78826     }
78827 #  endif
78828 
78829 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78830     auto operator<=>( PhysicalDevicePortabilitySubsetPropertiesKHR const & ) const = default;
78831 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR78832     bool operator==( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
78833     {
78834 #    if defined( VULKAN_HPP_USE_REFLECT )
78835       return this->reflect() == rhs.reflect();
78836 #    else
78837       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minVertexInputBindingStrideAlignment == rhs.minVertexInputBindingStrideAlignment );
78838 #    endif
78839     }
78840 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR78841     bool operator!=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
78842     {
78843       return !operator==( rhs );
78844     }
78845 #  endif
78846 
78847   public:
78848     VULKAN_HPP_NAMESPACE::StructureType sType                                = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR;
78849     void *                              pNext                                = {};
78850     uint32_t                            minVertexInputBindingStrideAlignment = {};
78851   };
78852 
78853   template <>
78854   struct CppType<StructureType, StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR>
78855   {
78856     using Type = PhysicalDevicePortabilitySubsetPropertiesKHR;
78857   };
78858 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
78859 
78860   struct PhysicalDevicePresentBarrierFeaturesNV
78861   {
78862     using NativeType = VkPhysicalDevicePresentBarrierFeaturesNV;
78863 
78864     static const bool                                  allowDuplicate = false;
78865     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePresentBarrierFeaturesNV;
78866 
78867 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePresentBarrierFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV78868     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentBarrierFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 presentBarrier_ = {},
78869                                                                  void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
78870       : pNext{ pNext_ }
78871       , presentBarrier{ presentBarrier_ }
78872     {
78873     }
78874 
78875     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentBarrierFeaturesNV( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78876 
PhysicalDevicePresentBarrierFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV78877     PhysicalDevicePresentBarrierFeaturesNV( VkPhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
78878       : PhysicalDevicePresentBarrierFeaturesNV( *reinterpret_cast<PhysicalDevicePresentBarrierFeaturesNV const *>( &rhs ) )
78879     {
78880     }
78881 
78882     PhysicalDevicePresentBarrierFeaturesNV & operator=( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78883 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78884 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV78885     PhysicalDevicePresentBarrierFeaturesNV & operator=( VkPhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
78886     {
78887       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV const *>( &rhs );
78888       return *this;
78889     }
78890 
78891 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV78892     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentBarrierFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78893     {
78894       pNext = pNext_;
78895       return *this;
78896     }
78897 
setPresentBarrierVULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV78898     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentBarrierFeaturesNV & setPresentBarrier( VULKAN_HPP_NAMESPACE::Bool32 presentBarrier_ ) VULKAN_HPP_NOEXCEPT
78899     {
78900       presentBarrier = presentBarrier_;
78901       return *this;
78902     }
78903 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78904 
operator VkPhysicalDevicePresentBarrierFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV78905     operator VkPhysicalDevicePresentBarrierFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
78906     {
78907       return *reinterpret_cast<const VkPhysicalDevicePresentBarrierFeaturesNV *>( this );
78908     }
78909 
operator VkPhysicalDevicePresentBarrierFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV78910     operator VkPhysicalDevicePresentBarrierFeaturesNV &() VULKAN_HPP_NOEXCEPT
78911     {
78912       return *reinterpret_cast<VkPhysicalDevicePresentBarrierFeaturesNV *>( this );
78913     }
78914 
78915 #if defined( VULKAN_HPP_USE_REFLECT )
78916 #  if 14 <= VULKAN_HPP_CPP_VERSION
78917     auto
78918 #  else
78919     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
78920 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV78921       reflect() const VULKAN_HPP_NOEXCEPT
78922     {
78923       return std::tie( sType, pNext, presentBarrier );
78924     }
78925 #endif
78926 
78927 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78928     auto operator<=>( PhysicalDevicePresentBarrierFeaturesNV const & ) const = default;
78929 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV78930     bool operator==( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
78931     {
78932 #  if defined( VULKAN_HPP_USE_REFLECT )
78933       return this->reflect() == rhs.reflect();
78934 #  else
78935       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentBarrier == rhs.presentBarrier );
78936 #  endif
78937     }
78938 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV78939     bool operator!=( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
78940     {
78941       return !operator==( rhs );
78942     }
78943 #endif
78944 
78945   public:
78946     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDevicePresentBarrierFeaturesNV;
78947     void *                              pNext          = {};
78948     VULKAN_HPP_NAMESPACE::Bool32        presentBarrier = {};
78949   };
78950 
78951   template <>
78952   struct CppType<StructureType, StructureType::ePhysicalDevicePresentBarrierFeaturesNV>
78953   {
78954     using Type = PhysicalDevicePresentBarrierFeaturesNV;
78955   };
78956 
78957   struct PhysicalDevicePresentIdFeaturesKHR
78958   {
78959     using NativeType = VkPhysicalDevicePresentIdFeaturesKHR;
78960 
78961     static const bool                                  allowDuplicate = false;
78962     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePresentIdFeaturesKHR;
78963 
78964 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePresentIdFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR78965     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentIdFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 presentId_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
78966       : pNext{ pNext_ }
78967       , presentId{ presentId_ }
78968     {
78969     }
78970 
78971     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentIdFeaturesKHR( PhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78972 
PhysicalDevicePresentIdFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR78973     PhysicalDevicePresentIdFeaturesKHR( VkPhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78974       : PhysicalDevicePresentIdFeaturesKHR( *reinterpret_cast<PhysicalDevicePresentIdFeaturesKHR const *>( &rhs ) )
78975     {
78976     }
78977 
78978     PhysicalDevicePresentIdFeaturesKHR & operator=( PhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78979 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78980 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR78981     PhysicalDevicePresentIdFeaturesKHR & operator=( VkPhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78982     {
78983       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR const *>( &rhs );
78984       return *this;
78985     }
78986 
78987 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR78988     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78989     {
78990       pNext = pNext_;
78991       return *this;
78992     }
78993 
setPresentIdVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR78994     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR & setPresentId( VULKAN_HPP_NAMESPACE::Bool32 presentId_ ) VULKAN_HPP_NOEXCEPT
78995     {
78996       presentId = presentId_;
78997       return *this;
78998     }
78999 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79000 
operator VkPhysicalDevicePresentIdFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR79001     operator VkPhysicalDevicePresentIdFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
79002     {
79003       return *reinterpret_cast<const VkPhysicalDevicePresentIdFeaturesKHR *>( this );
79004     }
79005 
operator VkPhysicalDevicePresentIdFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR79006     operator VkPhysicalDevicePresentIdFeaturesKHR &() VULKAN_HPP_NOEXCEPT
79007     {
79008       return *reinterpret_cast<VkPhysicalDevicePresentIdFeaturesKHR *>( this );
79009     }
79010 
79011 #if defined( VULKAN_HPP_USE_REFLECT )
79012 #  if 14 <= VULKAN_HPP_CPP_VERSION
79013     auto
79014 #  else
79015     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79016 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR79017       reflect() const VULKAN_HPP_NOEXCEPT
79018     {
79019       return std::tie( sType, pNext, presentId );
79020     }
79021 #endif
79022 
79023 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79024     auto operator<=>( PhysicalDevicePresentIdFeaturesKHR const & ) const = default;
79025 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR79026     bool operator==( PhysicalDevicePresentIdFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79027     {
79028 #  if defined( VULKAN_HPP_USE_REFLECT )
79029       return this->reflect() == rhs.reflect();
79030 #  else
79031       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentId == rhs.presentId );
79032 #  endif
79033     }
79034 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR79035     bool operator!=( PhysicalDevicePresentIdFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79036     {
79037       return !operator==( rhs );
79038     }
79039 #endif
79040 
79041   public:
79042     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::ePhysicalDevicePresentIdFeaturesKHR;
79043     void *                              pNext     = {};
79044     VULKAN_HPP_NAMESPACE::Bool32        presentId = {};
79045   };
79046 
79047   template <>
79048   struct CppType<StructureType, StructureType::ePhysicalDevicePresentIdFeaturesKHR>
79049   {
79050     using Type = PhysicalDevicePresentIdFeaturesKHR;
79051   };
79052 
79053   struct PhysicalDevicePresentWaitFeaturesKHR
79054   {
79055     using NativeType = VkPhysicalDevicePresentWaitFeaturesKHR;
79056 
79057     static const bool                                  allowDuplicate = false;
79058     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePresentWaitFeaturesKHR;
79059 
79060 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePresentWaitFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR79061     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentWaitFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 presentWait_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79062       : pNext{ pNext_ }
79063       , presentWait{ presentWait_ }
79064     {
79065     }
79066 
79067     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentWaitFeaturesKHR( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79068 
PhysicalDevicePresentWaitFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR79069     PhysicalDevicePresentWaitFeaturesKHR( VkPhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79070       : PhysicalDevicePresentWaitFeaturesKHR( *reinterpret_cast<PhysicalDevicePresentWaitFeaturesKHR const *>( &rhs ) )
79071     {
79072     }
79073 
79074     PhysicalDevicePresentWaitFeaturesKHR & operator=( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79075 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79076 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR79077     PhysicalDevicePresentWaitFeaturesKHR & operator=( VkPhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79078     {
79079       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR const *>( &rhs );
79080       return *this;
79081     }
79082 
79083 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR79084     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79085     {
79086       pNext = pNext_;
79087       return *this;
79088     }
79089 
setPresentWaitVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR79090     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR & setPresentWait( VULKAN_HPP_NAMESPACE::Bool32 presentWait_ ) VULKAN_HPP_NOEXCEPT
79091     {
79092       presentWait = presentWait_;
79093       return *this;
79094     }
79095 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79096 
operator VkPhysicalDevicePresentWaitFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR79097     operator VkPhysicalDevicePresentWaitFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
79098     {
79099       return *reinterpret_cast<const VkPhysicalDevicePresentWaitFeaturesKHR *>( this );
79100     }
79101 
operator VkPhysicalDevicePresentWaitFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR79102     operator VkPhysicalDevicePresentWaitFeaturesKHR &() VULKAN_HPP_NOEXCEPT
79103     {
79104       return *reinterpret_cast<VkPhysicalDevicePresentWaitFeaturesKHR *>( this );
79105     }
79106 
79107 #if defined( VULKAN_HPP_USE_REFLECT )
79108 #  if 14 <= VULKAN_HPP_CPP_VERSION
79109     auto
79110 #  else
79111     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79112 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR79113       reflect() const VULKAN_HPP_NOEXCEPT
79114     {
79115       return std::tie( sType, pNext, presentWait );
79116     }
79117 #endif
79118 
79119 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79120     auto operator<=>( PhysicalDevicePresentWaitFeaturesKHR const & ) const = default;
79121 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR79122     bool operator==( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79123     {
79124 #  if defined( VULKAN_HPP_USE_REFLECT )
79125       return this->reflect() == rhs.reflect();
79126 #  else
79127       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentWait == rhs.presentWait );
79128 #  endif
79129     }
79130 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR79131     bool operator!=( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79132     {
79133       return !operator==( rhs );
79134     }
79135 #endif
79136 
79137   public:
79138     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDevicePresentWaitFeaturesKHR;
79139     void *                              pNext       = {};
79140     VULKAN_HPP_NAMESPACE::Bool32        presentWait = {};
79141   };
79142 
79143   template <>
79144   struct CppType<StructureType, StructureType::ePhysicalDevicePresentWaitFeaturesKHR>
79145   {
79146     using Type = PhysicalDevicePresentWaitFeaturesKHR;
79147   };
79148 
79149   struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
79150   {
79151     using NativeType = VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
79152 
79153     static const bool                                  allowDuplicate = false;
79154     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
79155 
79156 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79157     VULKAN_HPP_CONSTEXPR PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyListRestart_      = {},
79158                                                                                 VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyPatchListRestart_ = {},
79159                                                                                 void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79160       : pNext{ pNext_ }
79161       , primitiveTopologyListRestart{ primitiveTopologyListRestart_ }
79162       , primitiveTopologyPatchListRestart{ primitiveTopologyPatchListRestart_ }
79163     {
79164     }
79165 
79166     VULKAN_HPP_CONSTEXPR
79167       PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79168 
PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79169     PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
79170       : PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( *reinterpret_cast<PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const *>( &rhs ) )
79171     {
79172     }
79173 
79174     PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
79175       operator=( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79176 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79177 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79178     PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & operator=( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
79179     {
79180       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const *>( &rhs );
79181       return *this;
79182     }
79183 
79184 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79185     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79186     {
79187       pNext = pNext_;
79188       return *this;
79189     }
79190 
79191     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
setPrimitiveTopologyListRestartVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79192       setPrimitiveTopologyListRestart( VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyListRestart_ ) VULKAN_HPP_NOEXCEPT
79193     {
79194       primitiveTopologyListRestart = primitiveTopologyListRestart_;
79195       return *this;
79196     }
79197 
79198     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
setPrimitiveTopologyPatchListRestartVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79199       setPrimitiveTopologyPatchListRestart( VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyPatchListRestart_ ) VULKAN_HPP_NOEXCEPT
79200     {
79201       primitiveTopologyPatchListRestart = primitiveTopologyPatchListRestart_;
79202       return *this;
79203     }
79204 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79205 
operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79206     operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
79207     {
79208       return *reinterpret_cast<const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *>( this );
79209     }
79210 
operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79211     operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &() VULKAN_HPP_NOEXCEPT
79212     {
79213       return *reinterpret_cast<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *>( this );
79214     }
79215 
79216 #if defined( VULKAN_HPP_USE_REFLECT )
79217 #  if 14 <= VULKAN_HPP_CPP_VERSION
79218     auto
79219 #  else
79220     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79221 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79222       reflect() const VULKAN_HPP_NOEXCEPT
79223     {
79224       return std::tie( sType, pNext, primitiveTopologyListRestart, primitiveTopologyPatchListRestart );
79225     }
79226 #endif
79227 
79228 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79229     auto operator<=>( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & ) const = default;
79230 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79231     bool operator==( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
79232     {
79233 #  if defined( VULKAN_HPP_USE_REFLECT )
79234       return this->reflect() == rhs.reflect();
79235 #  else
79236       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( primitiveTopologyListRestart == rhs.primitiveTopologyListRestart ) &&
79237              ( primitiveTopologyPatchListRestart == rhs.primitiveTopologyPatchListRestart );
79238 #  endif
79239     }
79240 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT79241     bool operator!=( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
79242     {
79243       return !operator==( rhs );
79244     }
79245 #endif
79246 
79247   public:
79248     VULKAN_HPP_NAMESPACE::StructureType sType                             = StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
79249     void *                              pNext                             = {};
79250     VULKAN_HPP_NAMESPACE::Bool32        primitiveTopologyListRestart      = {};
79251     VULKAN_HPP_NAMESPACE::Bool32        primitiveTopologyPatchListRestart = {};
79252   };
79253 
79254   template <>
79255   struct CppType<StructureType, StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>
79256   {
79257     using Type = PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
79258   };
79259 
79260   struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
79261   {
79262     using NativeType = VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
79263 
79264     static const bool                                  allowDuplicate = false;
79265     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
79266 
79267 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePrimitivesGeneratedQueryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79268     VULKAN_HPP_CONSTEXPR PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQuery_                      = {},
79269                                                                             VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQueryWithRasterizerDiscard_ = {},
79270                                                                             VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQueryWithNonZeroStreams_    = {},
79271                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79272       : pNext{ pNext_ }
79273       , primitivesGeneratedQuery{ primitivesGeneratedQuery_ }
79274       , primitivesGeneratedQueryWithRasterizerDiscard{ primitivesGeneratedQueryWithRasterizerDiscard_ }
79275       , primitivesGeneratedQueryWithNonZeroStreams{ primitivesGeneratedQueryWithNonZeroStreams_ }
79276     {
79277     }
79278 
79279     VULKAN_HPP_CONSTEXPR
79280       PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79281 
PhysicalDevicePrimitivesGeneratedQueryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79282     PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
79283       : PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( *reinterpret_cast<PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const *>( &rhs ) )
79284     {
79285     }
79286 
79287     PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &
79288       operator=( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79289 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79290 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79291     PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT & operator=( VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
79292     {
79293       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const *>( &rhs );
79294       return *this;
79295     }
79296 
79297 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79298     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79299     {
79300       pNext = pNext_;
79301       return *this;
79302     }
79303 
79304     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &
setPrimitivesGeneratedQueryVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79305       setPrimitivesGeneratedQuery( VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQuery_ ) VULKAN_HPP_NOEXCEPT
79306     {
79307       primitivesGeneratedQuery = primitivesGeneratedQuery_;
79308       return *this;
79309     }
79310 
79311     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &
setPrimitivesGeneratedQueryWithRasterizerDiscardVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79312       setPrimitivesGeneratedQueryWithRasterizerDiscard( VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQueryWithRasterizerDiscard_ ) VULKAN_HPP_NOEXCEPT
79313     {
79314       primitivesGeneratedQueryWithRasterizerDiscard = primitivesGeneratedQueryWithRasterizerDiscard_;
79315       return *this;
79316     }
79317 
79318     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &
setPrimitivesGeneratedQueryWithNonZeroStreamsVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79319       setPrimitivesGeneratedQueryWithNonZeroStreams( VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQueryWithNonZeroStreams_ ) VULKAN_HPP_NOEXCEPT
79320     {
79321       primitivesGeneratedQueryWithNonZeroStreams = primitivesGeneratedQueryWithNonZeroStreams_;
79322       return *this;
79323     }
79324 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79325 
operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79326     operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
79327     {
79328       return *reinterpret_cast<const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *>( this );
79329     }
79330 
operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79331     operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &() VULKAN_HPP_NOEXCEPT
79332     {
79333       return *reinterpret_cast<VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *>( this );
79334     }
79335 
79336 #if defined( VULKAN_HPP_USE_REFLECT )
79337 #  if 14 <= VULKAN_HPP_CPP_VERSION
79338     auto
79339 #  else
79340     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79341                void * const &,
79342                VULKAN_HPP_NAMESPACE::Bool32 const &,
79343                VULKAN_HPP_NAMESPACE::Bool32 const &,
79344                VULKAN_HPP_NAMESPACE::Bool32 const &>
79345 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79346       reflect() const VULKAN_HPP_NOEXCEPT
79347     {
79348       return std::tie( sType, pNext, primitivesGeneratedQuery, primitivesGeneratedQueryWithRasterizerDiscard, primitivesGeneratedQueryWithNonZeroStreams );
79349     }
79350 #endif
79351 
79352 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79353     auto operator<=>( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & ) const = default;
79354 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79355     bool operator==( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
79356     {
79357 #  if defined( VULKAN_HPP_USE_REFLECT )
79358       return this->reflect() == rhs.reflect();
79359 #  else
79360       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( primitivesGeneratedQuery == rhs.primitivesGeneratedQuery ) &&
79361              ( primitivesGeneratedQueryWithRasterizerDiscard == rhs.primitivesGeneratedQueryWithRasterizerDiscard ) &&
79362              ( primitivesGeneratedQueryWithNonZeroStreams == rhs.primitivesGeneratedQueryWithNonZeroStreams );
79363 #  endif
79364     }
79365 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT79366     bool operator!=( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
79367     {
79368       return !operator==( rhs );
79369     }
79370 #endif
79371 
79372   public:
79373     VULKAN_HPP_NAMESPACE::StructureType sType                                         = StructureType::ePhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
79374     void *                              pNext                                         = {};
79375     VULKAN_HPP_NAMESPACE::Bool32        primitivesGeneratedQuery                      = {};
79376     VULKAN_HPP_NAMESPACE::Bool32        primitivesGeneratedQueryWithRasterizerDiscard = {};
79377     VULKAN_HPP_NAMESPACE::Bool32        primitivesGeneratedQueryWithNonZeroStreams    = {};
79378   };
79379 
79380   template <>
79381   struct CppType<StructureType, StructureType::ePhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>
79382   {
79383     using Type = PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
79384   };
79385 
79386   struct PhysicalDevicePrivateDataFeatures
79387   {
79388     using NativeType = VkPhysicalDevicePrivateDataFeatures;
79389 
79390     static const bool                                  allowDuplicate = false;
79391     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePrivateDataFeatures;
79392 
79393 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePrivateDataFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures79394     VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeatures( VULKAN_HPP_NAMESPACE::Bool32 privateData_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79395       : pNext{ pNext_ }
79396       , privateData{ privateData_ }
79397     {
79398     }
79399 
79400     VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeatures( PhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79401 
PhysicalDevicePrivateDataFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures79402     PhysicalDevicePrivateDataFeatures( VkPhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
79403       : PhysicalDevicePrivateDataFeatures( *reinterpret_cast<PhysicalDevicePrivateDataFeatures const *>( &rhs ) )
79404     {
79405     }
79406 
79407     PhysicalDevicePrivateDataFeatures & operator=( PhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79408 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79409 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures79410     PhysicalDevicePrivateDataFeatures & operator=( VkPhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
79411     {
79412       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures const *>( &rhs );
79413       return *this;
79414     }
79415 
79416 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures79417     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79418     {
79419       pNext = pNext_;
79420       return *this;
79421     }
79422 
setPrivateDataVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures79423     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures & setPrivateData( VULKAN_HPP_NAMESPACE::Bool32 privateData_ ) VULKAN_HPP_NOEXCEPT
79424     {
79425       privateData = privateData_;
79426       return *this;
79427     }
79428 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79429 
operator VkPhysicalDevicePrivateDataFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures79430     operator VkPhysicalDevicePrivateDataFeatures const &() const VULKAN_HPP_NOEXCEPT
79431     {
79432       return *reinterpret_cast<const VkPhysicalDevicePrivateDataFeatures *>( this );
79433     }
79434 
operator VkPhysicalDevicePrivateDataFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures79435     operator VkPhysicalDevicePrivateDataFeatures &() VULKAN_HPP_NOEXCEPT
79436     {
79437       return *reinterpret_cast<VkPhysicalDevicePrivateDataFeatures *>( this );
79438     }
79439 
79440 #if defined( VULKAN_HPP_USE_REFLECT )
79441 #  if 14 <= VULKAN_HPP_CPP_VERSION
79442     auto
79443 #  else
79444     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79445 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures79446       reflect() const VULKAN_HPP_NOEXCEPT
79447     {
79448       return std::tie( sType, pNext, privateData );
79449     }
79450 #endif
79451 
79452 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79453     auto operator<=>( PhysicalDevicePrivateDataFeatures const & ) const = default;
79454 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures79455     bool operator==( PhysicalDevicePrivateDataFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
79456     {
79457 #  if defined( VULKAN_HPP_USE_REFLECT )
79458       return this->reflect() == rhs.reflect();
79459 #  else
79460       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( privateData == rhs.privateData );
79461 #  endif
79462     }
79463 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures79464     bool operator!=( PhysicalDevicePrivateDataFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
79465     {
79466       return !operator==( rhs );
79467     }
79468 #endif
79469 
79470   public:
79471     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDevicePrivateDataFeatures;
79472     void *                              pNext       = {};
79473     VULKAN_HPP_NAMESPACE::Bool32        privateData = {};
79474   };
79475 
79476   template <>
79477   struct CppType<StructureType, StructureType::ePhysicalDevicePrivateDataFeatures>
79478   {
79479     using Type = PhysicalDevicePrivateDataFeatures;
79480   };
79481 
79482   using PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures;
79483 
79484   struct PhysicalDeviceProtectedMemoryFeatures
79485   {
79486     using NativeType = VkPhysicalDeviceProtectedMemoryFeatures;
79487 
79488     static const bool                                  allowDuplicate = false;
79489     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
79490 
79491 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProtectedMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures79492     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ = {},
79493                                                                 void *                       pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
79494       : pNext{ pNext_ }
79495       , protectedMemory{ protectedMemory_ }
79496     {
79497     }
79498 
79499     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79500 
PhysicalDeviceProtectedMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures79501     PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
79502       : PhysicalDeviceProtectedMemoryFeatures( *reinterpret_cast<PhysicalDeviceProtectedMemoryFeatures const *>( &rhs ) )
79503     {
79504     }
79505 
79506     PhysicalDeviceProtectedMemoryFeatures & operator=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79507 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79508 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures79509     PhysicalDeviceProtectedMemoryFeatures & operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
79510     {
79511       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures const *>( &rhs );
79512       return *this;
79513     }
79514 
79515 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures79516     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79517     {
79518       pNext = pNext_;
79519       return *this;
79520     }
79521 
setProtectedMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures79522     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT
79523     {
79524       protectedMemory = protectedMemory_;
79525       return *this;
79526     }
79527 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79528 
operator VkPhysicalDeviceProtectedMemoryFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures79529     operator VkPhysicalDeviceProtectedMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT
79530     {
79531       return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures *>( this );
79532     }
79533 
operator VkPhysicalDeviceProtectedMemoryFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures79534     operator VkPhysicalDeviceProtectedMemoryFeatures &() VULKAN_HPP_NOEXCEPT
79535     {
79536       return *reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures *>( this );
79537     }
79538 
79539 #if defined( VULKAN_HPP_USE_REFLECT )
79540 #  if 14 <= VULKAN_HPP_CPP_VERSION
79541     auto
79542 #  else
79543     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79544 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures79545       reflect() const VULKAN_HPP_NOEXCEPT
79546     {
79547       return std::tie( sType, pNext, protectedMemory );
79548     }
79549 #endif
79550 
79551 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79552     auto operator<=>( PhysicalDeviceProtectedMemoryFeatures const & ) const = default;
79553 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures79554     bool operator==( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
79555     {
79556 #  if defined( VULKAN_HPP_USE_REFLECT )
79557       return this->reflect() == rhs.reflect();
79558 #  else
79559       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedMemory == rhs.protectedMemory );
79560 #  endif
79561     }
79562 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures79563     bool operator!=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
79564     {
79565       return !operator==( rhs );
79566     }
79567 #endif
79568 
79569   public:
79570     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
79571     void *                              pNext           = {};
79572     VULKAN_HPP_NAMESPACE::Bool32        protectedMemory = {};
79573   };
79574 
79575   template <>
79576   struct CppType<StructureType, StructureType::ePhysicalDeviceProtectedMemoryFeatures>
79577   {
79578     using Type = PhysicalDeviceProtectedMemoryFeatures;
79579   };
79580 
79581   struct PhysicalDeviceProtectedMemoryProperties
79582   {
79583     using NativeType = VkPhysicalDeviceProtectedMemoryProperties;
79584 
79585     static const bool                                  allowDuplicate = false;
79586     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProtectedMemoryProperties;
79587 
79588 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProtectedMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties79589     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault_ = {},
79590                                                                   void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
79591       : pNext{ pNext_ }
79592       , protectedNoFault{ protectedNoFault_ }
79593     {
79594     }
79595 
79596     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79597 
PhysicalDeviceProtectedMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties79598     PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
79599       : PhysicalDeviceProtectedMemoryProperties( *reinterpret_cast<PhysicalDeviceProtectedMemoryProperties const *>( &rhs ) )
79600     {
79601     }
79602 
79603     PhysicalDeviceProtectedMemoryProperties & operator=( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79604 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79605 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties79606     PhysicalDeviceProtectedMemoryProperties & operator=( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
79607     {
79608       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties const *>( &rhs );
79609       return *this;
79610     }
79611 
operator VkPhysicalDeviceProtectedMemoryProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties79612     operator VkPhysicalDeviceProtectedMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
79613     {
79614       return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties *>( this );
79615     }
79616 
operator VkPhysicalDeviceProtectedMemoryProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties79617     operator VkPhysicalDeviceProtectedMemoryProperties &() VULKAN_HPP_NOEXCEPT
79618     {
79619       return *reinterpret_cast<VkPhysicalDeviceProtectedMemoryProperties *>( this );
79620     }
79621 
79622 #if defined( VULKAN_HPP_USE_REFLECT )
79623 #  if 14 <= VULKAN_HPP_CPP_VERSION
79624     auto
79625 #  else
79626     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79627 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties79628       reflect() const VULKAN_HPP_NOEXCEPT
79629     {
79630       return std::tie( sType, pNext, protectedNoFault );
79631     }
79632 #endif
79633 
79634 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79635     auto operator<=>( PhysicalDeviceProtectedMemoryProperties const & ) const = default;
79636 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties79637     bool operator==( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
79638     {
79639 #  if defined( VULKAN_HPP_USE_REFLECT )
79640       return this->reflect() == rhs.reflect();
79641 #  else
79642       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedNoFault == rhs.protectedNoFault );
79643 #  endif
79644     }
79645 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties79646     bool operator!=( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
79647     {
79648       return !operator==( rhs );
79649     }
79650 #endif
79651 
79652   public:
79653     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceProtectedMemoryProperties;
79654     void *                              pNext            = {};
79655     VULKAN_HPP_NAMESPACE::Bool32        protectedNoFault = {};
79656   };
79657 
79658   template <>
79659   struct CppType<StructureType, StructureType::ePhysicalDeviceProtectedMemoryProperties>
79660   {
79661     using Type = PhysicalDeviceProtectedMemoryProperties;
79662   };
79663 
79664   struct PhysicalDeviceProvokingVertexFeaturesEXT
79665   {
79666     using NativeType = VkPhysicalDeviceProvokingVertexFeaturesEXT;
79667 
79668     static const bool                                  allowDuplicate = false;
79669     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT;
79670 
79671 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProvokingVertexFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79672     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 provokingVertexLast_                       = {},
79673                                                                    VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesProvokingVertex_ = {},
79674                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79675       : pNext{ pNext_ }
79676       , provokingVertexLast{ provokingVertexLast_ }
79677       , transformFeedbackPreservesProvokingVertex{ transformFeedbackPreservesProvokingVertex_ }
79678     {
79679     }
79680 
79681     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexFeaturesEXT( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79682 
PhysicalDeviceProvokingVertexFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79683     PhysicalDeviceProvokingVertexFeaturesEXT( VkPhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
79684       : PhysicalDeviceProvokingVertexFeaturesEXT( *reinterpret_cast<PhysicalDeviceProvokingVertexFeaturesEXT const *>( &rhs ) )
79685     {
79686     }
79687 
79688     PhysicalDeviceProvokingVertexFeaturesEXT & operator=( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79689 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79690 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79691     PhysicalDeviceProvokingVertexFeaturesEXT & operator=( VkPhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
79692     {
79693       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT const *>( &rhs );
79694       return *this;
79695     }
79696 
79697 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79698     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79699     {
79700       pNext = pNext_;
79701       return *this;
79702     }
79703 
79704     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT &
setProvokingVertexLastVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79705       setProvokingVertexLast( VULKAN_HPP_NAMESPACE::Bool32 provokingVertexLast_ ) VULKAN_HPP_NOEXCEPT
79706     {
79707       provokingVertexLast = provokingVertexLast_;
79708       return *this;
79709     }
79710 
79711     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT &
setTransformFeedbackPreservesProvokingVertexVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79712       setTransformFeedbackPreservesProvokingVertex( VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesProvokingVertex_ ) VULKAN_HPP_NOEXCEPT
79713     {
79714       transformFeedbackPreservesProvokingVertex = transformFeedbackPreservesProvokingVertex_;
79715       return *this;
79716     }
79717 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79718 
operator VkPhysicalDeviceProvokingVertexFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79719     operator VkPhysicalDeviceProvokingVertexFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
79720     {
79721       return *reinterpret_cast<const VkPhysicalDeviceProvokingVertexFeaturesEXT *>( this );
79722     }
79723 
operator VkPhysicalDeviceProvokingVertexFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79724     operator VkPhysicalDeviceProvokingVertexFeaturesEXT &() VULKAN_HPP_NOEXCEPT
79725     {
79726       return *reinterpret_cast<VkPhysicalDeviceProvokingVertexFeaturesEXT *>( this );
79727     }
79728 
79729 #if defined( VULKAN_HPP_USE_REFLECT )
79730 #  if 14 <= VULKAN_HPP_CPP_VERSION
79731     auto
79732 #  else
79733     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79734 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79735       reflect() const VULKAN_HPP_NOEXCEPT
79736     {
79737       return std::tie( sType, pNext, provokingVertexLast, transformFeedbackPreservesProvokingVertex );
79738     }
79739 #endif
79740 
79741 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79742     auto operator<=>( PhysicalDeviceProvokingVertexFeaturesEXT const & ) const = default;
79743 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79744     bool operator==( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
79745     {
79746 #  if defined( VULKAN_HPP_USE_REFLECT )
79747       return this->reflect() == rhs.reflect();
79748 #  else
79749       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexLast == rhs.provokingVertexLast ) &&
79750              ( transformFeedbackPreservesProvokingVertex == rhs.transformFeedbackPreservesProvokingVertex );
79751 #  endif
79752     }
79753 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT79754     bool operator!=( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
79755     {
79756       return !operator==( rhs );
79757     }
79758 #endif
79759 
79760   public:
79761     VULKAN_HPP_NAMESPACE::StructureType sType                                     = StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT;
79762     void *                              pNext                                     = {};
79763     VULKAN_HPP_NAMESPACE::Bool32        provokingVertexLast                       = {};
79764     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackPreservesProvokingVertex = {};
79765   };
79766 
79767   template <>
79768   struct CppType<StructureType, StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT>
79769   {
79770     using Type = PhysicalDeviceProvokingVertexFeaturesEXT;
79771   };
79772 
79773   struct PhysicalDeviceProvokingVertexPropertiesEXT
79774   {
79775     using NativeType = VkPhysicalDeviceProvokingVertexPropertiesEXT;
79776 
79777     static const bool                                  allowDuplicate = false;
79778     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT;
79779 
79780 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProvokingVertexPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT79781     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 provokingVertexModePerPipeline_                       = {},
79782                                                                      VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesTriangleFanProvokingVertex_ = {},
79783                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79784       : pNext{ pNext_ }
79785       , provokingVertexModePerPipeline{ provokingVertexModePerPipeline_ }
79786       , transformFeedbackPreservesTriangleFanProvokingVertex{ transformFeedbackPreservesTriangleFanProvokingVertex_ }
79787     {
79788     }
79789 
79790     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexPropertiesEXT( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79791 
PhysicalDeviceProvokingVertexPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT79792     PhysicalDeviceProvokingVertexPropertiesEXT( VkPhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
79793       : PhysicalDeviceProvokingVertexPropertiesEXT( *reinterpret_cast<PhysicalDeviceProvokingVertexPropertiesEXT const *>( &rhs ) )
79794     {
79795     }
79796 
79797     PhysicalDeviceProvokingVertexPropertiesEXT & operator=( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79798 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79799 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT79800     PhysicalDeviceProvokingVertexPropertiesEXT & operator=( VkPhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
79801     {
79802       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT const *>( &rhs );
79803       return *this;
79804     }
79805 
operator VkPhysicalDeviceProvokingVertexPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT79806     operator VkPhysicalDeviceProvokingVertexPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
79807     {
79808       return *reinterpret_cast<const VkPhysicalDeviceProvokingVertexPropertiesEXT *>( this );
79809     }
79810 
operator VkPhysicalDeviceProvokingVertexPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT79811     operator VkPhysicalDeviceProvokingVertexPropertiesEXT &() VULKAN_HPP_NOEXCEPT
79812     {
79813       return *reinterpret_cast<VkPhysicalDeviceProvokingVertexPropertiesEXT *>( this );
79814     }
79815 
79816 #if defined( VULKAN_HPP_USE_REFLECT )
79817 #  if 14 <= VULKAN_HPP_CPP_VERSION
79818     auto
79819 #  else
79820     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79821 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT79822       reflect() const VULKAN_HPP_NOEXCEPT
79823     {
79824       return std::tie( sType, pNext, provokingVertexModePerPipeline, transformFeedbackPreservesTriangleFanProvokingVertex );
79825     }
79826 #endif
79827 
79828 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79829     auto operator<=>( PhysicalDeviceProvokingVertexPropertiesEXT const & ) const = default;
79830 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT79831     bool operator==( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
79832     {
79833 #  if defined( VULKAN_HPP_USE_REFLECT )
79834       return this->reflect() == rhs.reflect();
79835 #  else
79836       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexModePerPipeline == rhs.provokingVertexModePerPipeline ) &&
79837              ( transformFeedbackPreservesTriangleFanProvokingVertex == rhs.transformFeedbackPreservesTriangleFanProvokingVertex );
79838 #  endif
79839     }
79840 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT79841     bool operator!=( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
79842     {
79843       return !operator==( rhs );
79844     }
79845 #endif
79846 
79847   public:
79848     VULKAN_HPP_NAMESPACE::StructureType sType                                                = StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT;
79849     void *                              pNext                                                = {};
79850     VULKAN_HPP_NAMESPACE::Bool32        provokingVertexModePerPipeline                       = {};
79851     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackPreservesTriangleFanProvokingVertex = {};
79852   };
79853 
79854   template <>
79855   struct CppType<StructureType, StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT>
79856   {
79857     using Type = PhysicalDeviceProvokingVertexPropertiesEXT;
79858   };
79859 
79860   struct PhysicalDevicePushDescriptorProperties
79861   {
79862     using NativeType = VkPhysicalDevicePushDescriptorProperties;
79863 
79864     static const bool                                  allowDuplicate = false;
79865     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePushDescriptorProperties;
79866 
79867 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePushDescriptorPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties79868     VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorProperties( uint32_t maxPushDescriptors_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79869       : pNext{ pNext_ }
79870       , maxPushDescriptors{ maxPushDescriptors_ }
79871     {
79872     }
79873 
79874     VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorProperties( PhysicalDevicePushDescriptorProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79875 
PhysicalDevicePushDescriptorPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties79876     PhysicalDevicePushDescriptorProperties( VkPhysicalDevicePushDescriptorProperties const & rhs ) VULKAN_HPP_NOEXCEPT
79877       : PhysicalDevicePushDescriptorProperties( *reinterpret_cast<PhysicalDevicePushDescriptorProperties const *>( &rhs ) )
79878     {
79879     }
79880 
79881     PhysicalDevicePushDescriptorProperties & operator=( PhysicalDevicePushDescriptorProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79882 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79883 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties79884     PhysicalDevicePushDescriptorProperties & operator=( VkPhysicalDevicePushDescriptorProperties const & rhs ) VULKAN_HPP_NOEXCEPT
79885     {
79886       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties const *>( &rhs );
79887       return *this;
79888     }
79889 
operator VkPhysicalDevicePushDescriptorProperties const&VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties79890     operator VkPhysicalDevicePushDescriptorProperties const &() const VULKAN_HPP_NOEXCEPT
79891     {
79892       return *reinterpret_cast<const VkPhysicalDevicePushDescriptorProperties *>( this );
79893     }
79894 
operator VkPhysicalDevicePushDescriptorProperties&VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties79895     operator VkPhysicalDevicePushDescriptorProperties &() VULKAN_HPP_NOEXCEPT
79896     {
79897       return *reinterpret_cast<VkPhysicalDevicePushDescriptorProperties *>( this );
79898     }
79899 
79900 #if defined( VULKAN_HPP_USE_REFLECT )
79901 #  if 14 <= VULKAN_HPP_CPP_VERSION
79902     auto
79903 #  else
79904     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
79905 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties79906       reflect() const VULKAN_HPP_NOEXCEPT
79907     {
79908       return std::tie( sType, pNext, maxPushDescriptors );
79909     }
79910 #endif
79911 
79912 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79913     auto operator<=>( PhysicalDevicePushDescriptorProperties const & ) const = default;
79914 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties79915     bool operator==( PhysicalDevicePushDescriptorProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
79916     {
79917 #  if defined( VULKAN_HPP_USE_REFLECT )
79918       return this->reflect() == rhs.reflect();
79919 #  else
79920       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPushDescriptors == rhs.maxPushDescriptors );
79921 #  endif
79922     }
79923 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties79924     bool operator!=( PhysicalDevicePushDescriptorProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
79925     {
79926       return !operator==( rhs );
79927     }
79928 #endif
79929 
79930   public:
79931     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDevicePushDescriptorProperties;
79932     void *                              pNext              = {};
79933     uint32_t                            maxPushDescriptors = {};
79934   };
79935 
79936   template <>
79937   struct CppType<StructureType, StructureType::ePhysicalDevicePushDescriptorProperties>
79938   {
79939     using Type = PhysicalDevicePushDescriptorProperties;
79940   };
79941 
79942   using PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties;
79943 
79944   struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT
79945   {
79946     using NativeType = VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;
79947 
79948     static const bool                                  allowDuplicate = false;
79949     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT;
79950 
79951 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRGBA10X6FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT79952     VULKAN_HPP_CONSTEXPR PhysicalDeviceRGBA10X6FormatsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 formatRgba10x6WithoutYCbCrSampler_ = {},
79953                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79954       : pNext{ pNext_ }
79955       , formatRgba10x6WithoutYCbCrSampler{ formatRgba10x6WithoutYCbCrSampler_ }
79956     {
79957     }
79958 
79959     VULKAN_HPP_CONSTEXPR PhysicalDeviceRGBA10X6FormatsFeaturesEXT( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79960 
PhysicalDeviceRGBA10X6FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT79961     PhysicalDeviceRGBA10X6FormatsFeaturesEXT( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
79962       : PhysicalDeviceRGBA10X6FormatsFeaturesEXT( *reinterpret_cast<PhysicalDeviceRGBA10X6FormatsFeaturesEXT const *>( &rhs ) )
79963     {
79964     }
79965 
79966     PhysicalDeviceRGBA10X6FormatsFeaturesEXT & operator=( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79967 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79968 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT79969     PhysicalDeviceRGBA10X6FormatsFeaturesEXT & operator=( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
79970     {
79971       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT const *>( &rhs );
79972       return *this;
79973     }
79974 
79975 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT79976     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79977     {
79978       pNext = pNext_;
79979       return *this;
79980     }
79981 
79982     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT &
setFormatRgba10x6WithoutYCbCrSamplerVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT79983       setFormatRgba10x6WithoutYCbCrSampler( VULKAN_HPP_NAMESPACE::Bool32 formatRgba10x6WithoutYCbCrSampler_ ) VULKAN_HPP_NOEXCEPT
79984     {
79985       formatRgba10x6WithoutYCbCrSampler = formatRgba10x6WithoutYCbCrSampler_;
79986       return *this;
79987     }
79988 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79989 
operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT79990     operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
79991     {
79992       return *reinterpret_cast<const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *>( this );
79993     }
79994 
operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT79995     operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
79996     {
79997       return *reinterpret_cast<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *>( this );
79998     }
79999 
80000 #if defined( VULKAN_HPP_USE_REFLECT )
80001 #  if 14 <= VULKAN_HPP_CPP_VERSION
80002     auto
80003 #  else
80004     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80005 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT80006       reflect() const VULKAN_HPP_NOEXCEPT
80007     {
80008       return std::tie( sType, pNext, formatRgba10x6WithoutYCbCrSampler );
80009     }
80010 #endif
80011 
80012 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80013     auto operator<=>( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & ) const = default;
80014 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT80015     bool operator==( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80016     {
80017 #  if defined( VULKAN_HPP_USE_REFLECT )
80018       return this->reflect() == rhs.reflect();
80019 #  else
80020       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatRgba10x6WithoutYCbCrSampler == rhs.formatRgba10x6WithoutYCbCrSampler );
80021 #  endif
80022     }
80023 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT80024     bool operator!=( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80025     {
80026       return !operator==( rhs );
80027     }
80028 #endif
80029 
80030   public:
80031     VULKAN_HPP_NAMESPACE::StructureType sType                             = StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT;
80032     void *                              pNext                             = {};
80033     VULKAN_HPP_NAMESPACE::Bool32        formatRgba10x6WithoutYCbCrSampler = {};
80034   };
80035 
80036   template <>
80037   struct CppType<StructureType, StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT>
80038   {
80039     using Type = PhysicalDeviceRGBA10X6FormatsFeaturesEXT;
80040   };
80041 
80042   struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
80043   {
80044     using NativeType = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
80045 
80046     static const bool                                  allowDuplicate = false;
80047     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
80048 
80049 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
80050     VULKAN_HPP_CONSTEXPR
PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80051       PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderColorAttachmentAccess_   = {},
80052                                                                    VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderDepthAttachmentAccess_   = {},
80053                                                                    VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderStencilAttachmentAccess_ = {},
80054                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80055       : pNext{ pNext_ }
80056       , rasterizationOrderColorAttachmentAccess{ rasterizationOrderColorAttachmentAccess_ }
80057       , rasterizationOrderDepthAttachmentAccess{ rasterizationOrderDepthAttachmentAccess_ }
80058       , rasterizationOrderStencilAttachmentAccess{ rasterizationOrderStencilAttachmentAccess_ }
80059     {
80060     }
80061 
80062     VULKAN_HPP_CONSTEXPR PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs )
80063       VULKAN_HPP_NOEXCEPT = default;
80064 
PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80065     PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
80066       : PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT(
80067           *reinterpret_cast<PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const *>( &rhs ) )
80068     {
80069     }
80070 
80071     PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &
80072       operator=( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80073 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80074 
80075     PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80076       operator=( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
80077     {
80078       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const *>( &rhs );
80079       return *this;
80080     }
80081 
80082 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80083     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80084     {
80085       pNext = pNext_;
80086       return *this;
80087     }
80088 
80089     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &
setRasterizationOrderColorAttachmentAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80090       setRasterizationOrderColorAttachmentAccess( VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderColorAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT
80091     {
80092       rasterizationOrderColorAttachmentAccess = rasterizationOrderColorAttachmentAccess_;
80093       return *this;
80094     }
80095 
80096     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &
setRasterizationOrderDepthAttachmentAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80097       setRasterizationOrderDepthAttachmentAccess( VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderDepthAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT
80098     {
80099       rasterizationOrderDepthAttachmentAccess = rasterizationOrderDepthAttachmentAccess_;
80100       return *this;
80101     }
80102 
80103     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &
setRasterizationOrderStencilAttachmentAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80104       setRasterizationOrderStencilAttachmentAccess( VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderStencilAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT
80105     {
80106       rasterizationOrderStencilAttachmentAccess = rasterizationOrderStencilAttachmentAccess_;
80107       return *this;
80108     }
80109 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80110 
operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80111     operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
80112     {
80113       return *reinterpret_cast<const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *>( this );
80114     }
80115 
operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80116     operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &() VULKAN_HPP_NOEXCEPT
80117     {
80118       return *reinterpret_cast<VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *>( this );
80119     }
80120 
80121 #if defined( VULKAN_HPP_USE_REFLECT )
80122 #  if 14 <= VULKAN_HPP_CPP_VERSION
80123     auto
80124 #  else
80125     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
80126                void * const &,
80127                VULKAN_HPP_NAMESPACE::Bool32 const &,
80128                VULKAN_HPP_NAMESPACE::Bool32 const &,
80129                VULKAN_HPP_NAMESPACE::Bool32 const &>
80130 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80131       reflect() const VULKAN_HPP_NOEXCEPT
80132     {
80133       return std::tie(
80134         sType, pNext, rasterizationOrderColorAttachmentAccess, rasterizationOrderDepthAttachmentAccess, rasterizationOrderStencilAttachmentAccess );
80135     }
80136 #endif
80137 
80138 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80139     auto operator<=>( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & ) const = default;
80140 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80141     bool operator==( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80142     {
80143 #  if defined( VULKAN_HPP_USE_REFLECT )
80144       return this->reflect() == rhs.reflect();
80145 #  else
80146       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rasterizationOrderColorAttachmentAccess == rhs.rasterizationOrderColorAttachmentAccess ) &&
80147              ( rasterizationOrderDepthAttachmentAccess == rhs.rasterizationOrderDepthAttachmentAccess ) &&
80148              ( rasterizationOrderStencilAttachmentAccess == rhs.rasterizationOrderStencilAttachmentAccess );
80149 #  endif
80150     }
80151 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT80152     bool operator!=( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80153     {
80154       return !operator==( rhs );
80155     }
80156 #endif
80157 
80158   public:
80159     VULKAN_HPP_NAMESPACE::StructureType sType                                     = StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
80160     void *                              pNext                                     = {};
80161     VULKAN_HPP_NAMESPACE::Bool32        rasterizationOrderColorAttachmentAccess   = {};
80162     VULKAN_HPP_NAMESPACE::Bool32        rasterizationOrderDepthAttachmentAccess   = {};
80163     VULKAN_HPP_NAMESPACE::Bool32        rasterizationOrderStencilAttachmentAccess = {};
80164   };
80165 
80166   template <>
80167   struct CppType<StructureType, StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT>
80168   {
80169     using Type = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
80170   };
80171 
80172   using PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
80173 
80174   struct PhysicalDeviceRawAccessChainsFeaturesNV
80175   {
80176     using NativeType = VkPhysicalDeviceRawAccessChainsFeaturesNV;
80177 
80178     static const bool                                  allowDuplicate = false;
80179     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRawAccessChainsFeaturesNV;
80180 
80181 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRawAccessChainsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV80182     VULKAN_HPP_CONSTEXPR PhysicalDeviceRawAccessChainsFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 shaderRawAccessChains_ = {},
80183                                                                   void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
80184       : pNext{ pNext_ }
80185       , shaderRawAccessChains{ shaderRawAccessChains_ }
80186     {
80187     }
80188 
80189     VULKAN_HPP_CONSTEXPR PhysicalDeviceRawAccessChainsFeaturesNV( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80190 
PhysicalDeviceRawAccessChainsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV80191     PhysicalDeviceRawAccessChainsFeaturesNV( VkPhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80192       : PhysicalDeviceRawAccessChainsFeaturesNV( *reinterpret_cast<PhysicalDeviceRawAccessChainsFeaturesNV const *>( &rhs ) )
80193     {
80194     }
80195 
80196     PhysicalDeviceRawAccessChainsFeaturesNV & operator=( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80197 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80198 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV80199     PhysicalDeviceRawAccessChainsFeaturesNV & operator=( VkPhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80200     {
80201       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV const *>( &rhs );
80202       return *this;
80203     }
80204 
80205 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV80206     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRawAccessChainsFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80207     {
80208       pNext = pNext_;
80209       return *this;
80210     }
80211 
80212     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRawAccessChainsFeaturesNV &
setShaderRawAccessChainsVULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV80213       setShaderRawAccessChains( VULKAN_HPP_NAMESPACE::Bool32 shaderRawAccessChains_ ) VULKAN_HPP_NOEXCEPT
80214     {
80215       shaderRawAccessChains = shaderRawAccessChains_;
80216       return *this;
80217     }
80218 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80219 
operator VkPhysicalDeviceRawAccessChainsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV80220     operator VkPhysicalDeviceRawAccessChainsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
80221     {
80222       return *reinterpret_cast<const VkPhysicalDeviceRawAccessChainsFeaturesNV *>( this );
80223     }
80224 
operator VkPhysicalDeviceRawAccessChainsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV80225     operator VkPhysicalDeviceRawAccessChainsFeaturesNV &() VULKAN_HPP_NOEXCEPT
80226     {
80227       return *reinterpret_cast<VkPhysicalDeviceRawAccessChainsFeaturesNV *>( this );
80228     }
80229 
80230 #if defined( VULKAN_HPP_USE_REFLECT )
80231 #  if 14 <= VULKAN_HPP_CPP_VERSION
80232     auto
80233 #  else
80234     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80235 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV80236       reflect() const VULKAN_HPP_NOEXCEPT
80237     {
80238       return std::tie( sType, pNext, shaderRawAccessChains );
80239     }
80240 #endif
80241 
80242 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80243     auto operator<=>( PhysicalDeviceRawAccessChainsFeaturesNV const & ) const = default;
80244 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV80245     bool operator==( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80246     {
80247 #  if defined( VULKAN_HPP_USE_REFLECT )
80248       return this->reflect() == rhs.reflect();
80249 #  else
80250       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderRawAccessChains == rhs.shaderRawAccessChains );
80251 #  endif
80252     }
80253 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV80254     bool operator!=( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80255     {
80256       return !operator==( rhs );
80257     }
80258 #endif
80259 
80260   public:
80261     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceRawAccessChainsFeaturesNV;
80262     void *                              pNext                 = {};
80263     VULKAN_HPP_NAMESPACE::Bool32        shaderRawAccessChains = {};
80264   };
80265 
80266   template <>
80267   struct CppType<StructureType, StructureType::ePhysicalDeviceRawAccessChainsFeaturesNV>
80268   {
80269     using Type = PhysicalDeviceRawAccessChainsFeaturesNV;
80270   };
80271 
80272   struct PhysicalDeviceRayQueryFeaturesKHR
80273   {
80274     using NativeType = VkPhysicalDeviceRayQueryFeaturesKHR;
80275 
80276     static const bool                                  allowDuplicate = false;
80277     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayQueryFeaturesKHR;
80278 
80279 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR80280     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayQueryFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rayQuery_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80281       : pNext{ pNext_ }
80282       , rayQuery{ rayQuery_ }
80283     {
80284     }
80285 
80286     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayQueryFeaturesKHR( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80287 
PhysicalDeviceRayQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR80288     PhysicalDeviceRayQueryFeaturesKHR( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80289       : PhysicalDeviceRayQueryFeaturesKHR( *reinterpret_cast<PhysicalDeviceRayQueryFeaturesKHR const *>( &rhs ) )
80290     {
80291     }
80292 
80293     PhysicalDeviceRayQueryFeaturesKHR & operator=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80294 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80295 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR80296     PhysicalDeviceRayQueryFeaturesKHR & operator=( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80297     {
80298       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR const *>( &rhs );
80299       return *this;
80300     }
80301 
80302 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR80303     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80304     {
80305       pNext = pNext_;
80306       return *this;
80307     }
80308 
setRayQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR80309     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & setRayQuery( VULKAN_HPP_NAMESPACE::Bool32 rayQuery_ ) VULKAN_HPP_NOEXCEPT
80310     {
80311       rayQuery = rayQuery_;
80312       return *this;
80313     }
80314 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80315 
operator VkPhysicalDeviceRayQueryFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR80316     operator VkPhysicalDeviceRayQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
80317     {
80318       return *reinterpret_cast<const VkPhysicalDeviceRayQueryFeaturesKHR *>( this );
80319     }
80320 
operator VkPhysicalDeviceRayQueryFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR80321     operator VkPhysicalDeviceRayQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT
80322     {
80323       return *reinterpret_cast<VkPhysicalDeviceRayQueryFeaturesKHR *>( this );
80324     }
80325 
80326 #if defined( VULKAN_HPP_USE_REFLECT )
80327 #  if 14 <= VULKAN_HPP_CPP_VERSION
80328     auto
80329 #  else
80330     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80331 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR80332       reflect() const VULKAN_HPP_NOEXCEPT
80333     {
80334       return std::tie( sType, pNext, rayQuery );
80335     }
80336 #endif
80337 
80338 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80339     auto operator<=>( PhysicalDeviceRayQueryFeaturesKHR const & ) const = default;
80340 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR80341     bool operator==( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
80342     {
80343 #  if defined( VULKAN_HPP_USE_REFLECT )
80344       return this->reflect() == rhs.reflect();
80345 #  else
80346       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayQuery == rhs.rayQuery );
80347 #  endif
80348     }
80349 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR80350     bool operator!=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
80351     {
80352       return !operator==( rhs );
80353     }
80354 #endif
80355 
80356   public:
80357     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::ePhysicalDeviceRayQueryFeaturesKHR;
80358     void *                              pNext    = {};
80359     VULKAN_HPP_NAMESPACE::Bool32        rayQuery = {};
80360   };
80361 
80362   template <>
80363   struct CppType<StructureType, StructureType::ePhysicalDeviceRayQueryFeaturesKHR>
80364   {
80365     using Type = PhysicalDeviceRayQueryFeaturesKHR;
80366   };
80367 
80368   struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV
80369   {
80370     using NativeType = VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV;
80371 
80372     static const bool                                  allowDuplicate = false;
80373     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesNV;
80374 
80375 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingInvocationReorderFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV80376     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingInvocationReorderFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 rayTracingInvocationReorder_ = {},
80377                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80378       : pNext{ pNext_ }
80379       , rayTracingInvocationReorder{ rayTracingInvocationReorder_ }
80380     {
80381     }
80382 
80383     VULKAN_HPP_CONSTEXPR
80384       PhysicalDeviceRayTracingInvocationReorderFeaturesNV( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80385 
PhysicalDeviceRayTracingInvocationReorderFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV80386     PhysicalDeviceRayTracingInvocationReorderFeaturesNV( VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80387       : PhysicalDeviceRayTracingInvocationReorderFeaturesNV( *reinterpret_cast<PhysicalDeviceRayTracingInvocationReorderFeaturesNV const *>( &rhs ) )
80388     {
80389     }
80390 
80391     PhysicalDeviceRayTracingInvocationReorderFeaturesNV &
80392       operator=( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80393 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80394 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV80395     PhysicalDeviceRayTracingInvocationReorderFeaturesNV & operator=( VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80396     {
80397       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV const *>( &rhs );
80398       return *this;
80399     }
80400 
80401 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV80402     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80403     {
80404       pNext = pNext_;
80405       return *this;
80406     }
80407 
80408     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesNV &
setRayTracingInvocationReorderVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV80409       setRayTracingInvocationReorder( VULKAN_HPP_NAMESPACE::Bool32 rayTracingInvocationReorder_ ) VULKAN_HPP_NOEXCEPT
80410     {
80411       rayTracingInvocationReorder = rayTracingInvocationReorder_;
80412       return *this;
80413     }
80414 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80415 
operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV80416     operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
80417     {
80418       return *reinterpret_cast<const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *>( this );
80419     }
80420 
operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV80421     operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV &() VULKAN_HPP_NOEXCEPT
80422     {
80423       return *reinterpret_cast<VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *>( this );
80424     }
80425 
80426 #if defined( VULKAN_HPP_USE_REFLECT )
80427 #  if 14 <= VULKAN_HPP_CPP_VERSION
80428     auto
80429 #  else
80430     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80431 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV80432       reflect() const VULKAN_HPP_NOEXCEPT
80433     {
80434       return std::tie( sType, pNext, rayTracingInvocationReorder );
80435     }
80436 #endif
80437 
80438 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80439     auto operator<=>( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & ) const = default;
80440 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV80441     bool operator==( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80442     {
80443 #  if defined( VULKAN_HPP_USE_REFLECT )
80444       return this->reflect() == rhs.reflect();
80445 #  else
80446       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingInvocationReorder == rhs.rayTracingInvocationReorder );
80447 #  endif
80448     }
80449 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV80450     bool operator!=( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80451     {
80452       return !operator==( rhs );
80453     }
80454 #endif
80455 
80456   public:
80457     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesNV;
80458     void *                              pNext                       = {};
80459     VULKAN_HPP_NAMESPACE::Bool32        rayTracingInvocationReorder = {};
80460   };
80461 
80462   template <>
80463   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesNV>
80464   {
80465     using Type = PhysicalDeviceRayTracingInvocationReorderFeaturesNV;
80466   };
80467 
80468   struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV
80469   {
80470     using NativeType = VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV;
80471 
80472     static const bool                                  allowDuplicate = false;
80473     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesNV;
80474 
80475 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingInvocationReorderPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV80476     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingInvocationReorderPropertiesNV(
80477       VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV rayTracingInvocationReorderReorderingHint_ =
80478         VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV::eNone,
80479       void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80480       : pNext{ pNext_ }
80481       , rayTracingInvocationReorderReorderingHint{ rayTracingInvocationReorderReorderingHint_ }
80482     {
80483     }
80484 
80485     VULKAN_HPP_CONSTEXPR
80486       PhysicalDeviceRayTracingInvocationReorderPropertiesNV( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80487 
PhysicalDeviceRayTracingInvocationReorderPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV80488     PhysicalDeviceRayTracingInvocationReorderPropertiesNV( VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80489       : PhysicalDeviceRayTracingInvocationReorderPropertiesNV( *reinterpret_cast<PhysicalDeviceRayTracingInvocationReorderPropertiesNV const *>( &rhs ) )
80490     {
80491     }
80492 
80493     PhysicalDeviceRayTracingInvocationReorderPropertiesNV &
80494       operator=( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80495 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80496 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV80497     PhysicalDeviceRayTracingInvocationReorderPropertiesNV & operator=( VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80498     {
80499       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV const *>( &rhs );
80500       return *this;
80501     }
80502 
operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV80503     operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
80504     {
80505       return *reinterpret_cast<const VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV *>( this );
80506     }
80507 
operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV80508     operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV &() VULKAN_HPP_NOEXCEPT
80509     {
80510       return *reinterpret_cast<VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV *>( this );
80511     }
80512 
80513 #if defined( VULKAN_HPP_USE_REFLECT )
80514 #  if 14 <= VULKAN_HPP_CPP_VERSION
80515     auto
80516 #  else
80517     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV const &>
80518 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV80519       reflect() const VULKAN_HPP_NOEXCEPT
80520     {
80521       return std::tie( sType, pNext, rayTracingInvocationReorderReorderingHint );
80522     }
80523 #endif
80524 
80525 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80526     auto operator<=>( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & ) const = default;
80527 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV80528     bool operator==( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80529     {
80530 #  if defined( VULKAN_HPP_USE_REFLECT )
80531       return this->reflect() == rhs.reflect();
80532 #  else
80533       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingInvocationReorderReorderingHint == rhs.rayTracingInvocationReorderReorderingHint );
80534 #  endif
80535     }
80536 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV80537     bool operator!=( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80538     {
80539       return !operator==( rhs );
80540     }
80541 #endif
80542 
80543   public:
80544     VULKAN_HPP_NAMESPACE::StructureType                     sType = StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesNV;
80545     void *                                                  pNext = {};
80546     VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV rayTracingInvocationReorderReorderingHint =
80547       VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV::eNone;
80548   };
80549 
80550   template <>
80551   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesNV>
80552   {
80553     using Type = PhysicalDeviceRayTracingInvocationReorderPropertiesNV;
80554   };
80555 
80556   struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR
80557   {
80558     using NativeType = VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR;
80559 
80560     static const bool                                  allowDuplicate = false;
80561     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingMaintenance1FeaturesKHR;
80562 
80563 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingMaintenance1FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80564     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMaintenance1FeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMaintenance1_               = {},
80565                                                                           VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect2_ = {},
80566                                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80567       : pNext{ pNext_ }
80568       , rayTracingMaintenance1{ rayTracingMaintenance1_ }
80569       , rayTracingPipelineTraceRaysIndirect2{ rayTracingPipelineTraceRaysIndirect2_ }
80570     {
80571     }
80572 
80573     VULKAN_HPP_CONSTEXPR
80574       PhysicalDeviceRayTracingMaintenance1FeaturesKHR( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80575 
PhysicalDeviceRayTracingMaintenance1FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80576     PhysicalDeviceRayTracingMaintenance1FeaturesKHR( VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80577       : PhysicalDeviceRayTracingMaintenance1FeaturesKHR( *reinterpret_cast<PhysicalDeviceRayTracingMaintenance1FeaturesKHR const *>( &rhs ) )
80578     {
80579     }
80580 
80581     PhysicalDeviceRayTracingMaintenance1FeaturesKHR & operator=( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80582 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80583 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80584     PhysicalDeviceRayTracingMaintenance1FeaturesKHR & operator=( VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80585     {
80586       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR const *>( &rhs );
80587       return *this;
80588     }
80589 
80590 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80591     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80592     {
80593       pNext = pNext_;
80594       return *this;
80595     }
80596 
80597     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR &
setRayTracingMaintenance1VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80598       setRayTracingMaintenance1( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMaintenance1_ ) VULKAN_HPP_NOEXCEPT
80599     {
80600       rayTracingMaintenance1 = rayTracingMaintenance1_;
80601       return *this;
80602     }
80603 
80604     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR &
setRayTracingPipelineTraceRaysIndirect2VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80605       setRayTracingPipelineTraceRaysIndirect2( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect2_ ) VULKAN_HPP_NOEXCEPT
80606     {
80607       rayTracingPipelineTraceRaysIndirect2 = rayTracingPipelineTraceRaysIndirect2_;
80608       return *this;
80609     }
80610 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80611 
operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80612     operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
80613     {
80614       return *reinterpret_cast<const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *>( this );
80615     }
80616 
operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80617     operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR &() VULKAN_HPP_NOEXCEPT
80618     {
80619       return *reinterpret_cast<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *>( this );
80620     }
80621 
80622 #if defined( VULKAN_HPP_USE_REFLECT )
80623 #  if 14 <= VULKAN_HPP_CPP_VERSION
80624     auto
80625 #  else
80626     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80627 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80628       reflect() const VULKAN_HPP_NOEXCEPT
80629     {
80630       return std::tie( sType, pNext, rayTracingMaintenance1, rayTracingPipelineTraceRaysIndirect2 );
80631     }
80632 #endif
80633 
80634 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80635     auto operator<=>( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & ) const = default;
80636 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80637     bool operator==( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
80638     {
80639 #  if defined( VULKAN_HPP_USE_REFLECT )
80640       return this->reflect() == rhs.reflect();
80641 #  else
80642       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingMaintenance1 == rhs.rayTracingMaintenance1 ) &&
80643              ( rayTracingPipelineTraceRaysIndirect2 == rhs.rayTracingPipelineTraceRaysIndirect2 );
80644 #  endif
80645     }
80646 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR80647     bool operator!=( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
80648     {
80649       return !operator==( rhs );
80650     }
80651 #endif
80652 
80653   public:
80654     VULKAN_HPP_NAMESPACE::StructureType sType                                = StructureType::ePhysicalDeviceRayTracingMaintenance1FeaturesKHR;
80655     void *                              pNext                                = {};
80656     VULKAN_HPP_NAMESPACE::Bool32        rayTracingMaintenance1               = {};
80657     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineTraceRaysIndirect2 = {};
80658   };
80659 
80660   template <>
80661   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingMaintenance1FeaturesKHR>
80662   {
80663     using Type = PhysicalDeviceRayTracingMaintenance1FeaturesKHR;
80664   };
80665 
80666   struct PhysicalDeviceRayTracingMotionBlurFeaturesNV
80667   {
80668     using NativeType = VkPhysicalDeviceRayTracingMotionBlurFeaturesNV;
80669 
80670     static const bool                                  allowDuplicate = false;
80671     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV;
80672 
80673 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingMotionBlurFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80674     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMotionBlurFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlur_                          = {},
80675                                                                        VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ = {},
80676                                                                        void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80677       : pNext{ pNext_ }
80678       , rayTracingMotionBlur{ rayTracingMotionBlur_ }
80679       , rayTracingMotionBlurPipelineTraceRaysIndirect{ rayTracingMotionBlurPipelineTraceRaysIndirect_ }
80680     {
80681     }
80682 
80683     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMotionBlurFeaturesNV( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80684 
PhysicalDeviceRayTracingMotionBlurFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80685     PhysicalDeviceRayTracingMotionBlurFeaturesNV( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80686       : PhysicalDeviceRayTracingMotionBlurFeaturesNV( *reinterpret_cast<PhysicalDeviceRayTracingMotionBlurFeaturesNV const *>( &rhs ) )
80687     {
80688     }
80689 
80690     PhysicalDeviceRayTracingMotionBlurFeaturesNV & operator=( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80691 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80692 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80693     PhysicalDeviceRayTracingMotionBlurFeaturesNV & operator=( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80694     {
80695       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV const *>( &rhs );
80696       return *this;
80697     }
80698 
80699 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80700     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80701     {
80702       pNext = pNext_;
80703       return *this;
80704     }
80705 
80706     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV &
setRayTracingMotionBlurVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80707       setRayTracingMotionBlur( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlur_ ) VULKAN_HPP_NOEXCEPT
80708     {
80709       rayTracingMotionBlur = rayTracingMotionBlur_;
80710       return *this;
80711     }
80712 
80713     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV &
setRayTracingMotionBlurPipelineTraceRaysIndirectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80714       setRayTracingMotionBlurPipelineTraceRaysIndirect( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ ) VULKAN_HPP_NOEXCEPT
80715     {
80716       rayTracingMotionBlurPipelineTraceRaysIndirect = rayTracingMotionBlurPipelineTraceRaysIndirect_;
80717       return *this;
80718     }
80719 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80720 
operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80721     operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
80722     {
80723       return *reinterpret_cast<const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *>( this );
80724     }
80725 
operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80726     operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV &() VULKAN_HPP_NOEXCEPT
80727     {
80728       return *reinterpret_cast<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *>( this );
80729     }
80730 
80731 #if defined( VULKAN_HPP_USE_REFLECT )
80732 #  if 14 <= VULKAN_HPP_CPP_VERSION
80733     auto
80734 #  else
80735     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80736 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80737       reflect() const VULKAN_HPP_NOEXCEPT
80738     {
80739       return std::tie( sType, pNext, rayTracingMotionBlur, rayTracingMotionBlurPipelineTraceRaysIndirect );
80740     }
80741 #endif
80742 
80743 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80744     auto operator<=>( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & ) const = default;
80745 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80746     bool operator==( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80747     {
80748 #  if defined( VULKAN_HPP_USE_REFLECT )
80749       return this->reflect() == rhs.reflect();
80750 #  else
80751       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingMotionBlur == rhs.rayTracingMotionBlur ) &&
80752              ( rayTracingMotionBlurPipelineTraceRaysIndirect == rhs.rayTracingMotionBlurPipelineTraceRaysIndirect );
80753 #  endif
80754     }
80755 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV80756     bool operator!=( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80757     {
80758       return !operator==( rhs );
80759     }
80760 #endif
80761 
80762   public:
80763     VULKAN_HPP_NAMESPACE::StructureType sType                                         = StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV;
80764     void *                              pNext                                         = {};
80765     VULKAN_HPP_NAMESPACE::Bool32        rayTracingMotionBlur                          = {};
80766     VULKAN_HPP_NAMESPACE::Bool32        rayTracingMotionBlurPipelineTraceRaysIndirect = {};
80767   };
80768 
80769   template <>
80770   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV>
80771   {
80772     using Type = PhysicalDeviceRayTracingMotionBlurFeaturesNV;
80773   };
80774 
80775   struct PhysicalDeviceRayTracingPipelineFeaturesKHR
80776   {
80777     using NativeType = VkPhysicalDeviceRayTracingPipelineFeaturesKHR;
80778 
80779     static const bool                                  allowDuplicate = false;
80780     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR;
80781 
80782 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingPipelineFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80783     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline_                                    = {},
80784                                                                       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_      = {},
80785                                                                       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ = {},
80786                                                                       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect_                   = {},
80787                                                                       VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling_                          = {},
80788                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80789       : pNext{ pNext_ }
80790       , rayTracingPipeline{ rayTracingPipeline_ }
80791       , rayTracingPipelineShaderGroupHandleCaptureReplay{ rayTracingPipelineShaderGroupHandleCaptureReplay_ }
80792       , rayTracingPipelineShaderGroupHandleCaptureReplayMixed{ rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ }
80793       , rayTracingPipelineTraceRaysIndirect{ rayTracingPipelineTraceRaysIndirect_ }
80794       , rayTraversalPrimitiveCulling{ rayTraversalPrimitiveCulling_ }
80795     {
80796     }
80797 
80798     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80799 
PhysicalDeviceRayTracingPipelineFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80800     PhysicalDeviceRayTracingPipelineFeaturesKHR( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80801       : PhysicalDeviceRayTracingPipelineFeaturesKHR( *reinterpret_cast<PhysicalDeviceRayTracingPipelineFeaturesKHR const *>( &rhs ) )
80802     {
80803     }
80804 
80805     PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80806 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80807 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80808     PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80809     {
80810       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR const *>( &rhs );
80811       return *this;
80812     }
80813 
80814 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80815     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80816     {
80817       pNext = pNext_;
80818       return *this;
80819     }
80820 
80821     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTracingPipelineVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80822       setRayTracingPipeline( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline_ ) VULKAN_HPP_NOEXCEPT
80823     {
80824       rayTracingPipeline = rayTracingPipeline_;
80825       return *this;
80826     }
80827 
80828     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTracingPipelineShaderGroupHandleCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80829       setRayTracingPipelineShaderGroupHandleCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
80830     {
80831       rayTracingPipelineShaderGroupHandleCaptureReplay = rayTracingPipelineShaderGroupHandleCaptureReplay_;
80832       return *this;
80833     }
80834 
setRayTracingPipelineShaderGroupHandleCaptureReplayMixedVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80835     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTracingPipelineShaderGroupHandleCaptureReplayMixed(
80836       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ ) VULKAN_HPP_NOEXCEPT
80837     {
80838       rayTracingPipelineShaderGroupHandleCaptureReplayMixed = rayTracingPipelineShaderGroupHandleCaptureReplayMixed_;
80839       return *this;
80840     }
80841 
80842     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTracingPipelineTraceRaysIndirectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80843       setRayTracingPipelineTraceRaysIndirect( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect_ ) VULKAN_HPP_NOEXCEPT
80844     {
80845       rayTracingPipelineTraceRaysIndirect = rayTracingPipelineTraceRaysIndirect_;
80846       return *this;
80847     }
80848 
80849     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTraversalPrimitiveCullingVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80850       setRayTraversalPrimitiveCulling( VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling_ ) VULKAN_HPP_NOEXCEPT
80851     {
80852       rayTraversalPrimitiveCulling = rayTraversalPrimitiveCulling_;
80853       return *this;
80854     }
80855 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80856 
operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80857     operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
80858     {
80859       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPipelineFeaturesKHR *>( this );
80860     }
80861 
operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80862     operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR &() VULKAN_HPP_NOEXCEPT
80863     {
80864       return *reinterpret_cast<VkPhysicalDeviceRayTracingPipelineFeaturesKHR *>( this );
80865     }
80866 
80867 #if defined( VULKAN_HPP_USE_REFLECT )
80868 #  if 14 <= VULKAN_HPP_CPP_VERSION
80869     auto
80870 #  else
80871     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
80872                void * const &,
80873                VULKAN_HPP_NAMESPACE::Bool32 const &,
80874                VULKAN_HPP_NAMESPACE::Bool32 const &,
80875                VULKAN_HPP_NAMESPACE::Bool32 const &,
80876                VULKAN_HPP_NAMESPACE::Bool32 const &,
80877                VULKAN_HPP_NAMESPACE::Bool32 const &>
80878 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80879       reflect() const VULKAN_HPP_NOEXCEPT
80880     {
80881       return std::tie( sType,
80882                        pNext,
80883                        rayTracingPipeline,
80884                        rayTracingPipelineShaderGroupHandleCaptureReplay,
80885                        rayTracingPipelineShaderGroupHandleCaptureReplayMixed,
80886                        rayTracingPipelineTraceRaysIndirect,
80887                        rayTraversalPrimitiveCulling );
80888     }
80889 #endif
80890 
80891 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80892     auto operator<=>( PhysicalDeviceRayTracingPipelineFeaturesKHR const & ) const = default;
80893 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80894     bool operator==( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
80895     {
80896 #  if defined( VULKAN_HPP_USE_REFLECT )
80897       return this->reflect() == rhs.reflect();
80898 #  else
80899       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingPipeline == rhs.rayTracingPipeline ) &&
80900              ( rayTracingPipelineShaderGroupHandleCaptureReplay == rhs.rayTracingPipelineShaderGroupHandleCaptureReplay ) &&
80901              ( rayTracingPipelineShaderGroupHandleCaptureReplayMixed == rhs.rayTracingPipelineShaderGroupHandleCaptureReplayMixed ) &&
80902              ( rayTracingPipelineTraceRaysIndirect == rhs.rayTracingPipelineTraceRaysIndirect ) &&
80903              ( rayTraversalPrimitiveCulling == rhs.rayTraversalPrimitiveCulling );
80904 #  endif
80905     }
80906 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR80907     bool operator!=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
80908     {
80909       return !operator==( rhs );
80910     }
80911 #endif
80912 
80913   public:
80914     VULKAN_HPP_NAMESPACE::StructureType sType                                                 = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR;
80915     void *                              pNext                                                 = {};
80916     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipeline                                    = {};
80917     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineShaderGroupHandleCaptureReplay      = {};
80918     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineShaderGroupHandleCaptureReplayMixed = {};
80919     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineTraceRaysIndirect                   = {};
80920     VULKAN_HPP_NAMESPACE::Bool32        rayTraversalPrimitiveCulling                          = {};
80921   };
80922 
80923   template <>
80924   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR>
80925   {
80926     using Type = PhysicalDeviceRayTracingPipelineFeaturesKHR;
80927   };
80928 
80929   struct PhysicalDeviceRayTracingPipelinePropertiesKHR
80930   {
80931     using NativeType = VkPhysicalDeviceRayTracingPipelinePropertiesKHR;
80932 
80933     static const bool                                  allowDuplicate = false;
80934     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR;
80935 
80936 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingPipelinePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR80937     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelinePropertiesKHR( uint32_t shaderGroupHandleSize_              = {},
80938                                                                         uint32_t maxRayRecursionDepth_               = {},
80939                                                                         uint32_t maxShaderGroupStride_               = {},
80940                                                                         uint32_t shaderGroupBaseAlignment_           = {},
80941                                                                         uint32_t shaderGroupHandleCaptureReplaySize_ = {},
80942                                                                         uint32_t maxRayDispatchInvocationCount_      = {},
80943                                                                         uint32_t shaderGroupHandleAlignment_         = {},
80944                                                                         uint32_t maxRayHitAttributeSize_             = {},
80945                                                                         void *   pNext_                              = nullptr ) VULKAN_HPP_NOEXCEPT
80946       : pNext{ pNext_ }
80947       , shaderGroupHandleSize{ shaderGroupHandleSize_ }
80948       , maxRayRecursionDepth{ maxRayRecursionDepth_ }
80949       , maxShaderGroupStride{ maxShaderGroupStride_ }
80950       , shaderGroupBaseAlignment{ shaderGroupBaseAlignment_ }
80951       , shaderGroupHandleCaptureReplaySize{ shaderGroupHandleCaptureReplaySize_ }
80952       , maxRayDispatchInvocationCount{ maxRayDispatchInvocationCount_ }
80953       , shaderGroupHandleAlignment{ shaderGroupHandleAlignment_ }
80954       , maxRayHitAttributeSize{ maxRayHitAttributeSize_ }
80955     {
80956     }
80957 
80958     VULKAN_HPP_CONSTEXPR
80959       PhysicalDeviceRayTracingPipelinePropertiesKHR( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80960 
PhysicalDeviceRayTracingPipelinePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR80961     PhysicalDeviceRayTracingPipelinePropertiesKHR( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80962       : PhysicalDeviceRayTracingPipelinePropertiesKHR( *reinterpret_cast<PhysicalDeviceRayTracingPipelinePropertiesKHR const *>( &rhs ) )
80963     {
80964     }
80965 
80966     PhysicalDeviceRayTracingPipelinePropertiesKHR & operator=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80967 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80968 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR80969     PhysicalDeviceRayTracingPipelinePropertiesKHR & operator=( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
80970     {
80971       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR const *>( &rhs );
80972       return *this;
80973     }
80974 
operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR80975     operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
80976     {
80977       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPipelinePropertiesKHR *>( this );
80978     }
80979 
operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR80980     operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR &() VULKAN_HPP_NOEXCEPT
80981     {
80982       return *reinterpret_cast<VkPhysicalDeviceRayTracingPipelinePropertiesKHR *>( this );
80983     }
80984 
80985 #if defined( VULKAN_HPP_USE_REFLECT )
80986 #  if 14 <= VULKAN_HPP_CPP_VERSION
80987     auto
80988 #  else
80989     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
80990                void * const &,
80991                uint32_t const &,
80992                uint32_t const &,
80993                uint32_t const &,
80994                uint32_t const &,
80995                uint32_t const &,
80996                uint32_t const &,
80997                uint32_t const &,
80998                uint32_t const &>
80999 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR81000       reflect() const VULKAN_HPP_NOEXCEPT
81001     {
81002       return std::tie( sType,
81003                        pNext,
81004                        shaderGroupHandleSize,
81005                        maxRayRecursionDepth,
81006                        maxShaderGroupStride,
81007                        shaderGroupBaseAlignment,
81008                        shaderGroupHandleCaptureReplaySize,
81009                        maxRayDispatchInvocationCount,
81010                        shaderGroupHandleAlignment,
81011                        maxRayHitAttributeSize );
81012     }
81013 #endif
81014 
81015 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81016     auto operator<=>( PhysicalDeviceRayTracingPipelinePropertiesKHR const & ) const = default;
81017 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR81018     bool operator==( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
81019     {
81020 #  if defined( VULKAN_HPP_USE_REFLECT )
81021       return this->reflect() == rhs.reflect();
81022 #  else
81023       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderGroupHandleSize == rhs.shaderGroupHandleSize ) &&
81024              ( maxRayRecursionDepth == rhs.maxRayRecursionDepth ) && ( maxShaderGroupStride == rhs.maxShaderGroupStride ) &&
81025              ( shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment ) && ( shaderGroupHandleCaptureReplaySize == rhs.shaderGroupHandleCaptureReplaySize ) &&
81026              ( maxRayDispatchInvocationCount == rhs.maxRayDispatchInvocationCount ) && ( shaderGroupHandleAlignment == rhs.shaderGroupHandleAlignment ) &&
81027              ( maxRayHitAttributeSize == rhs.maxRayHitAttributeSize );
81028 #  endif
81029     }
81030 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR81031     bool operator!=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
81032     {
81033       return !operator==( rhs );
81034     }
81035 #endif
81036 
81037   public:
81038     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR;
81039     void *                              pNext                              = {};
81040     uint32_t                            shaderGroupHandleSize              = {};
81041     uint32_t                            maxRayRecursionDepth               = {};
81042     uint32_t                            maxShaderGroupStride               = {};
81043     uint32_t                            shaderGroupBaseAlignment           = {};
81044     uint32_t                            shaderGroupHandleCaptureReplaySize = {};
81045     uint32_t                            maxRayDispatchInvocationCount      = {};
81046     uint32_t                            shaderGroupHandleAlignment         = {};
81047     uint32_t                            maxRayHitAttributeSize             = {};
81048   };
81049 
81050   template <>
81051   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR>
81052   {
81053     using Type = PhysicalDeviceRayTracingPipelinePropertiesKHR;
81054   };
81055 
81056   struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR
81057   {
81058     using NativeType = VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR;
81059 
81060     static const bool                                  allowDuplicate = false;
81061     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingPositionFetchFeaturesKHR;
81062 
81063 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingPositionFetchFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR81064     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPositionFetchFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPositionFetch_ = {},
81065                                                                            void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
81066       : pNext{ pNext_ }
81067       , rayTracingPositionFetch{ rayTracingPositionFetch_ }
81068     {
81069     }
81070 
81071     VULKAN_HPP_CONSTEXPR
81072       PhysicalDeviceRayTracingPositionFetchFeaturesKHR( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81073 
PhysicalDeviceRayTracingPositionFetchFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR81074     PhysicalDeviceRayTracingPositionFetchFeaturesKHR( VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
81075       : PhysicalDeviceRayTracingPositionFetchFeaturesKHR( *reinterpret_cast<PhysicalDeviceRayTracingPositionFetchFeaturesKHR const *>( &rhs ) )
81076     {
81077     }
81078 
81079     PhysicalDeviceRayTracingPositionFetchFeaturesKHR & operator=( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81080 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81081 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR81082     PhysicalDeviceRayTracingPositionFetchFeaturesKHR & operator=( VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
81083     {
81084       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR const *>( &rhs );
81085       return *this;
81086     }
81087 
81088 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR81089     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPositionFetchFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81090     {
81091       pNext = pNext_;
81092       return *this;
81093     }
81094 
81095     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPositionFetchFeaturesKHR &
setRayTracingPositionFetchVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR81096       setRayTracingPositionFetch( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPositionFetch_ ) VULKAN_HPP_NOEXCEPT
81097     {
81098       rayTracingPositionFetch = rayTracingPositionFetch_;
81099       return *this;
81100     }
81101 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81102 
operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR81103     operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
81104     {
81105       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR *>( this );
81106     }
81107 
operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR81108     operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR &() VULKAN_HPP_NOEXCEPT
81109     {
81110       return *reinterpret_cast<VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR *>( this );
81111     }
81112 
81113 #if defined( VULKAN_HPP_USE_REFLECT )
81114 #  if 14 <= VULKAN_HPP_CPP_VERSION
81115     auto
81116 #  else
81117     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
81118 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR81119       reflect() const VULKAN_HPP_NOEXCEPT
81120     {
81121       return std::tie( sType, pNext, rayTracingPositionFetch );
81122     }
81123 #endif
81124 
81125 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81126     auto operator<=>( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & ) const = default;
81127 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR81128     bool operator==( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
81129     {
81130 #  if defined( VULKAN_HPP_USE_REFLECT )
81131       return this->reflect() == rhs.reflect();
81132 #  else
81133       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingPositionFetch == rhs.rayTracingPositionFetch );
81134 #  endif
81135     }
81136 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR81137     bool operator!=( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
81138     {
81139       return !operator==( rhs );
81140     }
81141 #endif
81142 
81143   public:
81144     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceRayTracingPositionFetchFeaturesKHR;
81145     void *                              pNext                   = {};
81146     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPositionFetch = {};
81147   };
81148 
81149   template <>
81150   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPositionFetchFeaturesKHR>
81151   {
81152     using Type = PhysicalDeviceRayTracingPositionFetchFeaturesKHR;
81153   };
81154 
81155   struct PhysicalDeviceRayTracingPropertiesNV
81156   {
81157     using NativeType = VkPhysicalDeviceRayTracingPropertiesNV;
81158 
81159     static const bool                                  allowDuplicate = false;
81160     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingPropertiesNV;
81161 
81162 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV81163     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPropertiesNV( uint32_t shaderGroupHandleSize_                  = {},
81164                                                                uint32_t maxRecursionDepth_                      = {},
81165                                                                uint32_t maxShaderGroupStride_                   = {},
81166                                                                uint32_t shaderGroupBaseAlignment_               = {},
81167                                                                uint64_t maxGeometryCount_                       = {},
81168                                                                uint64_t maxInstanceCount_                       = {},
81169                                                                uint64_t maxTriangleCount_                       = {},
81170                                                                uint32_t maxDescriptorSetAccelerationStructures_ = {},
81171                                                                void *   pNext_                                  = nullptr ) VULKAN_HPP_NOEXCEPT
81172       : pNext{ pNext_ }
81173       , shaderGroupHandleSize{ shaderGroupHandleSize_ }
81174       , maxRecursionDepth{ maxRecursionDepth_ }
81175       , maxShaderGroupStride{ maxShaderGroupStride_ }
81176       , shaderGroupBaseAlignment{ shaderGroupBaseAlignment_ }
81177       , maxGeometryCount{ maxGeometryCount_ }
81178       , maxInstanceCount{ maxInstanceCount_ }
81179       , maxTriangleCount{ maxTriangleCount_ }
81180       , maxDescriptorSetAccelerationStructures{ maxDescriptorSetAccelerationStructures_ }
81181     {
81182     }
81183 
81184     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPropertiesNV( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81185 
PhysicalDeviceRayTracingPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV81186     PhysicalDeviceRayTracingPropertiesNV( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
81187       : PhysicalDeviceRayTracingPropertiesNV( *reinterpret_cast<PhysicalDeviceRayTracingPropertiesNV const *>( &rhs ) )
81188     {
81189     }
81190 
81191     PhysicalDeviceRayTracingPropertiesNV & operator=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81192 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81193 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV81194     PhysicalDeviceRayTracingPropertiesNV & operator=( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
81195     {
81196       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV const *>( &rhs );
81197       return *this;
81198     }
81199 
operator VkPhysicalDeviceRayTracingPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV81200     operator VkPhysicalDeviceRayTracingPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
81201     {
81202       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPropertiesNV *>( this );
81203     }
81204 
operator VkPhysicalDeviceRayTracingPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV81205     operator VkPhysicalDeviceRayTracingPropertiesNV &() VULKAN_HPP_NOEXCEPT
81206     {
81207       return *reinterpret_cast<VkPhysicalDeviceRayTracingPropertiesNV *>( this );
81208     }
81209 
81210 #if defined( VULKAN_HPP_USE_REFLECT )
81211 #  if 14 <= VULKAN_HPP_CPP_VERSION
81212     auto
81213 #  else
81214     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
81215                void * const &,
81216                uint32_t const &,
81217                uint32_t const &,
81218                uint32_t const &,
81219                uint32_t const &,
81220                uint64_t const &,
81221                uint64_t const &,
81222                uint64_t const &,
81223                uint32_t const &>
81224 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV81225       reflect() const VULKAN_HPP_NOEXCEPT
81226     {
81227       return std::tie( sType,
81228                        pNext,
81229                        shaderGroupHandleSize,
81230                        maxRecursionDepth,
81231                        maxShaderGroupStride,
81232                        shaderGroupBaseAlignment,
81233                        maxGeometryCount,
81234                        maxInstanceCount,
81235                        maxTriangleCount,
81236                        maxDescriptorSetAccelerationStructures );
81237     }
81238 #endif
81239 
81240 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81241     auto operator<=>( PhysicalDeviceRayTracingPropertiesNV const & ) const = default;
81242 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV81243     bool operator==( PhysicalDeviceRayTracingPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
81244     {
81245 #  if defined( VULKAN_HPP_USE_REFLECT )
81246       return this->reflect() == rhs.reflect();
81247 #  else
81248       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderGroupHandleSize == rhs.shaderGroupHandleSize ) &&
81249              ( maxRecursionDepth == rhs.maxRecursionDepth ) && ( maxShaderGroupStride == rhs.maxShaderGroupStride ) &&
81250              ( shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment ) && ( maxGeometryCount == rhs.maxGeometryCount ) &&
81251              ( maxInstanceCount == rhs.maxInstanceCount ) && ( maxTriangleCount == rhs.maxTriangleCount ) &&
81252              ( maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures );
81253 #  endif
81254     }
81255 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV81256     bool operator!=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
81257     {
81258       return !operator==( rhs );
81259     }
81260 #endif
81261 
81262   public:
81263     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceRayTracingPropertiesNV;
81264     void *                              pNext                                  = {};
81265     uint32_t                            shaderGroupHandleSize                  = {};
81266     uint32_t                            maxRecursionDepth                      = {};
81267     uint32_t                            maxShaderGroupStride                   = {};
81268     uint32_t                            shaderGroupBaseAlignment               = {};
81269     uint64_t                            maxGeometryCount                       = {};
81270     uint64_t                            maxInstanceCount                       = {};
81271     uint64_t                            maxTriangleCount                       = {};
81272     uint32_t                            maxDescriptorSetAccelerationStructures = {};
81273   };
81274 
81275   template <>
81276   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPropertiesNV>
81277   {
81278     using Type = PhysicalDeviceRayTracingPropertiesNV;
81279   };
81280 
81281   struct PhysicalDeviceRayTracingValidationFeaturesNV
81282   {
81283     using NativeType = VkPhysicalDeviceRayTracingValidationFeaturesNV;
81284 
81285     static const bool                                  allowDuplicate = false;
81286     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingValidationFeaturesNV;
81287 
81288 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingValidationFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV81289     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingValidationFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 rayTracingValidation_ = {},
81290                                                                        void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
81291       : pNext{ pNext_ }
81292       , rayTracingValidation{ rayTracingValidation_ }
81293     {
81294     }
81295 
81296     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingValidationFeaturesNV( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81297 
PhysicalDeviceRayTracingValidationFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV81298     PhysicalDeviceRayTracingValidationFeaturesNV( VkPhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
81299       : PhysicalDeviceRayTracingValidationFeaturesNV( *reinterpret_cast<PhysicalDeviceRayTracingValidationFeaturesNV const *>( &rhs ) )
81300     {
81301     }
81302 
81303     PhysicalDeviceRayTracingValidationFeaturesNV & operator=( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81304 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81305 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV81306     PhysicalDeviceRayTracingValidationFeaturesNV & operator=( VkPhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
81307     {
81308       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV const *>( &rhs );
81309       return *this;
81310     }
81311 
81312 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV81313     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingValidationFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81314     {
81315       pNext = pNext_;
81316       return *this;
81317     }
81318 
81319     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingValidationFeaturesNV &
setRayTracingValidationVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV81320       setRayTracingValidation( VULKAN_HPP_NAMESPACE::Bool32 rayTracingValidation_ ) VULKAN_HPP_NOEXCEPT
81321     {
81322       rayTracingValidation = rayTracingValidation_;
81323       return *this;
81324     }
81325 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81326 
operator VkPhysicalDeviceRayTracingValidationFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV81327     operator VkPhysicalDeviceRayTracingValidationFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
81328     {
81329       return *reinterpret_cast<const VkPhysicalDeviceRayTracingValidationFeaturesNV *>( this );
81330     }
81331 
operator VkPhysicalDeviceRayTracingValidationFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV81332     operator VkPhysicalDeviceRayTracingValidationFeaturesNV &() VULKAN_HPP_NOEXCEPT
81333     {
81334       return *reinterpret_cast<VkPhysicalDeviceRayTracingValidationFeaturesNV *>( this );
81335     }
81336 
81337 #if defined( VULKAN_HPP_USE_REFLECT )
81338 #  if 14 <= VULKAN_HPP_CPP_VERSION
81339     auto
81340 #  else
81341     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
81342 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV81343       reflect() const VULKAN_HPP_NOEXCEPT
81344     {
81345       return std::tie( sType, pNext, rayTracingValidation );
81346     }
81347 #endif
81348 
81349 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81350     auto operator<=>( PhysicalDeviceRayTracingValidationFeaturesNV const & ) const = default;
81351 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV81352     bool operator==( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
81353     {
81354 #  if defined( VULKAN_HPP_USE_REFLECT )
81355       return this->reflect() == rhs.reflect();
81356 #  else
81357       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingValidation == rhs.rayTracingValidation );
81358 #  endif
81359     }
81360 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV81361     bool operator!=( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
81362     {
81363       return !operator==( rhs );
81364     }
81365 #endif
81366 
81367   public:
81368     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceRayTracingValidationFeaturesNV;
81369     void *                              pNext                = {};
81370     VULKAN_HPP_NAMESPACE::Bool32        rayTracingValidation = {};
81371   };
81372 
81373   template <>
81374   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingValidationFeaturesNV>
81375   {
81376     using Type = PhysicalDeviceRayTracingValidationFeaturesNV;
81377   };
81378 
81379   struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG
81380   {
81381     using NativeType = VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
81382 
81383     static const bool                                  allowDuplicate = false;
81384     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
81385 
81386 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRelaxedLineRasterizationFeaturesIMGVULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG81387     VULKAN_HPP_CONSTEXPR PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( VULKAN_HPP_NAMESPACE::Bool32 relaxedLineRasterization_ = {},
81388                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
81389       : pNext{ pNext_ }
81390       , relaxedLineRasterization{ relaxedLineRasterization_ }
81391     {
81392     }
81393 
81394     VULKAN_HPP_CONSTEXPR
81395       PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81396 
PhysicalDeviceRelaxedLineRasterizationFeaturesIMGVULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG81397     PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT
81398       : PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( *reinterpret_cast<PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const *>( &rhs ) )
81399     {
81400     }
81401 
81402     PhysicalDeviceRelaxedLineRasterizationFeaturesIMG &
81403       operator=( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81404 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81405 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG81406     PhysicalDeviceRelaxedLineRasterizationFeaturesIMG & operator=( VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT
81407     {
81408       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const *>( &rhs );
81409       return *this;
81410     }
81411 
81412 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG81413     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRelaxedLineRasterizationFeaturesIMG & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81414     {
81415       pNext = pNext_;
81416       return *this;
81417     }
81418 
81419     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRelaxedLineRasterizationFeaturesIMG &
setRelaxedLineRasterizationVULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG81420       setRelaxedLineRasterization( VULKAN_HPP_NAMESPACE::Bool32 relaxedLineRasterization_ ) VULKAN_HPP_NOEXCEPT
81421     {
81422       relaxedLineRasterization = relaxedLineRasterization_;
81423       return *this;
81424     }
81425 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81426 
operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG81427     operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const &() const VULKAN_HPP_NOEXCEPT
81428     {
81429       return *reinterpret_cast<const VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG *>( this );
81430     }
81431 
operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG&VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG81432     operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG &() VULKAN_HPP_NOEXCEPT
81433     {
81434       return *reinterpret_cast<VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG *>( this );
81435     }
81436 
81437 #if defined( VULKAN_HPP_USE_REFLECT )
81438 #  if 14 <= VULKAN_HPP_CPP_VERSION
81439     auto
81440 #  else
81441     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
81442 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG81443       reflect() const VULKAN_HPP_NOEXCEPT
81444     {
81445       return std::tie( sType, pNext, relaxedLineRasterization );
81446     }
81447 #endif
81448 
81449 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81450     auto operator<=>( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & ) const = default;
81451 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG81452     bool operator==( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) const VULKAN_HPP_NOEXCEPT
81453     {
81454 #  if defined( VULKAN_HPP_USE_REFLECT )
81455       return this->reflect() == rhs.reflect();
81456 #  else
81457       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( relaxedLineRasterization == rhs.relaxedLineRasterization );
81458 #  endif
81459     }
81460 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG81461     bool operator!=( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) const VULKAN_HPP_NOEXCEPT
81462     {
81463       return !operator==( rhs );
81464     }
81465 #endif
81466 
81467   public:
81468     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
81469     void *                              pNext                    = {};
81470     VULKAN_HPP_NAMESPACE::Bool32        relaxedLineRasterization = {};
81471   };
81472 
81473   template <>
81474   struct CppType<StructureType, StructureType::ePhysicalDeviceRelaxedLineRasterizationFeaturesIMG>
81475   {
81476     using Type = PhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
81477   };
81478 
81479   struct PhysicalDeviceRenderPassStripedFeaturesARM
81480   {
81481     using NativeType = VkPhysicalDeviceRenderPassStripedFeaturesARM;
81482 
81483     static const bool                                  allowDuplicate = false;
81484     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM;
81485 
81486 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRenderPassStripedFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM81487     VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedFeaturesARM( VULKAN_HPP_NAMESPACE::Bool32 renderPassStriped_ = {},
81488                                                                      void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
81489       : pNext{ pNext_ }
81490       , renderPassStriped{ renderPassStriped_ }
81491     {
81492     }
81493 
81494     VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedFeaturesARM( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81495 
PhysicalDeviceRenderPassStripedFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM81496     PhysicalDeviceRenderPassStripedFeaturesARM( VkPhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
81497       : PhysicalDeviceRenderPassStripedFeaturesARM( *reinterpret_cast<PhysicalDeviceRenderPassStripedFeaturesARM const *>( &rhs ) )
81498     {
81499     }
81500 
81501     PhysicalDeviceRenderPassStripedFeaturesARM & operator=( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81502 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81503 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM81504     PhysicalDeviceRenderPassStripedFeaturesARM & operator=( VkPhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
81505     {
81506       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM const *>( &rhs );
81507       return *this;
81508     }
81509 
81510 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM81511     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRenderPassStripedFeaturesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81512     {
81513       pNext = pNext_;
81514       return *this;
81515     }
81516 
81517     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRenderPassStripedFeaturesARM &
setRenderPassStripedVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM81518       setRenderPassStriped( VULKAN_HPP_NAMESPACE::Bool32 renderPassStriped_ ) VULKAN_HPP_NOEXCEPT
81519     {
81520       renderPassStriped = renderPassStriped_;
81521       return *this;
81522     }
81523 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81524 
operator VkPhysicalDeviceRenderPassStripedFeaturesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM81525     operator VkPhysicalDeviceRenderPassStripedFeaturesARM const &() const VULKAN_HPP_NOEXCEPT
81526     {
81527       return *reinterpret_cast<const VkPhysicalDeviceRenderPassStripedFeaturesARM *>( this );
81528     }
81529 
operator VkPhysicalDeviceRenderPassStripedFeaturesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM81530     operator VkPhysicalDeviceRenderPassStripedFeaturesARM &() VULKAN_HPP_NOEXCEPT
81531     {
81532       return *reinterpret_cast<VkPhysicalDeviceRenderPassStripedFeaturesARM *>( this );
81533     }
81534 
81535 #if defined( VULKAN_HPP_USE_REFLECT )
81536 #  if 14 <= VULKAN_HPP_CPP_VERSION
81537     auto
81538 #  else
81539     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
81540 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM81541       reflect() const VULKAN_HPP_NOEXCEPT
81542     {
81543       return std::tie( sType, pNext, renderPassStriped );
81544     }
81545 #endif
81546 
81547 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81548     auto operator<=>( PhysicalDeviceRenderPassStripedFeaturesARM const & ) const = default;
81549 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM81550     bool operator==( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
81551     {
81552 #  if defined( VULKAN_HPP_USE_REFLECT )
81553       return this->reflect() == rhs.reflect();
81554 #  else
81555       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPassStriped == rhs.renderPassStriped );
81556 #  endif
81557     }
81558 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM81559     bool operator!=( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
81560     {
81561       return !operator==( rhs );
81562     }
81563 #endif
81564 
81565   public:
81566     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM;
81567     void *                              pNext             = {};
81568     VULKAN_HPP_NAMESPACE::Bool32        renderPassStriped = {};
81569   };
81570 
81571   template <>
81572   struct CppType<StructureType, StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM>
81573   {
81574     using Type = PhysicalDeviceRenderPassStripedFeaturesARM;
81575   };
81576 
81577   struct PhysicalDeviceRenderPassStripedPropertiesARM
81578   {
81579     using NativeType = VkPhysicalDeviceRenderPassStripedPropertiesARM;
81580 
81581     static const bool                                  allowDuplicate = false;
81582     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM;
81583 
81584 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRenderPassStripedPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM81585     VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedPropertiesARM( VULKAN_HPP_NAMESPACE::Extent2D renderPassStripeGranularity_ = {},
81586                                                                        uint32_t                       maxRenderPassStripes_        = {},
81587                                                                        void *                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
81588       : pNext{ pNext_ }
81589       , renderPassStripeGranularity{ renderPassStripeGranularity_ }
81590       , maxRenderPassStripes{ maxRenderPassStripes_ }
81591     {
81592     }
81593 
81594     VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedPropertiesARM( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81595 
PhysicalDeviceRenderPassStripedPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM81596     PhysicalDeviceRenderPassStripedPropertiesARM( VkPhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
81597       : PhysicalDeviceRenderPassStripedPropertiesARM( *reinterpret_cast<PhysicalDeviceRenderPassStripedPropertiesARM const *>( &rhs ) )
81598     {
81599     }
81600 
81601     PhysicalDeviceRenderPassStripedPropertiesARM & operator=( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81602 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81603 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM81604     PhysicalDeviceRenderPassStripedPropertiesARM & operator=( VkPhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
81605     {
81606       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM const *>( &rhs );
81607       return *this;
81608     }
81609 
operator VkPhysicalDeviceRenderPassStripedPropertiesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM81610     operator VkPhysicalDeviceRenderPassStripedPropertiesARM const &() const VULKAN_HPP_NOEXCEPT
81611     {
81612       return *reinterpret_cast<const VkPhysicalDeviceRenderPassStripedPropertiesARM *>( this );
81613     }
81614 
operator VkPhysicalDeviceRenderPassStripedPropertiesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM81615     operator VkPhysicalDeviceRenderPassStripedPropertiesARM &() VULKAN_HPP_NOEXCEPT
81616     {
81617       return *reinterpret_cast<VkPhysicalDeviceRenderPassStripedPropertiesARM *>( this );
81618     }
81619 
81620 #if defined( VULKAN_HPP_USE_REFLECT )
81621 #  if 14 <= VULKAN_HPP_CPP_VERSION
81622     auto
81623 #  else
81624     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
81625 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM81626       reflect() const VULKAN_HPP_NOEXCEPT
81627     {
81628       return std::tie( sType, pNext, renderPassStripeGranularity, maxRenderPassStripes );
81629     }
81630 #endif
81631 
81632 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81633     auto operator<=>( PhysicalDeviceRenderPassStripedPropertiesARM const & ) const = default;
81634 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM81635     bool operator==( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
81636     {
81637 #  if defined( VULKAN_HPP_USE_REFLECT )
81638       return this->reflect() == rhs.reflect();
81639 #  else
81640       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPassStripeGranularity == rhs.renderPassStripeGranularity ) &&
81641              ( maxRenderPassStripes == rhs.maxRenderPassStripes );
81642 #  endif
81643     }
81644 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM81645     bool operator!=( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
81646     {
81647       return !operator==( rhs );
81648     }
81649 #endif
81650 
81651   public:
81652     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM;
81653     void *                              pNext                       = {};
81654     VULKAN_HPP_NAMESPACE::Extent2D      renderPassStripeGranularity = {};
81655     uint32_t                            maxRenderPassStripes        = {};
81656   };
81657 
81658   template <>
81659   struct CppType<StructureType, StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM>
81660   {
81661     using Type = PhysicalDeviceRenderPassStripedPropertiesARM;
81662   };
81663 
81664   struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV
81665   {
81666     using NativeType = VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
81667 
81668     static const bool                                  allowDuplicate = false;
81669     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV;
81670 
81671 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRepresentativeFragmentTestFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV81672     VULKAN_HPP_CONSTEXPR PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest_ = {},
81673                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
81674       : pNext{ pNext_ }
81675       , representativeFragmentTest{ representativeFragmentTest_ }
81676     {
81677     }
81678 
81679     VULKAN_HPP_CONSTEXPR
81680       PhysicalDeviceRepresentativeFragmentTestFeaturesNV( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81681 
PhysicalDeviceRepresentativeFragmentTestFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV81682     PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
81683       : PhysicalDeviceRepresentativeFragmentTestFeaturesNV( *reinterpret_cast<PhysicalDeviceRepresentativeFragmentTestFeaturesNV const *>( &rhs ) )
81684     {
81685     }
81686 
81687     PhysicalDeviceRepresentativeFragmentTestFeaturesNV &
81688       operator=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81689 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81690 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV81691     PhysicalDeviceRepresentativeFragmentTestFeaturesNV & operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
81692     {
81693       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV const *>( &rhs );
81694       return *this;
81695     }
81696 
81697 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV81698     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81699     {
81700       pNext = pNext_;
81701       return *this;
81702     }
81703 
81704     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV &
setRepresentativeFragmentTestVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV81705       setRepresentativeFragmentTest( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest_ ) VULKAN_HPP_NOEXCEPT
81706     {
81707       representativeFragmentTest = representativeFragmentTest_;
81708       return *this;
81709     }
81710 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81711 
operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV81712     operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
81713     {
81714       return *reinterpret_cast<const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *>( this );
81715     }
81716 
operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV81717     operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV &() VULKAN_HPP_NOEXCEPT
81718     {
81719       return *reinterpret_cast<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *>( this );
81720     }
81721 
81722 #if defined( VULKAN_HPP_USE_REFLECT )
81723 #  if 14 <= VULKAN_HPP_CPP_VERSION
81724     auto
81725 #  else
81726     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
81727 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV81728       reflect() const VULKAN_HPP_NOEXCEPT
81729     {
81730       return std::tie( sType, pNext, representativeFragmentTest );
81731     }
81732 #endif
81733 
81734 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81735     auto operator<=>( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & ) const = default;
81736 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV81737     bool operator==( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
81738     {
81739 #  if defined( VULKAN_HPP_USE_REFLECT )
81740       return this->reflect() == rhs.reflect();
81741 #  else
81742       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( representativeFragmentTest == rhs.representativeFragmentTest );
81743 #  endif
81744     }
81745 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV81746     bool operator!=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
81747     {
81748       return !operator==( rhs );
81749     }
81750 #endif
81751 
81752   public:
81753     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV;
81754     void *                              pNext                      = {};
81755     VULKAN_HPP_NAMESPACE::Bool32        representativeFragmentTest = {};
81756   };
81757 
81758   template <>
81759   struct CppType<StructureType, StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV>
81760   {
81761     using Type = PhysicalDeviceRepresentativeFragmentTestFeaturesNV;
81762   };
81763 
81764   struct PhysicalDeviceRobustness2FeaturesEXT
81765   {
81766     using NativeType = VkPhysicalDeviceRobustness2FeaturesEXT;
81767 
81768     static const bool                                  allowDuplicate = false;
81769     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRobustness2FeaturesEXT;
81770 
81771 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRobustness2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81772     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ = {},
81773                                                                VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_  = {},
81774                                                                VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_      = {},
81775                                                                void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
81776       : pNext{ pNext_ }
81777       , robustBufferAccess2{ robustBufferAccess2_ }
81778       , robustImageAccess2{ robustImageAccess2_ }
81779       , nullDescriptor{ nullDescriptor_ }
81780     {
81781     }
81782 
81783     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81784 
PhysicalDeviceRobustness2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81785     PhysicalDeviceRobustness2FeaturesEXT( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
81786       : PhysicalDeviceRobustness2FeaturesEXT( *reinterpret_cast<PhysicalDeviceRobustness2FeaturesEXT const *>( &rhs ) )
81787     {
81788     }
81789 
81790     PhysicalDeviceRobustness2FeaturesEXT & operator=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81791 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81792 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81793     PhysicalDeviceRobustness2FeaturesEXT & operator=( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
81794     {
81795       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT const *>( &rhs );
81796       return *this;
81797     }
81798 
81799 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81800     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81801     {
81802       pNext = pNext_;
81803       return *this;
81804     }
81805 
81806     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT &
setRobustBufferAccess2VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81807       setRobustBufferAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ ) VULKAN_HPP_NOEXCEPT
81808     {
81809       robustBufferAccess2 = robustBufferAccess2_;
81810       return *this;
81811     }
81812 
setRobustImageAccess2VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81813     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setRobustImageAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_ ) VULKAN_HPP_NOEXCEPT
81814     {
81815       robustImageAccess2 = robustImageAccess2_;
81816       return *this;
81817     }
81818 
setNullDescriptorVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81819     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setNullDescriptor( VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_ ) VULKAN_HPP_NOEXCEPT
81820     {
81821       nullDescriptor = nullDescriptor_;
81822       return *this;
81823     }
81824 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81825 
operator VkPhysicalDeviceRobustness2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81826     operator VkPhysicalDeviceRobustness2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
81827     {
81828       return *reinterpret_cast<const VkPhysicalDeviceRobustness2FeaturesEXT *>( this );
81829     }
81830 
operator VkPhysicalDeviceRobustness2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81831     operator VkPhysicalDeviceRobustness2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
81832     {
81833       return *reinterpret_cast<VkPhysicalDeviceRobustness2FeaturesEXT *>( this );
81834     }
81835 
81836 #if defined( VULKAN_HPP_USE_REFLECT )
81837 #  if 14 <= VULKAN_HPP_CPP_VERSION
81838     auto
81839 #  else
81840     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
81841                void * const &,
81842                VULKAN_HPP_NAMESPACE::Bool32 const &,
81843                VULKAN_HPP_NAMESPACE::Bool32 const &,
81844                VULKAN_HPP_NAMESPACE::Bool32 const &>
81845 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81846       reflect() const VULKAN_HPP_NOEXCEPT
81847     {
81848       return std::tie( sType, pNext, robustBufferAccess2, robustImageAccess2, nullDescriptor );
81849     }
81850 #endif
81851 
81852 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81853     auto operator<=>( PhysicalDeviceRobustness2FeaturesEXT const & ) const = default;
81854 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81855     bool operator==( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
81856     {
81857 #  if defined( VULKAN_HPP_USE_REFLECT )
81858       return this->reflect() == rhs.reflect();
81859 #  else
81860       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustBufferAccess2 == rhs.robustBufferAccess2 ) &&
81861              ( robustImageAccess2 == rhs.robustImageAccess2 ) && ( nullDescriptor == rhs.nullDescriptor );
81862 #  endif
81863     }
81864 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT81865     bool operator!=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
81866     {
81867       return !operator==( rhs );
81868     }
81869 #endif
81870 
81871   public:
81872     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceRobustness2FeaturesEXT;
81873     void *                              pNext               = {};
81874     VULKAN_HPP_NAMESPACE::Bool32        robustBufferAccess2 = {};
81875     VULKAN_HPP_NAMESPACE::Bool32        robustImageAccess2  = {};
81876     VULKAN_HPP_NAMESPACE::Bool32        nullDescriptor      = {};
81877   };
81878 
81879   template <>
81880   struct CppType<StructureType, StructureType::ePhysicalDeviceRobustness2FeaturesEXT>
81881   {
81882     using Type = PhysicalDeviceRobustness2FeaturesEXT;
81883   };
81884 
81885   struct PhysicalDeviceRobustness2PropertiesEXT
81886   {
81887     using NativeType = VkPhysicalDeviceRobustness2PropertiesEXT;
81888 
81889     static const bool                                  allowDuplicate = false;
81890     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRobustness2PropertiesEXT;
81891 
81892 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRobustness2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT81893     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT( VULKAN_HPP_NAMESPACE::DeviceSize robustStorageBufferAccessSizeAlignment_ = {},
81894                                                                  VULKAN_HPP_NAMESPACE::DeviceSize robustUniformBufferAccessSizeAlignment_ = {},
81895                                                                  void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
81896       : pNext{ pNext_ }
81897       , robustStorageBufferAccessSizeAlignment{ robustStorageBufferAccessSizeAlignment_ }
81898       , robustUniformBufferAccessSizeAlignment{ robustUniformBufferAccessSizeAlignment_ }
81899     {
81900     }
81901 
81902     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81903 
PhysicalDeviceRobustness2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT81904     PhysicalDeviceRobustness2PropertiesEXT( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
81905       : PhysicalDeviceRobustness2PropertiesEXT( *reinterpret_cast<PhysicalDeviceRobustness2PropertiesEXT const *>( &rhs ) )
81906     {
81907     }
81908 
81909     PhysicalDeviceRobustness2PropertiesEXT & operator=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81910 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81911 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT81912     PhysicalDeviceRobustness2PropertiesEXT & operator=( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
81913     {
81914       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT const *>( &rhs );
81915       return *this;
81916     }
81917 
operator VkPhysicalDeviceRobustness2PropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT81918     operator VkPhysicalDeviceRobustness2PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
81919     {
81920       return *reinterpret_cast<const VkPhysicalDeviceRobustness2PropertiesEXT *>( this );
81921     }
81922 
operator VkPhysicalDeviceRobustness2PropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT81923     operator VkPhysicalDeviceRobustness2PropertiesEXT &() VULKAN_HPP_NOEXCEPT
81924     {
81925       return *reinterpret_cast<VkPhysicalDeviceRobustness2PropertiesEXT *>( this );
81926     }
81927 
81928 #if defined( VULKAN_HPP_USE_REFLECT )
81929 #  if 14 <= VULKAN_HPP_CPP_VERSION
81930     auto
81931 #  else
81932     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
81933 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT81934       reflect() const VULKAN_HPP_NOEXCEPT
81935     {
81936       return std::tie( sType, pNext, robustStorageBufferAccessSizeAlignment, robustUniformBufferAccessSizeAlignment );
81937     }
81938 #endif
81939 
81940 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81941     auto operator<=>( PhysicalDeviceRobustness2PropertiesEXT const & ) const = default;
81942 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT81943     bool operator==( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
81944     {
81945 #  if defined( VULKAN_HPP_USE_REFLECT )
81946       return this->reflect() == rhs.reflect();
81947 #  else
81948       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustStorageBufferAccessSizeAlignment == rhs.robustStorageBufferAccessSizeAlignment ) &&
81949              ( robustUniformBufferAccessSizeAlignment == rhs.robustUniformBufferAccessSizeAlignment );
81950 #  endif
81951     }
81952 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT81953     bool operator!=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
81954     {
81955       return !operator==( rhs );
81956     }
81957 #endif
81958 
81959   public:
81960     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceRobustness2PropertiesEXT;
81961     void *                              pNext                                  = {};
81962     VULKAN_HPP_NAMESPACE::DeviceSize    robustStorageBufferAccessSizeAlignment = {};
81963     VULKAN_HPP_NAMESPACE::DeviceSize    robustUniformBufferAccessSizeAlignment = {};
81964   };
81965 
81966   template <>
81967   struct CppType<StructureType, StructureType::ePhysicalDeviceRobustness2PropertiesEXT>
81968   {
81969     using Type = PhysicalDeviceRobustness2PropertiesEXT;
81970   };
81971 
81972   struct PhysicalDeviceSampleLocationsPropertiesEXT
81973   {
81974     using NativeType = VkPhysicalDeviceSampleLocationsPropertiesEXT;
81975 
81976     static const bool                                  allowDuplicate = false;
81977     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
81978 
81979 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSampleLocationsPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT81980     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlags sampleLocationSampleCounts_    = {},
81981                                                                         VULKAN_HPP_NAMESPACE::Extent2D         maxSampleLocationGridSize_     = {},
81982                                                                         std::array<float, 2> const &           sampleLocationCoordinateRange_ = {},
81983                                                                         uint32_t                               sampleLocationSubPixelBits_    = {},
81984                                                                         VULKAN_HPP_NAMESPACE::Bool32           variableSampleLocations_       = {},
81985                                                                         void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
81986       : pNext{ pNext_ }
81987       , sampleLocationSampleCounts{ sampleLocationSampleCounts_ }
81988       , maxSampleLocationGridSize{ maxSampleLocationGridSize_ }
81989       , sampleLocationCoordinateRange{ sampleLocationCoordinateRange_ }
81990       , sampleLocationSubPixelBits{ sampleLocationSubPixelBits_ }
81991       , variableSampleLocations{ variableSampleLocations_ }
81992     {
81993     }
81994 
81995     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81996 
PhysicalDeviceSampleLocationsPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT81997     PhysicalDeviceSampleLocationsPropertiesEXT( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
81998       : PhysicalDeviceSampleLocationsPropertiesEXT( *reinterpret_cast<PhysicalDeviceSampleLocationsPropertiesEXT const *>( &rhs ) )
81999     {
82000     }
82001 
82002     PhysicalDeviceSampleLocationsPropertiesEXT & operator=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82003 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82004 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT82005     PhysicalDeviceSampleLocationsPropertiesEXT & operator=( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
82006     {
82007       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT const *>( &rhs );
82008       return *this;
82009     }
82010 
operator VkPhysicalDeviceSampleLocationsPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT82011     operator VkPhysicalDeviceSampleLocationsPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
82012     {
82013       return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT *>( this );
82014     }
82015 
operator VkPhysicalDeviceSampleLocationsPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT82016     operator VkPhysicalDeviceSampleLocationsPropertiesEXT &() VULKAN_HPP_NOEXCEPT
82017     {
82018       return *reinterpret_cast<VkPhysicalDeviceSampleLocationsPropertiesEXT *>( this );
82019     }
82020 
82021 #if defined( VULKAN_HPP_USE_REFLECT )
82022 #  if 14 <= VULKAN_HPP_CPP_VERSION
82023     auto
82024 #  else
82025     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
82026                void * const &,
82027                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
82028                VULKAN_HPP_NAMESPACE::Extent2D const &,
82029                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
82030                uint32_t const &,
82031                VULKAN_HPP_NAMESPACE::Bool32 const &>
82032 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT82033       reflect() const VULKAN_HPP_NOEXCEPT
82034     {
82035       return std::tie( sType,
82036                        pNext,
82037                        sampleLocationSampleCounts,
82038                        maxSampleLocationGridSize,
82039                        sampleLocationCoordinateRange,
82040                        sampleLocationSubPixelBits,
82041                        variableSampleLocations );
82042     }
82043 #endif
82044 
82045 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82046     auto operator<=>( PhysicalDeviceSampleLocationsPropertiesEXT const & ) const = default;
82047 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT82048     bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
82049     {
82050 #  if defined( VULKAN_HPP_USE_REFLECT )
82051       return this->reflect() == rhs.reflect();
82052 #  else
82053       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts ) &&
82054              ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize ) && ( sampleLocationCoordinateRange == rhs.sampleLocationCoordinateRange ) &&
82055              ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits ) && ( variableSampleLocations == rhs.variableSampleLocations );
82056 #  endif
82057     }
82058 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT82059     bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
82060     {
82061       return !operator==( rhs );
82062     }
82063 #endif
82064 
82065   public:
82066     VULKAN_HPP_NAMESPACE::StructureType            sType                         = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
82067     void *                                         pNext                         = {};
82068     VULKAN_HPP_NAMESPACE::SampleCountFlags         sampleLocationSampleCounts    = {};
82069     VULKAN_HPP_NAMESPACE::Extent2D                 maxSampleLocationGridSize     = {};
82070     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> sampleLocationCoordinateRange = {};
82071     uint32_t                                       sampleLocationSubPixelBits    = {};
82072     VULKAN_HPP_NAMESPACE::Bool32                   variableSampleLocations       = {};
82073   };
82074 
82075   template <>
82076   struct CppType<StructureType, StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT>
82077   {
82078     using Type = PhysicalDeviceSampleLocationsPropertiesEXT;
82079   };
82080 
82081   struct PhysicalDeviceSamplerFilterMinmaxProperties
82082   {
82083     using NativeType = VkPhysicalDeviceSamplerFilterMinmaxProperties;
82084 
82085     static const bool                                  allowDuplicate = false;
82086     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties;
82087 
82088 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSamplerFilterMinmaxPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties82089     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties( VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats_ = {},
82090                                                                       VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping_  = {},
82091                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
82092       : pNext{ pNext_ }
82093       , filterMinmaxSingleComponentFormats{ filterMinmaxSingleComponentFormats_ }
82094       , filterMinmaxImageComponentMapping{ filterMinmaxImageComponentMapping_ }
82095     {
82096     }
82097 
82098     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82099 
PhysicalDeviceSamplerFilterMinmaxPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties82100     PhysicalDeviceSamplerFilterMinmaxProperties( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT
82101       : PhysicalDeviceSamplerFilterMinmaxProperties( *reinterpret_cast<PhysicalDeviceSamplerFilterMinmaxProperties const *>( &rhs ) )
82102     {
82103     }
82104 
82105     PhysicalDeviceSamplerFilterMinmaxProperties & operator=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82106 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82107 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties82108     PhysicalDeviceSamplerFilterMinmaxProperties & operator=( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT
82109     {
82110       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties const *>( &rhs );
82111       return *this;
82112     }
82113 
operator VkPhysicalDeviceSamplerFilterMinmaxProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties82114     operator VkPhysicalDeviceSamplerFilterMinmaxProperties const &() const VULKAN_HPP_NOEXCEPT
82115     {
82116       return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxProperties *>( this );
82117     }
82118 
operator VkPhysicalDeviceSamplerFilterMinmaxProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties82119     operator VkPhysicalDeviceSamplerFilterMinmaxProperties &() VULKAN_HPP_NOEXCEPT
82120     {
82121       return *reinterpret_cast<VkPhysicalDeviceSamplerFilterMinmaxProperties *>( this );
82122     }
82123 
82124 #if defined( VULKAN_HPP_USE_REFLECT )
82125 #  if 14 <= VULKAN_HPP_CPP_VERSION
82126     auto
82127 #  else
82128     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82129 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties82130       reflect() const VULKAN_HPP_NOEXCEPT
82131     {
82132       return std::tie( sType, pNext, filterMinmaxSingleComponentFormats, filterMinmaxImageComponentMapping );
82133     }
82134 #endif
82135 
82136 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82137     auto operator<=>( PhysicalDeviceSamplerFilterMinmaxProperties const & ) const = default;
82138 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties82139     bool operator==( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
82140     {
82141 #  if defined( VULKAN_HPP_USE_REFLECT )
82142       return this->reflect() == rhs.reflect();
82143 #  else
82144       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats ) &&
82145              ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
82146 #  endif
82147     }
82148 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties82149     bool operator!=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
82150     {
82151       return !operator==( rhs );
82152     }
82153 #endif
82154 
82155   public:
82156     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties;
82157     void *                              pNext                              = {};
82158     VULKAN_HPP_NAMESPACE::Bool32        filterMinmaxSingleComponentFormats = {};
82159     VULKAN_HPP_NAMESPACE::Bool32        filterMinmaxImageComponentMapping  = {};
82160   };
82161 
82162   template <>
82163   struct CppType<StructureType, StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties>
82164   {
82165     using Type = PhysicalDeviceSamplerFilterMinmaxProperties;
82166   };
82167 
82168   using PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties;
82169 
82170   struct PhysicalDeviceSamplerYcbcrConversionFeatures
82171   {
82172     using NativeType = VkPhysicalDeviceSamplerYcbcrConversionFeatures;
82173 
82174     static const bool                                  allowDuplicate = false;
82175     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
82176 
82177 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSamplerYcbcrConversionFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures82178     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ = {},
82179                                                                        void *                       pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
82180       : pNext{ pNext_ }
82181       , samplerYcbcrConversion{ samplerYcbcrConversion_ }
82182     {
82183     }
82184 
82185     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82186 
PhysicalDeviceSamplerYcbcrConversionFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures82187     PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
82188       : PhysicalDeviceSamplerYcbcrConversionFeatures( *reinterpret_cast<PhysicalDeviceSamplerYcbcrConversionFeatures const *>( &rhs ) )
82189     {
82190     }
82191 
82192     PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82193 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82194 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures82195     PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
82196     {
82197       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures const *>( &rhs );
82198       return *this;
82199     }
82200 
82201 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures82202     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82203     {
82204       pNext = pNext_;
82205       return *this;
82206     }
82207 
82208     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures &
setSamplerYcbcrConversionVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures82209       setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT
82210     {
82211       samplerYcbcrConversion = samplerYcbcrConversion_;
82212       return *this;
82213     }
82214 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82215 
operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures82216     operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const &() const VULKAN_HPP_NOEXCEPT
82217     {
82218       return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures *>( this );
82219     }
82220 
operator VkPhysicalDeviceSamplerYcbcrConversionFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures82221     operator VkPhysicalDeviceSamplerYcbcrConversionFeatures &() VULKAN_HPP_NOEXCEPT
82222     {
82223       return *reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures *>( this );
82224     }
82225 
82226 #if defined( VULKAN_HPP_USE_REFLECT )
82227 #  if 14 <= VULKAN_HPP_CPP_VERSION
82228     auto
82229 #  else
82230     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82231 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures82232       reflect() const VULKAN_HPP_NOEXCEPT
82233     {
82234       return std::tie( sType, pNext, samplerYcbcrConversion );
82235     }
82236 #endif
82237 
82238 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82239     auto operator<=>( PhysicalDeviceSamplerYcbcrConversionFeatures const & ) const = default;
82240 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures82241     bool operator==( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
82242     {
82243 #  if defined( VULKAN_HPP_USE_REFLECT )
82244       return this->reflect() == rhs.reflect();
82245 #  else
82246       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion );
82247 #  endif
82248     }
82249 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures82250     bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
82251     {
82252       return !operator==( rhs );
82253     }
82254 #endif
82255 
82256   public:
82257     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
82258     void *                              pNext                  = {};
82259     VULKAN_HPP_NAMESPACE::Bool32        samplerYcbcrConversion = {};
82260   };
82261 
82262   template <>
82263   struct CppType<StructureType, StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures>
82264   {
82265     using Type = PhysicalDeviceSamplerYcbcrConversionFeatures;
82266   };
82267 
82268   using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures;
82269 
82270   struct PhysicalDeviceScalarBlockLayoutFeatures
82271   {
82272     using NativeType = VkPhysicalDeviceScalarBlockLayoutFeatures;
82273 
82274     static const bool                                  allowDuplicate = false;
82275     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures;
82276 
82277 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceScalarBlockLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures82278     VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ = {},
82279                                                                   void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
82280       : pNext{ pNext_ }
82281       , scalarBlockLayout{ scalarBlockLayout_ }
82282     {
82283     }
82284 
82285     VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82286 
PhysicalDeviceScalarBlockLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures82287     PhysicalDeviceScalarBlockLayoutFeatures( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
82288       : PhysicalDeviceScalarBlockLayoutFeatures( *reinterpret_cast<PhysicalDeviceScalarBlockLayoutFeatures const *>( &rhs ) )
82289     {
82290     }
82291 
82292     PhysicalDeviceScalarBlockLayoutFeatures & operator=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82293 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82294 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures82295     PhysicalDeviceScalarBlockLayoutFeatures & operator=( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
82296     {
82297       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures const *>( &rhs );
82298       return *this;
82299     }
82300 
82301 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures82302     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82303     {
82304       pNext = pNext_;
82305       return *this;
82306     }
82307 
82308     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures &
setScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures82309       setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
82310     {
82311       scalarBlockLayout = scalarBlockLayout_;
82312       return *this;
82313     }
82314 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82315 
operator VkPhysicalDeviceScalarBlockLayoutFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures82316     operator VkPhysicalDeviceScalarBlockLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT
82317     {
82318       return *reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeatures *>( this );
82319     }
82320 
operator VkPhysicalDeviceScalarBlockLayoutFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures82321     operator VkPhysicalDeviceScalarBlockLayoutFeatures &() VULKAN_HPP_NOEXCEPT
82322     {
82323       return *reinterpret_cast<VkPhysicalDeviceScalarBlockLayoutFeatures *>( this );
82324     }
82325 
82326 #if defined( VULKAN_HPP_USE_REFLECT )
82327 #  if 14 <= VULKAN_HPP_CPP_VERSION
82328     auto
82329 #  else
82330     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82331 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures82332       reflect() const VULKAN_HPP_NOEXCEPT
82333     {
82334       return std::tie( sType, pNext, scalarBlockLayout );
82335     }
82336 #endif
82337 
82338 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82339     auto operator<=>( PhysicalDeviceScalarBlockLayoutFeatures const & ) const = default;
82340 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures82341     bool operator==( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
82342     {
82343 #  if defined( VULKAN_HPP_USE_REFLECT )
82344       return this->reflect() == rhs.reflect();
82345 #  else
82346       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( scalarBlockLayout == rhs.scalarBlockLayout );
82347 #  endif
82348     }
82349 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures82350     bool operator!=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
82351     {
82352       return !operator==( rhs );
82353     }
82354 #endif
82355 
82356   public:
82357     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures;
82358     void *                              pNext             = {};
82359     VULKAN_HPP_NAMESPACE::Bool32        scalarBlockLayout = {};
82360   };
82361 
82362   template <>
82363   struct CppType<StructureType, StructureType::ePhysicalDeviceScalarBlockLayoutFeatures>
82364   {
82365     using Type = PhysicalDeviceScalarBlockLayoutFeatures;
82366   };
82367 
82368   using PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
82369 
82370   struct PhysicalDeviceSchedulingControlsFeaturesARM
82371   {
82372     using NativeType = VkPhysicalDeviceSchedulingControlsFeaturesARM;
82373 
82374     static const bool                                  allowDuplicate = false;
82375     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM;
82376 
82377 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSchedulingControlsFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM82378     VULKAN_HPP_CONSTEXPR PhysicalDeviceSchedulingControlsFeaturesARM( VULKAN_HPP_NAMESPACE::Bool32 schedulingControls_ = {},
82379                                                                       void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
82380       : pNext{ pNext_ }
82381       , schedulingControls{ schedulingControls_ }
82382     {
82383     }
82384 
82385     VULKAN_HPP_CONSTEXPR PhysicalDeviceSchedulingControlsFeaturesARM( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82386 
PhysicalDeviceSchedulingControlsFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM82387     PhysicalDeviceSchedulingControlsFeaturesARM( VkPhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
82388       : PhysicalDeviceSchedulingControlsFeaturesARM( *reinterpret_cast<PhysicalDeviceSchedulingControlsFeaturesARM const *>( &rhs ) )
82389     {
82390     }
82391 
82392     PhysicalDeviceSchedulingControlsFeaturesARM & operator=( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82393 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82394 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM82395     PhysicalDeviceSchedulingControlsFeaturesARM & operator=( VkPhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
82396     {
82397       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM const *>( &rhs );
82398       return *this;
82399     }
82400 
82401 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM82402     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsFeaturesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82403     {
82404       pNext = pNext_;
82405       return *this;
82406     }
82407 
82408     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsFeaturesARM &
setSchedulingControlsVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM82409       setSchedulingControls( VULKAN_HPP_NAMESPACE::Bool32 schedulingControls_ ) VULKAN_HPP_NOEXCEPT
82410     {
82411       schedulingControls = schedulingControls_;
82412       return *this;
82413     }
82414 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82415 
operator VkPhysicalDeviceSchedulingControlsFeaturesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM82416     operator VkPhysicalDeviceSchedulingControlsFeaturesARM const &() const VULKAN_HPP_NOEXCEPT
82417     {
82418       return *reinterpret_cast<const VkPhysicalDeviceSchedulingControlsFeaturesARM *>( this );
82419     }
82420 
operator VkPhysicalDeviceSchedulingControlsFeaturesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM82421     operator VkPhysicalDeviceSchedulingControlsFeaturesARM &() VULKAN_HPP_NOEXCEPT
82422     {
82423       return *reinterpret_cast<VkPhysicalDeviceSchedulingControlsFeaturesARM *>( this );
82424     }
82425 
82426 #if defined( VULKAN_HPP_USE_REFLECT )
82427 #  if 14 <= VULKAN_HPP_CPP_VERSION
82428     auto
82429 #  else
82430     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82431 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM82432       reflect() const VULKAN_HPP_NOEXCEPT
82433     {
82434       return std::tie( sType, pNext, schedulingControls );
82435     }
82436 #endif
82437 
82438 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82439     auto operator<=>( PhysicalDeviceSchedulingControlsFeaturesARM const & ) const = default;
82440 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM82441     bool operator==( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
82442     {
82443 #  if defined( VULKAN_HPP_USE_REFLECT )
82444       return this->reflect() == rhs.reflect();
82445 #  else
82446       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( schedulingControls == rhs.schedulingControls );
82447 #  endif
82448     }
82449 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM82450     bool operator!=( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
82451     {
82452       return !operator==( rhs );
82453     }
82454 #endif
82455 
82456   public:
82457     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM;
82458     void *                              pNext              = {};
82459     VULKAN_HPP_NAMESPACE::Bool32        schedulingControls = {};
82460   };
82461 
82462   template <>
82463   struct CppType<StructureType, StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM>
82464   {
82465     using Type = PhysicalDeviceSchedulingControlsFeaturesARM;
82466   };
82467 
82468   struct PhysicalDeviceSchedulingControlsPropertiesARM
82469   {
82470     using NativeType = VkPhysicalDeviceSchedulingControlsPropertiesARM;
82471 
82472     static const bool                                  allowDuplicate = false;
82473     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM;
82474 
82475 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
82476     VULKAN_HPP_CONSTEXPR
PhysicalDeviceSchedulingControlsPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM82477       PhysicalDeviceSchedulingControlsPropertiesARM( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags_ = {},
82478                                                      void *                                                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
82479       : pNext{ pNext_ }
82480       , schedulingControlsFlags{ schedulingControlsFlags_ }
82481     {
82482     }
82483 
82484     VULKAN_HPP_CONSTEXPR
82485       PhysicalDeviceSchedulingControlsPropertiesARM( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82486 
PhysicalDeviceSchedulingControlsPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM82487     PhysicalDeviceSchedulingControlsPropertiesARM( VkPhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
82488       : PhysicalDeviceSchedulingControlsPropertiesARM( *reinterpret_cast<PhysicalDeviceSchedulingControlsPropertiesARM const *>( &rhs ) )
82489     {
82490     }
82491 
82492     PhysicalDeviceSchedulingControlsPropertiesARM & operator=( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82493 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82494 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM82495     PhysicalDeviceSchedulingControlsPropertiesARM & operator=( VkPhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
82496     {
82497       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM const *>( &rhs );
82498       return *this;
82499     }
82500 
82501 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM82502     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsPropertiesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82503     {
82504       pNext = pNext_;
82505       return *this;
82506     }
82507 
82508     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsPropertiesARM &
setSchedulingControlsFlagsVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM82509       setSchedulingControlsFlags( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags_ ) VULKAN_HPP_NOEXCEPT
82510     {
82511       schedulingControlsFlags = schedulingControlsFlags_;
82512       return *this;
82513     }
82514 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82515 
operator VkPhysicalDeviceSchedulingControlsPropertiesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM82516     operator VkPhysicalDeviceSchedulingControlsPropertiesARM const &() const VULKAN_HPP_NOEXCEPT
82517     {
82518       return *reinterpret_cast<const VkPhysicalDeviceSchedulingControlsPropertiesARM *>( this );
82519     }
82520 
operator VkPhysicalDeviceSchedulingControlsPropertiesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM82521     operator VkPhysicalDeviceSchedulingControlsPropertiesARM &() VULKAN_HPP_NOEXCEPT
82522     {
82523       return *reinterpret_cast<VkPhysicalDeviceSchedulingControlsPropertiesARM *>( this );
82524     }
82525 
82526 #if defined( VULKAN_HPP_USE_REFLECT )
82527 #  if 14 <= VULKAN_HPP_CPP_VERSION
82528     auto
82529 #  else
82530     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM const &>
82531 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM82532       reflect() const VULKAN_HPP_NOEXCEPT
82533     {
82534       return std::tie( sType, pNext, schedulingControlsFlags );
82535     }
82536 #endif
82537 
82538 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82539     auto operator<=>( PhysicalDeviceSchedulingControlsPropertiesARM const & ) const = default;
82540 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM82541     bool operator==( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
82542     {
82543 #  if defined( VULKAN_HPP_USE_REFLECT )
82544       return this->reflect() == rhs.reflect();
82545 #  else
82546       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( schedulingControlsFlags == rhs.schedulingControlsFlags );
82547 #  endif
82548     }
82549 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM82550     bool operator!=( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
82551     {
82552       return !operator==( rhs );
82553     }
82554 #endif
82555 
82556   public:
82557     VULKAN_HPP_NAMESPACE::StructureType                            sType                   = StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM;
82558     void *                                                         pNext                   = {};
82559     VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags = {};
82560   };
82561 
82562   template <>
82563   struct CppType<StructureType, StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM>
82564   {
82565     using Type = PhysicalDeviceSchedulingControlsPropertiesARM;
82566   };
82567 
82568   struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures
82569   {
82570     using NativeType = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
82571 
82572     static const bool                                  allowDuplicate = false;
82573     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures;
82574 
82575 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSeparateDepthStencilLayoutsFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures82576     VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ = {},
82577                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
82578       : pNext{ pNext_ }
82579       , separateDepthStencilLayouts{ separateDepthStencilLayouts_ }
82580     {
82581     }
82582 
82583     VULKAN_HPP_CONSTEXPR
82584       PhysicalDeviceSeparateDepthStencilLayoutsFeatures( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82585 
PhysicalDeviceSeparateDepthStencilLayoutsFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures82586     PhysicalDeviceSeparateDepthStencilLayoutsFeatures( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
82587       : PhysicalDeviceSeparateDepthStencilLayoutsFeatures( *reinterpret_cast<PhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>( &rhs ) )
82588     {
82589     }
82590 
82591     PhysicalDeviceSeparateDepthStencilLayoutsFeatures &
82592       operator=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82593 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82594 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures82595     PhysicalDeviceSeparateDepthStencilLayoutsFeatures & operator=( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
82596     {
82597       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>( &rhs );
82598       return *this;
82599     }
82600 
82601 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures82602     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82603     {
82604       pNext = pNext_;
82605       return *this;
82606     }
82607 
82608     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures &
setSeparateDepthStencilLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures82609       setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT
82610     {
82611       separateDepthStencilLayouts = separateDepthStencilLayouts_;
82612       return *this;
82613     }
82614 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82615 
operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures82616     operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &() const VULKAN_HPP_NOEXCEPT
82617     {
82618       return *reinterpret_cast<const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *>( this );
82619     }
82620 
operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures82621     operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &() VULKAN_HPP_NOEXCEPT
82622     {
82623       return *reinterpret_cast<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *>( this );
82624     }
82625 
82626 #if defined( VULKAN_HPP_USE_REFLECT )
82627 #  if 14 <= VULKAN_HPP_CPP_VERSION
82628     auto
82629 #  else
82630     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82631 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures82632       reflect() const VULKAN_HPP_NOEXCEPT
82633     {
82634       return std::tie( sType, pNext, separateDepthStencilLayouts );
82635     }
82636 #endif
82637 
82638 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82639     auto operator<=>( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & ) const = default;
82640 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures82641     bool operator==( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
82642     {
82643 #  if defined( VULKAN_HPP_USE_REFLECT )
82644       return this->reflect() == rhs.reflect();
82645 #  else
82646       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts );
82647 #  endif
82648     }
82649 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures82650     bool operator!=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
82651     {
82652       return !operator==( rhs );
82653     }
82654 #endif
82655 
82656   public:
82657     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures;
82658     void *                              pNext                       = {};
82659     VULKAN_HPP_NAMESPACE::Bool32        separateDepthStencilLayouts = {};
82660   };
82661 
82662   template <>
82663   struct CppType<StructureType, StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures>
82664   {
82665     using Type = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
82666   };
82667 
82668   using PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
82669 
82670   struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
82671   {
82672     using NativeType = VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
82673 
82674     static const bool                                  allowDuplicate = false;
82675     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
82676 
82677 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicFloat16VectorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV82678     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16VectorAtomics_ = {},
82679                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
82680       : pNext{ pNext_ }
82681       , shaderFloat16VectorAtomics{ shaderFloat16VectorAtomics_ }
82682     {
82683     }
82684 
82685     VULKAN_HPP_CONSTEXPR
82686       PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82687 
PhysicalDeviceShaderAtomicFloat16VectorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV82688     PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
82689       : PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( *reinterpret_cast<PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const *>( &rhs ) )
82690     {
82691     }
82692 
82693     PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV &
82694       operator=( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82695 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82696 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV82697     PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV & operator=( VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
82698     {
82699       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const *>( &rhs );
82700       return *this;
82701     }
82702 
82703 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV82704     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82705     {
82706       pNext = pNext_;
82707       return *this;
82708     }
82709 
82710     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV &
setShaderFloat16VectorAtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV82711       setShaderFloat16VectorAtomics( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16VectorAtomics_ ) VULKAN_HPP_NOEXCEPT
82712     {
82713       shaderFloat16VectorAtomics = shaderFloat16VectorAtomics_;
82714       return *this;
82715     }
82716 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82717 
operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV82718     operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
82719     {
82720       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV *>( this );
82721     }
82722 
operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV82723     operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV &() VULKAN_HPP_NOEXCEPT
82724     {
82725       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV *>( this );
82726     }
82727 
82728 #if defined( VULKAN_HPP_USE_REFLECT )
82729 #  if 14 <= VULKAN_HPP_CPP_VERSION
82730     auto
82731 #  else
82732     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82733 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV82734       reflect() const VULKAN_HPP_NOEXCEPT
82735     {
82736       return std::tie( sType, pNext, shaderFloat16VectorAtomics );
82737     }
82738 #endif
82739 
82740 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82741     auto operator<=>( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & ) const = default;
82742 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV82743     bool operator==( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
82744     {
82745 #  if defined( VULKAN_HPP_USE_REFLECT )
82746       return this->reflect() == rhs.reflect();
82747 #  else
82748       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloat16VectorAtomics == rhs.shaderFloat16VectorAtomics );
82749 #  endif
82750     }
82751 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV82752     bool operator!=( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
82753     {
82754       return !operator==( rhs );
82755     }
82756 #endif
82757 
82758   public:
82759     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
82760     void *                              pNext                      = {};
82761     VULKAN_HPP_NAMESPACE::Bool32        shaderFloat16VectorAtomics = {};
82762   };
82763 
82764   template <>
82765   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV>
82766   {
82767     using Type = PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
82768   };
82769 
82770   struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT
82771   {
82772     using NativeType = VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT;
82773 
82774     static const bool                                  allowDuplicate = false;
82775     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT;
82776 
82777 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicFloat2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82778     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat2FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16Atomics_      = {},
82779                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicAdd_    = {},
82780                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicMinMax_ = {},
82781                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicMinMax_ = {},
82782                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicMinMax_ = {},
82783                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16Atomics_      = {},
82784                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicAdd_    = {},
82785                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicMinMax_ = {},
82786                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicMinMax_ = {},
82787                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicMinMax_ = {},
82788                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicMinMax_  = {},
82789                                                                       VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicMinMax_  = {},
82790                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
82791       : pNext{ pNext_ }
82792       , shaderBufferFloat16Atomics{ shaderBufferFloat16Atomics_ }
82793       , shaderBufferFloat16AtomicAdd{ shaderBufferFloat16AtomicAdd_ }
82794       , shaderBufferFloat16AtomicMinMax{ shaderBufferFloat16AtomicMinMax_ }
82795       , shaderBufferFloat32AtomicMinMax{ shaderBufferFloat32AtomicMinMax_ }
82796       , shaderBufferFloat64AtomicMinMax{ shaderBufferFloat64AtomicMinMax_ }
82797       , shaderSharedFloat16Atomics{ shaderSharedFloat16Atomics_ }
82798       , shaderSharedFloat16AtomicAdd{ shaderSharedFloat16AtomicAdd_ }
82799       , shaderSharedFloat16AtomicMinMax{ shaderSharedFloat16AtomicMinMax_ }
82800       , shaderSharedFloat32AtomicMinMax{ shaderSharedFloat32AtomicMinMax_ }
82801       , shaderSharedFloat64AtomicMinMax{ shaderSharedFloat64AtomicMinMax_ }
82802       , shaderImageFloat32AtomicMinMax{ shaderImageFloat32AtomicMinMax_ }
82803       , sparseImageFloat32AtomicMinMax{ sparseImageFloat32AtomicMinMax_ }
82804     {
82805     }
82806 
82807     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat2FeaturesEXT( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82808 
PhysicalDeviceShaderAtomicFloat2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82809     PhysicalDeviceShaderAtomicFloat2FeaturesEXT( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
82810       : PhysicalDeviceShaderAtomicFloat2FeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderAtomicFloat2FeaturesEXT const *>( &rhs ) )
82811     {
82812     }
82813 
82814     PhysicalDeviceShaderAtomicFloat2FeaturesEXT & operator=( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82815 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82816 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82817     PhysicalDeviceShaderAtomicFloat2FeaturesEXT & operator=( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
82818     {
82819       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT const *>( &rhs );
82820       return *this;
82821     }
82822 
82823 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82824     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82825     {
82826       pNext = pNext_;
82827       return *this;
82828     }
82829 
82830     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat16AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82831       setShaderBufferFloat16Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16Atomics_ ) VULKAN_HPP_NOEXCEPT
82832     {
82833       shaderBufferFloat16Atomics = shaderBufferFloat16Atomics_;
82834       return *this;
82835     }
82836 
82837     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat16AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82838       setShaderBufferFloat16AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
82839     {
82840       shaderBufferFloat16AtomicAdd = shaderBufferFloat16AtomicAdd_;
82841       return *this;
82842     }
82843 
82844     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat16AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82845       setShaderBufferFloat16AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
82846     {
82847       shaderBufferFloat16AtomicMinMax = shaderBufferFloat16AtomicMinMax_;
82848       return *this;
82849     }
82850 
82851     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82852       setShaderBufferFloat32AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
82853     {
82854       shaderBufferFloat32AtomicMinMax = shaderBufferFloat32AtomicMinMax_;
82855       return *this;
82856     }
82857 
82858     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat64AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82859       setShaderBufferFloat64AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
82860     {
82861       shaderBufferFloat64AtomicMinMax = shaderBufferFloat64AtomicMinMax_;
82862       return *this;
82863     }
82864 
82865     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat16AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82866       setShaderSharedFloat16Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16Atomics_ ) VULKAN_HPP_NOEXCEPT
82867     {
82868       shaderSharedFloat16Atomics = shaderSharedFloat16Atomics_;
82869       return *this;
82870     }
82871 
82872     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat16AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82873       setShaderSharedFloat16AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
82874     {
82875       shaderSharedFloat16AtomicAdd = shaderSharedFloat16AtomicAdd_;
82876       return *this;
82877     }
82878 
82879     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat16AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82880       setShaderSharedFloat16AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
82881     {
82882       shaderSharedFloat16AtomicMinMax = shaderSharedFloat16AtomicMinMax_;
82883       return *this;
82884     }
82885 
82886     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82887       setShaderSharedFloat32AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
82888     {
82889       shaderSharedFloat32AtomicMinMax = shaderSharedFloat32AtomicMinMax_;
82890       return *this;
82891     }
82892 
82893     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat64AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82894       setShaderSharedFloat64AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
82895     {
82896       shaderSharedFloat64AtomicMinMax = shaderSharedFloat64AtomicMinMax_;
82897       return *this;
82898     }
82899 
82900     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderImageFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82901       setShaderImageFloat32AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
82902     {
82903       shaderImageFloat32AtomicMinMax = shaderImageFloat32AtomicMinMax_;
82904       return *this;
82905     }
82906 
82907     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setSparseImageFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82908       setSparseImageFloat32AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
82909     {
82910       sparseImageFloat32AtomicMinMax = sparseImageFloat32AtomicMinMax_;
82911       return *this;
82912     }
82913 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82914 
operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82915     operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
82916     {
82917       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *>( this );
82918     }
82919 
operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82920     operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
82921     {
82922       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *>( this );
82923     }
82924 
82925 #if defined( VULKAN_HPP_USE_REFLECT )
82926 #  if 14 <= VULKAN_HPP_CPP_VERSION
82927     auto
82928 #  else
82929     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
82930                void * const &,
82931                VULKAN_HPP_NAMESPACE::Bool32 const &,
82932                VULKAN_HPP_NAMESPACE::Bool32 const &,
82933                VULKAN_HPP_NAMESPACE::Bool32 const &,
82934                VULKAN_HPP_NAMESPACE::Bool32 const &,
82935                VULKAN_HPP_NAMESPACE::Bool32 const &,
82936                VULKAN_HPP_NAMESPACE::Bool32 const &,
82937                VULKAN_HPP_NAMESPACE::Bool32 const &,
82938                VULKAN_HPP_NAMESPACE::Bool32 const &,
82939                VULKAN_HPP_NAMESPACE::Bool32 const &,
82940                VULKAN_HPP_NAMESPACE::Bool32 const &,
82941                VULKAN_HPP_NAMESPACE::Bool32 const &,
82942                VULKAN_HPP_NAMESPACE::Bool32 const &>
82943 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82944       reflect() const VULKAN_HPP_NOEXCEPT
82945     {
82946       return std::tie( sType,
82947                        pNext,
82948                        shaderBufferFloat16Atomics,
82949                        shaderBufferFloat16AtomicAdd,
82950                        shaderBufferFloat16AtomicMinMax,
82951                        shaderBufferFloat32AtomicMinMax,
82952                        shaderBufferFloat64AtomicMinMax,
82953                        shaderSharedFloat16Atomics,
82954                        shaderSharedFloat16AtomicAdd,
82955                        shaderSharedFloat16AtomicMinMax,
82956                        shaderSharedFloat32AtomicMinMax,
82957                        shaderSharedFloat64AtomicMinMax,
82958                        shaderImageFloat32AtomicMinMax,
82959                        sparseImageFloat32AtomicMinMax );
82960     }
82961 #endif
82962 
82963 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82964     auto operator<=>( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & ) const = default;
82965 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82966     bool operator==( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
82967     {
82968 #  if defined( VULKAN_HPP_USE_REFLECT )
82969       return this->reflect() == rhs.reflect();
82970 #  else
82971       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBufferFloat16Atomics == rhs.shaderBufferFloat16Atomics ) &&
82972              ( shaderBufferFloat16AtomicAdd == rhs.shaderBufferFloat16AtomicAdd ) &&
82973              ( shaderBufferFloat16AtomicMinMax == rhs.shaderBufferFloat16AtomicMinMax ) &&
82974              ( shaderBufferFloat32AtomicMinMax == rhs.shaderBufferFloat32AtomicMinMax ) &&
82975              ( shaderBufferFloat64AtomicMinMax == rhs.shaderBufferFloat64AtomicMinMax ) && ( shaderSharedFloat16Atomics == rhs.shaderSharedFloat16Atomics ) &&
82976              ( shaderSharedFloat16AtomicAdd == rhs.shaderSharedFloat16AtomicAdd ) &&
82977              ( shaderSharedFloat16AtomicMinMax == rhs.shaderSharedFloat16AtomicMinMax ) &&
82978              ( shaderSharedFloat32AtomicMinMax == rhs.shaderSharedFloat32AtomicMinMax ) &&
82979              ( shaderSharedFloat64AtomicMinMax == rhs.shaderSharedFloat64AtomicMinMax ) &&
82980              ( shaderImageFloat32AtomicMinMax == rhs.shaderImageFloat32AtomicMinMax ) &&
82981              ( sparseImageFloat32AtomicMinMax == rhs.sparseImageFloat32AtomicMinMax );
82982 #  endif
82983     }
82984 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT82985     bool operator!=( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
82986     {
82987       return !operator==( rhs );
82988     }
82989 #endif
82990 
82991   public:
82992     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT;
82993     void *                              pNext                           = {};
82994     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat16Atomics      = {};
82995     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat16AtomicAdd    = {};
82996     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat16AtomicMinMax = {};
82997     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat32AtomicMinMax = {};
82998     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat64AtomicMinMax = {};
82999     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat16Atomics      = {};
83000     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat16AtomicAdd    = {};
83001     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat16AtomicMinMax = {};
83002     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat32AtomicMinMax = {};
83003     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat64AtomicMinMax = {};
83004     VULKAN_HPP_NAMESPACE::Bool32        shaderImageFloat32AtomicMinMax  = {};
83005     VULKAN_HPP_NAMESPACE::Bool32        sparseImageFloat32AtomicMinMax  = {};
83006   };
83007 
83008   template <>
83009   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT>
83010   {
83011     using Type = PhysicalDeviceShaderAtomicFloat2FeaturesEXT;
83012   };
83013 
83014   struct PhysicalDeviceShaderAtomicFloatFeaturesEXT
83015   {
83016     using NativeType = VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
83017 
83018     static const bool                                  allowDuplicate = false;
83019     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT;
83020 
83021 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicFloatFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83022     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_   = {},
83023                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ = {},
83024                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_   = {},
83025                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ = {},
83026                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_   = {},
83027                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ = {},
83028                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_   = {},
83029                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ = {},
83030                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_    = {},
83031                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_  = {},
83032                                                                      VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_    = {},
83033                                                                      VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_  = {},
83034                                                                      void *                       pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
83035       : pNext{ pNext_ }
83036       , shaderBufferFloat32Atomics{ shaderBufferFloat32Atomics_ }
83037       , shaderBufferFloat32AtomicAdd{ shaderBufferFloat32AtomicAdd_ }
83038       , shaderBufferFloat64Atomics{ shaderBufferFloat64Atomics_ }
83039       , shaderBufferFloat64AtomicAdd{ shaderBufferFloat64AtomicAdd_ }
83040       , shaderSharedFloat32Atomics{ shaderSharedFloat32Atomics_ }
83041       , shaderSharedFloat32AtomicAdd{ shaderSharedFloat32AtomicAdd_ }
83042       , shaderSharedFloat64Atomics{ shaderSharedFloat64Atomics_ }
83043       , shaderSharedFloat64AtomicAdd{ shaderSharedFloat64AtomicAdd_ }
83044       , shaderImageFloat32Atomics{ shaderImageFloat32Atomics_ }
83045       , shaderImageFloat32AtomicAdd{ shaderImageFloat32AtomicAdd_ }
83046       , sparseImageFloat32Atomics{ sparseImageFloat32Atomics_ }
83047       , sparseImageFloat32AtomicAdd{ sparseImageFloat32AtomicAdd_ }
83048     {
83049     }
83050 
83051     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83052 
PhysicalDeviceShaderAtomicFloatFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83053     PhysicalDeviceShaderAtomicFloatFeaturesEXT( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
83054       : PhysicalDeviceShaderAtomicFloatFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderAtomicFloatFeaturesEXT const *>( &rhs ) )
83055     {
83056     }
83057 
83058     PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83059 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83060 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83061     PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
83062     {
83063       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT const *>( &rhs );
83064       return *this;
83065     }
83066 
83067 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83068     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83069     {
83070       pNext = pNext_;
83071       return *this;
83072     }
83073 
83074     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83075       setShaderBufferFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
83076     {
83077       shaderBufferFloat32Atomics = shaderBufferFloat32Atomics_;
83078       return *this;
83079     }
83080 
83081     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83082       setShaderBufferFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
83083     {
83084       shaderBufferFloat32AtomicAdd = shaderBufferFloat32AtomicAdd_;
83085       return *this;
83086     }
83087 
83088     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83089       setShaderBufferFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT
83090     {
83091       shaderBufferFloat64Atomics = shaderBufferFloat64Atomics_;
83092       return *this;
83093     }
83094 
83095     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat64AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83096       setShaderBufferFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
83097     {
83098       shaderBufferFloat64AtomicAdd = shaderBufferFloat64AtomicAdd_;
83099       return *this;
83100     }
83101 
83102     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83103       setShaderSharedFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
83104     {
83105       shaderSharedFloat32Atomics = shaderSharedFloat32Atomics_;
83106       return *this;
83107     }
83108 
83109     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83110       setShaderSharedFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
83111     {
83112       shaderSharedFloat32AtomicAdd = shaderSharedFloat32AtomicAdd_;
83113       return *this;
83114     }
83115 
83116     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83117       setShaderSharedFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT
83118     {
83119       shaderSharedFloat64Atomics = shaderSharedFloat64Atomics_;
83120       return *this;
83121     }
83122 
83123     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat64AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83124       setShaderSharedFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
83125     {
83126       shaderSharedFloat64AtomicAdd = shaderSharedFloat64AtomicAdd_;
83127       return *this;
83128     }
83129 
83130     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderImageFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83131       setShaderImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
83132     {
83133       shaderImageFloat32Atomics = shaderImageFloat32Atomics_;
83134       return *this;
83135     }
83136 
83137     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderImageFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83138       setShaderImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
83139     {
83140       shaderImageFloat32AtomicAdd = shaderImageFloat32AtomicAdd_;
83141       return *this;
83142     }
83143 
83144     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setSparseImageFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83145       setSparseImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
83146     {
83147       sparseImageFloat32Atomics = sparseImageFloat32Atomics_;
83148       return *this;
83149     }
83150 
83151     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setSparseImageFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83152       setSparseImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
83153     {
83154       sparseImageFloat32AtomicAdd = sparseImageFloat32AtomicAdd_;
83155       return *this;
83156     }
83157 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83158 
operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83159     operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
83160     {
83161       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *>( this );
83162     }
83163 
operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83164     operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &() VULKAN_HPP_NOEXCEPT
83165     {
83166       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *>( this );
83167     }
83168 
83169 #if defined( VULKAN_HPP_USE_REFLECT )
83170 #  if 14 <= VULKAN_HPP_CPP_VERSION
83171     auto
83172 #  else
83173     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
83174                void * const &,
83175                VULKAN_HPP_NAMESPACE::Bool32 const &,
83176                VULKAN_HPP_NAMESPACE::Bool32 const &,
83177                VULKAN_HPP_NAMESPACE::Bool32 const &,
83178                VULKAN_HPP_NAMESPACE::Bool32 const &,
83179                VULKAN_HPP_NAMESPACE::Bool32 const &,
83180                VULKAN_HPP_NAMESPACE::Bool32 const &,
83181                VULKAN_HPP_NAMESPACE::Bool32 const &,
83182                VULKAN_HPP_NAMESPACE::Bool32 const &,
83183                VULKAN_HPP_NAMESPACE::Bool32 const &,
83184                VULKAN_HPP_NAMESPACE::Bool32 const &,
83185                VULKAN_HPP_NAMESPACE::Bool32 const &,
83186                VULKAN_HPP_NAMESPACE::Bool32 const &>
83187 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83188       reflect() const VULKAN_HPP_NOEXCEPT
83189     {
83190       return std::tie( sType,
83191                        pNext,
83192                        shaderBufferFloat32Atomics,
83193                        shaderBufferFloat32AtomicAdd,
83194                        shaderBufferFloat64Atomics,
83195                        shaderBufferFloat64AtomicAdd,
83196                        shaderSharedFloat32Atomics,
83197                        shaderSharedFloat32AtomicAdd,
83198                        shaderSharedFloat64Atomics,
83199                        shaderSharedFloat64AtomicAdd,
83200                        shaderImageFloat32Atomics,
83201                        shaderImageFloat32AtomicAdd,
83202                        sparseImageFloat32Atomics,
83203                        sparseImageFloat32AtomicAdd );
83204     }
83205 #endif
83206 
83207 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83208     auto operator<=>( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & ) const = default;
83209 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83210     bool operator==( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83211     {
83212 #  if defined( VULKAN_HPP_USE_REFLECT )
83213       return this->reflect() == rhs.reflect();
83214 #  else
83215       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBufferFloat32Atomics == rhs.shaderBufferFloat32Atomics ) &&
83216              ( shaderBufferFloat32AtomicAdd == rhs.shaderBufferFloat32AtomicAdd ) && ( shaderBufferFloat64Atomics == rhs.shaderBufferFloat64Atomics ) &&
83217              ( shaderBufferFloat64AtomicAdd == rhs.shaderBufferFloat64AtomicAdd ) && ( shaderSharedFloat32Atomics == rhs.shaderSharedFloat32Atomics ) &&
83218              ( shaderSharedFloat32AtomicAdd == rhs.shaderSharedFloat32AtomicAdd ) && ( shaderSharedFloat64Atomics == rhs.shaderSharedFloat64Atomics ) &&
83219              ( shaderSharedFloat64AtomicAdd == rhs.shaderSharedFloat64AtomicAdd ) && ( shaderImageFloat32Atomics == rhs.shaderImageFloat32Atomics ) &&
83220              ( shaderImageFloat32AtomicAdd == rhs.shaderImageFloat32AtomicAdd ) && ( sparseImageFloat32Atomics == rhs.sparseImageFloat32Atomics ) &&
83221              ( sparseImageFloat32AtomicAdd == rhs.sparseImageFloat32AtomicAdd );
83222 #  endif
83223     }
83224 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT83225     bool operator!=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83226     {
83227       return !operator==( rhs );
83228     }
83229 #endif
83230 
83231   public:
83232     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT;
83233     void *                              pNext                        = {};
83234     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat32Atomics   = {};
83235     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat32AtomicAdd = {};
83236     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat64Atomics   = {};
83237     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat64AtomicAdd = {};
83238     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat32Atomics   = {};
83239     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat32AtomicAdd = {};
83240     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat64Atomics   = {};
83241     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat64AtomicAdd = {};
83242     VULKAN_HPP_NAMESPACE::Bool32        shaderImageFloat32Atomics    = {};
83243     VULKAN_HPP_NAMESPACE::Bool32        shaderImageFloat32AtomicAdd  = {};
83244     VULKAN_HPP_NAMESPACE::Bool32        sparseImageFloat32Atomics    = {};
83245     VULKAN_HPP_NAMESPACE::Bool32        sparseImageFloat32AtomicAdd  = {};
83246   };
83247 
83248   template <>
83249   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT>
83250   {
83251     using Type = PhysicalDeviceShaderAtomicFloatFeaturesEXT;
83252   };
83253 
83254   struct PhysicalDeviceShaderAtomicInt64Features
83255   {
83256     using NativeType = VkPhysicalDeviceShaderAtomicInt64Features;
83257 
83258     static const bool                                  allowDuplicate = false;
83259     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderAtomicInt64Features;
83260 
83261 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicInt64FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83262     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ = {},
83263                                                                   VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ = {},
83264                                                                   void *                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
83265       : pNext{ pNext_ }
83266       , shaderBufferInt64Atomics{ shaderBufferInt64Atomics_ }
83267       , shaderSharedInt64Atomics{ shaderSharedInt64Atomics_ }
83268     {
83269     }
83270 
83271     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83272 
PhysicalDeviceShaderAtomicInt64FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83273     PhysicalDeviceShaderAtomicInt64Features( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
83274       : PhysicalDeviceShaderAtomicInt64Features( *reinterpret_cast<PhysicalDeviceShaderAtomicInt64Features const *>( &rhs ) )
83275     {
83276     }
83277 
83278     PhysicalDeviceShaderAtomicInt64Features & operator=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83279 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83280 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83281     PhysicalDeviceShaderAtomicInt64Features & operator=( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
83282     {
83283       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features const *>( &rhs );
83284       return *this;
83285     }
83286 
83287 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83288     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83289     {
83290       pNext = pNext_;
83291       return *this;
83292     }
83293 
83294     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features &
setShaderBufferInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83295       setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
83296     {
83297       shaderBufferInt64Atomics = shaderBufferInt64Atomics_;
83298       return *this;
83299     }
83300 
83301     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features &
setShaderSharedInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83302       setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
83303     {
83304       shaderSharedInt64Atomics = shaderSharedInt64Atomics_;
83305       return *this;
83306     }
83307 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83308 
operator VkPhysicalDeviceShaderAtomicInt64Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83309     operator VkPhysicalDeviceShaderAtomicInt64Features const &() const VULKAN_HPP_NOEXCEPT
83310     {
83311       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64Features *>( this );
83312     }
83313 
operator VkPhysicalDeviceShaderAtomicInt64Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83314     operator VkPhysicalDeviceShaderAtomicInt64Features &() VULKAN_HPP_NOEXCEPT
83315     {
83316       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64Features *>( this );
83317     }
83318 
83319 #if defined( VULKAN_HPP_USE_REFLECT )
83320 #  if 14 <= VULKAN_HPP_CPP_VERSION
83321     auto
83322 #  else
83323     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83324 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83325       reflect() const VULKAN_HPP_NOEXCEPT
83326     {
83327       return std::tie( sType, pNext, shaderBufferInt64Atomics, shaderSharedInt64Atomics );
83328     }
83329 #endif
83330 
83331 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83332     auto operator<=>( PhysicalDeviceShaderAtomicInt64Features const & ) const = default;
83333 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83334     bool operator==( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT
83335     {
83336 #  if defined( VULKAN_HPP_USE_REFLECT )
83337       return this->reflect() == rhs.reflect();
83338 #  else
83339       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics ) &&
83340              ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics );
83341 #  endif
83342     }
83343 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features83344     bool operator!=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT
83345     {
83346       return !operator==( rhs );
83347     }
83348 #endif
83349 
83350   public:
83351     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceShaderAtomicInt64Features;
83352     void *                              pNext                    = {};
83353     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferInt64Atomics = {};
83354     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedInt64Atomics = {};
83355   };
83356 
83357   template <>
83358   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicInt64Features>
83359   {
83360     using Type = PhysicalDeviceShaderAtomicInt64Features;
83361   };
83362 
83363   using PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
83364 
83365   struct PhysicalDeviceShaderClockFeaturesKHR
83366   {
83367     using NativeType = VkPhysicalDeviceShaderClockFeaturesKHR;
83368 
83369     static const bool                                  allowDuplicate = false;
83370     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderClockFeaturesKHR;
83371 
83372 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderClockFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83373     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ = {},
83374                                                                VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_   = {},
83375                                                                void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
83376       : pNext{ pNext_ }
83377       , shaderSubgroupClock{ shaderSubgroupClock_ }
83378       , shaderDeviceClock{ shaderDeviceClock_ }
83379     {
83380     }
83381 
83382     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83383 
PhysicalDeviceShaderClockFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83384     PhysicalDeviceShaderClockFeaturesKHR( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83385       : PhysicalDeviceShaderClockFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderClockFeaturesKHR const *>( &rhs ) )
83386     {
83387     }
83388 
83389     PhysicalDeviceShaderClockFeaturesKHR & operator=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83390 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83391 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83392     PhysicalDeviceShaderClockFeaturesKHR & operator=( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83393     {
83394       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR const *>( &rhs );
83395       return *this;
83396     }
83397 
83398 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83399     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83400     {
83401       pNext = pNext_;
83402       return *this;
83403     }
83404 
83405     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR &
setShaderSubgroupClockVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83406       setShaderSubgroupClock( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ ) VULKAN_HPP_NOEXCEPT
83407     {
83408       shaderSubgroupClock = shaderSubgroupClock_;
83409       return *this;
83410     }
83411 
setShaderDeviceClockVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83412     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setShaderDeviceClock( VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_ ) VULKAN_HPP_NOEXCEPT
83413     {
83414       shaderDeviceClock = shaderDeviceClock_;
83415       return *this;
83416     }
83417 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83418 
operator VkPhysicalDeviceShaderClockFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83419     operator VkPhysicalDeviceShaderClockFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
83420     {
83421       return *reinterpret_cast<const VkPhysicalDeviceShaderClockFeaturesKHR *>( this );
83422     }
83423 
operator VkPhysicalDeviceShaderClockFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83424     operator VkPhysicalDeviceShaderClockFeaturesKHR &() VULKAN_HPP_NOEXCEPT
83425     {
83426       return *reinterpret_cast<VkPhysicalDeviceShaderClockFeaturesKHR *>( this );
83427     }
83428 
83429 #if defined( VULKAN_HPP_USE_REFLECT )
83430 #  if 14 <= VULKAN_HPP_CPP_VERSION
83431     auto
83432 #  else
83433     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83434 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83435       reflect() const VULKAN_HPP_NOEXCEPT
83436     {
83437       return std::tie( sType, pNext, shaderSubgroupClock, shaderDeviceClock );
83438     }
83439 #endif
83440 
83441 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83442     auto operator<=>( PhysicalDeviceShaderClockFeaturesKHR const & ) const = default;
83443 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83444     bool operator==( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83445     {
83446 #  if defined( VULKAN_HPP_USE_REFLECT )
83447       return this->reflect() == rhs.reflect();
83448 #  else
83449       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupClock == rhs.shaderSubgroupClock ) &&
83450              ( shaderDeviceClock == rhs.shaderDeviceClock );
83451 #  endif
83452     }
83453 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR83454     bool operator!=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83455     {
83456       return !operator==( rhs );
83457     }
83458 #endif
83459 
83460   public:
83461     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceShaderClockFeaturesKHR;
83462     void *                              pNext               = {};
83463     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupClock = {};
83464     VULKAN_HPP_NAMESPACE::Bool32        shaderDeviceClock   = {};
83465   };
83466 
83467   template <>
83468   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderClockFeaturesKHR>
83469   {
83470     using Type = PhysicalDeviceShaderClockFeaturesKHR;
83471   };
83472 
83473   struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM
83474   {
83475     using NativeType = VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM;
83476 
83477     static const bool                                  allowDuplicate = false;
83478     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderCoreBuiltinsFeaturesARM;
83479 
83480 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCoreBuiltinsFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM83481     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreBuiltinsFeaturesARM( VULKAN_HPP_NAMESPACE::Bool32 shaderCoreBuiltins_ = {},
83482                                                                       void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
83483       : pNext{ pNext_ }
83484       , shaderCoreBuiltins{ shaderCoreBuiltins_ }
83485     {
83486     }
83487 
83488     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreBuiltinsFeaturesARM( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83489 
PhysicalDeviceShaderCoreBuiltinsFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM83490     PhysicalDeviceShaderCoreBuiltinsFeaturesARM( VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
83491       : PhysicalDeviceShaderCoreBuiltinsFeaturesARM( *reinterpret_cast<PhysicalDeviceShaderCoreBuiltinsFeaturesARM const *>( &rhs ) )
83492     {
83493     }
83494 
83495     PhysicalDeviceShaderCoreBuiltinsFeaturesARM & operator=( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83496 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83497 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM83498     PhysicalDeviceShaderCoreBuiltinsFeaturesARM & operator=( VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
83499     {
83500       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM const *>( &rhs );
83501       return *this;
83502     }
83503 
83504 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM83505     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCoreBuiltinsFeaturesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83506     {
83507       pNext = pNext_;
83508       return *this;
83509     }
83510 
83511     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCoreBuiltinsFeaturesARM &
setShaderCoreBuiltinsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM83512       setShaderCoreBuiltins( VULKAN_HPP_NAMESPACE::Bool32 shaderCoreBuiltins_ ) VULKAN_HPP_NOEXCEPT
83513     {
83514       shaderCoreBuiltins = shaderCoreBuiltins_;
83515       return *this;
83516     }
83517 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83518 
operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM83519     operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const &() const VULKAN_HPP_NOEXCEPT
83520     {
83521       return *reinterpret_cast<const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *>( this );
83522     }
83523 
operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM83524     operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM &() VULKAN_HPP_NOEXCEPT
83525     {
83526       return *reinterpret_cast<VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *>( this );
83527     }
83528 
83529 #if defined( VULKAN_HPP_USE_REFLECT )
83530 #  if 14 <= VULKAN_HPP_CPP_VERSION
83531     auto
83532 #  else
83533     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83534 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM83535       reflect() const VULKAN_HPP_NOEXCEPT
83536     {
83537       return std::tie( sType, pNext, shaderCoreBuiltins );
83538     }
83539 #endif
83540 
83541 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83542     auto operator<=>( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & ) const = default;
83543 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM83544     bool operator==( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
83545     {
83546 #  if defined( VULKAN_HPP_USE_REFLECT )
83547       return this->reflect() == rhs.reflect();
83548 #  else
83549       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreBuiltins == rhs.shaderCoreBuiltins );
83550 #  endif
83551     }
83552 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM83553     bool operator!=( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
83554     {
83555       return !operator==( rhs );
83556     }
83557 #endif
83558 
83559   public:
83560     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceShaderCoreBuiltinsFeaturesARM;
83561     void *                              pNext              = {};
83562     VULKAN_HPP_NAMESPACE::Bool32        shaderCoreBuiltins = {};
83563   };
83564 
83565   template <>
83566   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCoreBuiltinsFeaturesARM>
83567   {
83568     using Type = PhysicalDeviceShaderCoreBuiltinsFeaturesARM;
83569   };
83570 
83571   struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM
83572   {
83573     using NativeType = VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM;
83574 
83575     static const bool                                  allowDuplicate = false;
83576     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderCoreBuiltinsPropertiesARM;
83577 
83578 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCoreBuiltinsPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM83579     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreBuiltinsPropertiesARM( uint64_t shaderCoreMask_     = {},
83580                                                                         uint32_t shaderCoreCount_    = {},
83581                                                                         uint32_t shaderWarpsPerCore_ = {},
83582                                                                         void *   pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
83583       : pNext{ pNext_ }
83584       , shaderCoreMask{ shaderCoreMask_ }
83585       , shaderCoreCount{ shaderCoreCount_ }
83586       , shaderWarpsPerCore{ shaderWarpsPerCore_ }
83587     {
83588     }
83589 
83590     VULKAN_HPP_CONSTEXPR
83591       PhysicalDeviceShaderCoreBuiltinsPropertiesARM( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83592 
PhysicalDeviceShaderCoreBuiltinsPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM83593     PhysicalDeviceShaderCoreBuiltinsPropertiesARM( VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
83594       : PhysicalDeviceShaderCoreBuiltinsPropertiesARM( *reinterpret_cast<PhysicalDeviceShaderCoreBuiltinsPropertiesARM const *>( &rhs ) )
83595     {
83596     }
83597 
83598     PhysicalDeviceShaderCoreBuiltinsPropertiesARM & operator=( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83599 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83600 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM83601     PhysicalDeviceShaderCoreBuiltinsPropertiesARM & operator=( VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
83602     {
83603       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM const *>( &rhs );
83604       return *this;
83605     }
83606 
operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM83607     operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const &() const VULKAN_HPP_NOEXCEPT
83608     {
83609       return *reinterpret_cast<const VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM *>( this );
83610     }
83611 
operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM83612     operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM &() VULKAN_HPP_NOEXCEPT
83613     {
83614       return *reinterpret_cast<VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM *>( this );
83615     }
83616 
83617 #if defined( VULKAN_HPP_USE_REFLECT )
83618 #  if 14 <= VULKAN_HPP_CPP_VERSION
83619     auto
83620 #  else
83621     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &, uint32_t const &, uint32_t const &>
83622 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM83623       reflect() const VULKAN_HPP_NOEXCEPT
83624     {
83625       return std::tie( sType, pNext, shaderCoreMask, shaderCoreCount, shaderWarpsPerCore );
83626     }
83627 #endif
83628 
83629 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83630     auto operator<=>( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & ) const = default;
83631 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM83632     bool operator==( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
83633     {
83634 #  if defined( VULKAN_HPP_USE_REFLECT )
83635       return this->reflect() == rhs.reflect();
83636 #  else
83637       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreMask == rhs.shaderCoreMask ) && ( shaderCoreCount == rhs.shaderCoreCount ) &&
83638              ( shaderWarpsPerCore == rhs.shaderWarpsPerCore );
83639 #  endif
83640     }
83641 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM83642     bool operator!=( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
83643     {
83644       return !operator==( rhs );
83645     }
83646 #endif
83647 
83648   public:
83649     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceShaderCoreBuiltinsPropertiesARM;
83650     void *                              pNext              = {};
83651     uint64_t                            shaderCoreMask     = {};
83652     uint32_t                            shaderCoreCount    = {};
83653     uint32_t                            shaderWarpsPerCore = {};
83654   };
83655 
83656   template <>
83657   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCoreBuiltinsPropertiesARM>
83658   {
83659     using Type = PhysicalDeviceShaderCoreBuiltinsPropertiesARM;
83660   };
83661 
83662   struct PhysicalDeviceShaderCoreProperties2AMD
83663   {
83664     using NativeType = VkPhysicalDeviceShaderCoreProperties2AMD;
83665 
83666     static const bool                                  allowDuplicate = false;
83667     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderCoreProperties2AMD;
83668 
83669 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCoreProperties2AMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD83670     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD( VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures_     = {},
83671                                                                  uint32_t                                           activeComputeUnitCount_ = {},
83672                                                                  void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
83673       : pNext{ pNext_ }
83674       , shaderCoreFeatures{ shaderCoreFeatures_ }
83675       , activeComputeUnitCount{ activeComputeUnitCount_ }
83676     {
83677     }
83678 
83679     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83680 
PhysicalDeviceShaderCoreProperties2AMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD83681     PhysicalDeviceShaderCoreProperties2AMD( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT
83682       : PhysicalDeviceShaderCoreProperties2AMD( *reinterpret_cast<PhysicalDeviceShaderCoreProperties2AMD const *>( &rhs ) )
83683     {
83684     }
83685 
83686     PhysicalDeviceShaderCoreProperties2AMD & operator=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83687 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83688 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD83689     PhysicalDeviceShaderCoreProperties2AMD & operator=( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT
83690     {
83691       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD const *>( &rhs );
83692       return *this;
83693     }
83694 
operator VkPhysicalDeviceShaderCoreProperties2AMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD83695     operator VkPhysicalDeviceShaderCoreProperties2AMD const &() const VULKAN_HPP_NOEXCEPT
83696     {
83697       return *reinterpret_cast<const VkPhysicalDeviceShaderCoreProperties2AMD *>( this );
83698     }
83699 
operator VkPhysicalDeviceShaderCoreProperties2AMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD83700     operator VkPhysicalDeviceShaderCoreProperties2AMD &() VULKAN_HPP_NOEXCEPT
83701     {
83702       return *reinterpret_cast<VkPhysicalDeviceShaderCoreProperties2AMD *>( this );
83703     }
83704 
83705 #if defined( VULKAN_HPP_USE_REFLECT )
83706 #  if 14 <= VULKAN_HPP_CPP_VERSION
83707     auto
83708 #  else
83709     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD const &, uint32_t const &>
83710 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD83711       reflect() const VULKAN_HPP_NOEXCEPT
83712     {
83713       return std::tie( sType, pNext, shaderCoreFeatures, activeComputeUnitCount );
83714     }
83715 #endif
83716 
83717 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83718     auto operator<=>( PhysicalDeviceShaderCoreProperties2AMD const & ) const = default;
83719 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD83720     bool operator==( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) const VULKAN_HPP_NOEXCEPT
83721     {
83722 #  if defined( VULKAN_HPP_USE_REFLECT )
83723       return this->reflect() == rhs.reflect();
83724 #  else
83725       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreFeatures == rhs.shaderCoreFeatures ) &&
83726              ( activeComputeUnitCount == rhs.activeComputeUnitCount );
83727 #  endif
83728     }
83729 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD83730     bool operator!=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) const VULKAN_HPP_NOEXCEPT
83731     {
83732       return !operator==( rhs );
83733     }
83734 #endif
83735 
83736   public:
83737     VULKAN_HPP_NAMESPACE::StructureType                sType                  = StructureType::ePhysicalDeviceShaderCoreProperties2AMD;
83738     void *                                             pNext                  = {};
83739     VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures     = {};
83740     uint32_t                                           activeComputeUnitCount = {};
83741   };
83742 
83743   template <>
83744   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCoreProperties2AMD>
83745   {
83746     using Type = PhysicalDeviceShaderCoreProperties2AMD;
83747   };
83748 
83749   struct PhysicalDeviceShaderCorePropertiesAMD
83750   {
83751     using NativeType = VkPhysicalDeviceShaderCorePropertiesAMD;
83752 
83753     static const bool                                  allowDuplicate = false;
83754     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderCorePropertiesAMD;
83755 
83756 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCorePropertiesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD83757     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesAMD( uint32_t shaderEngineCount_          = {},
83758                                                                 uint32_t shaderArraysPerEngineCount_ = {},
83759                                                                 uint32_t computeUnitsPerShaderArray_ = {},
83760                                                                 uint32_t simdPerComputeUnit_         = {},
83761                                                                 uint32_t wavefrontsPerSimd_          = {},
83762                                                                 uint32_t wavefrontSize_              = {},
83763                                                                 uint32_t sgprsPerSimd_               = {},
83764                                                                 uint32_t minSgprAllocation_          = {},
83765                                                                 uint32_t maxSgprAllocation_          = {},
83766                                                                 uint32_t sgprAllocationGranularity_  = {},
83767                                                                 uint32_t vgprsPerSimd_               = {},
83768                                                                 uint32_t minVgprAllocation_          = {},
83769                                                                 uint32_t maxVgprAllocation_          = {},
83770                                                                 uint32_t vgprAllocationGranularity_  = {},
83771                                                                 void *   pNext_                      = nullptr ) VULKAN_HPP_NOEXCEPT
83772       : pNext{ pNext_ }
83773       , shaderEngineCount{ shaderEngineCount_ }
83774       , shaderArraysPerEngineCount{ shaderArraysPerEngineCount_ }
83775       , computeUnitsPerShaderArray{ computeUnitsPerShaderArray_ }
83776       , simdPerComputeUnit{ simdPerComputeUnit_ }
83777       , wavefrontsPerSimd{ wavefrontsPerSimd_ }
83778       , wavefrontSize{ wavefrontSize_ }
83779       , sgprsPerSimd{ sgprsPerSimd_ }
83780       , minSgprAllocation{ minSgprAllocation_ }
83781       , maxSgprAllocation{ maxSgprAllocation_ }
83782       , sgprAllocationGranularity{ sgprAllocationGranularity_ }
83783       , vgprsPerSimd{ vgprsPerSimd_ }
83784       , minVgprAllocation{ minVgprAllocation_ }
83785       , maxVgprAllocation{ maxVgprAllocation_ }
83786       , vgprAllocationGranularity{ vgprAllocationGranularity_ }
83787     {
83788     }
83789 
83790     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesAMD( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83791 
PhysicalDeviceShaderCorePropertiesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD83792     PhysicalDeviceShaderCorePropertiesAMD( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
83793       : PhysicalDeviceShaderCorePropertiesAMD( *reinterpret_cast<PhysicalDeviceShaderCorePropertiesAMD const *>( &rhs ) )
83794     {
83795     }
83796 
83797     PhysicalDeviceShaderCorePropertiesAMD & operator=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83798 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83799 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD83800     PhysicalDeviceShaderCorePropertiesAMD & operator=( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
83801     {
83802       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD const *>( &rhs );
83803       return *this;
83804     }
83805 
operator VkPhysicalDeviceShaderCorePropertiesAMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD83806     operator VkPhysicalDeviceShaderCorePropertiesAMD const &() const VULKAN_HPP_NOEXCEPT
83807     {
83808       return *reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesAMD *>( this );
83809     }
83810 
operator VkPhysicalDeviceShaderCorePropertiesAMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD83811     operator VkPhysicalDeviceShaderCorePropertiesAMD &() VULKAN_HPP_NOEXCEPT
83812     {
83813       return *reinterpret_cast<VkPhysicalDeviceShaderCorePropertiesAMD *>( this );
83814     }
83815 
83816 #if defined( VULKAN_HPP_USE_REFLECT )
83817 #  if 14 <= VULKAN_HPP_CPP_VERSION
83818     auto
83819 #  else
83820     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
83821                void * const &,
83822                uint32_t const &,
83823                uint32_t const &,
83824                uint32_t const &,
83825                uint32_t const &,
83826                uint32_t const &,
83827                uint32_t const &,
83828                uint32_t const &,
83829                uint32_t const &,
83830                uint32_t const &,
83831                uint32_t const &,
83832                uint32_t const &,
83833                uint32_t const &,
83834                uint32_t const &,
83835                uint32_t const &>
83836 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD83837       reflect() const VULKAN_HPP_NOEXCEPT
83838     {
83839       return std::tie( sType,
83840                        pNext,
83841                        shaderEngineCount,
83842                        shaderArraysPerEngineCount,
83843                        computeUnitsPerShaderArray,
83844                        simdPerComputeUnit,
83845                        wavefrontsPerSimd,
83846                        wavefrontSize,
83847                        sgprsPerSimd,
83848                        minSgprAllocation,
83849                        maxSgprAllocation,
83850                        sgprAllocationGranularity,
83851                        vgprsPerSimd,
83852                        minVgprAllocation,
83853                        maxVgprAllocation,
83854                        vgprAllocationGranularity );
83855     }
83856 #endif
83857 
83858 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83859     auto operator<=>( PhysicalDeviceShaderCorePropertiesAMD const & ) const = default;
83860 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD83861     bool operator==( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
83862     {
83863 #  if defined( VULKAN_HPP_USE_REFLECT )
83864       return this->reflect() == rhs.reflect();
83865 #  else
83866       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderEngineCount == rhs.shaderEngineCount ) &&
83867              ( shaderArraysPerEngineCount == rhs.shaderArraysPerEngineCount ) && ( computeUnitsPerShaderArray == rhs.computeUnitsPerShaderArray ) &&
83868              ( simdPerComputeUnit == rhs.simdPerComputeUnit ) && ( wavefrontsPerSimd == rhs.wavefrontsPerSimd ) && ( wavefrontSize == rhs.wavefrontSize ) &&
83869              ( sgprsPerSimd == rhs.sgprsPerSimd ) && ( minSgprAllocation == rhs.minSgprAllocation ) && ( maxSgprAllocation == rhs.maxSgprAllocation ) &&
83870              ( sgprAllocationGranularity == rhs.sgprAllocationGranularity ) && ( vgprsPerSimd == rhs.vgprsPerSimd ) &&
83871              ( minVgprAllocation == rhs.minVgprAllocation ) && ( maxVgprAllocation == rhs.maxVgprAllocation ) &&
83872              ( vgprAllocationGranularity == rhs.vgprAllocationGranularity );
83873 #  endif
83874     }
83875 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD83876     bool operator!=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
83877     {
83878       return !operator==( rhs );
83879     }
83880 #endif
83881 
83882   public:
83883     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceShaderCorePropertiesAMD;
83884     void *                              pNext                      = {};
83885     uint32_t                            shaderEngineCount          = {};
83886     uint32_t                            shaderArraysPerEngineCount = {};
83887     uint32_t                            computeUnitsPerShaderArray = {};
83888     uint32_t                            simdPerComputeUnit         = {};
83889     uint32_t                            wavefrontsPerSimd          = {};
83890     uint32_t                            wavefrontSize              = {};
83891     uint32_t                            sgprsPerSimd               = {};
83892     uint32_t                            minSgprAllocation          = {};
83893     uint32_t                            maxSgprAllocation          = {};
83894     uint32_t                            sgprAllocationGranularity  = {};
83895     uint32_t                            vgprsPerSimd               = {};
83896     uint32_t                            minVgprAllocation          = {};
83897     uint32_t                            maxVgprAllocation          = {};
83898     uint32_t                            vgprAllocationGranularity  = {};
83899   };
83900 
83901   template <>
83902   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCorePropertiesAMD>
83903   {
83904     using Type = PhysicalDeviceShaderCorePropertiesAMD;
83905   };
83906 
83907   struct PhysicalDeviceShaderCorePropertiesARM
83908   {
83909     using NativeType = VkPhysicalDeviceShaderCorePropertiesARM;
83910 
83911     static const bool                                  allowDuplicate = false;
83912     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderCorePropertiesARM;
83913 
83914 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCorePropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM83915     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesARM( uint32_t pixelRate_ = {},
83916                                                                 uint32_t texelRate_ = {},
83917                                                                 uint32_t fmaRate_   = {},
83918                                                                 void *   pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
83919       : pNext{ pNext_ }
83920       , pixelRate{ pixelRate_ }
83921       , texelRate{ texelRate_ }
83922       , fmaRate{ fmaRate_ }
83923     {
83924     }
83925 
83926     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesARM( PhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83927 
PhysicalDeviceShaderCorePropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM83928     PhysicalDeviceShaderCorePropertiesARM( VkPhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
83929       : PhysicalDeviceShaderCorePropertiesARM( *reinterpret_cast<PhysicalDeviceShaderCorePropertiesARM const *>( &rhs ) )
83930     {
83931     }
83932 
83933     PhysicalDeviceShaderCorePropertiesARM & operator=( PhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83934 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83935 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM83936     PhysicalDeviceShaderCorePropertiesARM & operator=( VkPhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
83937     {
83938       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM const *>( &rhs );
83939       return *this;
83940     }
83941 
operator VkPhysicalDeviceShaderCorePropertiesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM83942     operator VkPhysicalDeviceShaderCorePropertiesARM const &() const VULKAN_HPP_NOEXCEPT
83943     {
83944       return *reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesARM *>( this );
83945     }
83946 
operator VkPhysicalDeviceShaderCorePropertiesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM83947     operator VkPhysicalDeviceShaderCorePropertiesARM &() VULKAN_HPP_NOEXCEPT
83948     {
83949       return *reinterpret_cast<VkPhysicalDeviceShaderCorePropertiesARM *>( this );
83950     }
83951 
83952 #if defined( VULKAN_HPP_USE_REFLECT )
83953 #  if 14 <= VULKAN_HPP_CPP_VERSION
83954     auto
83955 #  else
83956     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, uint32_t const &>
83957 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM83958       reflect() const VULKAN_HPP_NOEXCEPT
83959     {
83960       return std::tie( sType, pNext, pixelRate, texelRate, fmaRate );
83961     }
83962 #endif
83963 
83964 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83965     auto operator<=>( PhysicalDeviceShaderCorePropertiesARM const & ) const = default;
83966 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM83967     bool operator==( PhysicalDeviceShaderCorePropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
83968     {
83969 #  if defined( VULKAN_HPP_USE_REFLECT )
83970       return this->reflect() == rhs.reflect();
83971 #  else
83972       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pixelRate == rhs.pixelRate ) && ( texelRate == rhs.texelRate ) && ( fmaRate == rhs.fmaRate );
83973 #  endif
83974     }
83975 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM83976     bool operator!=( PhysicalDeviceShaderCorePropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
83977     {
83978       return !operator==( rhs );
83979     }
83980 #endif
83981 
83982   public:
83983     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::ePhysicalDeviceShaderCorePropertiesARM;
83984     void *                              pNext     = {};
83985     uint32_t                            pixelRate = {};
83986     uint32_t                            texelRate = {};
83987     uint32_t                            fmaRate   = {};
83988   };
83989 
83990   template <>
83991   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCorePropertiesARM>
83992   {
83993     using Type = PhysicalDeviceShaderCorePropertiesARM;
83994   };
83995 
83996   struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures
83997   {
83998     using NativeType = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;
83999 
84000     static const bool                                  allowDuplicate = false;
84001     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures;
84002 
84003 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderDemoteToHelperInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures84004     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ = {},
84005                                                                                void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
84006       : pNext{ pNext_ }
84007       , shaderDemoteToHelperInvocation{ shaderDemoteToHelperInvocation_ }
84008     {
84009     }
84010 
84011     VULKAN_HPP_CONSTEXPR
84012       PhysicalDeviceShaderDemoteToHelperInvocationFeatures( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84013 
PhysicalDeviceShaderDemoteToHelperInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures84014     PhysicalDeviceShaderDemoteToHelperInvocationFeatures( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
84015       : PhysicalDeviceShaderDemoteToHelperInvocationFeatures( *reinterpret_cast<PhysicalDeviceShaderDemoteToHelperInvocationFeatures const *>( &rhs ) )
84016     {
84017     }
84018 
84019     PhysicalDeviceShaderDemoteToHelperInvocationFeatures &
84020       operator=( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84021 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84022 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures84023     PhysicalDeviceShaderDemoteToHelperInvocationFeatures & operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
84024     {
84025       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures const *>( &rhs );
84026       return *this;
84027     }
84028 
84029 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures84030     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84031     {
84032       pNext = pNext_;
84033       return *this;
84034     }
84035 
84036     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures &
setShaderDemoteToHelperInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures84037       setShaderDemoteToHelperInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ ) VULKAN_HPP_NOEXCEPT
84038     {
84039       shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_;
84040       return *this;
84041     }
84042 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84043 
operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures84044     operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const &() const VULKAN_HPP_NOEXCEPT
84045     {
84046       return *reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *>( this );
84047     }
84048 
operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures84049     operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures &() VULKAN_HPP_NOEXCEPT
84050     {
84051       return *reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *>( this );
84052     }
84053 
84054 #if defined( VULKAN_HPP_USE_REFLECT )
84055 #  if 14 <= VULKAN_HPP_CPP_VERSION
84056     auto
84057 #  else
84058     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84059 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures84060       reflect() const VULKAN_HPP_NOEXCEPT
84061     {
84062       return std::tie( sType, pNext, shaderDemoteToHelperInvocation );
84063     }
84064 #endif
84065 
84066 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84067     auto operator<=>( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & ) const = default;
84068 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures84069     bool operator==( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
84070     {
84071 #  if defined( VULKAN_HPP_USE_REFLECT )
84072       return this->reflect() == rhs.reflect();
84073 #  else
84074       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation );
84075 #  endif
84076     }
84077 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures84078     bool operator!=( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
84079     {
84080       return !operator==( rhs );
84081     }
84082 #endif
84083 
84084   public:
84085     VULKAN_HPP_NAMESPACE::StructureType sType                          = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures;
84086     void *                              pNext                          = {};
84087     VULKAN_HPP_NAMESPACE::Bool32        shaderDemoteToHelperInvocation = {};
84088   };
84089 
84090   template <>
84091   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures>
84092   {
84093     using Type = PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
84094   };
84095 
84096   using PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
84097 
84098   struct PhysicalDeviceShaderDrawParametersFeatures
84099   {
84100     using NativeType = VkPhysicalDeviceShaderDrawParametersFeatures;
84101 
84102     static const bool                                  allowDuplicate = false;
84103     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderDrawParametersFeatures;
84104 
84105 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderDrawParametersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures84106     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ = {},
84107                                                                      void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
84108       : pNext{ pNext_ }
84109       , shaderDrawParameters{ shaderDrawParameters_ }
84110     {
84111     }
84112 
84113     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84114 
PhysicalDeviceShaderDrawParametersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures84115     PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
84116       : PhysicalDeviceShaderDrawParametersFeatures( *reinterpret_cast<PhysicalDeviceShaderDrawParametersFeatures const *>( &rhs ) )
84117     {
84118     }
84119 
84120     PhysicalDeviceShaderDrawParametersFeatures & operator=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84121 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84122 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures84123     PhysicalDeviceShaderDrawParametersFeatures & operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
84124     {
84125       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures const *>( &rhs );
84126       return *this;
84127     }
84128 
84129 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures84130     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84131     {
84132       pNext = pNext_;
84133       return *this;
84134     }
84135 
84136     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures &
setShaderDrawParametersVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures84137       setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT
84138     {
84139       shaderDrawParameters = shaderDrawParameters_;
84140       return *this;
84141     }
84142 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84143 
operator VkPhysicalDeviceShaderDrawParametersFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures84144     operator VkPhysicalDeviceShaderDrawParametersFeatures const &() const VULKAN_HPP_NOEXCEPT
84145     {
84146       return *reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures *>( this );
84147     }
84148 
operator VkPhysicalDeviceShaderDrawParametersFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures84149     operator VkPhysicalDeviceShaderDrawParametersFeatures &() VULKAN_HPP_NOEXCEPT
84150     {
84151       return *reinterpret_cast<VkPhysicalDeviceShaderDrawParametersFeatures *>( this );
84152     }
84153 
84154 #if defined( VULKAN_HPP_USE_REFLECT )
84155 #  if 14 <= VULKAN_HPP_CPP_VERSION
84156     auto
84157 #  else
84158     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84159 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures84160       reflect() const VULKAN_HPP_NOEXCEPT
84161     {
84162       return std::tie( sType, pNext, shaderDrawParameters );
84163     }
84164 #endif
84165 
84166 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84167     auto operator<=>( PhysicalDeviceShaderDrawParametersFeatures const & ) const = default;
84168 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures84169     bool operator==( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
84170     {
84171 #  if defined( VULKAN_HPP_USE_REFLECT )
84172       return this->reflect() == rhs.reflect();
84173 #  else
84174       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderDrawParameters == rhs.shaderDrawParameters );
84175 #  endif
84176     }
84177 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures84178     bool operator!=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
84179     {
84180       return !operator==( rhs );
84181     }
84182 #endif
84183 
84184   public:
84185     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceShaderDrawParametersFeatures;
84186     void *                              pNext                = {};
84187     VULKAN_HPP_NAMESPACE::Bool32        shaderDrawParameters = {};
84188   };
84189 
84190   template <>
84191   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderDrawParametersFeatures>
84192   {
84193     using Type = PhysicalDeviceShaderDrawParametersFeatures;
84194   };
84195 
84196   using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
84197 
84198   struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
84199   {
84200     using NativeType = VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
84201 
84202     static const bool                                  allowDuplicate = false;
84203     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
84204 
84205 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD84206     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( VULKAN_HPP_NAMESPACE::Bool32 shaderEarlyAndLateFragmentTests_ = {},
84207                                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
84208       : pNext{ pNext_ }
84209       , shaderEarlyAndLateFragmentTests{ shaderEarlyAndLateFragmentTests_ }
84210     {
84211     }
84212 
84213     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs )
84214       VULKAN_HPP_NOEXCEPT = default;
84215 
PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD84216     PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
84217       : PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( *reinterpret_cast<PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const *>( &rhs ) )
84218     {
84219     }
84220 
84221     PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD &
84222       operator=( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84223 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84224 
84225     PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD84226       operator=( VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
84227     {
84228       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const *>( &rhs );
84229       return *this;
84230     }
84231 
84232 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD84233     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84234     {
84235       pNext = pNext_;
84236       return *this;
84237     }
84238 
84239     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD &
setShaderEarlyAndLateFragmentTestsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD84240       setShaderEarlyAndLateFragmentTests( VULKAN_HPP_NAMESPACE::Bool32 shaderEarlyAndLateFragmentTests_ ) VULKAN_HPP_NOEXCEPT
84241     {
84242       shaderEarlyAndLateFragmentTests = shaderEarlyAndLateFragmentTests_;
84243       return *this;
84244     }
84245 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84246 
operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD84247     operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const &() const VULKAN_HPP_NOEXCEPT
84248     {
84249       return *reinterpret_cast<const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *>( this );
84250     }
84251 
operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD84252     operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD &() VULKAN_HPP_NOEXCEPT
84253     {
84254       return *reinterpret_cast<VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *>( this );
84255     }
84256 
84257 #if defined( VULKAN_HPP_USE_REFLECT )
84258 #  if 14 <= VULKAN_HPP_CPP_VERSION
84259     auto
84260 #  else
84261     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84262 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD84263       reflect() const VULKAN_HPP_NOEXCEPT
84264     {
84265       return std::tie( sType, pNext, shaderEarlyAndLateFragmentTests );
84266     }
84267 #endif
84268 
84269 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84270     auto operator<=>( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & ) const = default;
84271 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD84272     bool operator==( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
84273     {
84274 #  if defined( VULKAN_HPP_USE_REFLECT )
84275       return this->reflect() == rhs.reflect();
84276 #  else
84277       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderEarlyAndLateFragmentTests == rhs.shaderEarlyAndLateFragmentTests );
84278 #  endif
84279     }
84280 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD84281     bool operator!=( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
84282     {
84283       return !operator==( rhs );
84284     }
84285 #endif
84286 
84287   public:
84288     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::ePhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
84289     void *                              pNext                           = {};
84290     VULKAN_HPP_NAMESPACE::Bool32        shaderEarlyAndLateFragmentTests = {};
84291   };
84292 
84293   template <>
84294   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>
84295   {
84296     using Type = PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
84297   };
84298 
84299 #if defined( VK_ENABLE_BETA_EXTENSIONS )
84300   struct PhysicalDeviceShaderEnqueueFeaturesAMDX
84301   {
84302     using NativeType = VkPhysicalDeviceShaderEnqueueFeaturesAMDX;
84303 
84304     static const bool                                  allowDuplicate = false;
84305     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderEnqueueFeaturesAMDX;
84306 
84307 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderEnqueueFeaturesAMDXVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX84308     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEnqueueFeaturesAMDX( VULKAN_HPP_NAMESPACE::Bool32 shaderEnqueue_ = {},
84309                                                                   void *                       pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
84310       : pNext{ pNext_ }
84311       , shaderEnqueue{ shaderEnqueue_ }
84312     {
84313     }
84314 
84315     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEnqueueFeaturesAMDX( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84316 
PhysicalDeviceShaderEnqueueFeaturesAMDXVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX84317     PhysicalDeviceShaderEnqueueFeaturesAMDX( VkPhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
84318       : PhysicalDeviceShaderEnqueueFeaturesAMDX( *reinterpret_cast<PhysicalDeviceShaderEnqueueFeaturesAMDX const *>( &rhs ) )
84319     {
84320     }
84321 
84322     PhysicalDeviceShaderEnqueueFeaturesAMDX & operator=( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84323 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84324 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX84325     PhysicalDeviceShaderEnqueueFeaturesAMDX & operator=( VkPhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
84326     {
84327       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX const *>( &rhs );
84328       return *this;
84329     }
84330 
84331 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX84332     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueueFeaturesAMDX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84333     {
84334       pNext = pNext_;
84335       return *this;
84336     }
84337 
setShaderEnqueueVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX84338     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueueFeaturesAMDX & setShaderEnqueue( VULKAN_HPP_NAMESPACE::Bool32 shaderEnqueue_ ) VULKAN_HPP_NOEXCEPT
84339     {
84340       shaderEnqueue = shaderEnqueue_;
84341       return *this;
84342     }
84343 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84344 
operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX84345     operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX const &() const VULKAN_HPP_NOEXCEPT
84346     {
84347       return *reinterpret_cast<const VkPhysicalDeviceShaderEnqueueFeaturesAMDX *>( this );
84348     }
84349 
operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX84350     operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX &() VULKAN_HPP_NOEXCEPT
84351     {
84352       return *reinterpret_cast<VkPhysicalDeviceShaderEnqueueFeaturesAMDX *>( this );
84353     }
84354 
84355 #  if defined( VULKAN_HPP_USE_REFLECT )
84356 #    if 14 <= VULKAN_HPP_CPP_VERSION
84357     auto
84358 #    else
84359     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84360 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX84361       reflect() const VULKAN_HPP_NOEXCEPT
84362     {
84363       return std::tie( sType, pNext, shaderEnqueue );
84364     }
84365 #  endif
84366 
84367 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84368     auto operator<=>( PhysicalDeviceShaderEnqueueFeaturesAMDX const & ) const = default;
84369 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX84370     bool operator==( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
84371     {
84372 #    if defined( VULKAN_HPP_USE_REFLECT )
84373       return this->reflect() == rhs.reflect();
84374 #    else
84375       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderEnqueue == rhs.shaderEnqueue );
84376 #    endif
84377     }
84378 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX84379     bool operator!=( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
84380     {
84381       return !operator==( rhs );
84382     }
84383 #  endif
84384 
84385   public:
84386     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceShaderEnqueueFeaturesAMDX;
84387     void *                              pNext         = {};
84388     VULKAN_HPP_NAMESPACE::Bool32        shaderEnqueue = {};
84389   };
84390 
84391   template <>
84392   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderEnqueueFeaturesAMDX>
84393   {
84394     using Type = PhysicalDeviceShaderEnqueueFeaturesAMDX;
84395   };
84396 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
84397 
84398 #if defined( VK_ENABLE_BETA_EXTENSIONS )
84399   struct PhysicalDeviceShaderEnqueuePropertiesAMDX
84400   {
84401     using NativeType = VkPhysicalDeviceShaderEnqueuePropertiesAMDX;
84402 
84403     static const bool                                  allowDuplicate = false;
84404     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderEnqueuePropertiesAMDX;
84405 
84406 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderEnqueuePropertiesAMDXVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84407     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEnqueuePropertiesAMDX( uint32_t maxExecutionGraphDepth_                 = {},
84408                                                                     uint32_t maxExecutionGraphShaderOutputNodes_     = {},
84409                                                                     uint32_t maxExecutionGraphShaderPayloadSize_     = {},
84410                                                                     uint32_t maxExecutionGraphShaderPayloadCount_    = {},
84411                                                                     uint32_t executionGraphDispatchAddressAlignment_ = {},
84412                                                                     void *   pNext_                                  = nullptr ) VULKAN_HPP_NOEXCEPT
84413       : pNext{ pNext_ }
84414       , maxExecutionGraphDepth{ maxExecutionGraphDepth_ }
84415       , maxExecutionGraphShaderOutputNodes{ maxExecutionGraphShaderOutputNodes_ }
84416       , maxExecutionGraphShaderPayloadSize{ maxExecutionGraphShaderPayloadSize_ }
84417       , maxExecutionGraphShaderPayloadCount{ maxExecutionGraphShaderPayloadCount_ }
84418       , executionGraphDispatchAddressAlignment{ executionGraphDispatchAddressAlignment_ }
84419     {
84420     }
84421 
84422     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEnqueuePropertiesAMDX( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84423 
PhysicalDeviceShaderEnqueuePropertiesAMDXVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84424     PhysicalDeviceShaderEnqueuePropertiesAMDX( VkPhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
84425       : PhysicalDeviceShaderEnqueuePropertiesAMDX( *reinterpret_cast<PhysicalDeviceShaderEnqueuePropertiesAMDX const *>( &rhs ) )
84426     {
84427     }
84428 
84429     PhysicalDeviceShaderEnqueuePropertiesAMDX & operator=( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84430 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84431 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84432     PhysicalDeviceShaderEnqueuePropertiesAMDX & operator=( VkPhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
84433     {
84434       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX const *>( &rhs );
84435       return *this;
84436     }
84437 
84438 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84439     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84440     {
84441       pNext = pNext_;
84442       return *this;
84443     }
84444 
setMaxExecutionGraphDepthVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84445     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX & setMaxExecutionGraphDepth( uint32_t maxExecutionGraphDepth_ ) VULKAN_HPP_NOEXCEPT
84446     {
84447       maxExecutionGraphDepth = maxExecutionGraphDepth_;
84448       return *this;
84449     }
84450 
84451     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX &
setMaxExecutionGraphShaderOutputNodesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84452       setMaxExecutionGraphShaderOutputNodes( uint32_t maxExecutionGraphShaderOutputNodes_ ) VULKAN_HPP_NOEXCEPT
84453     {
84454       maxExecutionGraphShaderOutputNodes = maxExecutionGraphShaderOutputNodes_;
84455       return *this;
84456     }
84457 
84458     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX &
setMaxExecutionGraphShaderPayloadSizeVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84459       setMaxExecutionGraphShaderPayloadSize( uint32_t maxExecutionGraphShaderPayloadSize_ ) VULKAN_HPP_NOEXCEPT
84460     {
84461       maxExecutionGraphShaderPayloadSize = maxExecutionGraphShaderPayloadSize_;
84462       return *this;
84463     }
84464 
84465     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX &
setMaxExecutionGraphShaderPayloadCountVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84466       setMaxExecutionGraphShaderPayloadCount( uint32_t maxExecutionGraphShaderPayloadCount_ ) VULKAN_HPP_NOEXCEPT
84467     {
84468       maxExecutionGraphShaderPayloadCount = maxExecutionGraphShaderPayloadCount_;
84469       return *this;
84470     }
84471 
84472     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX &
setExecutionGraphDispatchAddressAlignmentVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84473       setExecutionGraphDispatchAddressAlignment( uint32_t executionGraphDispatchAddressAlignment_ ) VULKAN_HPP_NOEXCEPT
84474     {
84475       executionGraphDispatchAddressAlignment = executionGraphDispatchAddressAlignment_;
84476       return *this;
84477     }
84478 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84479 
operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84480     operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX const &() const VULKAN_HPP_NOEXCEPT
84481     {
84482       return *reinterpret_cast<const VkPhysicalDeviceShaderEnqueuePropertiesAMDX *>( this );
84483     }
84484 
operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84485     operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX &() VULKAN_HPP_NOEXCEPT
84486     {
84487       return *reinterpret_cast<VkPhysicalDeviceShaderEnqueuePropertiesAMDX *>( this );
84488     }
84489 
84490 #  if defined( VULKAN_HPP_USE_REFLECT )
84491 #    if 14 <= VULKAN_HPP_CPP_VERSION
84492     auto
84493 #    else
84494     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
84495                void * const &,
84496                uint32_t const &,
84497                uint32_t const &,
84498                uint32_t const &,
84499                uint32_t const &,
84500                uint32_t const &>
84501 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84502       reflect() const VULKAN_HPP_NOEXCEPT
84503     {
84504       return std::tie( sType,
84505                        pNext,
84506                        maxExecutionGraphDepth,
84507                        maxExecutionGraphShaderOutputNodes,
84508                        maxExecutionGraphShaderPayloadSize,
84509                        maxExecutionGraphShaderPayloadCount,
84510                        executionGraphDispatchAddressAlignment );
84511     }
84512 #  endif
84513 
84514 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84515     auto operator<=>( PhysicalDeviceShaderEnqueuePropertiesAMDX const & ) const = default;
84516 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84517     bool operator==( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
84518     {
84519 #    if defined( VULKAN_HPP_USE_REFLECT )
84520       return this->reflect() == rhs.reflect();
84521 #    else
84522       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxExecutionGraphDepth == rhs.maxExecutionGraphDepth ) &&
84523              ( maxExecutionGraphShaderOutputNodes == rhs.maxExecutionGraphShaderOutputNodes ) &&
84524              ( maxExecutionGraphShaderPayloadSize == rhs.maxExecutionGraphShaderPayloadSize ) &&
84525              ( maxExecutionGraphShaderPayloadCount == rhs.maxExecutionGraphShaderPayloadCount ) &&
84526              ( executionGraphDispatchAddressAlignment == rhs.executionGraphDispatchAddressAlignment );
84527 #    endif
84528     }
84529 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX84530     bool operator!=( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
84531     {
84532       return !operator==( rhs );
84533     }
84534 #  endif
84535 
84536   public:
84537     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceShaderEnqueuePropertiesAMDX;
84538     void *                              pNext                                  = {};
84539     uint32_t                            maxExecutionGraphDepth                 = {};
84540     uint32_t                            maxExecutionGraphShaderOutputNodes     = {};
84541     uint32_t                            maxExecutionGraphShaderPayloadSize     = {};
84542     uint32_t                            maxExecutionGraphShaderPayloadCount    = {};
84543     uint32_t                            executionGraphDispatchAddressAlignment = {};
84544   };
84545 
84546   template <>
84547   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderEnqueuePropertiesAMDX>
84548   {
84549     using Type = PhysicalDeviceShaderEnqueuePropertiesAMDX;
84550   };
84551 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
84552 
84553   struct PhysicalDeviceShaderExpectAssumeFeatures
84554   {
84555     using NativeType = VkPhysicalDeviceShaderExpectAssumeFeatures;
84556 
84557     static const bool                                  allowDuplicate = false;
84558     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderExpectAssumeFeatures;
84559 
84560 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderExpectAssumeFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures84561     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderExpectAssumeFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderExpectAssume_ = {},
84562                                                                    void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
84563       : pNext{ pNext_ }
84564       , shaderExpectAssume{ shaderExpectAssume_ }
84565     {
84566     }
84567 
84568     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderExpectAssumeFeatures( PhysicalDeviceShaderExpectAssumeFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84569 
PhysicalDeviceShaderExpectAssumeFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures84570     PhysicalDeviceShaderExpectAssumeFeatures( VkPhysicalDeviceShaderExpectAssumeFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
84571       : PhysicalDeviceShaderExpectAssumeFeatures( *reinterpret_cast<PhysicalDeviceShaderExpectAssumeFeatures const *>( &rhs ) )
84572     {
84573     }
84574 
84575     PhysicalDeviceShaderExpectAssumeFeatures & operator=( PhysicalDeviceShaderExpectAssumeFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84576 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84577 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures84578     PhysicalDeviceShaderExpectAssumeFeatures & operator=( VkPhysicalDeviceShaderExpectAssumeFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
84579     {
84580       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures const *>( &rhs );
84581       return *this;
84582     }
84583 
84584 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures84585     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderExpectAssumeFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84586     {
84587       pNext = pNext_;
84588       return *this;
84589     }
84590 
84591     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderExpectAssumeFeatures &
setShaderExpectAssumeVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures84592       setShaderExpectAssume( VULKAN_HPP_NAMESPACE::Bool32 shaderExpectAssume_ ) VULKAN_HPP_NOEXCEPT
84593     {
84594       shaderExpectAssume = shaderExpectAssume_;
84595       return *this;
84596     }
84597 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84598 
operator VkPhysicalDeviceShaderExpectAssumeFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures84599     operator VkPhysicalDeviceShaderExpectAssumeFeatures const &() const VULKAN_HPP_NOEXCEPT
84600     {
84601       return *reinterpret_cast<const VkPhysicalDeviceShaderExpectAssumeFeatures *>( this );
84602     }
84603 
operator VkPhysicalDeviceShaderExpectAssumeFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures84604     operator VkPhysicalDeviceShaderExpectAssumeFeatures &() VULKAN_HPP_NOEXCEPT
84605     {
84606       return *reinterpret_cast<VkPhysicalDeviceShaderExpectAssumeFeatures *>( this );
84607     }
84608 
84609 #if defined( VULKAN_HPP_USE_REFLECT )
84610 #  if 14 <= VULKAN_HPP_CPP_VERSION
84611     auto
84612 #  else
84613     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84614 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures84615       reflect() const VULKAN_HPP_NOEXCEPT
84616     {
84617       return std::tie( sType, pNext, shaderExpectAssume );
84618     }
84619 #endif
84620 
84621 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84622     auto operator<=>( PhysicalDeviceShaderExpectAssumeFeatures const & ) const = default;
84623 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures84624     bool operator==( PhysicalDeviceShaderExpectAssumeFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
84625     {
84626 #  if defined( VULKAN_HPP_USE_REFLECT )
84627       return this->reflect() == rhs.reflect();
84628 #  else
84629       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderExpectAssume == rhs.shaderExpectAssume );
84630 #  endif
84631     }
84632 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures84633     bool operator!=( PhysicalDeviceShaderExpectAssumeFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
84634     {
84635       return !operator==( rhs );
84636     }
84637 #endif
84638 
84639   public:
84640     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceShaderExpectAssumeFeatures;
84641     void *                              pNext              = {};
84642     VULKAN_HPP_NAMESPACE::Bool32        shaderExpectAssume = {};
84643   };
84644 
84645   template <>
84646   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderExpectAssumeFeatures>
84647   {
84648     using Type = PhysicalDeviceShaderExpectAssumeFeatures;
84649   };
84650 
84651   using PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures;
84652 
84653   struct PhysicalDeviceShaderFloat16Int8Features
84654   {
84655     using NativeType = VkPhysicalDeviceShaderFloat16Int8Features;
84656 
84657     static const bool                                  allowDuplicate = false;
84658     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderFloat16Int8Features;
84659 
84660 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderFloat16Int8FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84661     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ = {},
84662                                                                   VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_    = {},
84663                                                                   void *                       pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
84664       : pNext{ pNext_ }
84665       , shaderFloat16{ shaderFloat16_ }
84666       , shaderInt8{ shaderInt8_ }
84667     {
84668     }
84669 
84670     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84671 
PhysicalDeviceShaderFloat16Int8FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84672     PhysicalDeviceShaderFloat16Int8Features( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
84673       : PhysicalDeviceShaderFloat16Int8Features( *reinterpret_cast<PhysicalDeviceShaderFloat16Int8Features const *>( &rhs ) )
84674     {
84675     }
84676 
84677     PhysicalDeviceShaderFloat16Int8Features & operator=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84678 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84679 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84680     PhysicalDeviceShaderFloat16Int8Features & operator=( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
84681     {
84682       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features const *>( &rhs );
84683       return *this;
84684     }
84685 
84686 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84687     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84688     {
84689       pNext = pNext_;
84690       return *this;
84691     }
84692 
setShaderFloat16VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84693     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT
84694     {
84695       shaderFloat16 = shaderFloat16_;
84696       return *this;
84697     }
84698 
setShaderInt8VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84699     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT
84700     {
84701       shaderInt8 = shaderInt8_;
84702       return *this;
84703     }
84704 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84705 
operator VkPhysicalDeviceShaderFloat16Int8Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84706     operator VkPhysicalDeviceShaderFloat16Int8Features const &() const VULKAN_HPP_NOEXCEPT
84707     {
84708       return *reinterpret_cast<const VkPhysicalDeviceShaderFloat16Int8Features *>( this );
84709     }
84710 
operator VkPhysicalDeviceShaderFloat16Int8Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84711     operator VkPhysicalDeviceShaderFloat16Int8Features &() VULKAN_HPP_NOEXCEPT
84712     {
84713       return *reinterpret_cast<VkPhysicalDeviceShaderFloat16Int8Features *>( this );
84714     }
84715 
84716 #if defined( VULKAN_HPP_USE_REFLECT )
84717 #  if 14 <= VULKAN_HPP_CPP_VERSION
84718     auto
84719 #  else
84720     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84721 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84722       reflect() const VULKAN_HPP_NOEXCEPT
84723     {
84724       return std::tie( sType, pNext, shaderFloat16, shaderInt8 );
84725     }
84726 #endif
84727 
84728 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84729     auto operator<=>( PhysicalDeviceShaderFloat16Int8Features const & ) const = default;
84730 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84731     bool operator==( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT
84732     {
84733 #  if defined( VULKAN_HPP_USE_REFLECT )
84734       return this->reflect() == rhs.reflect();
84735 #  else
84736       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloat16 == rhs.shaderFloat16 ) && ( shaderInt8 == rhs.shaderInt8 );
84737 #  endif
84738     }
84739 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features84740     bool operator!=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT
84741     {
84742       return !operator==( rhs );
84743     }
84744 #endif
84745 
84746   public:
84747     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceShaderFloat16Int8Features;
84748     void *                              pNext         = {};
84749     VULKAN_HPP_NAMESPACE::Bool32        shaderFloat16 = {};
84750     VULKAN_HPP_NAMESPACE::Bool32        shaderInt8    = {};
84751   };
84752 
84753   template <>
84754   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderFloat16Int8Features>
84755   {
84756     using Type = PhysicalDeviceShaderFloat16Int8Features;
84757   };
84758 
84759   using PhysicalDeviceFloat16Int8FeaturesKHR       = PhysicalDeviceShaderFloat16Int8Features;
84760   using PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
84761 
84762   struct PhysicalDeviceShaderFloatControls2Features
84763   {
84764     using NativeType = VkPhysicalDeviceShaderFloatControls2Features;
84765 
84766     static const bool                                  allowDuplicate = false;
84767     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderFloatControls2Features;
84768 
84769 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderFloatControls2FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features84770     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloatControls2Features( VULKAN_HPP_NAMESPACE::Bool32 shaderFloatControls2_ = {},
84771                                                                      void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
84772       : pNext{ pNext_ }
84773       , shaderFloatControls2{ shaderFloatControls2_ }
84774     {
84775     }
84776 
84777     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloatControls2Features( PhysicalDeviceShaderFloatControls2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84778 
PhysicalDeviceShaderFloatControls2FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features84779     PhysicalDeviceShaderFloatControls2Features( VkPhysicalDeviceShaderFloatControls2Features const & rhs ) VULKAN_HPP_NOEXCEPT
84780       : PhysicalDeviceShaderFloatControls2Features( *reinterpret_cast<PhysicalDeviceShaderFloatControls2Features const *>( &rhs ) )
84781     {
84782     }
84783 
84784     PhysicalDeviceShaderFloatControls2Features & operator=( PhysicalDeviceShaderFloatControls2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84785 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84786 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features84787     PhysicalDeviceShaderFloatControls2Features & operator=( VkPhysicalDeviceShaderFloatControls2Features const & rhs ) VULKAN_HPP_NOEXCEPT
84788     {
84789       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features const *>( &rhs );
84790       return *this;
84791     }
84792 
84793 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features84794     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloatControls2Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84795     {
84796       pNext = pNext_;
84797       return *this;
84798     }
84799 
84800     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloatControls2Features &
setShaderFloatControls2VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features84801       setShaderFloatControls2( VULKAN_HPP_NAMESPACE::Bool32 shaderFloatControls2_ ) VULKAN_HPP_NOEXCEPT
84802     {
84803       shaderFloatControls2 = shaderFloatControls2_;
84804       return *this;
84805     }
84806 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84807 
operator VkPhysicalDeviceShaderFloatControls2Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features84808     operator VkPhysicalDeviceShaderFloatControls2Features const &() const VULKAN_HPP_NOEXCEPT
84809     {
84810       return *reinterpret_cast<const VkPhysicalDeviceShaderFloatControls2Features *>( this );
84811     }
84812 
operator VkPhysicalDeviceShaderFloatControls2Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features84813     operator VkPhysicalDeviceShaderFloatControls2Features &() VULKAN_HPP_NOEXCEPT
84814     {
84815       return *reinterpret_cast<VkPhysicalDeviceShaderFloatControls2Features *>( this );
84816     }
84817 
84818 #if defined( VULKAN_HPP_USE_REFLECT )
84819 #  if 14 <= VULKAN_HPP_CPP_VERSION
84820     auto
84821 #  else
84822     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84823 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features84824       reflect() const VULKAN_HPP_NOEXCEPT
84825     {
84826       return std::tie( sType, pNext, shaderFloatControls2 );
84827     }
84828 #endif
84829 
84830 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84831     auto operator<=>( PhysicalDeviceShaderFloatControls2Features const & ) const = default;
84832 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features84833     bool operator==( PhysicalDeviceShaderFloatControls2Features const & rhs ) const VULKAN_HPP_NOEXCEPT
84834     {
84835 #  if defined( VULKAN_HPP_USE_REFLECT )
84836       return this->reflect() == rhs.reflect();
84837 #  else
84838       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloatControls2 == rhs.shaderFloatControls2 );
84839 #  endif
84840     }
84841 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features84842     bool operator!=( PhysicalDeviceShaderFloatControls2Features const & rhs ) const VULKAN_HPP_NOEXCEPT
84843     {
84844       return !operator==( rhs );
84845     }
84846 #endif
84847 
84848   public:
84849     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceShaderFloatControls2Features;
84850     void *                              pNext                = {};
84851     VULKAN_HPP_NAMESPACE::Bool32        shaderFloatControls2 = {};
84852   };
84853 
84854   template <>
84855   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderFloatControls2Features>
84856   {
84857     using Type = PhysicalDeviceShaderFloatControls2Features;
84858   };
84859 
84860   using PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features;
84861 
84862   struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
84863   {
84864     using NativeType = VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
84865 
84866     static const bool                                  allowDuplicate = false;
84867     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
84868 
84869 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderImageAtomicInt64FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84870     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ = {},
84871                                                                           VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ = {},
84872                                                                           void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
84873       : pNext{ pNext_ }
84874       , shaderImageInt64Atomics{ shaderImageInt64Atomics_ }
84875       , sparseImageInt64Atomics{ sparseImageInt64Atomics_ }
84876     {
84877     }
84878 
84879     VULKAN_HPP_CONSTEXPR
84880       PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84881 
PhysicalDeviceShaderImageAtomicInt64FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84882     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84883       : PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>( &rhs ) )
84884     {
84885     }
84886 
84887     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84888 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84889 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84890     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84891     {
84892       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>( &rhs );
84893       return *this;
84894     }
84895 
84896 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84897     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84898     {
84899       pNext = pNext_;
84900       return *this;
84901     }
84902 
84903     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT &
setShaderImageInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84904       setShaderImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
84905     {
84906       shaderImageInt64Atomics = shaderImageInt64Atomics_;
84907       return *this;
84908     }
84909 
84910     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT &
setSparseImageInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84911       setSparseImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
84912     {
84913       sparseImageInt64Atomics = sparseImageInt64Atomics_;
84914       return *this;
84915     }
84916 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84917 
operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84918     operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
84919     {
84920       return *reinterpret_cast<const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *>( this );
84921     }
84922 
operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84923     operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &() VULKAN_HPP_NOEXCEPT
84924     {
84925       return *reinterpret_cast<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *>( this );
84926     }
84927 
84928 #if defined( VULKAN_HPP_USE_REFLECT )
84929 #  if 14 <= VULKAN_HPP_CPP_VERSION
84930     auto
84931 #  else
84932     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84933 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84934       reflect() const VULKAN_HPP_NOEXCEPT
84935     {
84936       return std::tie( sType, pNext, shaderImageInt64Atomics, sparseImageInt64Atomics );
84937     }
84938 #endif
84939 
84940 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84941     auto operator<=>( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & ) const = default;
84942 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84943     bool operator==( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84944     {
84945 #  if defined( VULKAN_HPP_USE_REFLECT )
84946       return this->reflect() == rhs.reflect();
84947 #  else
84948       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderImageInt64Atomics == rhs.shaderImageInt64Atomics ) &&
84949              ( sparseImageInt64Atomics == rhs.sparseImageInt64Atomics );
84950 #  endif
84951     }
84952 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT84953     bool operator!=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84954     {
84955       return !operator==( rhs );
84956     }
84957 #endif
84958 
84959   public:
84960     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
84961     void *                              pNext                   = {};
84962     VULKAN_HPP_NAMESPACE::Bool32        shaderImageInt64Atomics = {};
84963     VULKAN_HPP_NAMESPACE::Bool32        sparseImageInt64Atomics = {};
84964   };
84965 
84966   template <>
84967   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT>
84968   {
84969     using Type = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
84970   };
84971 
84972   struct PhysicalDeviceShaderImageFootprintFeaturesNV
84973   {
84974     using NativeType = VkPhysicalDeviceShaderImageFootprintFeaturesNV;
84975 
84976     static const bool                                  allowDuplicate = false;
84977     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV;
84978 
84979 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderImageFootprintFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV84980     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 imageFootprint_ = {},
84981                                                                        void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
84982       : pNext{ pNext_ }
84983       , imageFootprint{ imageFootprint_ }
84984     {
84985     }
84986 
84987     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84988 
PhysicalDeviceShaderImageFootprintFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV84989     PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
84990       : PhysicalDeviceShaderImageFootprintFeaturesNV( *reinterpret_cast<PhysicalDeviceShaderImageFootprintFeaturesNV const *>( &rhs ) )
84991     {
84992     }
84993 
84994     PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84995 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84996 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV84997     PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
84998     {
84999       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV const *>( &rhs );
85000       return *this;
85001     }
85002 
85003 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV85004     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85005     {
85006       pNext = pNext_;
85007       return *this;
85008     }
85009 
setImageFootprintVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV85010     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & setImageFootprint( VULKAN_HPP_NAMESPACE::Bool32 imageFootprint_ ) VULKAN_HPP_NOEXCEPT
85011     {
85012       imageFootprint = imageFootprint_;
85013       return *this;
85014     }
85015 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85016 
operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV85017     operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
85018     {
85019       return *reinterpret_cast<const VkPhysicalDeviceShaderImageFootprintFeaturesNV *>( this );
85020     }
85021 
operator VkPhysicalDeviceShaderImageFootprintFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV85022     operator VkPhysicalDeviceShaderImageFootprintFeaturesNV &() VULKAN_HPP_NOEXCEPT
85023     {
85024       return *reinterpret_cast<VkPhysicalDeviceShaderImageFootprintFeaturesNV *>( this );
85025     }
85026 
85027 #if defined( VULKAN_HPP_USE_REFLECT )
85028 #  if 14 <= VULKAN_HPP_CPP_VERSION
85029     auto
85030 #  else
85031     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85032 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV85033       reflect() const VULKAN_HPP_NOEXCEPT
85034     {
85035       return std::tie( sType, pNext, imageFootprint );
85036     }
85037 #endif
85038 
85039 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85040     auto operator<=>( PhysicalDeviceShaderImageFootprintFeaturesNV const & ) const = default;
85041 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV85042     bool operator==( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
85043     {
85044 #  if defined( VULKAN_HPP_USE_REFLECT )
85045       return this->reflect() == rhs.reflect();
85046 #  else
85047       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageFootprint == rhs.imageFootprint );
85048 #  endif
85049     }
85050 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV85051     bool operator!=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
85052     {
85053       return !operator==( rhs );
85054     }
85055 #endif
85056 
85057   public:
85058     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV;
85059     void *                              pNext          = {};
85060     VULKAN_HPP_NAMESPACE::Bool32        imageFootprint = {};
85061   };
85062 
85063   template <>
85064   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV>
85065   {
85066     using Type = PhysicalDeviceShaderImageFootprintFeaturesNV;
85067   };
85068 
85069   struct PhysicalDeviceShaderIntegerDotProductFeatures
85070   {
85071     using NativeType = VkPhysicalDeviceShaderIntegerDotProductFeatures;
85072 
85073     static const bool                                  allowDuplicate = false;
85074     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures;
85075 
85076 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerDotProductFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures85077     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ = {},
85078                                                                         void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
85079       : pNext{ pNext_ }
85080       , shaderIntegerDotProduct{ shaderIntegerDotProduct_ }
85081     {
85082     }
85083 
85084     VULKAN_HPP_CONSTEXPR
85085       PhysicalDeviceShaderIntegerDotProductFeatures( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85086 
PhysicalDeviceShaderIntegerDotProductFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures85087     PhysicalDeviceShaderIntegerDotProductFeatures( VkPhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
85088       : PhysicalDeviceShaderIntegerDotProductFeatures( *reinterpret_cast<PhysicalDeviceShaderIntegerDotProductFeatures const *>( &rhs ) )
85089     {
85090     }
85091 
85092     PhysicalDeviceShaderIntegerDotProductFeatures & operator=( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85093 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85094 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures85095     PhysicalDeviceShaderIntegerDotProductFeatures & operator=( VkPhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
85096     {
85097       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures const *>( &rhs );
85098       return *this;
85099     }
85100 
85101 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures85102     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85103     {
85104       pNext = pNext_;
85105       return *this;
85106     }
85107 
85108     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures &
setShaderIntegerDotProductVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures85109       setShaderIntegerDotProduct( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ ) VULKAN_HPP_NOEXCEPT
85110     {
85111       shaderIntegerDotProduct = shaderIntegerDotProduct_;
85112       return *this;
85113     }
85114 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85115 
operator VkPhysicalDeviceShaderIntegerDotProductFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures85116     operator VkPhysicalDeviceShaderIntegerDotProductFeatures const &() const VULKAN_HPP_NOEXCEPT
85117     {
85118       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductFeatures *>( this );
85119     }
85120 
operator VkPhysicalDeviceShaderIntegerDotProductFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures85121     operator VkPhysicalDeviceShaderIntegerDotProductFeatures &() VULKAN_HPP_NOEXCEPT
85122     {
85123       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductFeatures *>( this );
85124     }
85125 
85126 #if defined( VULKAN_HPP_USE_REFLECT )
85127 #  if 14 <= VULKAN_HPP_CPP_VERSION
85128     auto
85129 #  else
85130     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85131 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures85132       reflect() const VULKAN_HPP_NOEXCEPT
85133     {
85134       return std::tie( sType, pNext, shaderIntegerDotProduct );
85135     }
85136 #endif
85137 
85138 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85139     auto operator<=>( PhysicalDeviceShaderIntegerDotProductFeatures const & ) const = default;
85140 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures85141     bool operator==( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
85142     {
85143 #  if defined( VULKAN_HPP_USE_REFLECT )
85144       return this->reflect() == rhs.reflect();
85145 #  else
85146       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderIntegerDotProduct == rhs.shaderIntegerDotProduct );
85147 #  endif
85148     }
85149 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures85150     bool operator!=( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
85151     {
85152       return !operator==( rhs );
85153     }
85154 #endif
85155 
85156   public:
85157     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures;
85158     void *                              pNext                   = {};
85159     VULKAN_HPP_NAMESPACE::Bool32        shaderIntegerDotProduct = {};
85160   };
85161 
85162   template <>
85163   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures>
85164   {
85165     using Type = PhysicalDeviceShaderIntegerDotProductFeatures;
85166   };
85167 
85168   using PhysicalDeviceShaderIntegerDotProductFeaturesKHR = PhysicalDeviceShaderIntegerDotProductFeatures;
85169 
85170   struct PhysicalDeviceShaderIntegerDotProductProperties
85171   {
85172     using NativeType = VkPhysicalDeviceShaderIntegerDotProductProperties;
85173 
85174     static const bool                                  allowDuplicate = false;
85175     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderIntegerDotProductProperties;
85176 
85177 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerDotProductPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties85178     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductProperties(
85179       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated_                                      = {},
85180       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated_                                        = {},
85181       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated_                               = {},
85182       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_                              = {},
85183       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated_                                = {},
85184       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_                       = {},
85185       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated_                                     = {},
85186       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated_                                       = {},
85187       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated_                              = {},
85188       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated_                                     = {},
85189       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated_                                       = {},
85190       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated_                              = {},
85191       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated_                                     = {},
85192       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated_                                       = {},
85193       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated_                              = {},
85194       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_                = {},
85195       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_                  = {},
85196       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_         = {},
85197       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_        = {},
85198       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_          = {},
85199       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {},
85200       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_               = {},
85201       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_                 = {},
85202       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_        = {},
85203       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_               = {},
85204       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_                 = {},
85205       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_        = {},
85206       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_               = {},
85207       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_                 = {},
85208       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_        = {},
85209       void *                       pNext_                                                                         = nullptr ) VULKAN_HPP_NOEXCEPT
85210       : pNext{ pNext_ }
85211       , integerDotProduct8BitUnsignedAccelerated{ integerDotProduct8BitUnsignedAccelerated_ }
85212       , integerDotProduct8BitSignedAccelerated{ integerDotProduct8BitSignedAccelerated_ }
85213       , integerDotProduct8BitMixedSignednessAccelerated{ integerDotProduct8BitMixedSignednessAccelerated_ }
85214       , integerDotProduct4x8BitPackedUnsignedAccelerated{ integerDotProduct4x8BitPackedUnsignedAccelerated_ }
85215       , integerDotProduct4x8BitPackedSignedAccelerated{ integerDotProduct4x8BitPackedSignedAccelerated_ }
85216       , integerDotProduct4x8BitPackedMixedSignednessAccelerated{ integerDotProduct4x8BitPackedMixedSignednessAccelerated_ }
85217       , integerDotProduct16BitUnsignedAccelerated{ integerDotProduct16BitUnsignedAccelerated_ }
85218       , integerDotProduct16BitSignedAccelerated{ integerDotProduct16BitSignedAccelerated_ }
85219       , integerDotProduct16BitMixedSignednessAccelerated{ integerDotProduct16BitMixedSignednessAccelerated_ }
85220       , integerDotProduct32BitUnsignedAccelerated{ integerDotProduct32BitUnsignedAccelerated_ }
85221       , integerDotProduct32BitSignedAccelerated{ integerDotProduct32BitSignedAccelerated_ }
85222       , integerDotProduct32BitMixedSignednessAccelerated{ integerDotProduct32BitMixedSignednessAccelerated_ }
85223       , integerDotProduct64BitUnsignedAccelerated{ integerDotProduct64BitUnsignedAccelerated_ }
85224       , integerDotProduct64BitSignedAccelerated{ integerDotProduct64BitSignedAccelerated_ }
85225       , integerDotProduct64BitMixedSignednessAccelerated{ integerDotProduct64BitMixedSignednessAccelerated_ }
85226       , integerDotProductAccumulatingSaturating8BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ }
85227       , integerDotProductAccumulatingSaturating8BitSignedAccelerated{ integerDotProductAccumulatingSaturating8BitSignedAccelerated_ }
85228       , integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ }
85229       , integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ }
85230       , integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ }
85231       , integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ }
85232       , integerDotProductAccumulatingSaturating16BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ }
85233       , integerDotProductAccumulatingSaturating16BitSignedAccelerated{ integerDotProductAccumulatingSaturating16BitSignedAccelerated_ }
85234       , integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ }
85235       , integerDotProductAccumulatingSaturating32BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ }
85236       , integerDotProductAccumulatingSaturating32BitSignedAccelerated{ integerDotProductAccumulatingSaturating32BitSignedAccelerated_ }
85237       , integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ }
85238       , integerDotProductAccumulatingSaturating64BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ }
85239       , integerDotProductAccumulatingSaturating64BitSignedAccelerated{ integerDotProductAccumulatingSaturating64BitSignedAccelerated_ }
85240       , integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ }
85241     {
85242     }
85243 
85244     VULKAN_HPP_CONSTEXPR
85245       PhysicalDeviceShaderIntegerDotProductProperties( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85246 
PhysicalDeviceShaderIntegerDotProductPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties85247     PhysicalDeviceShaderIntegerDotProductProperties( VkPhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT
85248       : PhysicalDeviceShaderIntegerDotProductProperties( *reinterpret_cast<PhysicalDeviceShaderIntegerDotProductProperties const *>( &rhs ) )
85249     {
85250     }
85251 
85252     PhysicalDeviceShaderIntegerDotProductProperties & operator=( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85253 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85254 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties85255     PhysicalDeviceShaderIntegerDotProductProperties & operator=( VkPhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT
85256     {
85257       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties const *>( &rhs );
85258       return *this;
85259     }
85260 
operator VkPhysicalDeviceShaderIntegerDotProductProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties85261     operator VkPhysicalDeviceShaderIntegerDotProductProperties const &() const VULKAN_HPP_NOEXCEPT
85262     {
85263       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductProperties *>( this );
85264     }
85265 
operator VkPhysicalDeviceShaderIntegerDotProductProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties85266     operator VkPhysicalDeviceShaderIntegerDotProductProperties &() VULKAN_HPP_NOEXCEPT
85267     {
85268       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductProperties *>( this );
85269     }
85270 
85271 #if defined( VULKAN_HPP_USE_REFLECT )
85272 #  if 14 <= VULKAN_HPP_CPP_VERSION
85273     auto
85274 #  else
85275     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85276                void * const &,
85277                VULKAN_HPP_NAMESPACE::Bool32 const &,
85278                VULKAN_HPP_NAMESPACE::Bool32 const &,
85279                VULKAN_HPP_NAMESPACE::Bool32 const &,
85280                VULKAN_HPP_NAMESPACE::Bool32 const &,
85281                VULKAN_HPP_NAMESPACE::Bool32 const &,
85282                VULKAN_HPP_NAMESPACE::Bool32 const &,
85283                VULKAN_HPP_NAMESPACE::Bool32 const &,
85284                VULKAN_HPP_NAMESPACE::Bool32 const &,
85285                VULKAN_HPP_NAMESPACE::Bool32 const &,
85286                VULKAN_HPP_NAMESPACE::Bool32 const &,
85287                VULKAN_HPP_NAMESPACE::Bool32 const &,
85288                VULKAN_HPP_NAMESPACE::Bool32 const &,
85289                VULKAN_HPP_NAMESPACE::Bool32 const &,
85290                VULKAN_HPP_NAMESPACE::Bool32 const &,
85291                VULKAN_HPP_NAMESPACE::Bool32 const &,
85292                VULKAN_HPP_NAMESPACE::Bool32 const &,
85293                VULKAN_HPP_NAMESPACE::Bool32 const &,
85294                VULKAN_HPP_NAMESPACE::Bool32 const &,
85295                VULKAN_HPP_NAMESPACE::Bool32 const &,
85296                VULKAN_HPP_NAMESPACE::Bool32 const &,
85297                VULKAN_HPP_NAMESPACE::Bool32 const &,
85298                VULKAN_HPP_NAMESPACE::Bool32 const &,
85299                VULKAN_HPP_NAMESPACE::Bool32 const &,
85300                VULKAN_HPP_NAMESPACE::Bool32 const &,
85301                VULKAN_HPP_NAMESPACE::Bool32 const &,
85302                VULKAN_HPP_NAMESPACE::Bool32 const &,
85303                VULKAN_HPP_NAMESPACE::Bool32 const &,
85304                VULKAN_HPP_NAMESPACE::Bool32 const &,
85305                VULKAN_HPP_NAMESPACE::Bool32 const &,
85306                VULKAN_HPP_NAMESPACE::Bool32 const &>
85307 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties85308       reflect() const VULKAN_HPP_NOEXCEPT
85309     {
85310       return std::tie( sType,
85311                        pNext,
85312                        integerDotProduct8BitUnsignedAccelerated,
85313                        integerDotProduct8BitSignedAccelerated,
85314                        integerDotProduct8BitMixedSignednessAccelerated,
85315                        integerDotProduct4x8BitPackedUnsignedAccelerated,
85316                        integerDotProduct4x8BitPackedSignedAccelerated,
85317                        integerDotProduct4x8BitPackedMixedSignednessAccelerated,
85318                        integerDotProduct16BitUnsignedAccelerated,
85319                        integerDotProduct16BitSignedAccelerated,
85320                        integerDotProduct16BitMixedSignednessAccelerated,
85321                        integerDotProduct32BitUnsignedAccelerated,
85322                        integerDotProduct32BitSignedAccelerated,
85323                        integerDotProduct32BitMixedSignednessAccelerated,
85324                        integerDotProduct64BitUnsignedAccelerated,
85325                        integerDotProduct64BitSignedAccelerated,
85326                        integerDotProduct64BitMixedSignednessAccelerated,
85327                        integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
85328                        integerDotProductAccumulatingSaturating8BitSignedAccelerated,
85329                        integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
85330                        integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
85331                        integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
85332                        integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
85333                        integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
85334                        integerDotProductAccumulatingSaturating16BitSignedAccelerated,
85335                        integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
85336                        integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
85337                        integerDotProductAccumulatingSaturating32BitSignedAccelerated,
85338                        integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
85339                        integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
85340                        integerDotProductAccumulatingSaturating64BitSignedAccelerated,
85341                        integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated );
85342     }
85343 #endif
85344 
85345 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85346     auto operator<=>( PhysicalDeviceShaderIntegerDotProductProperties const & ) const = default;
85347 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties85348     bool operator==( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
85349     {
85350 #  if defined( VULKAN_HPP_USE_REFLECT )
85351       return this->reflect() == rhs.reflect();
85352 #  else
85353       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated ) &&
85354              ( integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated ) &&
85355              ( integerDotProduct8BitMixedSignednessAccelerated == rhs.integerDotProduct8BitMixedSignednessAccelerated ) &&
85356              ( integerDotProduct4x8BitPackedUnsignedAccelerated == rhs.integerDotProduct4x8BitPackedUnsignedAccelerated ) &&
85357              ( integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated ) &&
85358              ( integerDotProduct4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated ) &&
85359              ( integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated ) &&
85360              ( integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated ) &&
85361              ( integerDotProduct16BitMixedSignednessAccelerated == rhs.integerDotProduct16BitMixedSignednessAccelerated ) &&
85362              ( integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated ) &&
85363              ( integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated ) &&
85364              ( integerDotProduct32BitMixedSignednessAccelerated == rhs.integerDotProduct32BitMixedSignednessAccelerated ) &&
85365              ( integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated ) &&
85366              ( integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated ) &&
85367              ( integerDotProduct64BitMixedSignednessAccelerated == rhs.integerDotProduct64BitMixedSignednessAccelerated ) &&
85368              ( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ) &&
85369              ( integerDotProductAccumulatingSaturating8BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated ) &&
85370              ( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ==
85371                rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ) &&
85372              ( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ==
85373                rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ) &&
85374              ( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ==
85375                rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ) &&
85376              ( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ==
85377                rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ) &&
85378              ( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ) &&
85379              ( integerDotProductAccumulatingSaturating16BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated ) &&
85380              ( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ==
85381                rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ) &&
85382              ( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ) &&
85383              ( integerDotProductAccumulatingSaturating32BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated ) &&
85384              ( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ==
85385                rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ) &&
85386              ( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ) &&
85387              ( integerDotProductAccumulatingSaturating64BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated ) &&
85388              ( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ==
85389                rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated );
85390 #  endif
85391     }
85392 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties85393     bool operator!=( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
85394     {
85395       return !operator==( rhs );
85396     }
85397 #endif
85398 
85399   public:
85400     VULKAN_HPP_NAMESPACE::StructureType sType                                            = StructureType::ePhysicalDeviceShaderIntegerDotProductProperties;
85401     void *                              pNext                                            = {};
85402     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct8BitUnsignedAccelerated         = {};
85403     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct8BitSignedAccelerated           = {};
85404     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct8BitMixedSignednessAccelerated  = {};
85405     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct4x8BitPackedUnsignedAccelerated = {};
85406     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct4x8BitPackedSignedAccelerated   = {};
85407     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct4x8BitPackedMixedSignednessAccelerated                       = {};
85408     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct16BitUnsignedAccelerated                                     = {};
85409     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct16BitSignedAccelerated                                       = {};
85410     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct16BitMixedSignednessAccelerated                              = {};
85411     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct32BitUnsignedAccelerated                                     = {};
85412     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct32BitSignedAccelerated                                       = {};
85413     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct32BitMixedSignednessAccelerated                              = {};
85414     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct64BitUnsignedAccelerated                                     = {};
85415     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct64BitSignedAccelerated                                       = {};
85416     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct64BitMixedSignednessAccelerated                              = {};
85417     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating8BitUnsignedAccelerated                = {};
85418     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating8BitSignedAccelerated                  = {};
85419     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated         = {};
85420     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated        = {};
85421     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated          = {};
85422     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {};
85423     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating16BitUnsignedAccelerated               = {};
85424     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating16BitSignedAccelerated                 = {};
85425     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated        = {};
85426     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating32BitUnsignedAccelerated               = {};
85427     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating32BitSignedAccelerated                 = {};
85428     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated        = {};
85429     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating64BitUnsignedAccelerated               = {};
85430     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating64BitSignedAccelerated                 = {};
85431     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated        = {};
85432   };
85433 
85434   template <>
85435   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerDotProductProperties>
85436   {
85437     using Type = PhysicalDeviceShaderIntegerDotProductProperties;
85438   };
85439 
85440   using PhysicalDeviceShaderIntegerDotProductPropertiesKHR = PhysicalDeviceShaderIntegerDotProductProperties;
85441 
85442   struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
85443   {
85444     using NativeType = VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
85445 
85446     static const bool                                  allowDuplicate = false;
85447     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
85448 
85449 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerFunctions2FeaturesINTELVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL85450     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2_ = {},
85451                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85452       : pNext{ pNext_ }
85453       , shaderIntegerFunctions2{ shaderIntegerFunctions2_ }
85454     {
85455     }
85456 
85457     VULKAN_HPP_CONSTEXPR
85458       PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85459 
PhysicalDeviceShaderIntegerFunctions2FeaturesINTELVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL85460     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
85461       : PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( *reinterpret_cast<PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *>( &rhs ) )
85462     {
85463     }
85464 
85465     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &
85466       operator=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85467 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85468 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL85469     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & operator=( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
85470     {
85471       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *>( &rhs );
85472       return *this;
85473     }
85474 
85475 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL85476     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85477     {
85478       pNext = pNext_;
85479       return *this;
85480     }
85481 
85482     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &
setShaderIntegerFunctions2VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL85483       setShaderIntegerFunctions2( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2_ ) VULKAN_HPP_NOEXCEPT
85484     {
85485       shaderIntegerFunctions2 = shaderIntegerFunctions2_;
85486       return *this;
85487     }
85488 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85489 
operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL85490     operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &() const VULKAN_HPP_NOEXCEPT
85491     {
85492       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *>( this );
85493     }
85494 
operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL85495     operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &() VULKAN_HPP_NOEXCEPT
85496     {
85497       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *>( this );
85498     }
85499 
85500 #if defined( VULKAN_HPP_USE_REFLECT )
85501 #  if 14 <= VULKAN_HPP_CPP_VERSION
85502     auto
85503 #  else
85504     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85505 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL85506       reflect() const VULKAN_HPP_NOEXCEPT
85507     {
85508       return std::tie( sType, pNext, shaderIntegerFunctions2 );
85509     }
85510 #endif
85511 
85512 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85513     auto operator<=>( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & ) const = default;
85514 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL85515     bool operator==( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
85516     {
85517 #  if defined( VULKAN_HPP_USE_REFLECT )
85518       return this->reflect() == rhs.reflect();
85519 #  else
85520       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderIntegerFunctions2 == rhs.shaderIntegerFunctions2 );
85521 #  endif
85522     }
85523 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL85524     bool operator!=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
85525     {
85526       return !operator==( rhs );
85527     }
85528 #endif
85529 
85530   public:
85531     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
85532     void *                              pNext                   = {};
85533     VULKAN_HPP_NAMESPACE::Bool32        shaderIntegerFunctions2 = {};
85534   };
85535 
85536   template <>
85537   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>
85538   {
85539     using Type = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
85540   };
85541 
85542   struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR
85543   {
85544     using NativeType = VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
85545 
85546     static const bool                                  allowDuplicate = false;
85547     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
85548 
85549 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderMaximalReconvergenceFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR85550     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderMaximalReconvergence_ = {},
85551                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85552       : pNext{ pNext_ }
85553       , shaderMaximalReconvergence{ shaderMaximalReconvergence_ }
85554     {
85555     }
85556 
85557     VULKAN_HPP_CONSTEXPR
85558       PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85559 
PhysicalDeviceShaderMaximalReconvergenceFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR85560     PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85561       : PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const *>( &rhs ) )
85562     {
85563     }
85564 
85565     PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR &
85566       operator=( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85567 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85568 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR85569     PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR & operator=( VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85570     {
85571       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const *>( &rhs );
85572       return *this;
85573     }
85574 
85575 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR85576     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85577     {
85578       pNext = pNext_;
85579       return *this;
85580     }
85581 
85582     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR &
setShaderMaximalReconvergenceVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR85583       setShaderMaximalReconvergence( VULKAN_HPP_NAMESPACE::Bool32 shaderMaximalReconvergence_ ) VULKAN_HPP_NOEXCEPT
85584     {
85585       shaderMaximalReconvergence = shaderMaximalReconvergence_;
85586       return *this;
85587     }
85588 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85589 
operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR85590     operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
85591     {
85592       return *reinterpret_cast<const VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR *>( this );
85593     }
85594 
operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR85595     operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR &() VULKAN_HPP_NOEXCEPT
85596     {
85597       return *reinterpret_cast<VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR *>( this );
85598     }
85599 
85600 #if defined( VULKAN_HPP_USE_REFLECT )
85601 #  if 14 <= VULKAN_HPP_CPP_VERSION
85602     auto
85603 #  else
85604     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85605 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR85606       reflect() const VULKAN_HPP_NOEXCEPT
85607     {
85608       return std::tie( sType, pNext, shaderMaximalReconvergence );
85609     }
85610 #endif
85611 
85612 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85613     auto operator<=>( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & ) const = default;
85614 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR85615     bool operator==( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85616     {
85617 #  if defined( VULKAN_HPP_USE_REFLECT )
85618       return this->reflect() == rhs.reflect();
85619 #  else
85620       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderMaximalReconvergence == rhs.shaderMaximalReconvergence );
85621 #  endif
85622     }
85623 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR85624     bool operator!=( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85625     {
85626       return !operator==( rhs );
85627     }
85628 #endif
85629 
85630   public:
85631     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
85632     void *                              pNext                      = {};
85633     VULKAN_HPP_NAMESPACE::Bool32        shaderMaximalReconvergence = {};
85634   };
85635 
85636   template <>
85637   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderMaximalReconvergenceFeaturesKHR>
85638   {
85639     using Type = PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
85640   };
85641 
85642   struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT
85643   {
85644     using NativeType = VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT;
85645 
85646     static const bool                                  allowDuplicate = false;
85647     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderModuleIdentifierFeaturesEXT;
85648 
85649 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderModuleIdentifierFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT85650     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderModuleIdentifierFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderModuleIdentifier_ = {},
85651                                                                           void *                       pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
85652       : pNext{ pNext_ }
85653       , shaderModuleIdentifier{ shaderModuleIdentifier_ }
85654     {
85655     }
85656 
85657     VULKAN_HPP_CONSTEXPR
85658       PhysicalDeviceShaderModuleIdentifierFeaturesEXT( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85659 
PhysicalDeviceShaderModuleIdentifierFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT85660     PhysicalDeviceShaderModuleIdentifierFeaturesEXT( VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85661       : PhysicalDeviceShaderModuleIdentifierFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderModuleIdentifierFeaturesEXT const *>( &rhs ) )
85662     {
85663     }
85664 
85665     PhysicalDeviceShaderModuleIdentifierFeaturesEXT & operator=( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85666 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85667 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT85668     PhysicalDeviceShaderModuleIdentifierFeaturesEXT & operator=( VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85669     {
85670       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT const *>( &rhs );
85671       return *this;
85672     }
85673 
85674 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT85675     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderModuleIdentifierFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85676     {
85677       pNext = pNext_;
85678       return *this;
85679     }
85680 
85681     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderModuleIdentifierFeaturesEXT &
setShaderModuleIdentifierVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT85682       setShaderModuleIdentifier( VULKAN_HPP_NAMESPACE::Bool32 shaderModuleIdentifier_ ) VULKAN_HPP_NOEXCEPT
85683     {
85684       shaderModuleIdentifier = shaderModuleIdentifier_;
85685       return *this;
85686     }
85687 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85688 
operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT85689     operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
85690     {
85691       return *reinterpret_cast<const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *>( this );
85692     }
85693 
operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT85694     operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT &() VULKAN_HPP_NOEXCEPT
85695     {
85696       return *reinterpret_cast<VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *>( this );
85697     }
85698 
85699 #if defined( VULKAN_HPP_USE_REFLECT )
85700 #  if 14 <= VULKAN_HPP_CPP_VERSION
85701     auto
85702 #  else
85703     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85704 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT85705       reflect() const VULKAN_HPP_NOEXCEPT
85706     {
85707       return std::tie( sType, pNext, shaderModuleIdentifier );
85708     }
85709 #endif
85710 
85711 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85712     auto operator<=>( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & ) const = default;
85713 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT85714     bool operator==( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85715     {
85716 #  if defined( VULKAN_HPP_USE_REFLECT )
85717       return this->reflect() == rhs.reflect();
85718 #  else
85719       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderModuleIdentifier == rhs.shaderModuleIdentifier );
85720 #  endif
85721     }
85722 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT85723     bool operator!=( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85724     {
85725       return !operator==( rhs );
85726     }
85727 #endif
85728 
85729   public:
85730     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceShaderModuleIdentifierFeaturesEXT;
85731     void *                              pNext                  = {};
85732     VULKAN_HPP_NAMESPACE::Bool32        shaderModuleIdentifier = {};
85733   };
85734 
85735   template <>
85736   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderModuleIdentifierFeaturesEXT>
85737   {
85738     using Type = PhysicalDeviceShaderModuleIdentifierFeaturesEXT;
85739   };
85740 
85741   struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT
85742   {
85743     using NativeType = VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT;
85744 
85745     static const bool                                  allowDuplicate = false;
85746     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderModuleIdentifierPropertiesEXT;
85747 
85748 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
85749     VULKAN_HPP_CONSTEXPR_14
PhysicalDeviceShaderModuleIdentifierPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT85750       PhysicalDeviceShaderModuleIdentifierPropertiesEXT( std::array<uint8_t, VK_UUID_SIZE> const & shaderModuleIdentifierAlgorithmUUID_ = {},
85751                                                          void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85752       : pNext{ pNext_ }
85753       , shaderModuleIdentifierAlgorithmUUID{ shaderModuleIdentifierAlgorithmUUID_ }
85754     {
85755     }
85756 
85757     VULKAN_HPP_CONSTEXPR_14
85758       PhysicalDeviceShaderModuleIdentifierPropertiesEXT( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85759 
PhysicalDeviceShaderModuleIdentifierPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT85760     PhysicalDeviceShaderModuleIdentifierPropertiesEXT( VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85761       : PhysicalDeviceShaderModuleIdentifierPropertiesEXT( *reinterpret_cast<PhysicalDeviceShaderModuleIdentifierPropertiesEXT const *>( &rhs ) )
85762     {
85763     }
85764 
85765     PhysicalDeviceShaderModuleIdentifierPropertiesEXT &
85766       operator=( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85767 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85768 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT85769     PhysicalDeviceShaderModuleIdentifierPropertiesEXT & operator=( VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85770     {
85771       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT const *>( &rhs );
85772       return *this;
85773     }
85774 
operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT85775     operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
85776     {
85777       return *reinterpret_cast<const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT *>( this );
85778     }
85779 
operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT85780     operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT
85781     {
85782       return *reinterpret_cast<VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT *>( this );
85783     }
85784 
85785 #if defined( VULKAN_HPP_USE_REFLECT )
85786 #  if 14 <= VULKAN_HPP_CPP_VERSION
85787     auto
85788 #  else
85789     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
85790 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT85791       reflect() const VULKAN_HPP_NOEXCEPT
85792     {
85793       return std::tie( sType, pNext, shaderModuleIdentifierAlgorithmUUID );
85794     }
85795 #endif
85796 
85797 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85798     auto operator<=>( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & ) const = default;
85799 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT85800     bool operator==( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85801     {
85802 #  if defined( VULKAN_HPP_USE_REFLECT )
85803       return this->reflect() == rhs.reflect();
85804 #  else
85805       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderModuleIdentifierAlgorithmUUID == rhs.shaderModuleIdentifierAlgorithmUUID );
85806 #  endif
85807     }
85808 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT85809     bool operator!=( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85810     {
85811       return !operator==( rhs );
85812     }
85813 #endif
85814 
85815   public:
85816     VULKAN_HPP_NAMESPACE::StructureType                         sType = StructureType::ePhysicalDeviceShaderModuleIdentifierPropertiesEXT;
85817     void *                                                      pNext = {};
85818     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> shaderModuleIdentifierAlgorithmUUID = {};
85819   };
85820 
85821   template <>
85822   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderModuleIdentifierPropertiesEXT>
85823   {
85824     using Type = PhysicalDeviceShaderModuleIdentifierPropertiesEXT;
85825   };
85826 
85827   struct PhysicalDeviceShaderObjectFeaturesEXT
85828   {
85829     using NativeType = VkPhysicalDeviceShaderObjectFeaturesEXT;
85830 
85831     static const bool                                  allowDuplicate = false;
85832     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderObjectFeaturesEXT;
85833 
85834 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderObjectFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT85835     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderObjectFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderObject_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85836       : pNext{ pNext_ }
85837       , shaderObject{ shaderObject_ }
85838     {
85839     }
85840 
85841     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderObjectFeaturesEXT( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85842 
PhysicalDeviceShaderObjectFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT85843     PhysicalDeviceShaderObjectFeaturesEXT( VkPhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85844       : PhysicalDeviceShaderObjectFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderObjectFeaturesEXT const *>( &rhs ) )
85845     {
85846     }
85847 
85848     PhysicalDeviceShaderObjectFeaturesEXT & operator=( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85849 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85850 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT85851     PhysicalDeviceShaderObjectFeaturesEXT & operator=( VkPhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85852     {
85853       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT const *>( &rhs );
85854       return *this;
85855     }
85856 
85857 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT85858     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85859     {
85860       pNext = pNext_;
85861       return *this;
85862     }
85863 
setShaderObjectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT85864     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectFeaturesEXT & setShaderObject( VULKAN_HPP_NAMESPACE::Bool32 shaderObject_ ) VULKAN_HPP_NOEXCEPT
85865     {
85866       shaderObject = shaderObject_;
85867       return *this;
85868     }
85869 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85870 
operator VkPhysicalDeviceShaderObjectFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT85871     operator VkPhysicalDeviceShaderObjectFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
85872     {
85873       return *reinterpret_cast<const VkPhysicalDeviceShaderObjectFeaturesEXT *>( this );
85874     }
85875 
operator VkPhysicalDeviceShaderObjectFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT85876     operator VkPhysicalDeviceShaderObjectFeaturesEXT &() VULKAN_HPP_NOEXCEPT
85877     {
85878       return *reinterpret_cast<VkPhysicalDeviceShaderObjectFeaturesEXT *>( this );
85879     }
85880 
85881 #if defined( VULKAN_HPP_USE_REFLECT )
85882 #  if 14 <= VULKAN_HPP_CPP_VERSION
85883     auto
85884 #  else
85885     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85886 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT85887       reflect() const VULKAN_HPP_NOEXCEPT
85888     {
85889       return std::tie( sType, pNext, shaderObject );
85890     }
85891 #endif
85892 
85893 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85894     auto operator<=>( PhysicalDeviceShaderObjectFeaturesEXT const & ) const = default;
85895 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT85896     bool operator==( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85897     {
85898 #  if defined( VULKAN_HPP_USE_REFLECT )
85899       return this->reflect() == rhs.reflect();
85900 #  else
85901       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderObject == rhs.shaderObject );
85902 #  endif
85903     }
85904 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT85905     bool operator!=( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85906     {
85907       return !operator==( rhs );
85908     }
85909 #endif
85910 
85911   public:
85912     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceShaderObjectFeaturesEXT;
85913     void *                              pNext        = {};
85914     VULKAN_HPP_NAMESPACE::Bool32        shaderObject = {};
85915   };
85916 
85917   template <>
85918   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderObjectFeaturesEXT>
85919   {
85920     using Type = PhysicalDeviceShaderObjectFeaturesEXT;
85921   };
85922 
85923   struct PhysicalDeviceShaderObjectPropertiesEXT
85924   {
85925     using NativeType = VkPhysicalDeviceShaderObjectPropertiesEXT;
85926 
85927     static const bool                                  allowDuplicate = false;
85928     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderObjectPropertiesEXT;
85929 
85930 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderObjectPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT85931     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectPropertiesEXT( std::array<uint8_t, VK_UUID_SIZE> const & shaderBinaryUUID_    = {},
85932                                                                      uint32_t                                  shaderBinaryVersion_ = {},
85933                                                                      void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85934       : pNext{ pNext_ }
85935       , shaderBinaryUUID{ shaderBinaryUUID_ }
85936       , shaderBinaryVersion{ shaderBinaryVersion_ }
85937     {
85938     }
85939 
85940     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectPropertiesEXT( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85941 
PhysicalDeviceShaderObjectPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT85942     PhysicalDeviceShaderObjectPropertiesEXT( VkPhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85943       : PhysicalDeviceShaderObjectPropertiesEXT( *reinterpret_cast<PhysicalDeviceShaderObjectPropertiesEXT const *>( &rhs ) )
85944     {
85945     }
85946 
85947     PhysicalDeviceShaderObjectPropertiesEXT & operator=( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85948 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85949 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT85950     PhysicalDeviceShaderObjectPropertiesEXT & operator=( VkPhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85951     {
85952       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT const *>( &rhs );
85953       return *this;
85954     }
85955 
operator VkPhysicalDeviceShaderObjectPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT85956     operator VkPhysicalDeviceShaderObjectPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
85957     {
85958       return *reinterpret_cast<const VkPhysicalDeviceShaderObjectPropertiesEXT *>( this );
85959     }
85960 
operator VkPhysicalDeviceShaderObjectPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT85961     operator VkPhysicalDeviceShaderObjectPropertiesEXT &() VULKAN_HPP_NOEXCEPT
85962     {
85963       return *reinterpret_cast<VkPhysicalDeviceShaderObjectPropertiesEXT *>( this );
85964     }
85965 
85966 #if defined( VULKAN_HPP_USE_REFLECT )
85967 #  if 14 <= VULKAN_HPP_CPP_VERSION
85968     auto
85969 #  else
85970     std::
85971       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &, uint32_t const &>
85972 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT85973       reflect() const VULKAN_HPP_NOEXCEPT
85974     {
85975       return std::tie( sType, pNext, shaderBinaryUUID, shaderBinaryVersion );
85976     }
85977 #endif
85978 
85979 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85980     auto operator<=>( PhysicalDeviceShaderObjectPropertiesEXT const & ) const = default;
85981 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT85982     bool operator==( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85983     {
85984 #  if defined( VULKAN_HPP_USE_REFLECT )
85985       return this->reflect() == rhs.reflect();
85986 #  else
85987       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBinaryUUID == rhs.shaderBinaryUUID ) &&
85988              ( shaderBinaryVersion == rhs.shaderBinaryVersion );
85989 #  endif
85990     }
85991 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT85992     bool operator!=( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85993     {
85994       return !operator==( rhs );
85995     }
85996 #endif
85997 
85998   public:
85999     VULKAN_HPP_NAMESPACE::StructureType                         sType               = StructureType::ePhysicalDeviceShaderObjectPropertiesEXT;
86000     void *                                                      pNext               = {};
86001     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> shaderBinaryUUID    = {};
86002     uint32_t                                                    shaderBinaryVersion = {};
86003   };
86004 
86005   template <>
86006   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderObjectPropertiesEXT>
86007   {
86008     using Type = PhysicalDeviceShaderObjectPropertiesEXT;
86009   };
86010 
86011   struct PhysicalDeviceShaderQuadControlFeaturesKHR
86012   {
86013     using NativeType = VkPhysicalDeviceShaderQuadControlFeaturesKHR;
86014 
86015     static const bool                                  allowDuplicate = false;
86016     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderQuadControlFeaturesKHR;
86017 
86018 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderQuadControlFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR86019     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderQuadControlFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderQuadControl_ = {},
86020                                                                      void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
86021       : pNext{ pNext_ }
86022       , shaderQuadControl{ shaderQuadControl_ }
86023     {
86024     }
86025 
86026     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderQuadControlFeaturesKHR( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86027 
PhysicalDeviceShaderQuadControlFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR86028     PhysicalDeviceShaderQuadControlFeaturesKHR( VkPhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
86029       : PhysicalDeviceShaderQuadControlFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderQuadControlFeaturesKHR const *>( &rhs ) )
86030     {
86031     }
86032 
86033     PhysicalDeviceShaderQuadControlFeaturesKHR & operator=( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86034 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86035 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR86036     PhysicalDeviceShaderQuadControlFeaturesKHR & operator=( VkPhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
86037     {
86038       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR const *>( &rhs );
86039       return *this;
86040     }
86041 
86042 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR86043     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderQuadControlFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86044     {
86045       pNext = pNext_;
86046       return *this;
86047     }
86048 
86049     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderQuadControlFeaturesKHR &
setShaderQuadControlVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR86050       setShaderQuadControl( VULKAN_HPP_NAMESPACE::Bool32 shaderQuadControl_ ) VULKAN_HPP_NOEXCEPT
86051     {
86052       shaderQuadControl = shaderQuadControl_;
86053       return *this;
86054     }
86055 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86056 
operator VkPhysicalDeviceShaderQuadControlFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR86057     operator VkPhysicalDeviceShaderQuadControlFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
86058     {
86059       return *reinterpret_cast<const VkPhysicalDeviceShaderQuadControlFeaturesKHR *>( this );
86060     }
86061 
operator VkPhysicalDeviceShaderQuadControlFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR86062     operator VkPhysicalDeviceShaderQuadControlFeaturesKHR &() VULKAN_HPP_NOEXCEPT
86063     {
86064       return *reinterpret_cast<VkPhysicalDeviceShaderQuadControlFeaturesKHR *>( this );
86065     }
86066 
86067 #if defined( VULKAN_HPP_USE_REFLECT )
86068 #  if 14 <= VULKAN_HPP_CPP_VERSION
86069     auto
86070 #  else
86071     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86072 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR86073       reflect() const VULKAN_HPP_NOEXCEPT
86074     {
86075       return std::tie( sType, pNext, shaderQuadControl );
86076     }
86077 #endif
86078 
86079 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86080     auto operator<=>( PhysicalDeviceShaderQuadControlFeaturesKHR const & ) const = default;
86081 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR86082     bool operator==( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
86083     {
86084 #  if defined( VULKAN_HPP_USE_REFLECT )
86085       return this->reflect() == rhs.reflect();
86086 #  else
86087       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderQuadControl == rhs.shaderQuadControl );
86088 #  endif
86089     }
86090 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR86091     bool operator!=( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
86092     {
86093       return !operator==( rhs );
86094     }
86095 #endif
86096 
86097   public:
86098     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceShaderQuadControlFeaturesKHR;
86099     void *                              pNext             = {};
86100     VULKAN_HPP_NAMESPACE::Bool32        shaderQuadControl = {};
86101   };
86102 
86103   template <>
86104   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderQuadControlFeaturesKHR>
86105   {
86106     using Type = PhysicalDeviceShaderQuadControlFeaturesKHR;
86107   };
86108 
86109   struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR
86110   {
86111     using NativeType = VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR;
86112 
86113     static const bool                                  allowDuplicate = false;
86114     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR;
86115 
86116 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR86117     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderRelaxedExtendedInstruction_ = {},
86118                                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
86119       : pNext{ pNext_ }
86120       , shaderRelaxedExtendedInstruction{ shaderRelaxedExtendedInstruction_ }
86121     {
86122     }
86123 
86124     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR( PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs )
86125       VULKAN_HPP_NOEXCEPT = default;
86126 
PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR86127     PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR( VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
86128       : PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR(
86129           *reinterpret_cast<PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const *>( &rhs ) )
86130     {
86131     }
86132 
86133     PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR &
86134       operator=( PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86135 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86136 
86137     PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR86138       operator=( VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
86139     {
86140       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const *>( &rhs );
86141       return *this;
86142     }
86143 
86144 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR86145     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86146     {
86147       pNext = pNext_;
86148       return *this;
86149     }
86150 
86151     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR &
setShaderRelaxedExtendedInstructionVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR86152       setShaderRelaxedExtendedInstruction( VULKAN_HPP_NAMESPACE::Bool32 shaderRelaxedExtendedInstruction_ ) VULKAN_HPP_NOEXCEPT
86153     {
86154       shaderRelaxedExtendedInstruction = shaderRelaxedExtendedInstruction_;
86155       return *this;
86156     }
86157 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86158 
operator VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR86159     operator VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
86160     {
86161       return *reinterpret_cast<const VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR *>( this );
86162     }
86163 
operator VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR86164     operator VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR &() VULKAN_HPP_NOEXCEPT
86165     {
86166       return *reinterpret_cast<VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR *>( this );
86167     }
86168 
86169 #if defined( VULKAN_HPP_USE_REFLECT )
86170 #  if 14 <= VULKAN_HPP_CPP_VERSION
86171     auto
86172 #  else
86173     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86174 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR86175       reflect() const VULKAN_HPP_NOEXCEPT
86176     {
86177       return std::tie( sType, pNext, shaderRelaxedExtendedInstruction );
86178     }
86179 #endif
86180 
86181 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86182     auto operator<=>( PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & ) const = default;
86183 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR86184     bool operator==( PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
86185     {
86186 #  if defined( VULKAN_HPP_USE_REFLECT )
86187       return this->reflect() == rhs.reflect();
86188 #  else
86189       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderRelaxedExtendedInstruction == rhs.shaderRelaxedExtendedInstruction );
86190 #  endif
86191     }
86192 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR86193     bool operator!=( PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
86194     {
86195       return !operator==( rhs );
86196     }
86197 #endif
86198 
86199   public:
86200     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR;
86201     void *                              pNext                            = {};
86202     VULKAN_HPP_NAMESPACE::Bool32        shaderRelaxedExtendedInstruction = {};
86203   };
86204 
86205   template <>
86206   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR>
86207   {
86208     using Type = PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR;
86209   };
86210 
86211   struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT
86212   {
86213     using NativeType = VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
86214 
86215     static const bool                                  allowDuplicate = false;
86216     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
86217 
86218 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderReplicatedCompositesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT86219     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderReplicatedComposites_ = {},
86220                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
86221       : pNext{ pNext_ }
86222       , shaderReplicatedComposites{ shaderReplicatedComposites_ }
86223     {
86224     }
86225 
86226     VULKAN_HPP_CONSTEXPR
86227       PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86228 
PhysicalDeviceShaderReplicatedCompositesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT86229     PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86230       : PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const *>( &rhs ) )
86231     {
86232     }
86233 
86234     PhysicalDeviceShaderReplicatedCompositesFeaturesEXT &
86235       operator=( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86236 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86237 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT86238     PhysicalDeviceShaderReplicatedCompositesFeaturesEXT & operator=( VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86239     {
86240       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const *>( &rhs );
86241       return *this;
86242     }
86243 
86244 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT86245     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderReplicatedCompositesFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86246     {
86247       pNext = pNext_;
86248       return *this;
86249     }
86250 
86251     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderReplicatedCompositesFeaturesEXT &
setShaderReplicatedCompositesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT86252       setShaderReplicatedComposites( VULKAN_HPP_NAMESPACE::Bool32 shaderReplicatedComposites_ ) VULKAN_HPP_NOEXCEPT
86253     {
86254       shaderReplicatedComposites = shaderReplicatedComposites_;
86255       return *this;
86256     }
86257 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86258 
operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT86259     operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
86260     {
86261       return *reinterpret_cast<const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT *>( this );
86262     }
86263 
operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT86264     operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT &() VULKAN_HPP_NOEXCEPT
86265     {
86266       return *reinterpret_cast<VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT *>( this );
86267     }
86268 
86269 #if defined( VULKAN_HPP_USE_REFLECT )
86270 #  if 14 <= VULKAN_HPP_CPP_VERSION
86271     auto
86272 #  else
86273     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86274 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT86275       reflect() const VULKAN_HPP_NOEXCEPT
86276     {
86277       return std::tie( sType, pNext, shaderReplicatedComposites );
86278     }
86279 #endif
86280 
86281 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86282     auto operator<=>( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & ) const = default;
86283 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT86284     bool operator==( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86285     {
86286 #  if defined( VULKAN_HPP_USE_REFLECT )
86287       return this->reflect() == rhs.reflect();
86288 #  else
86289       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderReplicatedComposites == rhs.shaderReplicatedComposites );
86290 #  endif
86291     }
86292 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT86293     bool operator!=( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86294     {
86295       return !operator==( rhs );
86296     }
86297 #endif
86298 
86299   public:
86300     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
86301     void *                              pNext                      = {};
86302     VULKAN_HPP_NAMESPACE::Bool32        shaderReplicatedComposites = {};
86303   };
86304 
86305   template <>
86306   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT>
86307   {
86308     using Type = PhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
86309   };
86310 
86311   struct PhysicalDeviceShaderSMBuiltinsFeaturesNV
86312   {
86313     using NativeType = VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
86314 
86315     static const bool                                  allowDuplicate = false;
86316     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV;
86317 
86318 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSMBuiltinsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV86319     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins_ = {},
86320                                                                    void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
86321       : pNext{ pNext_ }
86322       , shaderSMBuiltins{ shaderSMBuiltins_ }
86323     {
86324     }
86325 
86326     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86327 
PhysicalDeviceShaderSMBuiltinsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV86328     PhysicalDeviceShaderSMBuiltinsFeaturesNV( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
86329       : PhysicalDeviceShaderSMBuiltinsFeaturesNV( *reinterpret_cast<PhysicalDeviceShaderSMBuiltinsFeaturesNV const *>( &rhs ) )
86330     {
86331     }
86332 
86333     PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86334 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86335 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV86336     PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
86337     {
86338       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV const *>( &rhs );
86339       return *this;
86340     }
86341 
86342 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV86343     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86344     {
86345       pNext = pNext_;
86346       return *this;
86347     }
86348 
setShaderSMBuiltinsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV86349     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & setShaderSMBuiltins( VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins_ ) VULKAN_HPP_NOEXCEPT
86350     {
86351       shaderSMBuiltins = shaderSMBuiltins_;
86352       return *this;
86353     }
86354 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86355 
operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV86356     operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
86357     {
86358       return *reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *>( this );
86359     }
86360 
operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV86361     operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV &() VULKAN_HPP_NOEXCEPT
86362     {
86363       return *reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *>( this );
86364     }
86365 
86366 #if defined( VULKAN_HPP_USE_REFLECT )
86367 #  if 14 <= VULKAN_HPP_CPP_VERSION
86368     auto
86369 #  else
86370     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86371 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV86372       reflect() const VULKAN_HPP_NOEXCEPT
86373     {
86374       return std::tie( sType, pNext, shaderSMBuiltins );
86375     }
86376 #endif
86377 
86378 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86379     auto operator<=>( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & ) const = default;
86380 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV86381     bool operator==( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
86382     {
86383 #  if defined( VULKAN_HPP_USE_REFLECT )
86384       return this->reflect() == rhs.reflect();
86385 #  else
86386       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSMBuiltins == rhs.shaderSMBuiltins );
86387 #  endif
86388     }
86389 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV86390     bool operator!=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
86391     {
86392       return !operator==( rhs );
86393     }
86394 #endif
86395 
86396   public:
86397     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV;
86398     void *                              pNext            = {};
86399     VULKAN_HPP_NAMESPACE::Bool32        shaderSMBuiltins = {};
86400   };
86401 
86402   template <>
86403   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV>
86404   {
86405     using Type = PhysicalDeviceShaderSMBuiltinsFeaturesNV;
86406   };
86407 
86408   struct PhysicalDeviceShaderSMBuiltinsPropertiesNV
86409   {
86410     using NativeType = VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
86411 
86412     static const bool                                  allowDuplicate = false;
86413     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV;
86414 
86415 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
86416     VULKAN_HPP_CONSTEXPR
PhysicalDeviceShaderSMBuiltinsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV86417       PhysicalDeviceShaderSMBuiltinsPropertiesNV( uint32_t shaderSMCount_ = {}, uint32_t shaderWarpsPerSM_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
86418       : pNext{ pNext_ }
86419       , shaderSMCount{ shaderSMCount_ }
86420       , shaderWarpsPerSM{ shaderWarpsPerSM_ }
86421     {
86422     }
86423 
86424     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsPropertiesNV( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86425 
PhysicalDeviceShaderSMBuiltinsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV86426     PhysicalDeviceShaderSMBuiltinsPropertiesNV( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
86427       : PhysicalDeviceShaderSMBuiltinsPropertiesNV( *reinterpret_cast<PhysicalDeviceShaderSMBuiltinsPropertiesNV const *>( &rhs ) )
86428     {
86429     }
86430 
86431     PhysicalDeviceShaderSMBuiltinsPropertiesNV & operator=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86432 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86433 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV86434     PhysicalDeviceShaderSMBuiltinsPropertiesNV & operator=( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
86435     {
86436       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV const *>( &rhs );
86437       return *this;
86438     }
86439 
operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV86440     operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
86441     {
86442       return *reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *>( this );
86443     }
86444 
operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV86445     operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV &() VULKAN_HPP_NOEXCEPT
86446     {
86447       return *reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *>( this );
86448     }
86449 
86450 #if defined( VULKAN_HPP_USE_REFLECT )
86451 #  if 14 <= VULKAN_HPP_CPP_VERSION
86452     auto
86453 #  else
86454     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
86455 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV86456       reflect() const VULKAN_HPP_NOEXCEPT
86457     {
86458       return std::tie( sType, pNext, shaderSMCount, shaderWarpsPerSM );
86459     }
86460 #endif
86461 
86462 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86463     auto operator<=>( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & ) const = default;
86464 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV86465     bool operator==( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
86466     {
86467 #  if defined( VULKAN_HPP_USE_REFLECT )
86468       return this->reflect() == rhs.reflect();
86469 #  else
86470       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSMCount == rhs.shaderSMCount ) && ( shaderWarpsPerSM == rhs.shaderWarpsPerSM );
86471 #  endif
86472     }
86473 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV86474     bool operator!=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
86475     {
86476       return !operator==( rhs );
86477     }
86478 #endif
86479 
86480   public:
86481     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV;
86482     void *                              pNext            = {};
86483     uint32_t                            shaderSMCount    = {};
86484     uint32_t                            shaderWarpsPerSM = {};
86485   };
86486 
86487   template <>
86488   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV>
86489   {
86490     using Type = PhysicalDeviceShaderSMBuiltinsPropertiesNV;
86491   };
86492 
86493   struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures
86494   {
86495     using NativeType = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
86496 
86497     static const bool                                  allowDuplicate = false;
86498     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures;
86499 
86500 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures86501     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ = {},
86502                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
86503       : pNext{ pNext_ }
86504       , shaderSubgroupExtendedTypes{ shaderSubgroupExtendedTypes_ }
86505     {
86506     }
86507 
86508     VULKAN_HPP_CONSTEXPR
86509       PhysicalDeviceShaderSubgroupExtendedTypesFeatures( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86510 
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures86511     PhysicalDeviceShaderSubgroupExtendedTypesFeatures( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
86512       : PhysicalDeviceShaderSubgroupExtendedTypesFeatures( *reinterpret_cast<PhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>( &rhs ) )
86513     {
86514     }
86515 
86516     PhysicalDeviceShaderSubgroupExtendedTypesFeatures &
86517       operator=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86518 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86519 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures86520     PhysicalDeviceShaderSubgroupExtendedTypesFeatures & operator=( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
86521     {
86522       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>( &rhs );
86523       return *this;
86524     }
86525 
86526 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures86527     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86528     {
86529       pNext = pNext_;
86530       return *this;
86531     }
86532 
86533     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures &
setShaderSubgroupExtendedTypesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures86534       setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT
86535     {
86536       shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_;
86537       return *this;
86538     }
86539 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86540 
operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures86541     operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &() const VULKAN_HPP_NOEXCEPT
86542     {
86543       return *reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *>( this );
86544     }
86545 
operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures86546     operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &() VULKAN_HPP_NOEXCEPT
86547     {
86548       return *reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *>( this );
86549     }
86550 
86551 #if defined( VULKAN_HPP_USE_REFLECT )
86552 #  if 14 <= VULKAN_HPP_CPP_VERSION
86553     auto
86554 #  else
86555     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86556 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures86557       reflect() const VULKAN_HPP_NOEXCEPT
86558     {
86559       return std::tie( sType, pNext, shaderSubgroupExtendedTypes );
86560     }
86561 #endif
86562 
86563 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86564     auto operator<=>( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & ) const = default;
86565 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures86566     bool operator==( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
86567     {
86568 #  if defined( VULKAN_HPP_USE_REFLECT )
86569       return this->reflect() == rhs.reflect();
86570 #  else
86571       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes );
86572 #  endif
86573     }
86574 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures86575     bool operator!=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
86576     {
86577       return !operator==( rhs );
86578     }
86579 #endif
86580 
86581   public:
86582     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures;
86583     void *                              pNext                       = {};
86584     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupExtendedTypes = {};
86585   };
86586 
86587   template <>
86588   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures>
86589   {
86590     using Type = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
86591   };
86592 
86593   using PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
86594 
86595   struct PhysicalDeviceShaderSubgroupRotateFeatures
86596   {
86597     using NativeType = VkPhysicalDeviceShaderSubgroupRotateFeatures;
86598 
86599     static const bool                                  allowDuplicate = false;
86600     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderSubgroupRotateFeatures;
86601 
86602 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSubgroupRotateFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86603     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupRotateFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotate_          = {},
86604                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotateClustered_ = {},
86605                                                                      void *                       pNext_                         = nullptr ) VULKAN_HPP_NOEXCEPT
86606       : pNext{ pNext_ }
86607       , shaderSubgroupRotate{ shaderSubgroupRotate_ }
86608       , shaderSubgroupRotateClustered{ shaderSubgroupRotateClustered_ }
86609     {
86610     }
86611 
86612     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupRotateFeatures( PhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86613 
PhysicalDeviceShaderSubgroupRotateFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86614     PhysicalDeviceShaderSubgroupRotateFeatures( VkPhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
86615       : PhysicalDeviceShaderSubgroupRotateFeatures( *reinterpret_cast<PhysicalDeviceShaderSubgroupRotateFeatures const *>( &rhs ) )
86616     {
86617     }
86618 
86619     PhysicalDeviceShaderSubgroupRotateFeatures & operator=( PhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86620 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86621 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86622     PhysicalDeviceShaderSubgroupRotateFeatures & operator=( VkPhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
86623     {
86624       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures const *>( &rhs );
86625       return *this;
86626     }
86627 
86628 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86629     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86630     {
86631       pNext = pNext_;
86632       return *this;
86633     }
86634 
86635     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeatures &
setShaderSubgroupRotateVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86636       setShaderSubgroupRotate( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotate_ ) VULKAN_HPP_NOEXCEPT
86637     {
86638       shaderSubgroupRotate = shaderSubgroupRotate_;
86639       return *this;
86640     }
86641 
86642     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeatures &
setShaderSubgroupRotateClusteredVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86643       setShaderSubgroupRotateClustered( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotateClustered_ ) VULKAN_HPP_NOEXCEPT
86644     {
86645       shaderSubgroupRotateClustered = shaderSubgroupRotateClustered_;
86646       return *this;
86647     }
86648 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86649 
operator VkPhysicalDeviceShaderSubgroupRotateFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86650     operator VkPhysicalDeviceShaderSubgroupRotateFeatures const &() const VULKAN_HPP_NOEXCEPT
86651     {
86652       return *reinterpret_cast<const VkPhysicalDeviceShaderSubgroupRotateFeatures *>( this );
86653     }
86654 
operator VkPhysicalDeviceShaderSubgroupRotateFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86655     operator VkPhysicalDeviceShaderSubgroupRotateFeatures &() VULKAN_HPP_NOEXCEPT
86656     {
86657       return *reinterpret_cast<VkPhysicalDeviceShaderSubgroupRotateFeatures *>( this );
86658     }
86659 
86660 #if defined( VULKAN_HPP_USE_REFLECT )
86661 #  if 14 <= VULKAN_HPP_CPP_VERSION
86662     auto
86663 #  else
86664     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86665 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86666       reflect() const VULKAN_HPP_NOEXCEPT
86667     {
86668       return std::tie( sType, pNext, shaderSubgroupRotate, shaderSubgroupRotateClustered );
86669     }
86670 #endif
86671 
86672 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86673     auto operator<=>( PhysicalDeviceShaderSubgroupRotateFeatures const & ) const = default;
86674 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86675     bool operator==( PhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
86676     {
86677 #  if defined( VULKAN_HPP_USE_REFLECT )
86678       return this->reflect() == rhs.reflect();
86679 #  else
86680       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupRotate == rhs.shaderSubgroupRotate ) &&
86681              ( shaderSubgroupRotateClustered == rhs.shaderSubgroupRotateClustered );
86682 #  endif
86683     }
86684 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures86685     bool operator!=( PhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
86686     {
86687       return !operator==( rhs );
86688     }
86689 #endif
86690 
86691   public:
86692     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDeviceShaderSubgroupRotateFeatures;
86693     void *                              pNext                         = {};
86694     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupRotate          = {};
86695     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupRotateClustered = {};
86696   };
86697 
86698   template <>
86699   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSubgroupRotateFeatures>
86700   {
86701     using Type = PhysicalDeviceShaderSubgroupRotateFeatures;
86702   };
86703 
86704   using PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures;
86705 
86706   struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
86707   {
86708     using NativeType = VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
86709 
86710     static const bool                                  allowDuplicate = false;
86711     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
86712 
86713 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR86714     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupUniformControlFlow_ = {},
86715                                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
86716       : pNext{ pNext_ }
86717       , shaderSubgroupUniformControlFlow{ shaderSubgroupUniformControlFlow_ }
86718     {
86719     }
86720 
86721     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs )
86722       VULKAN_HPP_NOEXCEPT = default;
86723 
PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR86724     PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
86725       : PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
86726           *reinterpret_cast<PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const *>( &rhs ) )
86727     {
86728     }
86729 
86730     PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &
86731       operator=( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86732 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86733 
86734     PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR86735       operator=( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
86736     {
86737       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const *>( &rhs );
86738       return *this;
86739     }
86740 
86741 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR86742     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86743     {
86744       pNext = pNext_;
86745       return *this;
86746     }
86747 
86748     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &
setShaderSubgroupUniformControlFlowVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR86749       setShaderSubgroupUniformControlFlow( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupUniformControlFlow_ ) VULKAN_HPP_NOEXCEPT
86750     {
86751       shaderSubgroupUniformControlFlow = shaderSubgroupUniformControlFlow_;
86752       return *this;
86753     }
86754 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86755 
operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR86756     operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
86757     {
86758       return *reinterpret_cast<const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *>( this );
86759     }
86760 
operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR86761     operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &() VULKAN_HPP_NOEXCEPT
86762     {
86763       return *reinterpret_cast<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *>( this );
86764     }
86765 
86766 #if defined( VULKAN_HPP_USE_REFLECT )
86767 #  if 14 <= VULKAN_HPP_CPP_VERSION
86768     auto
86769 #  else
86770     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86771 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR86772       reflect() const VULKAN_HPP_NOEXCEPT
86773     {
86774       return std::tie( sType, pNext, shaderSubgroupUniformControlFlow );
86775     }
86776 #endif
86777 
86778 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86779     auto operator<=>( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & ) const = default;
86780 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR86781     bool operator==( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
86782     {
86783 #  if defined( VULKAN_HPP_USE_REFLECT )
86784       return this->reflect() == rhs.reflect();
86785 #  else
86786       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupUniformControlFlow == rhs.shaderSubgroupUniformControlFlow );
86787 #  endif
86788     }
86789 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR86790     bool operator!=( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
86791     {
86792       return !operator==( rhs );
86793     }
86794 #endif
86795 
86796   public:
86797     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
86798     void *                              pNext                            = {};
86799     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupUniformControlFlow = {};
86800   };
86801 
86802   template <>
86803   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>
86804   {
86805     using Type = PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
86806   };
86807 
86808   struct PhysicalDeviceShaderTerminateInvocationFeatures
86809   {
86810     using NativeType = VkPhysicalDeviceShaderTerminateInvocationFeatures;
86811 
86812     static const bool                                  allowDuplicate = false;
86813     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures;
86814 
86815 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderTerminateInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures86816     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ = {},
86817                                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
86818       : pNext{ pNext_ }
86819       , shaderTerminateInvocation{ shaderTerminateInvocation_ }
86820     {
86821     }
86822 
86823     VULKAN_HPP_CONSTEXPR
86824       PhysicalDeviceShaderTerminateInvocationFeatures( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86825 
PhysicalDeviceShaderTerminateInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures86826     PhysicalDeviceShaderTerminateInvocationFeatures( VkPhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
86827       : PhysicalDeviceShaderTerminateInvocationFeatures( *reinterpret_cast<PhysicalDeviceShaderTerminateInvocationFeatures const *>( &rhs ) )
86828     {
86829     }
86830 
86831     PhysicalDeviceShaderTerminateInvocationFeatures & operator=( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86832 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86833 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures86834     PhysicalDeviceShaderTerminateInvocationFeatures & operator=( VkPhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
86835     {
86836       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures const *>( &rhs );
86837       return *this;
86838     }
86839 
86840 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures86841     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86842     {
86843       pNext = pNext_;
86844       return *this;
86845     }
86846 
86847     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures &
setShaderTerminateInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures86848       setShaderTerminateInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ ) VULKAN_HPP_NOEXCEPT
86849     {
86850       shaderTerminateInvocation = shaderTerminateInvocation_;
86851       return *this;
86852     }
86853 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86854 
operator VkPhysicalDeviceShaderTerminateInvocationFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures86855     operator VkPhysicalDeviceShaderTerminateInvocationFeatures const &() const VULKAN_HPP_NOEXCEPT
86856     {
86857       return *reinterpret_cast<const VkPhysicalDeviceShaderTerminateInvocationFeatures *>( this );
86858     }
86859 
operator VkPhysicalDeviceShaderTerminateInvocationFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures86860     operator VkPhysicalDeviceShaderTerminateInvocationFeatures &() VULKAN_HPP_NOEXCEPT
86861     {
86862       return *reinterpret_cast<VkPhysicalDeviceShaderTerminateInvocationFeatures *>( this );
86863     }
86864 
86865 #if defined( VULKAN_HPP_USE_REFLECT )
86866 #  if 14 <= VULKAN_HPP_CPP_VERSION
86867     auto
86868 #  else
86869     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86870 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures86871       reflect() const VULKAN_HPP_NOEXCEPT
86872     {
86873       return std::tie( sType, pNext, shaderTerminateInvocation );
86874     }
86875 #endif
86876 
86877 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86878     auto operator<=>( PhysicalDeviceShaderTerminateInvocationFeatures const & ) const = default;
86879 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures86880     bool operator==( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
86881     {
86882 #  if defined( VULKAN_HPP_USE_REFLECT )
86883       return this->reflect() == rhs.reflect();
86884 #  else
86885       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderTerminateInvocation == rhs.shaderTerminateInvocation );
86886 #  endif
86887     }
86888 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures86889     bool operator!=( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
86890     {
86891       return !operator==( rhs );
86892     }
86893 #endif
86894 
86895   public:
86896     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures;
86897     void *                              pNext                     = {};
86898     VULKAN_HPP_NAMESPACE::Bool32        shaderTerminateInvocation = {};
86899   };
86900 
86901   template <>
86902   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures>
86903   {
86904     using Type = PhysicalDeviceShaderTerminateInvocationFeatures;
86905   };
86906 
86907   using PhysicalDeviceShaderTerminateInvocationFeaturesKHR = PhysicalDeviceShaderTerminateInvocationFeatures;
86908 
86909   struct PhysicalDeviceShaderTileImageFeaturesEXT
86910   {
86911     using NativeType = VkPhysicalDeviceShaderTileImageFeaturesEXT;
86912 
86913     static const bool                                  allowDuplicate = false;
86914     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderTileImageFeaturesEXT;
86915 
86916 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderTileImageFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT86917     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImageFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageColorReadAccess_   = {},
86918                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageDepthReadAccess_   = {},
86919                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageStencilReadAccess_ = {},
86920                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
86921       : pNext{ pNext_ }
86922       , shaderTileImageColorReadAccess{ shaderTileImageColorReadAccess_ }
86923       , shaderTileImageDepthReadAccess{ shaderTileImageDepthReadAccess_ }
86924       , shaderTileImageStencilReadAccess{ shaderTileImageStencilReadAccess_ }
86925     {
86926     }
86927 
86928     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImageFeaturesEXT( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86929 
PhysicalDeviceShaderTileImageFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT86930     PhysicalDeviceShaderTileImageFeaturesEXT( VkPhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86931       : PhysicalDeviceShaderTileImageFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderTileImageFeaturesEXT const *>( &rhs ) )
86932     {
86933     }
86934 
86935     PhysicalDeviceShaderTileImageFeaturesEXT & operator=( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86936 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86937 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT86938     PhysicalDeviceShaderTileImageFeaturesEXT & operator=( VkPhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86939     {
86940       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT const *>( &rhs );
86941       return *this;
86942     }
86943 
86944 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT86945     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86946     {
86947       pNext = pNext_;
86948       return *this;
86949     }
86950 
86951     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT &
setShaderTileImageColorReadAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT86952       setShaderTileImageColorReadAccess( VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageColorReadAccess_ ) VULKAN_HPP_NOEXCEPT
86953     {
86954       shaderTileImageColorReadAccess = shaderTileImageColorReadAccess_;
86955       return *this;
86956     }
86957 
86958     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT &
setShaderTileImageDepthReadAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT86959       setShaderTileImageDepthReadAccess( VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageDepthReadAccess_ ) VULKAN_HPP_NOEXCEPT
86960     {
86961       shaderTileImageDepthReadAccess = shaderTileImageDepthReadAccess_;
86962       return *this;
86963     }
86964 
86965     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT &
setShaderTileImageStencilReadAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT86966       setShaderTileImageStencilReadAccess( VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageStencilReadAccess_ ) VULKAN_HPP_NOEXCEPT
86967     {
86968       shaderTileImageStencilReadAccess = shaderTileImageStencilReadAccess_;
86969       return *this;
86970     }
86971 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86972 
operator VkPhysicalDeviceShaderTileImageFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT86973     operator VkPhysicalDeviceShaderTileImageFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
86974     {
86975       return *reinterpret_cast<const VkPhysicalDeviceShaderTileImageFeaturesEXT *>( this );
86976     }
86977 
operator VkPhysicalDeviceShaderTileImageFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT86978     operator VkPhysicalDeviceShaderTileImageFeaturesEXT &() VULKAN_HPP_NOEXCEPT
86979     {
86980       return *reinterpret_cast<VkPhysicalDeviceShaderTileImageFeaturesEXT *>( this );
86981     }
86982 
86983 #if defined( VULKAN_HPP_USE_REFLECT )
86984 #  if 14 <= VULKAN_HPP_CPP_VERSION
86985     auto
86986 #  else
86987     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86988                void * const &,
86989                VULKAN_HPP_NAMESPACE::Bool32 const &,
86990                VULKAN_HPP_NAMESPACE::Bool32 const &,
86991                VULKAN_HPP_NAMESPACE::Bool32 const &>
86992 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT86993       reflect() const VULKAN_HPP_NOEXCEPT
86994     {
86995       return std::tie( sType, pNext, shaderTileImageColorReadAccess, shaderTileImageDepthReadAccess, shaderTileImageStencilReadAccess );
86996     }
86997 #endif
86998 
86999 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87000     auto operator<=>( PhysicalDeviceShaderTileImageFeaturesEXT const & ) const = default;
87001 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT87002     bool operator==( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87003     {
87004 #  if defined( VULKAN_HPP_USE_REFLECT )
87005       return this->reflect() == rhs.reflect();
87006 #  else
87007       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderTileImageColorReadAccess == rhs.shaderTileImageColorReadAccess ) &&
87008              ( shaderTileImageDepthReadAccess == rhs.shaderTileImageDepthReadAccess ) &&
87009              ( shaderTileImageStencilReadAccess == rhs.shaderTileImageStencilReadAccess );
87010 #  endif
87011     }
87012 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT87013     bool operator!=( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87014     {
87015       return !operator==( rhs );
87016     }
87017 #endif
87018 
87019   public:
87020     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceShaderTileImageFeaturesEXT;
87021     void *                              pNext                            = {};
87022     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageColorReadAccess   = {};
87023     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageDepthReadAccess   = {};
87024     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageStencilReadAccess = {};
87025   };
87026 
87027   template <>
87028   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderTileImageFeaturesEXT>
87029   {
87030     using Type = PhysicalDeviceShaderTileImageFeaturesEXT;
87031   };
87032 
87033   struct PhysicalDeviceShaderTileImagePropertiesEXT
87034   {
87035     using NativeType = VkPhysicalDeviceShaderTileImagePropertiesEXT;
87036 
87037     static const bool                                  allowDuplicate = false;
87038     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderTileImagePropertiesEXT;
87039 
87040 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderTileImagePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT87041     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImagePropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageCoherentReadAccelerated_           = {},
87042                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageReadSampleFromPixelRateInvocation_ = {},
87043                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageReadFromHelperInvocation_          = {},
87044                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
87045       : pNext{ pNext_ }
87046       , shaderTileImageCoherentReadAccelerated{ shaderTileImageCoherentReadAccelerated_ }
87047       , shaderTileImageReadSampleFromPixelRateInvocation{ shaderTileImageReadSampleFromPixelRateInvocation_ }
87048       , shaderTileImageReadFromHelperInvocation{ shaderTileImageReadFromHelperInvocation_ }
87049     {
87050     }
87051 
87052     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImagePropertiesEXT( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87053 
PhysicalDeviceShaderTileImagePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT87054     PhysicalDeviceShaderTileImagePropertiesEXT( VkPhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87055       : PhysicalDeviceShaderTileImagePropertiesEXT( *reinterpret_cast<PhysicalDeviceShaderTileImagePropertiesEXT const *>( &rhs ) )
87056     {
87057     }
87058 
87059     PhysicalDeviceShaderTileImagePropertiesEXT & operator=( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87060 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87061 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT87062     PhysicalDeviceShaderTileImagePropertiesEXT & operator=( VkPhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87063     {
87064       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT const *>( &rhs );
87065       return *this;
87066     }
87067 
operator VkPhysicalDeviceShaderTileImagePropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT87068     operator VkPhysicalDeviceShaderTileImagePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
87069     {
87070       return *reinterpret_cast<const VkPhysicalDeviceShaderTileImagePropertiesEXT *>( this );
87071     }
87072 
operator VkPhysicalDeviceShaderTileImagePropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT87073     operator VkPhysicalDeviceShaderTileImagePropertiesEXT &() VULKAN_HPP_NOEXCEPT
87074     {
87075       return *reinterpret_cast<VkPhysicalDeviceShaderTileImagePropertiesEXT *>( this );
87076     }
87077 
87078 #if defined( VULKAN_HPP_USE_REFLECT )
87079 #  if 14 <= VULKAN_HPP_CPP_VERSION
87080     auto
87081 #  else
87082     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87083                void * const &,
87084                VULKAN_HPP_NAMESPACE::Bool32 const &,
87085                VULKAN_HPP_NAMESPACE::Bool32 const &,
87086                VULKAN_HPP_NAMESPACE::Bool32 const &>
87087 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT87088       reflect() const VULKAN_HPP_NOEXCEPT
87089     {
87090       return std::tie(
87091         sType, pNext, shaderTileImageCoherentReadAccelerated, shaderTileImageReadSampleFromPixelRateInvocation, shaderTileImageReadFromHelperInvocation );
87092     }
87093 #endif
87094 
87095 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87096     auto operator<=>( PhysicalDeviceShaderTileImagePropertiesEXT const & ) const = default;
87097 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT87098     bool operator==( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87099     {
87100 #  if defined( VULKAN_HPP_USE_REFLECT )
87101       return this->reflect() == rhs.reflect();
87102 #  else
87103       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderTileImageCoherentReadAccelerated == rhs.shaderTileImageCoherentReadAccelerated ) &&
87104              ( shaderTileImageReadSampleFromPixelRateInvocation == rhs.shaderTileImageReadSampleFromPixelRateInvocation ) &&
87105              ( shaderTileImageReadFromHelperInvocation == rhs.shaderTileImageReadFromHelperInvocation );
87106 #  endif
87107     }
87108 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT87109     bool operator!=( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87110     {
87111       return !operator==( rhs );
87112     }
87113 #endif
87114 
87115   public:
87116     VULKAN_HPP_NAMESPACE::StructureType sType                                            = StructureType::ePhysicalDeviceShaderTileImagePropertiesEXT;
87117     void *                              pNext                                            = {};
87118     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageCoherentReadAccelerated           = {};
87119     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageReadSampleFromPixelRateInvocation = {};
87120     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageReadFromHelperInvocation          = {};
87121   };
87122 
87123   template <>
87124   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderTileImagePropertiesEXT>
87125   {
87126     using Type = PhysicalDeviceShaderTileImagePropertiesEXT;
87127   };
87128 
87129   struct PhysicalDeviceShadingRateImageFeaturesNV
87130   {
87131     using NativeType = VkPhysicalDeviceShadingRateImageFeaturesNV;
87132 
87133     static const bool                                  allowDuplicate = false;
87134     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV;
87135 
87136 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShadingRateImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87137     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage_             = {},
87138                                                                    VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder_ = {},
87139                                                                    void *                       pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
87140       : pNext{ pNext_ }
87141       , shadingRateImage{ shadingRateImage_ }
87142       , shadingRateCoarseSampleOrder{ shadingRateCoarseSampleOrder_ }
87143     {
87144     }
87145 
87146     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87147 
PhysicalDeviceShadingRateImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87148     PhysicalDeviceShadingRateImageFeaturesNV( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
87149       : PhysicalDeviceShadingRateImageFeaturesNV( *reinterpret_cast<PhysicalDeviceShadingRateImageFeaturesNV const *>( &rhs ) )
87150     {
87151     }
87152 
87153     PhysicalDeviceShadingRateImageFeaturesNV & operator=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87154 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87155 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87156     PhysicalDeviceShadingRateImageFeaturesNV & operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
87157     {
87158       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV const *>( &rhs );
87159       return *this;
87160     }
87161 
87162 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87163     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
87164     {
87165       pNext = pNext_;
87166       return *this;
87167     }
87168 
setShadingRateImageVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87169     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & setShadingRateImage( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage_ ) VULKAN_HPP_NOEXCEPT
87170     {
87171       shadingRateImage = shadingRateImage_;
87172       return *this;
87173     }
87174 
87175     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV &
setShadingRateCoarseSampleOrderVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87176       setShadingRateCoarseSampleOrder( VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder_ ) VULKAN_HPP_NOEXCEPT
87177     {
87178       shadingRateCoarseSampleOrder = shadingRateCoarseSampleOrder_;
87179       return *this;
87180     }
87181 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87182 
operator VkPhysicalDeviceShadingRateImageFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87183     operator VkPhysicalDeviceShadingRateImageFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
87184     {
87185       return *reinterpret_cast<const VkPhysicalDeviceShadingRateImageFeaturesNV *>( this );
87186     }
87187 
operator VkPhysicalDeviceShadingRateImageFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87188     operator VkPhysicalDeviceShadingRateImageFeaturesNV &() VULKAN_HPP_NOEXCEPT
87189     {
87190       return *reinterpret_cast<VkPhysicalDeviceShadingRateImageFeaturesNV *>( this );
87191     }
87192 
87193 #if defined( VULKAN_HPP_USE_REFLECT )
87194 #  if 14 <= VULKAN_HPP_CPP_VERSION
87195     auto
87196 #  else
87197     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
87198 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87199       reflect() const VULKAN_HPP_NOEXCEPT
87200     {
87201       return std::tie( sType, pNext, shadingRateImage, shadingRateCoarseSampleOrder );
87202     }
87203 #endif
87204 
87205 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87206     auto operator<=>( PhysicalDeviceShadingRateImageFeaturesNV const & ) const = default;
87207 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87208     bool operator==( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
87209     {
87210 #  if defined( VULKAN_HPP_USE_REFLECT )
87211       return this->reflect() == rhs.reflect();
87212 #  else
87213       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateImage == rhs.shadingRateImage ) &&
87214              ( shadingRateCoarseSampleOrder == rhs.shadingRateCoarseSampleOrder );
87215 #  endif
87216     }
87217 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV87218     bool operator!=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
87219     {
87220       return !operator==( rhs );
87221     }
87222 #endif
87223 
87224   public:
87225     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV;
87226     void *                              pNext                        = {};
87227     VULKAN_HPP_NAMESPACE::Bool32        shadingRateImage             = {};
87228     VULKAN_HPP_NAMESPACE::Bool32        shadingRateCoarseSampleOrder = {};
87229   };
87230 
87231   template <>
87232   struct CppType<StructureType, StructureType::ePhysicalDeviceShadingRateImageFeaturesNV>
87233   {
87234     using Type = PhysicalDeviceShadingRateImageFeaturesNV;
87235   };
87236 
87237   struct PhysicalDeviceShadingRateImagePropertiesNV
87238   {
87239     using NativeType = VkPhysicalDeviceShadingRateImagePropertiesNV;
87240 
87241     static const bool                                  allowDuplicate = false;
87242     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV;
87243 
87244 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShadingRateImagePropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV87245     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImagePropertiesNV( VULKAN_HPP_NAMESPACE::Extent2D shadingRateTexelSize_        = {},
87246                                                                      uint32_t                       shadingRatePaletteSize_      = {},
87247                                                                      uint32_t                       shadingRateMaxCoarseSamples_ = {},
87248                                                                      void *                         pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
87249       : pNext{ pNext_ }
87250       , shadingRateTexelSize{ shadingRateTexelSize_ }
87251       , shadingRatePaletteSize{ shadingRatePaletteSize_ }
87252       , shadingRateMaxCoarseSamples{ shadingRateMaxCoarseSamples_ }
87253     {
87254     }
87255 
87256     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImagePropertiesNV( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87257 
PhysicalDeviceShadingRateImagePropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV87258     PhysicalDeviceShadingRateImagePropertiesNV( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
87259       : PhysicalDeviceShadingRateImagePropertiesNV( *reinterpret_cast<PhysicalDeviceShadingRateImagePropertiesNV const *>( &rhs ) )
87260     {
87261     }
87262 
87263     PhysicalDeviceShadingRateImagePropertiesNV & operator=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87264 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87265 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV87266     PhysicalDeviceShadingRateImagePropertiesNV & operator=( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
87267     {
87268       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV const *>( &rhs );
87269       return *this;
87270     }
87271 
operator VkPhysicalDeviceShadingRateImagePropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV87272     operator VkPhysicalDeviceShadingRateImagePropertiesNV const &() const VULKAN_HPP_NOEXCEPT
87273     {
87274       return *reinterpret_cast<const VkPhysicalDeviceShadingRateImagePropertiesNV *>( this );
87275     }
87276 
operator VkPhysicalDeviceShadingRateImagePropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV87277     operator VkPhysicalDeviceShadingRateImagePropertiesNV &() VULKAN_HPP_NOEXCEPT
87278     {
87279       return *reinterpret_cast<VkPhysicalDeviceShadingRateImagePropertiesNV *>( this );
87280     }
87281 
87282 #if defined( VULKAN_HPP_USE_REFLECT )
87283 #  if 14 <= VULKAN_HPP_CPP_VERSION
87284     auto
87285 #  else
87286     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &, uint32_t const &>
87287 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV87288       reflect() const VULKAN_HPP_NOEXCEPT
87289     {
87290       return std::tie( sType, pNext, shadingRateTexelSize, shadingRatePaletteSize, shadingRateMaxCoarseSamples );
87291     }
87292 #endif
87293 
87294 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87295     auto operator<=>( PhysicalDeviceShadingRateImagePropertiesNV const & ) const = default;
87296 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV87297     bool operator==( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
87298     {
87299 #  if defined( VULKAN_HPP_USE_REFLECT )
87300       return this->reflect() == rhs.reflect();
87301 #  else
87302       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateTexelSize == rhs.shadingRateTexelSize ) &&
87303              ( shadingRatePaletteSize == rhs.shadingRatePaletteSize ) && ( shadingRateMaxCoarseSamples == rhs.shadingRateMaxCoarseSamples );
87304 #  endif
87305     }
87306 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV87307     bool operator!=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
87308     {
87309       return !operator==( rhs );
87310     }
87311 #endif
87312 
87313   public:
87314     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV;
87315     void *                              pNext                       = {};
87316     VULKAN_HPP_NAMESPACE::Extent2D      shadingRateTexelSize        = {};
87317     uint32_t                            shadingRatePaletteSize      = {};
87318     uint32_t                            shadingRateMaxCoarseSamples = {};
87319   };
87320 
87321   template <>
87322   struct CppType<StructureType, StructureType::ePhysicalDeviceShadingRateImagePropertiesNV>
87323   {
87324     using Type = PhysicalDeviceShadingRateImagePropertiesNV;
87325   };
87326 
87327   struct PhysicalDeviceSparseImageFormatInfo2
87328   {
87329     using NativeType = VkPhysicalDeviceSparseImageFormatInfo2;
87330 
87331     static const bool                                  allowDuplicate = false;
87332     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSparseImageFormatInfo2;
87333 
87334 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
87335     VULKAN_HPP_CONSTEXPR
PhysicalDeviceSparseImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287336       PhysicalDeviceSparseImageFormatInfo2( VULKAN_HPP_NAMESPACE::Format              format_  = VULKAN_HPP_NAMESPACE::Format::eUndefined,
87337                                             VULKAN_HPP_NAMESPACE::ImageType           type_    = VULKAN_HPP_NAMESPACE::ImageType::e1D,
87338                                             VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
87339                                             VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage_   = {},
87340                                             VULKAN_HPP_NAMESPACE::ImageTiling         tiling_  = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal,
87341                                             const void *                              pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
87342       : pNext{ pNext_ }
87343       , format{ format_ }
87344       , type{ type_ }
87345       , samples{ samples_ }
87346       , usage{ usage_ }
87347       , tiling{ tiling_ }
87348     {
87349     }
87350 
87351     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseImageFormatInfo2( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87352 
PhysicalDeviceSparseImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287353     PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
87354       : PhysicalDeviceSparseImageFormatInfo2( *reinterpret_cast<PhysicalDeviceSparseImageFormatInfo2 const *>( &rhs ) )
87355     {
87356     }
87357 
87358     PhysicalDeviceSparseImageFormatInfo2 & operator=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87359 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87360 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287361     PhysicalDeviceSparseImageFormatInfo2 & operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
87362     {
87363       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 const *>( &rhs );
87364       return *this;
87365     }
87366 
87367 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287368     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
87369     {
87370       pNext = pNext_;
87371       return *this;
87372     }
87373 
setFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287374     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
87375     {
87376       format = format_;
87377       return *this;
87378     }
87379 
setTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287380     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT
87381     {
87382       type = type_;
87383       return *this;
87384     }
87385 
setSamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287386     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
87387     {
87388       samples = samples_;
87389       return *this;
87390     }
87391 
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287392     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
87393     {
87394       usage = usage_;
87395       return *this;
87396     }
87397 
setTilingVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287398     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
87399     {
87400       tiling = tiling_;
87401       return *this;
87402     }
87403 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87404 
operator VkPhysicalDeviceSparseImageFormatInfo2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287405     operator VkPhysicalDeviceSparseImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT
87406     {
87407       return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( this );
87408     }
87409 
operator VkPhysicalDeviceSparseImageFormatInfo2&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287410     operator VkPhysicalDeviceSparseImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT
87411     {
87412       return *reinterpret_cast<VkPhysicalDeviceSparseImageFormatInfo2 *>( this );
87413     }
87414 
87415 #if defined( VULKAN_HPP_USE_REFLECT )
87416 #  if 14 <= VULKAN_HPP_CPP_VERSION
87417     auto
87418 #  else
87419     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87420                const void * const &,
87421                VULKAN_HPP_NAMESPACE::Format const &,
87422                VULKAN_HPP_NAMESPACE::ImageType const &,
87423                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
87424                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
87425                VULKAN_HPP_NAMESPACE::ImageTiling const &>
87426 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287427       reflect() const VULKAN_HPP_NOEXCEPT
87428     {
87429       return std::tie( sType, pNext, format, type, samples, usage, tiling );
87430     }
87431 #endif
87432 
87433 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87434     auto operator<=>( PhysicalDeviceSparseImageFormatInfo2 const & ) const = default;
87435 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287436     bool operator==( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
87437     {
87438 #  if defined( VULKAN_HPP_USE_REFLECT )
87439       return this->reflect() == rhs.reflect();
87440 #  else
87441       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( type == rhs.type ) && ( samples == rhs.samples ) &&
87442              ( usage == rhs.usage ) && ( tiling == rhs.tiling );
87443 #  endif
87444     }
87445 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo287446     bool operator!=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
87447     {
87448       return !operator==( rhs );
87449     }
87450 #endif
87451 
87452   public:
87453     VULKAN_HPP_NAMESPACE::StructureType       sType   = StructureType::ePhysicalDeviceSparseImageFormatInfo2;
87454     const void *                              pNext   = {};
87455     VULKAN_HPP_NAMESPACE::Format              format  = VULKAN_HPP_NAMESPACE::Format::eUndefined;
87456     VULKAN_HPP_NAMESPACE::ImageType           type    = VULKAN_HPP_NAMESPACE::ImageType::e1D;
87457     VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
87458     VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage   = {};
87459     VULKAN_HPP_NAMESPACE::ImageTiling         tiling  = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
87460   };
87461 
87462   template <>
87463   struct CppType<StructureType, StructureType::ePhysicalDeviceSparseImageFormatInfo2>
87464   {
87465     using Type = PhysicalDeviceSparseImageFormatInfo2;
87466   };
87467 
87468   using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
87469 
87470   struct PhysicalDeviceSubgroupProperties
87471   {
87472     using NativeType = VkPhysicalDeviceSubgroupProperties;
87473 
87474     static const bool                                  allowDuplicate = false;
87475     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubgroupProperties;
87476 
87477 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties87478     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties( uint32_t                                   subgroupSize_              = {},
87479                                                            VULKAN_HPP_NAMESPACE::ShaderStageFlags     supportedStages_           = {},
87480                                                            VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations_       = {},
87481                                                            VULKAN_HPP_NAMESPACE::Bool32               quadOperationsInAllStages_ = {},
87482                                                            void *                                     pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
87483       : pNext{ pNext_ }
87484       , subgroupSize{ subgroupSize_ }
87485       , supportedStages{ supportedStages_ }
87486       , supportedOperations{ supportedOperations_ }
87487       , quadOperationsInAllStages{ quadOperationsInAllStages_ }
87488     {
87489     }
87490 
87491     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87492 
PhysicalDeviceSubgroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties87493     PhysicalDeviceSubgroupProperties( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
87494       : PhysicalDeviceSubgroupProperties( *reinterpret_cast<PhysicalDeviceSubgroupProperties const *>( &rhs ) )
87495     {
87496     }
87497 
87498     PhysicalDeviceSubgroupProperties & operator=( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87499 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87500 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties87501     PhysicalDeviceSubgroupProperties & operator=( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
87502     {
87503       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties const *>( &rhs );
87504       return *this;
87505     }
87506 
operator VkPhysicalDeviceSubgroupProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties87507     operator VkPhysicalDeviceSubgroupProperties const &() const VULKAN_HPP_NOEXCEPT
87508     {
87509       return *reinterpret_cast<const VkPhysicalDeviceSubgroupProperties *>( this );
87510     }
87511 
operator VkPhysicalDeviceSubgroupProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties87512     operator VkPhysicalDeviceSubgroupProperties &() VULKAN_HPP_NOEXCEPT
87513     {
87514       return *reinterpret_cast<VkPhysicalDeviceSubgroupProperties *>( this );
87515     }
87516 
87517 #if defined( VULKAN_HPP_USE_REFLECT )
87518 #  if 14 <= VULKAN_HPP_CPP_VERSION
87519     auto
87520 #  else
87521     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87522                void * const &,
87523                uint32_t const &,
87524                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
87525                VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags const &,
87526                VULKAN_HPP_NAMESPACE::Bool32 const &>
87527 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties87528       reflect() const VULKAN_HPP_NOEXCEPT
87529     {
87530       return std::tie( sType, pNext, subgroupSize, supportedStages, supportedOperations, quadOperationsInAllStages );
87531     }
87532 #endif
87533 
87534 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87535     auto operator<=>( PhysicalDeviceSubgroupProperties const & ) const = default;
87536 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties87537     bool operator==( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87538     {
87539 #  if defined( VULKAN_HPP_USE_REFLECT )
87540       return this->reflect() == rhs.reflect();
87541 #  else
87542       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subgroupSize == rhs.subgroupSize ) && ( supportedStages == rhs.supportedStages ) &&
87543              ( supportedOperations == rhs.supportedOperations ) && ( quadOperationsInAllStages == rhs.quadOperationsInAllStages );
87544 #  endif
87545     }
87546 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties87547     bool operator!=( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87548     {
87549       return !operator==( rhs );
87550     }
87551 #endif
87552 
87553   public:
87554     VULKAN_HPP_NAMESPACE::StructureType        sType                     = StructureType::ePhysicalDeviceSubgroupProperties;
87555     void *                                     pNext                     = {};
87556     uint32_t                                   subgroupSize              = {};
87557     VULKAN_HPP_NAMESPACE::ShaderStageFlags     supportedStages           = {};
87558     VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations       = {};
87559     VULKAN_HPP_NAMESPACE::Bool32               quadOperationsInAllStages = {};
87560   };
87561 
87562   template <>
87563   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupProperties>
87564   {
87565     using Type = PhysicalDeviceSubgroupProperties;
87566   };
87567 
87568   struct PhysicalDeviceSubgroupSizeControlFeatures
87569   {
87570     using NativeType = VkPhysicalDeviceSubgroupSizeControlFeatures;
87571 
87572     static const bool                                  allowDuplicate = false;
87573     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubgroupSizeControlFeatures;
87574 
87575 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupSizeControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87576     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeatures( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_  = {},
87577                                                                     VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ = {},
87578                                                                     void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
87579       : pNext{ pNext_ }
87580       , subgroupSizeControl{ subgroupSizeControl_ }
87581       , computeFullSubgroups{ computeFullSubgroups_ }
87582     {
87583     }
87584 
87585     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeatures( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87586 
PhysicalDeviceSubgroupSizeControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87587     PhysicalDeviceSubgroupSizeControlFeatures( VkPhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
87588       : PhysicalDeviceSubgroupSizeControlFeatures( *reinterpret_cast<PhysicalDeviceSubgroupSizeControlFeatures const *>( &rhs ) )
87589     {
87590     }
87591 
87592     PhysicalDeviceSubgroupSizeControlFeatures & operator=( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87593 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87594 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87595     PhysicalDeviceSubgroupSizeControlFeatures & operator=( VkPhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
87596     {
87597       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures const *>( &rhs );
87598       return *this;
87599     }
87600 
87601 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87602     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
87603     {
87604       pNext = pNext_;
87605       return *this;
87606     }
87607 
87608     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures &
setSubgroupSizeControlVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87609       setSubgroupSizeControl( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ ) VULKAN_HPP_NOEXCEPT
87610     {
87611       subgroupSizeControl = subgroupSizeControl_;
87612       return *this;
87613     }
87614 
87615     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures &
setComputeFullSubgroupsVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87616       setComputeFullSubgroups( VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ ) VULKAN_HPP_NOEXCEPT
87617     {
87618       computeFullSubgroups = computeFullSubgroups_;
87619       return *this;
87620     }
87621 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87622 
operator VkPhysicalDeviceSubgroupSizeControlFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87623     operator VkPhysicalDeviceSubgroupSizeControlFeatures const &() const VULKAN_HPP_NOEXCEPT
87624     {
87625       return *reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlFeatures *>( this );
87626     }
87627 
operator VkPhysicalDeviceSubgroupSizeControlFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87628     operator VkPhysicalDeviceSubgroupSizeControlFeatures &() VULKAN_HPP_NOEXCEPT
87629     {
87630       return *reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlFeatures *>( this );
87631     }
87632 
87633 #if defined( VULKAN_HPP_USE_REFLECT )
87634 #  if 14 <= VULKAN_HPP_CPP_VERSION
87635     auto
87636 #  else
87637     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
87638 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87639       reflect() const VULKAN_HPP_NOEXCEPT
87640     {
87641       return std::tie( sType, pNext, subgroupSizeControl, computeFullSubgroups );
87642     }
87643 #endif
87644 
87645 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87646     auto operator<=>( PhysicalDeviceSubgroupSizeControlFeatures const & ) const = default;
87647 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87648     bool operator==( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
87649     {
87650 #  if defined( VULKAN_HPP_USE_REFLECT )
87651       return this->reflect() == rhs.reflect();
87652 #  else
87653       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subgroupSizeControl == rhs.subgroupSizeControl ) &&
87654              ( computeFullSubgroups == rhs.computeFullSubgroups );
87655 #  endif
87656     }
87657 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures87658     bool operator!=( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
87659     {
87660       return !operator==( rhs );
87661     }
87662 #endif
87663 
87664   public:
87665     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceSubgroupSizeControlFeatures;
87666     void *                              pNext                = {};
87667     VULKAN_HPP_NAMESPACE::Bool32        subgroupSizeControl  = {};
87668     VULKAN_HPP_NAMESPACE::Bool32        computeFullSubgroups = {};
87669   };
87670 
87671   template <>
87672   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupSizeControlFeatures>
87673   {
87674     using Type = PhysicalDeviceSubgroupSizeControlFeatures;
87675   };
87676 
87677   using PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures;
87678 
87679   struct PhysicalDeviceSubgroupSizeControlProperties
87680   {
87681     using NativeType = VkPhysicalDeviceSubgroupSizeControlProperties;
87682 
87683     static const bool                                  allowDuplicate = false;
87684     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubgroupSizeControlProperties;
87685 
87686 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupSizeControlPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties87687     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlProperties( uint32_t                               minSubgroupSize_              = {},
87688                                                                       uint32_t                               maxSubgroupSize_              = {},
87689                                                                       uint32_t                               maxComputeWorkgroupSubgroups_ = {},
87690                                                                       VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages_   = {},
87691                                                                       void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
87692       : pNext{ pNext_ }
87693       , minSubgroupSize{ minSubgroupSize_ }
87694       , maxSubgroupSize{ maxSubgroupSize_ }
87695       , maxComputeWorkgroupSubgroups{ maxComputeWorkgroupSubgroups_ }
87696       , requiredSubgroupSizeStages{ requiredSubgroupSizeStages_ }
87697     {
87698     }
87699 
87700     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlProperties( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87701 
PhysicalDeviceSubgroupSizeControlPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties87702     PhysicalDeviceSubgroupSizeControlProperties( VkPhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT
87703       : PhysicalDeviceSubgroupSizeControlProperties( *reinterpret_cast<PhysicalDeviceSubgroupSizeControlProperties const *>( &rhs ) )
87704     {
87705     }
87706 
87707     PhysicalDeviceSubgroupSizeControlProperties & operator=( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87708 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87709 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties87710     PhysicalDeviceSubgroupSizeControlProperties & operator=( VkPhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT
87711     {
87712       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties const *>( &rhs );
87713       return *this;
87714     }
87715 
operator VkPhysicalDeviceSubgroupSizeControlProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties87716     operator VkPhysicalDeviceSubgroupSizeControlProperties const &() const VULKAN_HPP_NOEXCEPT
87717     {
87718       return *reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlProperties *>( this );
87719     }
87720 
operator VkPhysicalDeviceSubgroupSizeControlProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties87721     operator VkPhysicalDeviceSubgroupSizeControlProperties &() VULKAN_HPP_NOEXCEPT
87722     {
87723       return *reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlProperties *>( this );
87724     }
87725 
87726 #if defined( VULKAN_HPP_USE_REFLECT )
87727 #  if 14 <= VULKAN_HPP_CPP_VERSION
87728     auto
87729 #  else
87730     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87731                void * const &,
87732                uint32_t const &,
87733                uint32_t const &,
87734                uint32_t const &,
87735                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &>
87736 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties87737       reflect() const VULKAN_HPP_NOEXCEPT
87738     {
87739       return std::tie( sType, pNext, minSubgroupSize, maxSubgroupSize, maxComputeWorkgroupSubgroups, requiredSubgroupSizeStages );
87740     }
87741 #endif
87742 
87743 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87744     auto operator<=>( PhysicalDeviceSubgroupSizeControlProperties const & ) const = default;
87745 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties87746     bool operator==( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87747     {
87748 #  if defined( VULKAN_HPP_USE_REFLECT )
87749       return this->reflect() == rhs.reflect();
87750 #  else
87751       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minSubgroupSize == rhs.minSubgroupSize ) && ( maxSubgroupSize == rhs.maxSubgroupSize ) &&
87752              ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups ) && ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages );
87753 #  endif
87754     }
87755 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties87756     bool operator!=( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87757     {
87758       return !operator==( rhs );
87759     }
87760 #endif
87761 
87762   public:
87763     VULKAN_HPP_NAMESPACE::StructureType    sType                        = StructureType::ePhysicalDeviceSubgroupSizeControlProperties;
87764     void *                                 pNext                        = {};
87765     uint32_t                               minSubgroupSize              = {};
87766     uint32_t                               maxSubgroupSize              = {};
87767     uint32_t                               maxComputeWorkgroupSubgroups = {};
87768     VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages   = {};
87769   };
87770 
87771   template <>
87772   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupSizeControlProperties>
87773   {
87774     using Type = PhysicalDeviceSubgroupSizeControlProperties;
87775   };
87776 
87777   using PhysicalDeviceSubgroupSizeControlPropertiesEXT = PhysicalDeviceSubgroupSizeControlProperties;
87778 
87779   struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT
87780   {
87781     using NativeType = VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
87782 
87783     static const bool                                  allowDuplicate = false;
87784     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
87785 
87786 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubpassMergeFeedbackFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT87787     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 subpassMergeFeedback_ = {},
87788                                                                         void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
87789       : pNext{ pNext_ }
87790       , subpassMergeFeedback{ subpassMergeFeedback_ }
87791     {
87792     }
87793 
87794     VULKAN_HPP_CONSTEXPR
87795       PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87796 
PhysicalDeviceSubpassMergeFeedbackFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT87797     PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87798       : PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( *reinterpret_cast<PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const *>( &rhs ) )
87799     {
87800     }
87801 
87802     PhysicalDeviceSubpassMergeFeedbackFeaturesEXT & operator=( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87803 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87804 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT87805     PhysicalDeviceSubpassMergeFeedbackFeaturesEXT & operator=( VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87806     {
87807       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const *>( &rhs );
87808       return *this;
87809     }
87810 
87811 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT87812     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassMergeFeedbackFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
87813     {
87814       pNext = pNext_;
87815       return *this;
87816     }
87817 
87818     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassMergeFeedbackFeaturesEXT &
setSubpassMergeFeedbackVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT87819       setSubpassMergeFeedback( VULKAN_HPP_NAMESPACE::Bool32 subpassMergeFeedback_ ) VULKAN_HPP_NOEXCEPT
87820     {
87821       subpassMergeFeedback = subpassMergeFeedback_;
87822       return *this;
87823     }
87824 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87825 
operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT87826     operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
87827     {
87828       return *reinterpret_cast<const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *>( this );
87829     }
87830 
operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT87831     operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT &() VULKAN_HPP_NOEXCEPT
87832     {
87833       return *reinterpret_cast<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *>( this );
87834     }
87835 
87836 #if defined( VULKAN_HPP_USE_REFLECT )
87837 #  if 14 <= VULKAN_HPP_CPP_VERSION
87838     auto
87839 #  else
87840     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
87841 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT87842       reflect() const VULKAN_HPP_NOEXCEPT
87843     {
87844       return std::tie( sType, pNext, subpassMergeFeedback );
87845     }
87846 #endif
87847 
87848 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87849     auto operator<=>( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & ) const = default;
87850 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT87851     bool operator==( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87852     {
87853 #  if defined( VULKAN_HPP_USE_REFLECT )
87854       return this->reflect() == rhs.reflect();
87855 #  else
87856       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassMergeFeedback == rhs.subpassMergeFeedback );
87857 #  endif
87858     }
87859 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT87860     bool operator!=( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87861     {
87862       return !operator==( rhs );
87863     }
87864 #endif
87865 
87866   public:
87867     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
87868     void *                              pNext                = {};
87869     VULKAN_HPP_NAMESPACE::Bool32        subpassMergeFeedback = {};
87870   };
87871 
87872   template <>
87873   struct CppType<StructureType, StructureType::ePhysicalDeviceSubpassMergeFeedbackFeaturesEXT>
87874   {
87875     using Type = PhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
87876   };
87877 
87878   struct PhysicalDeviceSubpassShadingFeaturesHUAWEI
87879   {
87880     using NativeType = VkPhysicalDeviceSubpassShadingFeaturesHUAWEI;
87881 
87882     static const bool                                  allowDuplicate = false;
87883     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI;
87884 
87885 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubpassShadingFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI87886     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 subpassShading_ = {},
87887                                                                      void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
87888       : pNext{ pNext_ }
87889       , subpassShading{ subpassShading_ }
87890     {
87891     }
87892 
87893     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingFeaturesHUAWEI( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87894 
PhysicalDeviceSubpassShadingFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI87895     PhysicalDeviceSubpassShadingFeaturesHUAWEI( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
87896       : PhysicalDeviceSubpassShadingFeaturesHUAWEI( *reinterpret_cast<PhysicalDeviceSubpassShadingFeaturesHUAWEI const *>( &rhs ) )
87897     {
87898     }
87899 
87900     PhysicalDeviceSubpassShadingFeaturesHUAWEI & operator=( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87901 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87902 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI87903     PhysicalDeviceSubpassShadingFeaturesHUAWEI & operator=( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
87904     {
87905       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI const *>( &rhs );
87906       return *this;
87907     }
87908 
87909 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI87910     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
87911     {
87912       pNext = pNext_;
87913       return *this;
87914     }
87915 
setSubpassShadingVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI87916     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI & setSubpassShading( VULKAN_HPP_NAMESPACE::Bool32 subpassShading_ ) VULKAN_HPP_NOEXCEPT
87917     {
87918       subpassShading = subpassShading_;
87919       return *this;
87920     }
87921 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87922 
operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI87923     operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
87924     {
87925       return *reinterpret_cast<const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *>( this );
87926     }
87927 
operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI87928     operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
87929     {
87930       return *reinterpret_cast<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *>( this );
87931     }
87932 
87933 #if defined( VULKAN_HPP_USE_REFLECT )
87934 #  if 14 <= VULKAN_HPP_CPP_VERSION
87935     auto
87936 #  else
87937     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
87938 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI87939       reflect() const VULKAN_HPP_NOEXCEPT
87940     {
87941       return std::tie( sType, pNext, subpassShading );
87942     }
87943 #endif
87944 
87945 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87946     auto operator<=>( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & ) const = default;
87947 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI87948     bool operator==( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
87949     {
87950 #  if defined( VULKAN_HPP_USE_REFLECT )
87951       return this->reflect() == rhs.reflect();
87952 #  else
87953       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassShading == rhs.subpassShading );
87954 #  endif
87955     }
87956 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI87957     bool operator!=( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
87958     {
87959       return !operator==( rhs );
87960     }
87961 #endif
87962 
87963   public:
87964     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI;
87965     void *                              pNext          = {};
87966     VULKAN_HPP_NAMESPACE::Bool32        subpassShading = {};
87967   };
87968 
87969   template <>
87970   struct CppType<StructureType, StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI>
87971   {
87972     using Type = PhysicalDeviceSubpassShadingFeaturesHUAWEI;
87973   };
87974 
87975   struct PhysicalDeviceSubpassShadingPropertiesHUAWEI
87976   {
87977     using NativeType = VkPhysicalDeviceSubpassShadingPropertiesHUAWEI;
87978 
87979     static const bool                                  allowDuplicate = false;
87980     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI;
87981 
87982 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubpassShadingPropertiesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI87983     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingPropertiesHUAWEI( uint32_t maxSubpassShadingWorkgroupSizeAspectRatio_ = {},
87984                                                                        void *   pNext_                                     = nullptr ) VULKAN_HPP_NOEXCEPT
87985       : pNext{ pNext_ }
87986       , maxSubpassShadingWorkgroupSizeAspectRatio{ maxSubpassShadingWorkgroupSizeAspectRatio_ }
87987     {
87988     }
87989 
87990     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingPropertiesHUAWEI( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87991 
PhysicalDeviceSubpassShadingPropertiesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI87992     PhysicalDeviceSubpassShadingPropertiesHUAWEI( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
87993       : PhysicalDeviceSubpassShadingPropertiesHUAWEI( *reinterpret_cast<PhysicalDeviceSubpassShadingPropertiesHUAWEI const *>( &rhs ) )
87994     {
87995     }
87996 
87997     PhysicalDeviceSubpassShadingPropertiesHUAWEI & operator=( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87998 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87999 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI88000     PhysicalDeviceSubpassShadingPropertiesHUAWEI & operator=( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
88001     {
88002       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI const *>( &rhs );
88003       return *this;
88004     }
88005 
operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI88006     operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
88007     {
88008       return *reinterpret_cast<const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI *>( this );
88009     }
88010 
operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI88011     operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI &() VULKAN_HPP_NOEXCEPT
88012     {
88013       return *reinterpret_cast<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI *>( this );
88014     }
88015 
88016 #if defined( VULKAN_HPP_USE_REFLECT )
88017 #  if 14 <= VULKAN_HPP_CPP_VERSION
88018     auto
88019 #  else
88020     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
88021 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI88022       reflect() const VULKAN_HPP_NOEXCEPT
88023     {
88024       return std::tie( sType, pNext, maxSubpassShadingWorkgroupSizeAspectRatio );
88025     }
88026 #endif
88027 
88028 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88029     auto operator<=>( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & ) const = default;
88030 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI88031     bool operator==( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
88032     {
88033 #  if defined( VULKAN_HPP_USE_REFLECT )
88034       return this->reflect() == rhs.reflect();
88035 #  else
88036       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxSubpassShadingWorkgroupSizeAspectRatio == rhs.maxSubpassShadingWorkgroupSizeAspectRatio );
88037 #  endif
88038     }
88039 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI88040     bool operator!=( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
88041     {
88042       return !operator==( rhs );
88043     }
88044 #endif
88045 
88046   public:
88047     VULKAN_HPP_NAMESPACE::StructureType sType                                     = StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI;
88048     void *                              pNext                                     = {};
88049     uint32_t                            maxSubpassShadingWorkgroupSizeAspectRatio = {};
88050   };
88051 
88052   template <>
88053   struct CppType<StructureType, StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI>
88054   {
88055     using Type = PhysicalDeviceSubpassShadingPropertiesHUAWEI;
88056   };
88057 
88058   struct PhysicalDeviceSurfaceInfo2KHR
88059   {
88060     using NativeType = VkPhysicalDeviceSurfaceInfo2KHR;
88061 
88062     static const bool                                  allowDuplicate = false;
88063     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
88064 
88065 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSurfaceInfo2KHRVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR88066     VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
88067       : pNext{ pNext_ }
88068       , surface{ surface_ }
88069     {
88070     }
88071 
88072     VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88073 
PhysicalDeviceSurfaceInfo2KHRVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR88074     PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
88075       : PhysicalDeviceSurfaceInfo2KHR( *reinterpret_cast<PhysicalDeviceSurfaceInfo2KHR const *>( &rhs ) )
88076     {
88077     }
88078 
88079     PhysicalDeviceSurfaceInfo2KHR & operator=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88080 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88081 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR88082     PhysicalDeviceSurfaceInfo2KHR & operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
88083     {
88084       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR const *>( &rhs );
88085       return *this;
88086     }
88087 
88088 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR88089     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
88090     {
88091       pNext = pNext_;
88092       return *this;
88093     }
88094 
setSurfaceVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR88095     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT
88096     {
88097       surface = surface_;
88098       return *this;
88099     }
88100 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88101 
operator VkPhysicalDeviceSurfaceInfo2KHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR88102     operator VkPhysicalDeviceSurfaceInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
88103     {
88104       return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( this );
88105     }
88106 
operator VkPhysicalDeviceSurfaceInfo2KHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR88107     operator VkPhysicalDeviceSurfaceInfo2KHR &() VULKAN_HPP_NOEXCEPT
88108     {
88109       return *reinterpret_cast<VkPhysicalDeviceSurfaceInfo2KHR *>( this );
88110     }
88111 
88112 #if defined( VULKAN_HPP_USE_REFLECT )
88113 #  if 14 <= VULKAN_HPP_CPP_VERSION
88114     auto
88115 #  else
88116     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SurfaceKHR const &>
88117 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR88118       reflect() const VULKAN_HPP_NOEXCEPT
88119     {
88120       return std::tie( sType, pNext, surface );
88121     }
88122 #endif
88123 
88124 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88125     auto operator<=>( PhysicalDeviceSurfaceInfo2KHR const & ) const = default;
88126 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR88127     bool operator==( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88128     {
88129 #  if defined( VULKAN_HPP_USE_REFLECT )
88130       return this->reflect() == rhs.reflect();
88131 #  else
88132       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surface == rhs.surface );
88133 #  endif
88134     }
88135 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR88136     bool operator!=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88137     {
88138       return !operator==( rhs );
88139     }
88140 #endif
88141 
88142   public:
88143     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
88144     const void *                        pNext   = {};
88145     VULKAN_HPP_NAMESPACE::SurfaceKHR    surface = {};
88146   };
88147 
88148   template <>
88149   struct CppType<StructureType, StructureType::ePhysicalDeviceSurfaceInfo2KHR>
88150   {
88151     using Type = PhysicalDeviceSurfaceInfo2KHR;
88152   };
88153 
88154   struct PhysicalDeviceSwapchainMaintenance1FeaturesEXT
88155   {
88156     using NativeType = VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT;
88157 
88158     static const bool                                  allowDuplicate = false;
88159     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSwapchainMaintenance1FeaturesEXT;
88160 
88161 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSwapchainMaintenance1FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT88162     VULKAN_HPP_CONSTEXPR PhysicalDeviceSwapchainMaintenance1FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 swapchainMaintenance1_ = {},
88163                                                                          void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
88164       : pNext{ pNext_ }
88165       , swapchainMaintenance1{ swapchainMaintenance1_ }
88166     {
88167     }
88168 
88169     VULKAN_HPP_CONSTEXPR
88170       PhysicalDeviceSwapchainMaintenance1FeaturesEXT( PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88171 
PhysicalDeviceSwapchainMaintenance1FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT88172     PhysicalDeviceSwapchainMaintenance1FeaturesEXT( VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88173       : PhysicalDeviceSwapchainMaintenance1FeaturesEXT( *reinterpret_cast<PhysicalDeviceSwapchainMaintenance1FeaturesEXT const *>( &rhs ) )
88174     {
88175     }
88176 
88177     PhysicalDeviceSwapchainMaintenance1FeaturesEXT & operator=( PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88178 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88179 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT88180     PhysicalDeviceSwapchainMaintenance1FeaturesEXT & operator=( VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88181     {
88182       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT const *>( &rhs );
88183       return *this;
88184     }
88185 
88186 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT88187     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSwapchainMaintenance1FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
88188     {
88189       pNext = pNext_;
88190       return *this;
88191     }
88192 
88193     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSwapchainMaintenance1FeaturesEXT &
setSwapchainMaintenance1VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT88194       setSwapchainMaintenance1( VULKAN_HPP_NAMESPACE::Bool32 swapchainMaintenance1_ ) VULKAN_HPP_NOEXCEPT
88195     {
88196       swapchainMaintenance1 = swapchainMaintenance1_;
88197       return *this;
88198     }
88199 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88200 
operator VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT88201     operator VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
88202     {
88203       return *reinterpret_cast<const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *>( this );
88204     }
88205 
operator VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT88206     operator VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT &() VULKAN_HPP_NOEXCEPT
88207     {
88208       return *reinterpret_cast<VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *>( this );
88209     }
88210 
88211 #if defined( VULKAN_HPP_USE_REFLECT )
88212 #  if 14 <= VULKAN_HPP_CPP_VERSION
88213     auto
88214 #  else
88215     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88216 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT88217       reflect() const VULKAN_HPP_NOEXCEPT
88218     {
88219       return std::tie( sType, pNext, swapchainMaintenance1 );
88220     }
88221 #endif
88222 
88223 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88224     auto operator<=>( PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & ) const = default;
88225 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT88226     bool operator==( PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88227     {
88228 #  if defined( VULKAN_HPP_USE_REFLECT )
88229       return this->reflect() == rhs.reflect();
88230 #  else
88231       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainMaintenance1 == rhs.swapchainMaintenance1 );
88232 #  endif
88233     }
88234 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT88235     bool operator!=( PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88236     {
88237       return !operator==( rhs );
88238     }
88239 #endif
88240 
88241   public:
88242     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceSwapchainMaintenance1FeaturesEXT;
88243     void *                              pNext                 = {};
88244     VULKAN_HPP_NAMESPACE::Bool32        swapchainMaintenance1 = {};
88245   };
88246 
88247   template <>
88248   struct CppType<StructureType, StructureType::ePhysicalDeviceSwapchainMaintenance1FeaturesEXT>
88249   {
88250     using Type = PhysicalDeviceSwapchainMaintenance1FeaturesEXT;
88251   };
88252 
88253   struct PhysicalDeviceSynchronization2Features
88254   {
88255     using NativeType = VkPhysicalDeviceSynchronization2Features;
88256 
88257     static const bool                                  allowDuplicate = false;
88258     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSynchronization2Features;
88259 
88260 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSynchronization2FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features88261     VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2Features( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ = {},
88262                                                                  void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
88263       : pNext{ pNext_ }
88264       , synchronization2{ synchronization2_ }
88265     {
88266     }
88267 
88268     VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2Features( PhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88269 
PhysicalDeviceSynchronization2FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features88270     PhysicalDeviceSynchronization2Features( VkPhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT
88271       : PhysicalDeviceSynchronization2Features( *reinterpret_cast<PhysicalDeviceSynchronization2Features const *>( &rhs ) )
88272     {
88273     }
88274 
88275     PhysicalDeviceSynchronization2Features & operator=( PhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88276 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88277 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features88278     PhysicalDeviceSynchronization2Features & operator=( VkPhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT
88279     {
88280       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features const *>( &rhs );
88281       return *this;
88282     }
88283 
88284 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features88285     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
88286     {
88287       pNext = pNext_;
88288       return *this;
88289     }
88290 
setSynchronization2VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features88291     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features & setSynchronization2( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ ) VULKAN_HPP_NOEXCEPT
88292     {
88293       synchronization2 = synchronization2_;
88294       return *this;
88295     }
88296 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88297 
operator VkPhysicalDeviceSynchronization2Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features88298     operator VkPhysicalDeviceSynchronization2Features const &() const VULKAN_HPP_NOEXCEPT
88299     {
88300       return *reinterpret_cast<const VkPhysicalDeviceSynchronization2Features *>( this );
88301     }
88302 
operator VkPhysicalDeviceSynchronization2Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features88303     operator VkPhysicalDeviceSynchronization2Features &() VULKAN_HPP_NOEXCEPT
88304     {
88305       return *reinterpret_cast<VkPhysicalDeviceSynchronization2Features *>( this );
88306     }
88307 
88308 #if defined( VULKAN_HPP_USE_REFLECT )
88309 #  if 14 <= VULKAN_HPP_CPP_VERSION
88310     auto
88311 #  else
88312     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88313 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features88314       reflect() const VULKAN_HPP_NOEXCEPT
88315     {
88316       return std::tie( sType, pNext, synchronization2 );
88317     }
88318 #endif
88319 
88320 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88321     auto operator<=>( PhysicalDeviceSynchronization2Features const & ) const = default;
88322 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features88323     bool operator==( PhysicalDeviceSynchronization2Features const & rhs ) const VULKAN_HPP_NOEXCEPT
88324     {
88325 #  if defined( VULKAN_HPP_USE_REFLECT )
88326       return this->reflect() == rhs.reflect();
88327 #  else
88328       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( synchronization2 == rhs.synchronization2 );
88329 #  endif
88330     }
88331 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features88332     bool operator!=( PhysicalDeviceSynchronization2Features const & rhs ) const VULKAN_HPP_NOEXCEPT
88333     {
88334       return !operator==( rhs );
88335     }
88336 #endif
88337 
88338   public:
88339     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceSynchronization2Features;
88340     void *                              pNext            = {};
88341     VULKAN_HPP_NAMESPACE::Bool32        synchronization2 = {};
88342   };
88343 
88344   template <>
88345   struct CppType<StructureType, StructureType::ePhysicalDeviceSynchronization2Features>
88346   {
88347     using Type = PhysicalDeviceSynchronization2Features;
88348   };
88349 
88350   using PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features;
88351 
88352   struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT
88353   {
88354     using NativeType = VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
88355 
88356     static const bool                                  allowDuplicate = false;
88357     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
88358 
88359 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTexelBufferAlignmentFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT88360     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ = {},
88361                                                                         void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
88362       : pNext{ pNext_ }
88363       , texelBufferAlignment{ texelBufferAlignment_ }
88364     {
88365     }
88366 
88367     VULKAN_HPP_CONSTEXPR
88368       PhysicalDeviceTexelBufferAlignmentFeaturesEXT( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88369 
PhysicalDeviceTexelBufferAlignmentFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT88370     PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88371       : PhysicalDeviceTexelBufferAlignmentFeaturesEXT( *reinterpret_cast<PhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>( &rhs ) )
88372     {
88373     }
88374 
88375     PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88376 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88377 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT88378     PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88379     {
88380       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>( &rhs );
88381       return *this;
88382     }
88383 
88384 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT88385     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
88386     {
88387       pNext = pNext_;
88388       return *this;
88389     }
88390 
88391     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT &
setTexelBufferAlignmentVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT88392       setTexelBufferAlignment( VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ ) VULKAN_HPP_NOEXCEPT
88393     {
88394       texelBufferAlignment = texelBufferAlignment_;
88395       return *this;
88396     }
88397 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88398 
operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT88399     operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
88400     {
88401       return *reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *>( this );
88402     }
88403 
operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT88404     operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &() VULKAN_HPP_NOEXCEPT
88405     {
88406       return *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *>( this );
88407     }
88408 
88409 #if defined( VULKAN_HPP_USE_REFLECT )
88410 #  if 14 <= VULKAN_HPP_CPP_VERSION
88411     auto
88412 #  else
88413     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88414 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT88415       reflect() const VULKAN_HPP_NOEXCEPT
88416     {
88417       return std::tie( sType, pNext, texelBufferAlignment );
88418     }
88419 #endif
88420 
88421 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88422     auto operator<=>( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & ) const = default;
88423 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT88424     bool operator==( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88425     {
88426 #  if defined( VULKAN_HPP_USE_REFLECT )
88427       return this->reflect() == rhs.reflect();
88428 #  else
88429       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( texelBufferAlignment == rhs.texelBufferAlignment );
88430 #  endif
88431     }
88432 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT88433     bool operator!=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88434     {
88435       return !operator==( rhs );
88436     }
88437 #endif
88438 
88439   public:
88440     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
88441     void *                              pNext                = {};
88442     VULKAN_HPP_NAMESPACE::Bool32        texelBufferAlignment = {};
88443   };
88444 
88445   template <>
88446   struct CppType<StructureType, StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT>
88447   {
88448     using Type = PhysicalDeviceTexelBufferAlignmentFeaturesEXT;
88449   };
88450 
88451   struct PhysicalDeviceTexelBufferAlignmentProperties
88452   {
88453     using NativeType = VkPhysicalDeviceTexelBufferAlignmentProperties;
88454 
88455     static const bool                                  allowDuplicate = false;
88456     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTexelBufferAlignmentProperties;
88457 
88458 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTexelBufferAlignmentPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties88459     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentProperties( VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes_       = {},
88460                                                                        VULKAN_HPP_NAMESPACE::Bool32     storageTexelBufferOffsetSingleTexelAlignment_ = {},
88461                                                                        VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes_       = {},
88462                                                                        VULKAN_HPP_NAMESPACE::Bool32     uniformTexelBufferOffsetSingleTexelAlignment_ = {},
88463                                                                        void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
88464       : pNext{ pNext_ }
88465       , storageTexelBufferOffsetAlignmentBytes{ storageTexelBufferOffsetAlignmentBytes_ }
88466       , storageTexelBufferOffsetSingleTexelAlignment{ storageTexelBufferOffsetSingleTexelAlignment_ }
88467       , uniformTexelBufferOffsetAlignmentBytes{ uniformTexelBufferOffsetAlignmentBytes_ }
88468       , uniformTexelBufferOffsetSingleTexelAlignment{ uniformTexelBufferOffsetSingleTexelAlignment_ }
88469     {
88470     }
88471 
88472     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentProperties( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88473 
PhysicalDeviceTexelBufferAlignmentPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties88474     PhysicalDeviceTexelBufferAlignmentProperties( VkPhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT
88475       : PhysicalDeviceTexelBufferAlignmentProperties( *reinterpret_cast<PhysicalDeviceTexelBufferAlignmentProperties const *>( &rhs ) )
88476     {
88477     }
88478 
88479     PhysicalDeviceTexelBufferAlignmentProperties & operator=( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88480 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88481 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties88482     PhysicalDeviceTexelBufferAlignmentProperties & operator=( VkPhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT
88483     {
88484       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties const *>( &rhs );
88485       return *this;
88486     }
88487 
operator VkPhysicalDeviceTexelBufferAlignmentProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties88488     operator VkPhysicalDeviceTexelBufferAlignmentProperties const &() const VULKAN_HPP_NOEXCEPT
88489     {
88490       return *reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentProperties *>( this );
88491     }
88492 
operator VkPhysicalDeviceTexelBufferAlignmentProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties88493     operator VkPhysicalDeviceTexelBufferAlignmentProperties &() VULKAN_HPP_NOEXCEPT
88494     {
88495       return *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentProperties *>( this );
88496     }
88497 
88498 #if defined( VULKAN_HPP_USE_REFLECT )
88499 #  if 14 <= VULKAN_HPP_CPP_VERSION
88500     auto
88501 #  else
88502     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
88503                void * const &,
88504                VULKAN_HPP_NAMESPACE::DeviceSize const &,
88505                VULKAN_HPP_NAMESPACE::Bool32 const &,
88506                VULKAN_HPP_NAMESPACE::DeviceSize const &,
88507                VULKAN_HPP_NAMESPACE::Bool32 const &>
88508 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties88509       reflect() const VULKAN_HPP_NOEXCEPT
88510     {
88511       return std::tie( sType,
88512                        pNext,
88513                        storageTexelBufferOffsetAlignmentBytes,
88514                        storageTexelBufferOffsetSingleTexelAlignment,
88515                        uniformTexelBufferOffsetAlignmentBytes,
88516                        uniformTexelBufferOffsetSingleTexelAlignment );
88517     }
88518 #endif
88519 
88520 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88521     auto operator<=>( PhysicalDeviceTexelBufferAlignmentProperties const & ) const = default;
88522 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties88523     bool operator==( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
88524     {
88525 #  if defined( VULKAN_HPP_USE_REFLECT )
88526       return this->reflect() == rhs.reflect();
88527 #  else
88528       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes ) &&
88529              ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment ) &&
88530              ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes ) &&
88531              ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment );
88532 #  endif
88533     }
88534 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties88535     bool operator!=( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
88536     {
88537       return !operator==( rhs );
88538     }
88539 #endif
88540 
88541   public:
88542     VULKAN_HPP_NAMESPACE::StructureType sType                                        = StructureType::ePhysicalDeviceTexelBufferAlignmentProperties;
88543     void *                              pNext                                        = {};
88544     VULKAN_HPP_NAMESPACE::DeviceSize    storageTexelBufferOffsetAlignmentBytes       = {};
88545     VULKAN_HPP_NAMESPACE::Bool32        storageTexelBufferOffsetSingleTexelAlignment = {};
88546     VULKAN_HPP_NAMESPACE::DeviceSize    uniformTexelBufferOffsetAlignmentBytes       = {};
88547     VULKAN_HPP_NAMESPACE::Bool32        uniformTexelBufferOffsetSingleTexelAlignment = {};
88548   };
88549 
88550   template <>
88551   struct CppType<StructureType, StructureType::ePhysicalDeviceTexelBufferAlignmentProperties>
88552   {
88553     using Type = PhysicalDeviceTexelBufferAlignmentProperties;
88554   };
88555 
88556   using PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentProperties;
88557 
88558   struct PhysicalDeviceTextureCompressionASTCHDRFeatures
88559   {
88560     using NativeType = VkPhysicalDeviceTextureCompressionASTCHDRFeatures;
88561 
88562     static const bool                                  allowDuplicate = false;
88563     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures;
88564 
88565 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTextureCompressionASTCHDRFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures88566     VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeatures( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ = {},
88567                                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
88568       : pNext{ pNext_ }
88569       , textureCompressionASTC_HDR{ textureCompressionASTC_HDR_ }
88570     {
88571     }
88572 
88573     VULKAN_HPP_CONSTEXPR
88574       PhysicalDeviceTextureCompressionASTCHDRFeatures( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88575 
PhysicalDeviceTextureCompressionASTCHDRFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures88576     PhysicalDeviceTextureCompressionASTCHDRFeatures( VkPhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
88577       : PhysicalDeviceTextureCompressionASTCHDRFeatures( *reinterpret_cast<PhysicalDeviceTextureCompressionASTCHDRFeatures const *>( &rhs ) )
88578     {
88579     }
88580 
88581     PhysicalDeviceTextureCompressionASTCHDRFeatures & operator=( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88582 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88583 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures88584     PhysicalDeviceTextureCompressionASTCHDRFeatures & operator=( VkPhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
88585     {
88586       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures const *>( &rhs );
88587       return *this;
88588     }
88589 
88590 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures88591     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
88592     {
88593       pNext = pNext_;
88594       return *this;
88595     }
88596 
88597     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures &
setTextureCompressionASTC_HDRVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures88598       setTextureCompressionASTC_HDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ ) VULKAN_HPP_NOEXCEPT
88599     {
88600       textureCompressionASTC_HDR = textureCompressionASTC_HDR_;
88601       return *this;
88602     }
88603 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88604 
operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures88605     operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures const &() const VULKAN_HPP_NOEXCEPT
88606     {
88607       return *reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTCHDRFeatures *>( this );
88608     }
88609 
operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures88610     operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures &() VULKAN_HPP_NOEXCEPT
88611     {
88612       return *reinterpret_cast<VkPhysicalDeviceTextureCompressionASTCHDRFeatures *>( this );
88613     }
88614 
88615 #if defined( VULKAN_HPP_USE_REFLECT )
88616 #  if 14 <= VULKAN_HPP_CPP_VERSION
88617     auto
88618 #  else
88619     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88620 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures88621       reflect() const VULKAN_HPP_NOEXCEPT
88622     {
88623       return std::tie( sType, pNext, textureCompressionASTC_HDR );
88624     }
88625 #endif
88626 
88627 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88628     auto operator<=>( PhysicalDeviceTextureCompressionASTCHDRFeatures const & ) const = default;
88629 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures88630     bool operator==( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
88631     {
88632 #  if defined( VULKAN_HPP_USE_REFLECT )
88633       return this->reflect() == rhs.reflect();
88634 #  else
88635       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR );
88636 #  endif
88637     }
88638 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures88639     bool operator!=( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
88640     {
88641       return !operator==( rhs );
88642     }
88643 #endif
88644 
88645   public:
88646     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures;
88647     void *                              pNext                      = {};
88648     VULKAN_HPP_NAMESPACE::Bool32        textureCompressionASTC_HDR = {};
88649   };
88650 
88651   template <>
88652   struct CppType<StructureType, StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures>
88653   {
88654     using Type = PhysicalDeviceTextureCompressionASTCHDRFeatures;
88655   };
88656 
88657   using PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeatures;
88658 
88659   struct PhysicalDeviceTilePropertiesFeaturesQCOM
88660   {
88661     using NativeType = VkPhysicalDeviceTilePropertiesFeaturesQCOM;
88662 
88663     static const bool                                  allowDuplicate = false;
88664     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTilePropertiesFeaturesQCOM;
88665 
88666 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTilePropertiesFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM88667     VULKAN_HPP_CONSTEXPR PhysicalDeviceTilePropertiesFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 tileProperties_ = {},
88668                                                                    void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
88669       : pNext{ pNext_ }
88670       , tileProperties{ tileProperties_ }
88671     {
88672     }
88673 
88674     VULKAN_HPP_CONSTEXPR PhysicalDeviceTilePropertiesFeaturesQCOM( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88675 
PhysicalDeviceTilePropertiesFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM88676     PhysicalDeviceTilePropertiesFeaturesQCOM( VkPhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
88677       : PhysicalDeviceTilePropertiesFeaturesQCOM( *reinterpret_cast<PhysicalDeviceTilePropertiesFeaturesQCOM const *>( &rhs ) )
88678     {
88679     }
88680 
88681     PhysicalDeviceTilePropertiesFeaturesQCOM & operator=( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88682 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88683 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM88684     PhysicalDeviceTilePropertiesFeaturesQCOM & operator=( VkPhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
88685     {
88686       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM const *>( &rhs );
88687       return *this;
88688     }
88689 
88690 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM88691     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTilePropertiesFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
88692     {
88693       pNext = pNext_;
88694       return *this;
88695     }
88696 
setTilePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM88697     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTilePropertiesFeaturesQCOM & setTileProperties( VULKAN_HPP_NAMESPACE::Bool32 tileProperties_ ) VULKAN_HPP_NOEXCEPT
88698     {
88699       tileProperties = tileProperties_;
88700       return *this;
88701     }
88702 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88703 
operator VkPhysicalDeviceTilePropertiesFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM88704     operator VkPhysicalDeviceTilePropertiesFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
88705     {
88706       return *reinterpret_cast<const VkPhysicalDeviceTilePropertiesFeaturesQCOM *>( this );
88707     }
88708 
operator VkPhysicalDeviceTilePropertiesFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM88709     operator VkPhysicalDeviceTilePropertiesFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
88710     {
88711       return *reinterpret_cast<VkPhysicalDeviceTilePropertiesFeaturesQCOM *>( this );
88712     }
88713 
88714 #if defined( VULKAN_HPP_USE_REFLECT )
88715 #  if 14 <= VULKAN_HPP_CPP_VERSION
88716     auto
88717 #  else
88718     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88719 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM88720       reflect() const VULKAN_HPP_NOEXCEPT
88721     {
88722       return std::tie( sType, pNext, tileProperties );
88723     }
88724 #endif
88725 
88726 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88727     auto operator<=>( PhysicalDeviceTilePropertiesFeaturesQCOM const & ) const = default;
88728 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM88729     bool operator==( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
88730     {
88731 #  if defined( VULKAN_HPP_USE_REFLECT )
88732       return this->reflect() == rhs.reflect();
88733 #  else
88734       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tileProperties == rhs.tileProperties );
88735 #  endif
88736     }
88737 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM88738     bool operator!=( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
88739     {
88740       return !operator==( rhs );
88741     }
88742 #endif
88743 
88744   public:
88745     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceTilePropertiesFeaturesQCOM;
88746     void *                              pNext          = {};
88747     VULKAN_HPP_NAMESPACE::Bool32        tileProperties = {};
88748   };
88749 
88750   template <>
88751   struct CppType<StructureType, StructureType::ePhysicalDeviceTilePropertiesFeaturesQCOM>
88752   {
88753     using Type = PhysicalDeviceTilePropertiesFeaturesQCOM;
88754   };
88755 
88756   struct PhysicalDeviceTimelineSemaphoreFeatures
88757   {
88758     using NativeType = VkPhysicalDeviceTimelineSemaphoreFeatures;
88759 
88760     static const bool                                  allowDuplicate = false;
88761     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures;
88762 
88763 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTimelineSemaphoreFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures88764     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ = {},
88765                                                                   void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
88766       : pNext{ pNext_ }
88767       , timelineSemaphore{ timelineSemaphore_ }
88768     {
88769     }
88770 
88771     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88772 
PhysicalDeviceTimelineSemaphoreFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures88773     PhysicalDeviceTimelineSemaphoreFeatures( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
88774       : PhysicalDeviceTimelineSemaphoreFeatures( *reinterpret_cast<PhysicalDeviceTimelineSemaphoreFeatures const *>( &rhs ) )
88775     {
88776     }
88777 
88778     PhysicalDeviceTimelineSemaphoreFeatures & operator=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88779 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88780 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures88781     PhysicalDeviceTimelineSemaphoreFeatures & operator=( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
88782     {
88783       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures const *>( &rhs );
88784       return *this;
88785     }
88786 
88787 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures88788     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
88789     {
88790       pNext = pNext_;
88791       return *this;
88792     }
88793 
88794     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures &
setTimelineSemaphoreVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures88795       setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT
88796     {
88797       timelineSemaphore = timelineSemaphore_;
88798       return *this;
88799     }
88800 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88801 
operator VkPhysicalDeviceTimelineSemaphoreFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures88802     operator VkPhysicalDeviceTimelineSemaphoreFeatures const &() const VULKAN_HPP_NOEXCEPT
88803     {
88804       return *reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreFeatures *>( this );
88805     }
88806 
operator VkPhysicalDeviceTimelineSemaphoreFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures88807     operator VkPhysicalDeviceTimelineSemaphoreFeatures &() VULKAN_HPP_NOEXCEPT
88808     {
88809       return *reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreFeatures *>( this );
88810     }
88811 
88812 #if defined( VULKAN_HPP_USE_REFLECT )
88813 #  if 14 <= VULKAN_HPP_CPP_VERSION
88814     auto
88815 #  else
88816     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88817 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures88818       reflect() const VULKAN_HPP_NOEXCEPT
88819     {
88820       return std::tie( sType, pNext, timelineSemaphore );
88821     }
88822 #endif
88823 
88824 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88825     auto operator<=>( PhysicalDeviceTimelineSemaphoreFeatures const & ) const = default;
88826 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures88827     bool operator==( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
88828     {
88829 #  if defined( VULKAN_HPP_USE_REFLECT )
88830       return this->reflect() == rhs.reflect();
88831 #  else
88832       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timelineSemaphore == rhs.timelineSemaphore );
88833 #  endif
88834     }
88835 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures88836     bool operator!=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
88837     {
88838       return !operator==( rhs );
88839     }
88840 #endif
88841 
88842   public:
88843     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures;
88844     void *                              pNext             = {};
88845     VULKAN_HPP_NAMESPACE::Bool32        timelineSemaphore = {};
88846   };
88847 
88848   template <>
88849   struct CppType<StructureType, StructureType::ePhysicalDeviceTimelineSemaphoreFeatures>
88850   {
88851     using Type = PhysicalDeviceTimelineSemaphoreFeatures;
88852   };
88853 
88854   using PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
88855 
88856   struct PhysicalDeviceTimelineSemaphoreProperties
88857   {
88858     using NativeType = VkPhysicalDeviceTimelineSemaphoreProperties;
88859 
88860     static const bool                                  allowDuplicate = false;
88861     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTimelineSemaphoreProperties;
88862 
88863 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTimelineSemaphorePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties88864     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( uint64_t maxTimelineSemaphoreValueDifference_ = {},
88865                                                                     void *   pNext_                               = nullptr ) VULKAN_HPP_NOEXCEPT
88866       : pNext{ pNext_ }
88867       , maxTimelineSemaphoreValueDifference{ maxTimelineSemaphoreValueDifference_ }
88868     {
88869     }
88870 
88871     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88872 
PhysicalDeviceTimelineSemaphorePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties88873     PhysicalDeviceTimelineSemaphoreProperties( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
88874       : PhysicalDeviceTimelineSemaphoreProperties( *reinterpret_cast<PhysicalDeviceTimelineSemaphoreProperties const *>( &rhs ) )
88875     {
88876     }
88877 
88878     PhysicalDeviceTimelineSemaphoreProperties & operator=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88879 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88880 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties88881     PhysicalDeviceTimelineSemaphoreProperties & operator=( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
88882     {
88883       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties const *>( &rhs );
88884       return *this;
88885     }
88886 
operator VkPhysicalDeviceTimelineSemaphoreProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties88887     operator VkPhysicalDeviceTimelineSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT
88888     {
88889       return *reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreProperties *>( this );
88890     }
88891 
operator VkPhysicalDeviceTimelineSemaphoreProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties88892     operator VkPhysicalDeviceTimelineSemaphoreProperties &() VULKAN_HPP_NOEXCEPT
88893     {
88894       return *reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreProperties *>( this );
88895     }
88896 
88897 #if defined( VULKAN_HPP_USE_REFLECT )
88898 #  if 14 <= VULKAN_HPP_CPP_VERSION
88899     auto
88900 #  else
88901     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
88902 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties88903       reflect() const VULKAN_HPP_NOEXCEPT
88904     {
88905       return std::tie( sType, pNext, maxTimelineSemaphoreValueDifference );
88906     }
88907 #endif
88908 
88909 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88910     auto operator<=>( PhysicalDeviceTimelineSemaphoreProperties const & ) const = default;
88911 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties88912     bool operator==( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
88913     {
88914 #  if defined( VULKAN_HPP_USE_REFLECT )
88915       return this->reflect() == rhs.reflect();
88916 #  else
88917       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference );
88918 #  endif
88919     }
88920 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties88921     bool operator!=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
88922     {
88923       return !operator==( rhs );
88924     }
88925 #endif
88926 
88927   public:
88928     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::ePhysicalDeviceTimelineSemaphoreProperties;
88929     void *                              pNext                               = {};
88930     uint64_t                            maxTimelineSemaphoreValueDifference = {};
88931   };
88932 
88933   template <>
88934   struct CppType<StructureType, StructureType::ePhysicalDeviceTimelineSemaphoreProperties>
88935   {
88936     using Type = PhysicalDeviceTimelineSemaphoreProperties;
88937   };
88938 
88939   using PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
88940 
88941   struct PhysicalDeviceToolProperties
88942   {
88943     using NativeType = VkPhysicalDeviceToolProperties;
88944 
88945     static const bool                                  allowDuplicate = false;
88946     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceToolProperties;
88947 
88948 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceToolPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties88949     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolProperties( std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & name_        = {},
88950                                                           std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & version_     = {},
88951                                                           VULKAN_HPP_NAMESPACE::ToolPurposeFlags               purposes_    = {},
88952                                                           std::array<char, VK_MAX_DESCRIPTION_SIZE> const &    description_ = {},
88953                                                           std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & layer_       = {},
88954                                                           void *                                               pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
88955       : pNext{ pNext_ }
88956       , name{ name_ }
88957       , version{ version_ }
88958       , purposes{ purposes_ }
88959       , description{ description_ }
88960       , layer{ layer_ }
88961     {
88962     }
88963 
88964     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolProperties( PhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88965 
PhysicalDeviceToolPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties88966     PhysicalDeviceToolProperties( VkPhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT
88967       : PhysicalDeviceToolProperties( *reinterpret_cast<PhysicalDeviceToolProperties const *>( &rhs ) )
88968     {
88969     }
88970 
88971     PhysicalDeviceToolProperties & operator=( PhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88972 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88973 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties88974     PhysicalDeviceToolProperties & operator=( VkPhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT
88975     {
88976       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties const *>( &rhs );
88977       return *this;
88978     }
88979 
operator VkPhysicalDeviceToolProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties88980     operator VkPhysicalDeviceToolProperties const &() const VULKAN_HPP_NOEXCEPT
88981     {
88982       return *reinterpret_cast<const VkPhysicalDeviceToolProperties *>( this );
88983     }
88984 
operator VkPhysicalDeviceToolProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties88985     operator VkPhysicalDeviceToolProperties &() VULKAN_HPP_NOEXCEPT
88986     {
88987       return *reinterpret_cast<VkPhysicalDeviceToolProperties *>( this );
88988     }
88989 
88990 #if defined( VULKAN_HPP_USE_REFLECT )
88991 #  if 14 <= VULKAN_HPP_CPP_VERSION
88992     auto
88993 #  else
88994     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
88995                void * const &,
88996                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &,
88997                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &,
88998                VULKAN_HPP_NAMESPACE::ToolPurposeFlags const &,
88999                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
89000                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &>
89001 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties89002       reflect() const VULKAN_HPP_NOEXCEPT
89003     {
89004       return std::tie( sType, pNext, name, version, purposes, description, layer );
89005     }
89006 #endif
89007 
89008 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties89009     std::strong_ordering operator<=>( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
89010     {
89011       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
89012         return cmp;
89013       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
89014         return cmp;
89015       if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 )
89016         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
89017       if ( auto cmp = strcmp( version, rhs.version ); cmp != 0 )
89018         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
89019       if ( auto cmp = purposes <=> rhs.purposes; cmp != 0 )
89020         return cmp;
89021       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
89022         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
89023       if ( auto cmp = strcmp( layer, rhs.layer ); cmp != 0 )
89024         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
89025 
89026       return std::strong_ordering::equivalent;
89027     }
89028 #endif
89029 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties89030     bool operator==( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
89031     {
89032       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( strcmp( name, rhs.name ) == 0 ) && ( strcmp( version, rhs.version ) == 0 ) &&
89033              ( purposes == rhs.purposes ) && ( strcmp( description, rhs.description ) == 0 ) && ( strcmp( layer, rhs.layer ) == 0 );
89034     }
89035 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties89036     bool operator!=( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
89037     {
89038       return !operator==( rhs );
89039     }
89040 
89041   public:
89042     VULKAN_HPP_NAMESPACE::StructureType                                    sType       = StructureType::ePhysicalDeviceToolProperties;
89043     void *                                                                 pNext       = {};
89044     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> name        = {};
89045     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> version     = {};
89046     VULKAN_HPP_NAMESPACE::ToolPurposeFlags                                 purposes    = {};
89047     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE>    description = {};
89048     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> layer       = {};
89049   };
89050 
89051   template <>
89052   struct CppType<StructureType, StructureType::ePhysicalDeviceToolProperties>
89053   {
89054     using Type = PhysicalDeviceToolProperties;
89055   };
89056 
89057   using PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties;
89058 
89059   struct PhysicalDeviceTransformFeedbackFeaturesEXT
89060   {
89061     using NativeType = VkPhysicalDeviceTransformFeedbackFeaturesEXT;
89062 
89063     static const bool                                  allowDuplicate = false;
89064     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT;
89065 
89066 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTransformFeedbackFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89067     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 transformFeedback_ = {},
89068                                                                      VULKAN_HPP_NAMESPACE::Bool32 geometryStreams_   = {},
89069                                                                      void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
89070       : pNext{ pNext_ }
89071       , transformFeedback{ transformFeedback_ }
89072       , geometryStreams{ geometryStreams_ }
89073     {
89074     }
89075 
89076     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89077 
PhysicalDeviceTransformFeedbackFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89078     PhysicalDeviceTransformFeedbackFeaturesEXT( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89079       : PhysicalDeviceTransformFeedbackFeaturesEXT( *reinterpret_cast<PhysicalDeviceTransformFeedbackFeaturesEXT const *>( &rhs ) )
89080     {
89081     }
89082 
89083     PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89084 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89085 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89086     PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89087     {
89088       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT const *>( &rhs );
89089       return *this;
89090     }
89091 
89092 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89093     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
89094     {
89095       pNext = pNext_;
89096       return *this;
89097     }
89098 
89099     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT &
setTransformFeedbackVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89100       setTransformFeedback( VULKAN_HPP_NAMESPACE::Bool32 transformFeedback_ ) VULKAN_HPP_NOEXCEPT
89101     {
89102       transformFeedback = transformFeedback_;
89103       return *this;
89104     }
89105 
setGeometryStreamsVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89106     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & setGeometryStreams( VULKAN_HPP_NAMESPACE::Bool32 geometryStreams_ ) VULKAN_HPP_NOEXCEPT
89107     {
89108       geometryStreams = geometryStreams_;
89109       return *this;
89110     }
89111 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89112 
operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89113     operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
89114     {
89115       return *reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT *>( this );
89116     }
89117 
operator VkPhysicalDeviceTransformFeedbackFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89118     operator VkPhysicalDeviceTransformFeedbackFeaturesEXT &() VULKAN_HPP_NOEXCEPT
89119     {
89120       return *reinterpret_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT *>( this );
89121     }
89122 
89123 #if defined( VULKAN_HPP_USE_REFLECT )
89124 #  if 14 <= VULKAN_HPP_CPP_VERSION
89125     auto
89126 #  else
89127     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
89128 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89129       reflect() const VULKAN_HPP_NOEXCEPT
89130     {
89131       return std::tie( sType, pNext, transformFeedback, geometryStreams );
89132     }
89133 #endif
89134 
89135 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89136     auto operator<=>( PhysicalDeviceTransformFeedbackFeaturesEXT const & ) const = default;
89137 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89138     bool operator==( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89139     {
89140 #  if defined( VULKAN_HPP_USE_REFLECT )
89141       return this->reflect() == rhs.reflect();
89142 #  else
89143       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transformFeedback == rhs.transformFeedback ) && ( geometryStreams == rhs.geometryStreams );
89144 #  endif
89145     }
89146 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT89147     bool operator!=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89148     {
89149       return !operator==( rhs );
89150     }
89151 #endif
89152 
89153   public:
89154     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT;
89155     void *                              pNext             = {};
89156     VULKAN_HPP_NAMESPACE::Bool32        transformFeedback = {};
89157     VULKAN_HPP_NAMESPACE::Bool32        geometryStreams   = {};
89158   };
89159 
89160   template <>
89161   struct CppType<StructureType, StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT>
89162   {
89163     using Type = PhysicalDeviceTransformFeedbackFeaturesEXT;
89164   };
89165 
89166   struct PhysicalDeviceTransformFeedbackPropertiesEXT
89167   {
89168     using NativeType = VkPhysicalDeviceTransformFeedbackPropertiesEXT;
89169 
89170     static const bool                                  allowDuplicate = false;
89171     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT;
89172 
89173 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTransformFeedbackPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT89174     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT( uint32_t                         maxTransformFeedbackStreams_                = {},
89175                                                                        uint32_t                         maxTransformFeedbackBuffers_                = {},
89176                                                                        VULKAN_HPP_NAMESPACE::DeviceSize maxTransformFeedbackBufferSize_             = {},
89177                                                                        uint32_t                         maxTransformFeedbackStreamDataSize_         = {},
89178                                                                        uint32_t                         maxTransformFeedbackBufferDataSize_         = {},
89179                                                                        uint32_t                         maxTransformFeedbackBufferDataStride_       = {},
89180                                                                        VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackQueries_                   = {},
89181                                                                        VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackStreamsLinesTriangles_     = {},
89182                                                                        VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackRasterizationStreamSelect_ = {},
89183                                                                        VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackDraw_                      = {},
89184                                                                        void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
89185       : pNext{ pNext_ }
89186       , maxTransformFeedbackStreams{ maxTransformFeedbackStreams_ }
89187       , maxTransformFeedbackBuffers{ maxTransformFeedbackBuffers_ }
89188       , maxTransformFeedbackBufferSize{ maxTransformFeedbackBufferSize_ }
89189       , maxTransformFeedbackStreamDataSize{ maxTransformFeedbackStreamDataSize_ }
89190       , maxTransformFeedbackBufferDataSize{ maxTransformFeedbackBufferDataSize_ }
89191       , maxTransformFeedbackBufferDataStride{ maxTransformFeedbackBufferDataStride_ }
89192       , transformFeedbackQueries{ transformFeedbackQueries_ }
89193       , transformFeedbackStreamsLinesTriangles{ transformFeedbackStreamsLinesTriangles_ }
89194       , transformFeedbackRasterizationStreamSelect{ transformFeedbackRasterizationStreamSelect_ }
89195       , transformFeedbackDraw{ transformFeedbackDraw_ }
89196     {
89197     }
89198 
89199     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89200 
PhysicalDeviceTransformFeedbackPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT89201     PhysicalDeviceTransformFeedbackPropertiesEXT( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89202       : PhysicalDeviceTransformFeedbackPropertiesEXT( *reinterpret_cast<PhysicalDeviceTransformFeedbackPropertiesEXT const *>( &rhs ) )
89203     {
89204     }
89205 
89206     PhysicalDeviceTransformFeedbackPropertiesEXT & operator=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89207 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89208 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT89209     PhysicalDeviceTransformFeedbackPropertiesEXT & operator=( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89210     {
89211       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT const *>( &rhs );
89212       return *this;
89213     }
89214 
operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT89215     operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
89216     {
89217       return *reinterpret_cast<const VkPhysicalDeviceTransformFeedbackPropertiesEXT *>( this );
89218     }
89219 
operator VkPhysicalDeviceTransformFeedbackPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT89220     operator VkPhysicalDeviceTransformFeedbackPropertiesEXT &() VULKAN_HPP_NOEXCEPT
89221     {
89222       return *reinterpret_cast<VkPhysicalDeviceTransformFeedbackPropertiesEXT *>( this );
89223     }
89224 
89225 #if defined( VULKAN_HPP_USE_REFLECT )
89226 #  if 14 <= VULKAN_HPP_CPP_VERSION
89227     auto
89228 #  else
89229     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
89230                void * const &,
89231                uint32_t const &,
89232                uint32_t const &,
89233                VULKAN_HPP_NAMESPACE::DeviceSize const &,
89234                uint32_t const &,
89235                uint32_t const &,
89236                uint32_t const &,
89237                VULKAN_HPP_NAMESPACE::Bool32 const &,
89238                VULKAN_HPP_NAMESPACE::Bool32 const &,
89239                VULKAN_HPP_NAMESPACE::Bool32 const &,
89240                VULKAN_HPP_NAMESPACE::Bool32 const &>
89241 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT89242       reflect() const VULKAN_HPP_NOEXCEPT
89243     {
89244       return std::tie( sType,
89245                        pNext,
89246                        maxTransformFeedbackStreams,
89247                        maxTransformFeedbackBuffers,
89248                        maxTransformFeedbackBufferSize,
89249                        maxTransformFeedbackStreamDataSize,
89250                        maxTransformFeedbackBufferDataSize,
89251                        maxTransformFeedbackBufferDataStride,
89252                        transformFeedbackQueries,
89253                        transformFeedbackStreamsLinesTriangles,
89254                        transformFeedbackRasterizationStreamSelect,
89255                        transformFeedbackDraw );
89256     }
89257 #endif
89258 
89259 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89260     auto operator<=>( PhysicalDeviceTransformFeedbackPropertiesEXT const & ) const = default;
89261 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT89262     bool operator==( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89263     {
89264 #  if defined( VULKAN_HPP_USE_REFLECT )
89265       return this->reflect() == rhs.reflect();
89266 #  else
89267       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTransformFeedbackStreams == rhs.maxTransformFeedbackStreams ) &&
89268              ( maxTransformFeedbackBuffers == rhs.maxTransformFeedbackBuffers ) && ( maxTransformFeedbackBufferSize == rhs.maxTransformFeedbackBufferSize ) &&
89269              ( maxTransformFeedbackStreamDataSize == rhs.maxTransformFeedbackStreamDataSize ) &&
89270              ( maxTransformFeedbackBufferDataSize == rhs.maxTransformFeedbackBufferDataSize ) &&
89271              ( maxTransformFeedbackBufferDataStride == rhs.maxTransformFeedbackBufferDataStride ) &&
89272              ( transformFeedbackQueries == rhs.transformFeedbackQueries ) &&
89273              ( transformFeedbackStreamsLinesTriangles == rhs.transformFeedbackStreamsLinesTriangles ) &&
89274              ( transformFeedbackRasterizationStreamSelect == rhs.transformFeedbackRasterizationStreamSelect ) &&
89275              ( transformFeedbackDraw == rhs.transformFeedbackDraw );
89276 #  endif
89277     }
89278 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT89279     bool operator!=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89280     {
89281       return !operator==( rhs );
89282     }
89283 #endif
89284 
89285   public:
89286     VULKAN_HPP_NAMESPACE::StructureType sType                                      = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT;
89287     void *                              pNext                                      = {};
89288     uint32_t                            maxTransformFeedbackStreams                = {};
89289     uint32_t                            maxTransformFeedbackBuffers                = {};
89290     VULKAN_HPP_NAMESPACE::DeviceSize    maxTransformFeedbackBufferSize             = {};
89291     uint32_t                            maxTransformFeedbackStreamDataSize         = {};
89292     uint32_t                            maxTransformFeedbackBufferDataSize         = {};
89293     uint32_t                            maxTransformFeedbackBufferDataStride       = {};
89294     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackQueries                   = {};
89295     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackStreamsLinesTriangles     = {};
89296     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackRasterizationStreamSelect = {};
89297     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackDraw                      = {};
89298   };
89299 
89300   template <>
89301   struct CppType<StructureType, StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT>
89302   {
89303     using Type = PhysicalDeviceTransformFeedbackPropertiesEXT;
89304   };
89305 
89306   struct PhysicalDeviceUniformBufferStandardLayoutFeatures
89307   {
89308     using NativeType = VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
89309 
89310     static const bool                                  allowDuplicate = false;
89311     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures;
89312 
89313 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceUniformBufferStandardLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures89314     VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ = {},
89315                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
89316       : pNext{ pNext_ }
89317       , uniformBufferStandardLayout{ uniformBufferStandardLayout_ }
89318     {
89319     }
89320 
89321     VULKAN_HPP_CONSTEXPR
89322       PhysicalDeviceUniformBufferStandardLayoutFeatures( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89323 
PhysicalDeviceUniformBufferStandardLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures89324     PhysicalDeviceUniformBufferStandardLayoutFeatures( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
89325       : PhysicalDeviceUniformBufferStandardLayoutFeatures( *reinterpret_cast<PhysicalDeviceUniformBufferStandardLayoutFeatures const *>( &rhs ) )
89326     {
89327     }
89328 
89329     PhysicalDeviceUniformBufferStandardLayoutFeatures &
89330       operator=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89331 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89332 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures89333     PhysicalDeviceUniformBufferStandardLayoutFeatures & operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
89334     {
89335       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures const *>( &rhs );
89336       return *this;
89337     }
89338 
89339 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures89340     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
89341     {
89342       pNext = pNext_;
89343       return *this;
89344     }
89345 
89346     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures &
setUniformBufferStandardLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures89347       setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT
89348     {
89349       uniformBufferStandardLayout = uniformBufferStandardLayout_;
89350       return *this;
89351     }
89352 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89353 
operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures89354     operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT
89355     {
89356       return *reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeatures *>( this );
89357     }
89358 
operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures89359     operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures &() VULKAN_HPP_NOEXCEPT
89360     {
89361       return *reinterpret_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeatures *>( this );
89362     }
89363 
89364 #if defined( VULKAN_HPP_USE_REFLECT )
89365 #  if 14 <= VULKAN_HPP_CPP_VERSION
89366     auto
89367 #  else
89368     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
89369 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures89370       reflect() const VULKAN_HPP_NOEXCEPT
89371     {
89372       return std::tie( sType, pNext, uniformBufferStandardLayout );
89373     }
89374 #endif
89375 
89376 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89377     auto operator<=>( PhysicalDeviceUniformBufferStandardLayoutFeatures const & ) const = default;
89378 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures89379     bool operator==( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
89380     {
89381 #  if defined( VULKAN_HPP_USE_REFLECT )
89382       return this->reflect() == rhs.reflect();
89383 #  else
89384       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout );
89385 #  endif
89386     }
89387 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures89388     bool operator!=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
89389     {
89390       return !operator==( rhs );
89391     }
89392 #endif
89393 
89394   public:
89395     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures;
89396     void *                              pNext                       = {};
89397     VULKAN_HPP_NAMESPACE::Bool32        uniformBufferStandardLayout = {};
89398   };
89399 
89400   template <>
89401   struct CppType<StructureType, StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures>
89402   {
89403     using Type = PhysicalDeviceUniformBufferStandardLayoutFeatures;
89404   };
89405 
89406   using PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures;
89407 
89408   struct PhysicalDeviceVariablePointersFeatures
89409   {
89410     using NativeType = VkPhysicalDeviceVariablePointersFeatures;
89411 
89412     static const bool                                  allowDuplicate = false;
89413     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVariablePointersFeatures;
89414 
89415 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVariablePointersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89416     VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ = {},
89417                                                                  VULKAN_HPP_NAMESPACE::Bool32 variablePointers_              = {},
89418                                                                  void *                       pNext_                         = nullptr ) VULKAN_HPP_NOEXCEPT
89419       : pNext{ pNext_ }
89420       , variablePointersStorageBuffer{ variablePointersStorageBuffer_ }
89421       , variablePointers{ variablePointers_ }
89422     {
89423     }
89424 
89425     VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89426 
PhysicalDeviceVariablePointersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89427     PhysicalDeviceVariablePointersFeatures( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
89428       : PhysicalDeviceVariablePointersFeatures( *reinterpret_cast<PhysicalDeviceVariablePointersFeatures const *>( &rhs ) )
89429     {
89430     }
89431 
89432     PhysicalDeviceVariablePointersFeatures & operator=( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89433 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89434 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89435     PhysicalDeviceVariablePointersFeatures & operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
89436     {
89437       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures const *>( &rhs );
89438       return *this;
89439     }
89440 
89441 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89442     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
89443     {
89444       pNext = pNext_;
89445       return *this;
89446     }
89447 
89448     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures &
setVariablePointersStorageBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89449       setVariablePointersStorageBuffer( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT
89450     {
89451       variablePointersStorageBuffer = variablePointersStorageBuffer_;
89452       return *this;
89453     }
89454 
setVariablePointersVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89455     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT
89456     {
89457       variablePointers = variablePointers_;
89458       return *this;
89459     }
89460 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89461 
operator VkPhysicalDeviceVariablePointersFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89462     operator VkPhysicalDeviceVariablePointersFeatures const &() const VULKAN_HPP_NOEXCEPT
89463     {
89464       return *reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures *>( this );
89465     }
89466 
operator VkPhysicalDeviceVariablePointersFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89467     operator VkPhysicalDeviceVariablePointersFeatures &() VULKAN_HPP_NOEXCEPT
89468     {
89469       return *reinterpret_cast<VkPhysicalDeviceVariablePointersFeatures *>( this );
89470     }
89471 
89472 #if defined( VULKAN_HPP_USE_REFLECT )
89473 #  if 14 <= VULKAN_HPP_CPP_VERSION
89474     auto
89475 #  else
89476     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
89477 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89478       reflect() const VULKAN_HPP_NOEXCEPT
89479     {
89480       return std::tie( sType, pNext, variablePointersStorageBuffer, variablePointers );
89481     }
89482 #endif
89483 
89484 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89485     auto operator<=>( PhysicalDeviceVariablePointersFeatures const & ) const = default;
89486 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89487     bool operator==( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
89488     {
89489 #  if defined( VULKAN_HPP_USE_REFLECT )
89490       return this->reflect() == rhs.reflect();
89491 #  else
89492       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer ) &&
89493              ( variablePointers == rhs.variablePointers );
89494 #  endif
89495     }
89496 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures89497     bool operator!=( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
89498     {
89499       return !operator==( rhs );
89500     }
89501 #endif
89502 
89503   public:
89504     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDeviceVariablePointersFeatures;
89505     void *                              pNext                         = {};
89506     VULKAN_HPP_NAMESPACE::Bool32        variablePointersStorageBuffer = {};
89507     VULKAN_HPP_NAMESPACE::Bool32        variablePointers              = {};
89508   };
89509 
89510   template <>
89511   struct CppType<StructureType, StructureType::ePhysicalDeviceVariablePointersFeatures>
89512   {
89513     using Type = PhysicalDeviceVariablePointersFeatures;
89514   };
89515 
89516   using PhysicalDeviceVariablePointerFeatures     = PhysicalDeviceVariablePointersFeatures;
89517   using PhysicalDeviceVariablePointerFeaturesKHR  = PhysicalDeviceVariablePointersFeatures;
89518   using PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
89519 
89520   struct PhysicalDeviceVertexAttributeDivisorFeatures
89521   {
89522     using NativeType = VkPhysicalDeviceVertexAttributeDivisorFeatures;
89523 
89524     static const bool                                  allowDuplicate = false;
89525     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVertexAttributeDivisorFeatures;
89526 
89527 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexAttributeDivisorFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89528     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeatures( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_     = {},
89529                                                                        VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ = {},
89530                                                                        void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
89531       : pNext{ pNext_ }
89532       , vertexAttributeInstanceRateDivisor{ vertexAttributeInstanceRateDivisor_ }
89533       , vertexAttributeInstanceRateZeroDivisor{ vertexAttributeInstanceRateZeroDivisor_ }
89534     {
89535     }
89536 
89537     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeatures( PhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89538 
PhysicalDeviceVertexAttributeDivisorFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89539     PhysicalDeviceVertexAttributeDivisorFeatures( VkPhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
89540       : PhysicalDeviceVertexAttributeDivisorFeatures( *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorFeatures const *>( &rhs ) )
89541     {
89542     }
89543 
89544     PhysicalDeviceVertexAttributeDivisorFeatures & operator=( PhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89545 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89546 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89547     PhysicalDeviceVertexAttributeDivisorFeatures & operator=( VkPhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
89548     {
89549       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures const *>( &rhs );
89550       return *this;
89551     }
89552 
89553 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89554     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
89555     {
89556       pNext = pNext_;
89557       return *this;
89558     }
89559 
89560     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeatures &
setVertexAttributeInstanceRateDivisorVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89561       setVertexAttributeInstanceRateDivisor( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_ ) VULKAN_HPP_NOEXCEPT
89562     {
89563       vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_;
89564       return *this;
89565     }
89566 
89567     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeatures &
setVertexAttributeInstanceRateZeroDivisorVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89568       setVertexAttributeInstanceRateZeroDivisor( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ ) VULKAN_HPP_NOEXCEPT
89569     {
89570       vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_;
89571       return *this;
89572     }
89573 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89574 
operator VkPhysicalDeviceVertexAttributeDivisorFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89575     operator VkPhysicalDeviceVertexAttributeDivisorFeatures const &() const VULKAN_HPP_NOEXCEPT
89576     {
89577       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeatures *>( this );
89578     }
89579 
operator VkPhysicalDeviceVertexAttributeDivisorFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89580     operator VkPhysicalDeviceVertexAttributeDivisorFeatures &() VULKAN_HPP_NOEXCEPT
89581     {
89582       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeatures *>( this );
89583     }
89584 
89585 #if defined( VULKAN_HPP_USE_REFLECT )
89586 #  if 14 <= VULKAN_HPP_CPP_VERSION
89587     auto
89588 #  else
89589     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
89590 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89591       reflect() const VULKAN_HPP_NOEXCEPT
89592     {
89593       return std::tie( sType, pNext, vertexAttributeInstanceRateDivisor, vertexAttributeInstanceRateZeroDivisor );
89594     }
89595 #endif
89596 
89597 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89598     auto operator<=>( PhysicalDeviceVertexAttributeDivisorFeatures const & ) const = default;
89599 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89600     bool operator==( PhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
89601     {
89602 #  if defined( VULKAN_HPP_USE_REFLECT )
89603       return this->reflect() == rhs.reflect();
89604 #  else
89605       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor ) &&
89606              ( vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor );
89607 #  endif
89608     }
89609 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures89610     bool operator!=( PhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
89611     {
89612       return !operator==( rhs );
89613     }
89614 #endif
89615 
89616   public:
89617     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceVertexAttributeDivisorFeatures;
89618     void *                              pNext                                  = {};
89619     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeInstanceRateDivisor     = {};
89620     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeInstanceRateZeroDivisor = {};
89621   };
89622 
89623   template <>
89624   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexAttributeDivisorFeatures>
89625   {
89626     using Type = PhysicalDeviceVertexAttributeDivisorFeatures;
89627   };
89628 
89629   using PhysicalDeviceVertexAttributeDivisorFeaturesEXT = PhysicalDeviceVertexAttributeDivisorFeatures;
89630   using PhysicalDeviceVertexAttributeDivisorFeaturesKHR = PhysicalDeviceVertexAttributeDivisorFeatures;
89631 
89632   struct PhysicalDeviceVertexAttributeDivisorProperties
89633   {
89634     using NativeType = VkPhysicalDeviceVertexAttributeDivisorProperties;
89635 
89636     static const bool                                  allowDuplicate = false;
89637     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVertexAttributeDivisorProperties;
89638 
89639 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexAttributeDivisorPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties89640     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorProperties( uint32_t                     maxVertexAttribDivisor_       = {},
89641                                                                          VULKAN_HPP_NAMESPACE::Bool32 supportsNonZeroFirstInstance_ = {},
89642                                                                          void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
89643       : pNext{ pNext_ }
89644       , maxVertexAttribDivisor{ maxVertexAttribDivisor_ }
89645       , supportsNonZeroFirstInstance{ supportsNonZeroFirstInstance_ }
89646     {
89647     }
89648 
89649     VULKAN_HPP_CONSTEXPR
89650       PhysicalDeviceVertexAttributeDivisorProperties( PhysicalDeviceVertexAttributeDivisorProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89651 
PhysicalDeviceVertexAttributeDivisorPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties89652     PhysicalDeviceVertexAttributeDivisorProperties( VkPhysicalDeviceVertexAttributeDivisorProperties const & rhs ) VULKAN_HPP_NOEXCEPT
89653       : PhysicalDeviceVertexAttributeDivisorProperties( *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorProperties const *>( &rhs ) )
89654     {
89655     }
89656 
89657     PhysicalDeviceVertexAttributeDivisorProperties & operator=( PhysicalDeviceVertexAttributeDivisorProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89658 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89659 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties89660     PhysicalDeviceVertexAttributeDivisorProperties & operator=( VkPhysicalDeviceVertexAttributeDivisorProperties const & rhs ) VULKAN_HPP_NOEXCEPT
89661     {
89662       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties const *>( &rhs );
89663       return *this;
89664     }
89665 
operator VkPhysicalDeviceVertexAttributeDivisorProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties89666     operator VkPhysicalDeviceVertexAttributeDivisorProperties const &() const VULKAN_HPP_NOEXCEPT
89667     {
89668       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorProperties *>( this );
89669     }
89670 
operator VkPhysicalDeviceVertexAttributeDivisorProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties89671     operator VkPhysicalDeviceVertexAttributeDivisorProperties &() VULKAN_HPP_NOEXCEPT
89672     {
89673       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorProperties *>( this );
89674     }
89675 
89676 #if defined( VULKAN_HPP_USE_REFLECT )
89677 #  if 14 <= VULKAN_HPP_CPP_VERSION
89678     auto
89679 #  else
89680     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
89681 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties89682       reflect() const VULKAN_HPP_NOEXCEPT
89683     {
89684       return std::tie( sType, pNext, maxVertexAttribDivisor, supportsNonZeroFirstInstance );
89685     }
89686 #endif
89687 
89688 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89689     auto operator<=>( PhysicalDeviceVertexAttributeDivisorProperties const & ) const = default;
89690 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties89691     bool operator==( PhysicalDeviceVertexAttributeDivisorProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
89692     {
89693 #  if defined( VULKAN_HPP_USE_REFLECT )
89694       return this->reflect() == rhs.reflect();
89695 #  else
89696       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor ) &&
89697              ( supportsNonZeroFirstInstance == rhs.supportsNonZeroFirstInstance );
89698 #  endif
89699     }
89700 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties89701     bool operator!=( PhysicalDeviceVertexAttributeDivisorProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
89702     {
89703       return !operator==( rhs );
89704     }
89705 #endif
89706 
89707   public:
89708     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceVertexAttributeDivisorProperties;
89709     void *                              pNext                        = {};
89710     uint32_t                            maxVertexAttribDivisor       = {};
89711     VULKAN_HPP_NAMESPACE::Bool32        supportsNonZeroFirstInstance = {};
89712   };
89713 
89714   template <>
89715   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexAttributeDivisorProperties>
89716   {
89717     using Type = PhysicalDeviceVertexAttributeDivisorProperties;
89718   };
89719 
89720   using PhysicalDeviceVertexAttributeDivisorPropertiesKHR = PhysicalDeviceVertexAttributeDivisorProperties;
89721 
89722   struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT
89723   {
89724     using NativeType = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
89725 
89726     static const bool                                  allowDuplicate = false;
89727     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
89728 
89729 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexAttributeDivisorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT89730     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesEXT( uint32_t maxVertexAttribDivisor_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
89731       : pNext{ pNext_ }
89732       , maxVertexAttribDivisor{ maxVertexAttribDivisor_ }
89733     {
89734     }
89735 
89736     VULKAN_HPP_CONSTEXPR
89737       PhysicalDeviceVertexAttributeDivisorPropertiesEXT( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89738 
PhysicalDeviceVertexAttributeDivisorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT89739     PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89740       : PhysicalDeviceVertexAttributeDivisorPropertiesEXT( *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>( &rhs ) )
89741     {
89742     }
89743 
89744     PhysicalDeviceVertexAttributeDivisorPropertiesEXT &
89745       operator=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89746 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89747 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT89748     PhysicalDeviceVertexAttributeDivisorPropertiesEXT & operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89749     {
89750       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>( &rhs );
89751       return *this;
89752     }
89753 
operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT89754     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
89755     {
89756       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *>( this );
89757     }
89758 
operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT89759     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &() VULKAN_HPP_NOEXCEPT
89760     {
89761       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *>( this );
89762     }
89763 
89764 #if defined( VULKAN_HPP_USE_REFLECT )
89765 #  if 14 <= VULKAN_HPP_CPP_VERSION
89766     auto
89767 #  else
89768     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
89769 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT89770       reflect() const VULKAN_HPP_NOEXCEPT
89771     {
89772       return std::tie( sType, pNext, maxVertexAttribDivisor );
89773     }
89774 #endif
89775 
89776 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89777     auto operator<=>( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & ) const = default;
89778 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT89779     bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89780     {
89781 #  if defined( VULKAN_HPP_USE_REFLECT )
89782       return this->reflect() == rhs.reflect();
89783 #  else
89784       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor );
89785 #  endif
89786     }
89787 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT89788     bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89789     {
89790       return !operator==( rhs );
89791     }
89792 #endif
89793 
89794   public:
89795     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
89796     void *                              pNext                  = {};
89797     uint32_t                            maxVertexAttribDivisor = {};
89798   };
89799 
89800   template <>
89801   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT>
89802   {
89803     using Type = PhysicalDeviceVertexAttributeDivisorPropertiesEXT;
89804   };
89805 
89806   struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT
89807   {
89808     using NativeType = VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
89809 
89810     static const bool                                  allowDuplicate = false;
89811     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT;
89812 
89813 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexInputDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT89814     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexInputDynamicStateFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState_ = {},
89815                                                                            void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
89816       : pNext{ pNext_ }
89817       , vertexInputDynamicState{ vertexInputDynamicState_ }
89818     {
89819     }
89820 
89821     VULKAN_HPP_CONSTEXPR
89822       PhysicalDeviceVertexInputDynamicStateFeaturesEXT( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89823 
PhysicalDeviceVertexInputDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT89824     PhysicalDeviceVertexInputDynamicStateFeaturesEXT( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89825       : PhysicalDeviceVertexInputDynamicStateFeaturesEXT( *reinterpret_cast<PhysicalDeviceVertexInputDynamicStateFeaturesEXT const *>( &rhs ) )
89826     {
89827     }
89828 
89829     PhysicalDeviceVertexInputDynamicStateFeaturesEXT & operator=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89830 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89831 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT89832     PhysicalDeviceVertexInputDynamicStateFeaturesEXT & operator=( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
89833     {
89834       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT const *>( &rhs );
89835       return *this;
89836     }
89837 
89838 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT89839     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
89840     {
89841       pNext = pNext_;
89842       return *this;
89843     }
89844 
89845     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT &
setVertexInputDynamicStateVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT89846       setVertexInputDynamicState( VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState_ ) VULKAN_HPP_NOEXCEPT
89847     {
89848       vertexInputDynamicState = vertexInputDynamicState_;
89849       return *this;
89850     }
89851 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89852 
operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT89853     operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
89854     {
89855       return *reinterpret_cast<const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *>( this );
89856     }
89857 
operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT89858     operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT
89859     {
89860       return *reinterpret_cast<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *>( this );
89861     }
89862 
89863 #if defined( VULKAN_HPP_USE_REFLECT )
89864 #  if 14 <= VULKAN_HPP_CPP_VERSION
89865     auto
89866 #  else
89867     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
89868 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT89869       reflect() const VULKAN_HPP_NOEXCEPT
89870     {
89871       return std::tie( sType, pNext, vertexInputDynamicState );
89872     }
89873 #endif
89874 
89875 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89876     auto operator<=>( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & ) const = default;
89877 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT89878     bool operator==( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89879     {
89880 #  if defined( VULKAN_HPP_USE_REFLECT )
89881       return this->reflect() == rhs.reflect();
89882 #  else
89883       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexInputDynamicState == rhs.vertexInputDynamicState );
89884 #  endif
89885     }
89886 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT89887     bool operator!=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
89888     {
89889       return !operator==( rhs );
89890     }
89891 #endif
89892 
89893   public:
89894     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT;
89895     void *                              pNext                   = {};
89896     VULKAN_HPP_NAMESPACE::Bool32        vertexInputDynamicState = {};
89897   };
89898 
89899   template <>
89900   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT>
89901   {
89902     using Type = PhysicalDeviceVertexInputDynamicStateFeaturesEXT;
89903   };
89904 
89905   struct VideoProfileInfoKHR
89906   {
89907     using NativeType = VkVideoProfileInfoKHR;
89908 
89909     static const bool                                  allowDuplicate = false;
89910     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoProfileInfoKHR;
89911 
89912 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89913     VULKAN_HPP_CONSTEXPR VideoProfileInfoKHR(
89914       VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation_ = VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR::eNone,
89915       VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling_   = {},
89916       VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth_        = {},
89917       VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth_      = {},
89918       const void *                                         pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
89919       : pNext{ pNext_ }
89920       , videoCodecOperation{ videoCodecOperation_ }
89921       , chromaSubsampling{ chromaSubsampling_ }
89922       , lumaBitDepth{ lumaBitDepth_ }
89923       , chromaBitDepth{ chromaBitDepth_ }
89924     {
89925     }
89926 
89927     VULKAN_HPP_CONSTEXPR VideoProfileInfoKHR( VideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89928 
VideoProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89929     VideoProfileInfoKHR( VkVideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : VideoProfileInfoKHR( *reinterpret_cast<VideoProfileInfoKHR const *>( &rhs ) )
89930     {
89931     }
89932 
89933     VideoProfileInfoKHR & operator=( VideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89934 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89935 
operator =VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89936     VideoProfileInfoKHR & operator=( VkVideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
89937     {
89938       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR const *>( &rhs );
89939       return *this;
89940     }
89941 
89942 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89943     VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
89944     {
89945       pNext = pNext_;
89946       return *this;
89947     }
89948 
89949     VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR &
setVideoCodecOperationVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89950       setVideoCodecOperation( VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation_ ) VULKAN_HPP_NOEXCEPT
89951     {
89952       videoCodecOperation = videoCodecOperation_;
89953       return *this;
89954     }
89955 
89956     VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR &
setChromaSubsamplingVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89957       setChromaSubsampling( VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling_ ) VULKAN_HPP_NOEXCEPT
89958     {
89959       chromaSubsampling = chromaSubsampling_;
89960       return *this;
89961     }
89962 
setLumaBitDepthVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89963     VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setLumaBitDepth( VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth_ ) VULKAN_HPP_NOEXCEPT
89964     {
89965       lumaBitDepth = lumaBitDepth_;
89966       return *this;
89967     }
89968 
setChromaBitDepthVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89969     VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setChromaBitDepth( VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth_ ) VULKAN_HPP_NOEXCEPT
89970     {
89971       chromaBitDepth = chromaBitDepth_;
89972       return *this;
89973     }
89974 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89975 
operator VkVideoProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89976     operator VkVideoProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
89977     {
89978       return *reinterpret_cast<const VkVideoProfileInfoKHR *>( this );
89979     }
89980 
operator VkVideoProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89981     operator VkVideoProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
89982     {
89983       return *reinterpret_cast<VkVideoProfileInfoKHR *>( this );
89984     }
89985 
89986 #if defined( VULKAN_HPP_USE_REFLECT )
89987 #  if 14 <= VULKAN_HPP_CPP_VERSION
89988     auto
89989 #  else
89990     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
89991                const void * const &,
89992                VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR const &,
89993                VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR const &,
89994                VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR const &,
89995                VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR const &>
89996 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR89997       reflect() const VULKAN_HPP_NOEXCEPT
89998     {
89999       return std::tie( sType, pNext, videoCodecOperation, chromaSubsampling, lumaBitDepth, chromaBitDepth );
90000     }
90001 #endif
90002 
90003 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90004     auto operator<=>( VideoProfileInfoKHR const & ) const = default;
90005 #else
operator ==VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR90006     bool operator==( VideoProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
90007     {
90008 #  if defined( VULKAN_HPP_USE_REFLECT )
90009       return this->reflect() == rhs.reflect();
90010 #  else
90011       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoCodecOperation == rhs.videoCodecOperation ) &&
90012              ( chromaSubsampling == rhs.chromaSubsampling ) && ( lumaBitDepth == rhs.lumaBitDepth ) && ( chromaBitDepth == rhs.chromaBitDepth );
90013 #  endif
90014     }
90015 
operator !=VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR90016     bool operator!=( VideoProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
90017     {
90018       return !operator==( rhs );
90019     }
90020 #endif
90021 
90022   public:
90023     VULKAN_HPP_NAMESPACE::StructureType                  sType               = StructureType::eVideoProfileInfoKHR;
90024     const void *                                         pNext               = {};
90025     VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation = VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR::eNone;
90026     VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling   = {};
90027     VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth        = {};
90028     VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth      = {};
90029   };
90030 
90031   template <>
90032   struct CppType<StructureType, StructureType::eVideoProfileInfoKHR>
90033   {
90034     using Type = VideoProfileInfoKHR;
90035   };
90036 
90037   struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR
90038   {
90039     using NativeType = VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR;
90040 
90041     static const bool                                  allowDuplicate = false;
90042     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVideoEncodeQualityLevelInfoKHR;
90043 
90044 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVideoEncodeQualityLevelInfoKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90045     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeQualityLevelInfoKHR( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile_ = {},
90046                                                                        uint32_t                                          qualityLevel_  = {},
90047                                                                        const void *                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
90048       : pNext{ pNext_ }
90049       , pVideoProfile{ pVideoProfile_ }
90050       , qualityLevel{ qualityLevel_ }
90051     {
90052     }
90053 
90054     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeQualityLevelInfoKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90055 
PhysicalDeviceVideoEncodeQualityLevelInfoKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90056     PhysicalDeviceVideoEncodeQualityLevelInfoKHR( VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
90057       : PhysicalDeviceVideoEncodeQualityLevelInfoKHR( *reinterpret_cast<PhysicalDeviceVideoEncodeQualityLevelInfoKHR const *>( &rhs ) )
90058     {
90059     }
90060 
90061     PhysicalDeviceVideoEncodeQualityLevelInfoKHR & operator=( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90062 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90063 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90064     PhysicalDeviceVideoEncodeQualityLevelInfoKHR & operator=( VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
90065     {
90066       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR const *>( &rhs );
90067       return *this;
90068     }
90069 
90070 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90071     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
90072     {
90073       pNext = pNext_;
90074       return *this;
90075     }
90076 
90077     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR &
setPVideoProfileVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90078       setPVideoProfile( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile_ ) VULKAN_HPP_NOEXCEPT
90079     {
90080       pVideoProfile = pVideoProfile_;
90081       return *this;
90082     }
90083 
setQualityLevelVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90084     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR & setQualityLevel( uint32_t qualityLevel_ ) VULKAN_HPP_NOEXCEPT
90085     {
90086       qualityLevel = qualityLevel_;
90087       return *this;
90088     }
90089 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90090 
operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90091     operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const &() const VULKAN_HPP_NOEXCEPT
90092     {
90093       return *reinterpret_cast<const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *>( this );
90094     }
90095 
operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90096     operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR &() VULKAN_HPP_NOEXCEPT
90097     {
90098       return *reinterpret_cast<VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *>( this );
90099     }
90100 
90101 #if defined( VULKAN_HPP_USE_REFLECT )
90102 #  if 14 <= VULKAN_HPP_CPP_VERSION
90103     auto
90104 #  else
90105     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * const &, uint32_t const &>
90106 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90107       reflect() const VULKAN_HPP_NOEXCEPT
90108     {
90109       return std::tie( sType, pNext, pVideoProfile, qualityLevel );
90110     }
90111 #endif
90112 
90113 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90114     auto operator<=>( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & ) const = default;
90115 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90116     bool operator==( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
90117     {
90118 #  if defined( VULKAN_HPP_USE_REFLECT )
90119       return this->reflect() == rhs.reflect();
90120 #  else
90121       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pVideoProfile == rhs.pVideoProfile ) && ( qualityLevel == rhs.qualityLevel );
90122 #  endif
90123     }
90124 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR90125     bool operator!=( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
90126     {
90127       return !operator==( rhs );
90128     }
90129 #endif
90130 
90131   public:
90132     VULKAN_HPP_NAMESPACE::StructureType               sType         = StructureType::ePhysicalDeviceVideoEncodeQualityLevelInfoKHR;
90133     const void *                                      pNext         = {};
90134     const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile = {};
90135     uint32_t                                          qualityLevel  = {};
90136   };
90137 
90138   template <>
90139   struct CppType<StructureType, StructureType::ePhysicalDeviceVideoEncodeQualityLevelInfoKHR>
90140   {
90141     using Type = PhysicalDeviceVideoEncodeQualityLevelInfoKHR;
90142   };
90143 
90144   struct PhysicalDeviceVideoFormatInfoKHR
90145   {
90146     using NativeType = VkPhysicalDeviceVideoFormatInfoKHR;
90147 
90148     static const bool                                  allowDuplicate = false;
90149     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVideoFormatInfoKHR;
90150 
90151 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVideoFormatInfoKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR90152     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoFormatInfoKHR( VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ = {},
90153                                                            const void *                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
90154       : pNext{ pNext_ }
90155       , imageUsage{ imageUsage_ }
90156     {
90157     }
90158 
90159     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoFormatInfoKHR( PhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90160 
PhysicalDeviceVideoFormatInfoKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR90161     PhysicalDeviceVideoFormatInfoKHR( VkPhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
90162       : PhysicalDeviceVideoFormatInfoKHR( *reinterpret_cast<PhysicalDeviceVideoFormatInfoKHR const *>( &rhs ) )
90163     {
90164     }
90165 
90166     PhysicalDeviceVideoFormatInfoKHR & operator=( PhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90167 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90168 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR90169     PhysicalDeviceVideoFormatInfoKHR & operator=( VkPhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
90170     {
90171       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR const *>( &rhs );
90172       return *this;
90173     }
90174 
90175 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR90176     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoFormatInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
90177     {
90178       pNext = pNext_;
90179       return *this;
90180     }
90181 
setImageUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR90182     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoFormatInfoKHR & setImageUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ ) VULKAN_HPP_NOEXCEPT
90183     {
90184       imageUsage = imageUsage_;
90185       return *this;
90186     }
90187 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90188 
operator VkPhysicalDeviceVideoFormatInfoKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR90189     operator VkPhysicalDeviceVideoFormatInfoKHR const &() const VULKAN_HPP_NOEXCEPT
90190     {
90191       return *reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( this );
90192     }
90193 
operator VkPhysicalDeviceVideoFormatInfoKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR90194     operator VkPhysicalDeviceVideoFormatInfoKHR &() VULKAN_HPP_NOEXCEPT
90195     {
90196       return *reinterpret_cast<VkPhysicalDeviceVideoFormatInfoKHR *>( this );
90197     }
90198 
90199 #if defined( VULKAN_HPP_USE_REFLECT )
90200 #  if 14 <= VULKAN_HPP_CPP_VERSION
90201     auto
90202 #  else
90203     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
90204 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR90205       reflect() const VULKAN_HPP_NOEXCEPT
90206     {
90207       return std::tie( sType, pNext, imageUsage );
90208     }
90209 #endif
90210 
90211 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90212     auto operator<=>( PhysicalDeviceVideoFormatInfoKHR const & ) const = default;
90213 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR90214     bool operator==( PhysicalDeviceVideoFormatInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
90215     {
90216 #  if defined( VULKAN_HPP_USE_REFLECT )
90217       return this->reflect() == rhs.reflect();
90218 #  else
90219       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageUsage == rhs.imageUsage );
90220 #  endif
90221     }
90222 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR90223     bool operator!=( PhysicalDeviceVideoFormatInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
90224     {
90225       return !operator==( rhs );
90226     }
90227 #endif
90228 
90229   public:
90230     VULKAN_HPP_NAMESPACE::StructureType   sType      = StructureType::ePhysicalDeviceVideoFormatInfoKHR;
90231     const void *                          pNext      = {};
90232     VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage = {};
90233   };
90234 
90235   template <>
90236   struct CppType<StructureType, StructureType::ePhysicalDeviceVideoFormatInfoKHR>
90237   {
90238     using Type = PhysicalDeviceVideoFormatInfoKHR;
90239   };
90240 
90241   struct PhysicalDeviceVideoMaintenance1FeaturesKHR
90242   {
90243     using NativeType = VkPhysicalDeviceVideoMaintenance1FeaturesKHR;
90244 
90245     static const bool                                  allowDuplicate = false;
90246     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVideoMaintenance1FeaturesKHR;
90247 
90248 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVideoMaintenance1FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR90249     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoMaintenance1FeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 videoMaintenance1_ = {},
90250                                                                      void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
90251       : pNext{ pNext_ }
90252       , videoMaintenance1{ videoMaintenance1_ }
90253     {
90254     }
90255 
90256     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoMaintenance1FeaturesKHR( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90257 
PhysicalDeviceVideoMaintenance1FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR90258     PhysicalDeviceVideoMaintenance1FeaturesKHR( VkPhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
90259       : PhysicalDeviceVideoMaintenance1FeaturesKHR( *reinterpret_cast<PhysicalDeviceVideoMaintenance1FeaturesKHR const *>( &rhs ) )
90260     {
90261     }
90262 
90263     PhysicalDeviceVideoMaintenance1FeaturesKHR & operator=( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90264 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90265 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR90266     PhysicalDeviceVideoMaintenance1FeaturesKHR & operator=( VkPhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
90267     {
90268       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR const *>( &rhs );
90269       return *this;
90270     }
90271 
90272 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR90273     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance1FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
90274     {
90275       pNext = pNext_;
90276       return *this;
90277     }
90278 
90279     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance1FeaturesKHR &
setVideoMaintenance1VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR90280       setVideoMaintenance1( VULKAN_HPP_NAMESPACE::Bool32 videoMaintenance1_ ) VULKAN_HPP_NOEXCEPT
90281     {
90282       videoMaintenance1 = videoMaintenance1_;
90283       return *this;
90284     }
90285 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90286 
operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR90287     operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
90288     {
90289       return *reinterpret_cast<const VkPhysicalDeviceVideoMaintenance1FeaturesKHR *>( this );
90290     }
90291 
operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR90292     operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR &() VULKAN_HPP_NOEXCEPT
90293     {
90294       return *reinterpret_cast<VkPhysicalDeviceVideoMaintenance1FeaturesKHR *>( this );
90295     }
90296 
90297 #if defined( VULKAN_HPP_USE_REFLECT )
90298 #  if 14 <= VULKAN_HPP_CPP_VERSION
90299     auto
90300 #  else
90301     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
90302 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR90303       reflect() const VULKAN_HPP_NOEXCEPT
90304     {
90305       return std::tie( sType, pNext, videoMaintenance1 );
90306     }
90307 #endif
90308 
90309 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90310     auto operator<=>( PhysicalDeviceVideoMaintenance1FeaturesKHR const & ) const = default;
90311 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR90312     bool operator==( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
90313     {
90314 #  if defined( VULKAN_HPP_USE_REFLECT )
90315       return this->reflect() == rhs.reflect();
90316 #  else
90317       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoMaintenance1 == rhs.videoMaintenance1 );
90318 #  endif
90319     }
90320 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR90321     bool operator!=( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
90322     {
90323       return !operator==( rhs );
90324     }
90325 #endif
90326 
90327   public:
90328     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceVideoMaintenance1FeaturesKHR;
90329     void *                              pNext             = {};
90330     VULKAN_HPP_NAMESPACE::Bool32        videoMaintenance1 = {};
90331   };
90332 
90333   template <>
90334   struct CppType<StructureType, StructureType::ePhysicalDeviceVideoMaintenance1FeaturesKHR>
90335   {
90336     using Type = PhysicalDeviceVideoMaintenance1FeaturesKHR;
90337   };
90338 
90339   struct PhysicalDeviceVulkan11Features
90340   {
90341     using NativeType = VkPhysicalDeviceVulkan11Features;
90342 
90343     static const bool                                  allowDuplicate = false;
90344     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan11Features;
90345 
90346 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan11FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90347     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan11Features( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_           = {},
90348                                                          VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {},
90349                                                          VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_              = {},
90350                                                          VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_               = {},
90351                                                          VULKAN_HPP_NAMESPACE::Bool32 multiview_                          = {},
90352                                                          VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_            = {},
90353                                                          VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_        = {},
90354                                                          VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_      = {},
90355                                                          VULKAN_HPP_NAMESPACE::Bool32 variablePointers_                   = {},
90356                                                          VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_                    = {},
90357                                                          VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_             = {},
90358                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_               = {},
90359                                                          void *                       pNext_                              = nullptr ) VULKAN_HPP_NOEXCEPT
90360       : pNext{ pNext_ }
90361       , storageBuffer16BitAccess{ storageBuffer16BitAccess_ }
90362       , uniformAndStorageBuffer16BitAccess{ uniformAndStorageBuffer16BitAccess_ }
90363       , storagePushConstant16{ storagePushConstant16_ }
90364       , storageInputOutput16{ storageInputOutput16_ }
90365       , multiview{ multiview_ }
90366       , multiviewGeometryShader{ multiviewGeometryShader_ }
90367       , multiviewTessellationShader{ multiviewTessellationShader_ }
90368       , variablePointersStorageBuffer{ variablePointersStorageBuffer_ }
90369       , variablePointers{ variablePointers_ }
90370       , protectedMemory{ protectedMemory_ }
90371       , samplerYcbcrConversion{ samplerYcbcrConversion_ }
90372       , shaderDrawParameters{ shaderDrawParameters_ }
90373     {
90374     }
90375 
90376     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan11Features( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90377 
PhysicalDeviceVulkan11FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90378     PhysicalDeviceVulkan11Features( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
90379       : PhysicalDeviceVulkan11Features( *reinterpret_cast<PhysicalDeviceVulkan11Features const *>( &rhs ) )
90380     {
90381     }
90382 
90383     PhysicalDeviceVulkan11Features & operator=( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90384 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90385 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90386     PhysicalDeviceVulkan11Features & operator=( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
90387     {
90388       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features const *>( &rhs );
90389       return *this;
90390     }
90391 
90392 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90393     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
90394     {
90395       pNext = pNext_;
90396       return *this;
90397     }
90398 
90399     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90400       setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
90401     {
90402       storageBuffer16BitAccess = storageBuffer16BitAccess_;
90403       return *this;
90404     }
90405 
90406     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setUniformAndStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90407       setUniformAndStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
90408     {
90409       uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
90410       return *this;
90411     }
90412 
setStoragePushConstant16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90413     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT
90414     {
90415       storagePushConstant16 = storagePushConstant16_;
90416       return *this;
90417     }
90418 
setStorageInputOutput16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90419     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT
90420     {
90421       storageInputOutput16 = storageInputOutput16_;
90422       return *this;
90423     }
90424 
setMultiviewVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90425     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT
90426     {
90427       multiview = multiview_;
90428       return *this;
90429     }
90430 
90431     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setMultiviewGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90432       setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT
90433     {
90434       multiviewGeometryShader = multiviewGeometryShader_;
90435       return *this;
90436     }
90437 
90438     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setMultiviewTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90439       setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT
90440     {
90441       multiviewTessellationShader = multiviewTessellationShader_;
90442       return *this;
90443     }
90444 
90445     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setVariablePointersStorageBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90446       setVariablePointersStorageBuffer( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT
90447     {
90448       variablePointersStorageBuffer = variablePointersStorageBuffer_;
90449       return *this;
90450     }
90451 
setVariablePointersVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90452     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT
90453     {
90454       variablePointers = variablePointers_;
90455       return *this;
90456     }
90457 
setProtectedMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90458     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT
90459     {
90460       protectedMemory = protectedMemory_;
90461       return *this;
90462     }
90463 
90464     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setSamplerYcbcrConversionVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90465       setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT
90466     {
90467       samplerYcbcrConversion = samplerYcbcrConversion_;
90468       return *this;
90469     }
90470 
setShaderDrawParametersVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90471     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT
90472     {
90473       shaderDrawParameters = shaderDrawParameters_;
90474       return *this;
90475     }
90476 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90477 
operator VkPhysicalDeviceVulkan11Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90478     operator VkPhysicalDeviceVulkan11Features const &() const VULKAN_HPP_NOEXCEPT
90479     {
90480       return *reinterpret_cast<const VkPhysicalDeviceVulkan11Features *>( this );
90481     }
90482 
operator VkPhysicalDeviceVulkan11Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90483     operator VkPhysicalDeviceVulkan11Features &() VULKAN_HPP_NOEXCEPT
90484     {
90485       return *reinterpret_cast<VkPhysicalDeviceVulkan11Features *>( this );
90486     }
90487 
90488 #if defined( VULKAN_HPP_USE_REFLECT )
90489 #  if 14 <= VULKAN_HPP_CPP_VERSION
90490     auto
90491 #  else
90492     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
90493                void * const &,
90494                VULKAN_HPP_NAMESPACE::Bool32 const &,
90495                VULKAN_HPP_NAMESPACE::Bool32 const &,
90496                VULKAN_HPP_NAMESPACE::Bool32 const &,
90497                VULKAN_HPP_NAMESPACE::Bool32 const &,
90498                VULKAN_HPP_NAMESPACE::Bool32 const &,
90499                VULKAN_HPP_NAMESPACE::Bool32 const &,
90500                VULKAN_HPP_NAMESPACE::Bool32 const &,
90501                VULKAN_HPP_NAMESPACE::Bool32 const &,
90502                VULKAN_HPP_NAMESPACE::Bool32 const &,
90503                VULKAN_HPP_NAMESPACE::Bool32 const &,
90504                VULKAN_HPP_NAMESPACE::Bool32 const &,
90505                VULKAN_HPP_NAMESPACE::Bool32 const &>
90506 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90507       reflect() const VULKAN_HPP_NOEXCEPT
90508     {
90509       return std::tie( sType,
90510                        pNext,
90511                        storageBuffer16BitAccess,
90512                        uniformAndStorageBuffer16BitAccess,
90513                        storagePushConstant16,
90514                        storageInputOutput16,
90515                        multiview,
90516                        multiviewGeometryShader,
90517                        multiviewTessellationShader,
90518                        variablePointersStorageBuffer,
90519                        variablePointers,
90520                        protectedMemory,
90521                        samplerYcbcrConversion,
90522                        shaderDrawParameters );
90523     }
90524 #endif
90525 
90526 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90527     auto operator<=>( PhysicalDeviceVulkan11Features const & ) const = default;
90528 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90529     bool operator==( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT
90530     {
90531 #  if defined( VULKAN_HPP_USE_REFLECT )
90532       return this->reflect() == rhs.reflect();
90533 #  else
90534       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess ) &&
90535              ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess ) && ( storagePushConstant16 == rhs.storagePushConstant16 ) &&
90536              ( storageInputOutput16 == rhs.storageInputOutput16 ) && ( multiview == rhs.multiview ) &&
90537              ( multiviewGeometryShader == rhs.multiviewGeometryShader ) && ( multiviewTessellationShader == rhs.multiviewTessellationShader ) &&
90538              ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer ) && ( variablePointers == rhs.variablePointers ) &&
90539              ( protectedMemory == rhs.protectedMemory ) && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion ) &&
90540              ( shaderDrawParameters == rhs.shaderDrawParameters );
90541 #  endif
90542     }
90543 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features90544     bool operator!=( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT
90545     {
90546       return !operator==( rhs );
90547     }
90548 #endif
90549 
90550   public:
90551     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceVulkan11Features;
90552     void *                              pNext                              = {};
90553     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer16BitAccess           = {};
90554     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer16BitAccess = {};
90555     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant16              = {};
90556     VULKAN_HPP_NAMESPACE::Bool32        storageInputOutput16               = {};
90557     VULKAN_HPP_NAMESPACE::Bool32        multiview                          = {};
90558     VULKAN_HPP_NAMESPACE::Bool32        multiviewGeometryShader            = {};
90559     VULKAN_HPP_NAMESPACE::Bool32        multiviewTessellationShader        = {};
90560     VULKAN_HPP_NAMESPACE::Bool32        variablePointersStorageBuffer      = {};
90561     VULKAN_HPP_NAMESPACE::Bool32        variablePointers                   = {};
90562     VULKAN_HPP_NAMESPACE::Bool32        protectedMemory                    = {};
90563     VULKAN_HPP_NAMESPACE::Bool32        samplerYcbcrConversion             = {};
90564     VULKAN_HPP_NAMESPACE::Bool32        shaderDrawParameters               = {};
90565   };
90566 
90567   template <>
90568   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan11Features>
90569   {
90570     using Type = PhysicalDeviceVulkan11Features;
90571   };
90572 
90573   struct PhysicalDeviceVulkan11Properties
90574   {
90575     using NativeType = VkPhysicalDeviceVulkan11Properties;
90576 
90577     static const bool                                  allowDuplicate = false;
90578     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan11Properties;
90579 
90580 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan11PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties90581     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties(
90582       std::array<uint8_t, VK_UUID_SIZE> const &   deviceUUID_                        = {},
90583       std::array<uint8_t, VK_UUID_SIZE> const &   driverUUID_                        = {},
90584       std::array<uint8_t, VK_LUID_SIZE> const &   deviceLUID_                        = {},
90585       uint32_t                                    deviceNodeMask_                    = {},
90586       VULKAN_HPP_NAMESPACE::Bool32                deviceLUIDValid_                   = {},
90587       uint32_t                                    subgroupSize_                      = {},
90588       VULKAN_HPP_NAMESPACE::ShaderStageFlags      subgroupSupportedStages_           = {},
90589       VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags  subgroupSupportedOperations_       = {},
90590       VULKAN_HPP_NAMESPACE::Bool32                subgroupQuadOperationsInAllStages_ = {},
90591       VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_             = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes,
90592       uint32_t                                    maxMultiviewViewCount_             = {},
90593       uint32_t                                    maxMultiviewInstanceIndex_         = {},
90594       VULKAN_HPP_NAMESPACE::Bool32                protectedNoFault_                  = {},
90595       uint32_t                                    maxPerSetDescriptors_              = {},
90596       VULKAN_HPP_NAMESPACE::DeviceSize            maxMemoryAllocationSize_           = {},
90597       void *                                      pNext_                             = nullptr ) VULKAN_HPP_NOEXCEPT
90598       : pNext{ pNext_ }
90599       , deviceUUID{ deviceUUID_ }
90600       , driverUUID{ driverUUID_ }
90601       , deviceLUID{ deviceLUID_ }
90602       , deviceNodeMask{ deviceNodeMask_ }
90603       , deviceLUIDValid{ deviceLUIDValid_ }
90604       , subgroupSize{ subgroupSize_ }
90605       , subgroupSupportedStages{ subgroupSupportedStages_ }
90606       , subgroupSupportedOperations{ subgroupSupportedOperations_ }
90607       , subgroupQuadOperationsInAllStages{ subgroupQuadOperationsInAllStages_ }
90608       , pointClippingBehavior{ pointClippingBehavior_ }
90609       , maxMultiviewViewCount{ maxMultiviewViewCount_ }
90610       , maxMultiviewInstanceIndex{ maxMultiviewInstanceIndex_ }
90611       , protectedNoFault{ protectedNoFault_ }
90612       , maxPerSetDescriptors{ maxPerSetDescriptors_ }
90613       , maxMemoryAllocationSize{ maxMemoryAllocationSize_ }
90614     {
90615     }
90616 
90617     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90618 
PhysicalDeviceVulkan11PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties90619     PhysicalDeviceVulkan11Properties( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
90620       : PhysicalDeviceVulkan11Properties( *reinterpret_cast<PhysicalDeviceVulkan11Properties const *>( &rhs ) )
90621     {
90622     }
90623 
90624     PhysicalDeviceVulkan11Properties & operator=( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90625 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90626 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties90627     PhysicalDeviceVulkan11Properties & operator=( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
90628     {
90629       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties const *>( &rhs );
90630       return *this;
90631     }
90632 
operator VkPhysicalDeviceVulkan11Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties90633     operator VkPhysicalDeviceVulkan11Properties const &() const VULKAN_HPP_NOEXCEPT
90634     {
90635       return *reinterpret_cast<const VkPhysicalDeviceVulkan11Properties *>( this );
90636     }
90637 
operator VkPhysicalDeviceVulkan11Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties90638     operator VkPhysicalDeviceVulkan11Properties &() VULKAN_HPP_NOEXCEPT
90639     {
90640       return *reinterpret_cast<VkPhysicalDeviceVulkan11Properties *>( this );
90641     }
90642 
90643 #if defined( VULKAN_HPP_USE_REFLECT )
90644 #  if 14 <= VULKAN_HPP_CPP_VERSION
90645     auto
90646 #  else
90647     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
90648                void * const &,
90649                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
90650                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
90651                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> const &,
90652                uint32_t const &,
90653                VULKAN_HPP_NAMESPACE::Bool32 const &,
90654                uint32_t const &,
90655                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
90656                VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags const &,
90657                VULKAN_HPP_NAMESPACE::Bool32 const &,
90658                VULKAN_HPP_NAMESPACE::PointClippingBehavior const &,
90659                uint32_t const &,
90660                uint32_t const &,
90661                VULKAN_HPP_NAMESPACE::Bool32 const &,
90662                uint32_t const &,
90663                VULKAN_HPP_NAMESPACE::DeviceSize const &>
90664 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties90665       reflect() const VULKAN_HPP_NOEXCEPT
90666     {
90667       return std::tie( sType,
90668                        pNext,
90669                        deviceUUID,
90670                        driverUUID,
90671                        deviceLUID,
90672                        deviceNodeMask,
90673                        deviceLUIDValid,
90674                        subgroupSize,
90675                        subgroupSupportedStages,
90676                        subgroupSupportedOperations,
90677                        subgroupQuadOperationsInAllStages,
90678                        pointClippingBehavior,
90679                        maxMultiviewViewCount,
90680                        maxMultiviewInstanceIndex,
90681                        protectedNoFault,
90682                        maxPerSetDescriptors,
90683                        maxMemoryAllocationSize );
90684     }
90685 #endif
90686 
90687 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90688     auto operator<=>( PhysicalDeviceVulkan11Properties const & ) const = default;
90689 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties90690     bool operator==( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
90691     {
90692 #  if defined( VULKAN_HPP_USE_REFLECT )
90693       return this->reflect() == rhs.reflect();
90694 #  else
90695       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceUUID == rhs.deviceUUID ) && ( driverUUID == rhs.driverUUID ) &&
90696              ( deviceLUID == rhs.deviceLUID ) && ( deviceNodeMask == rhs.deviceNodeMask ) && ( deviceLUIDValid == rhs.deviceLUIDValid ) &&
90697              ( subgroupSize == rhs.subgroupSize ) && ( subgroupSupportedStages == rhs.subgroupSupportedStages ) &&
90698              ( subgroupSupportedOperations == rhs.subgroupSupportedOperations ) &&
90699              ( subgroupQuadOperationsInAllStages == rhs.subgroupQuadOperationsInAllStages ) && ( pointClippingBehavior == rhs.pointClippingBehavior ) &&
90700              ( maxMultiviewViewCount == rhs.maxMultiviewViewCount ) && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex ) &&
90701              ( protectedNoFault == rhs.protectedNoFault ) && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors ) &&
90702              ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize );
90703 #  endif
90704     }
90705 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties90706     bool operator!=( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
90707     {
90708       return !operator==( rhs );
90709     }
90710 #endif
90711 
90712   public:
90713     VULKAN_HPP_NAMESPACE::StructureType                         sType                             = StructureType::ePhysicalDeviceVulkan11Properties;
90714     void *                                                      pNext                             = {};
90715     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> deviceUUID                        = {};
90716     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> driverUUID                        = {};
90717     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> deviceLUID                        = {};
90718     uint32_t                                                    deviceNodeMask                    = {};
90719     VULKAN_HPP_NAMESPACE::Bool32                                deviceLUIDValid                   = {};
90720     uint32_t                                                    subgroupSize                      = {};
90721     VULKAN_HPP_NAMESPACE::ShaderStageFlags                      subgroupSupportedStages           = {};
90722     VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags                  subgroupSupportedOperations       = {};
90723     VULKAN_HPP_NAMESPACE::Bool32                                subgroupQuadOperationsInAllStages = {};
90724     VULKAN_HPP_NAMESPACE::PointClippingBehavior                 pointClippingBehavior             = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes;
90725     uint32_t                                                    maxMultiviewViewCount             = {};
90726     uint32_t                                                    maxMultiviewInstanceIndex         = {};
90727     VULKAN_HPP_NAMESPACE::Bool32                                protectedNoFault                  = {};
90728     uint32_t                                                    maxPerSetDescriptors              = {};
90729     VULKAN_HPP_NAMESPACE::DeviceSize                            maxMemoryAllocationSize           = {};
90730   };
90731 
90732   template <>
90733   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan11Properties>
90734   {
90735     using Type = PhysicalDeviceVulkan11Properties;
90736   };
90737 
90738   struct PhysicalDeviceVulkan12Features
90739   {
90740     using NativeType = VkPhysicalDeviceVulkan12Features;
90741 
90742     static const bool                                  allowDuplicate = false;
90743     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan12Features;
90744 
90745 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan12FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90746     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features( VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_                           = {},
90747                                                          VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_                                  = {},
90748                                                          VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_                            = {},
90749                                                          VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_                  = {},
90750                                                          VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_                               = {},
90751                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_                           = {},
90752                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_                           = {},
90753                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_                                      = {},
90754                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_                                         = {},
90755                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_                                 = {},
90756                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_          = {},
90757                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_       = {},
90758                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_       = {},
90759                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_         = {},
90760                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_          = {},
90761                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_         = {},
90762                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_          = {},
90763                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_       = {},
90764                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_    = {},
90765                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_    = {},
90766                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_      = {},
90767                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_       = {},
90768                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_       = {},
90769                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_      = {},
90770                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {},
90771                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {},
90772                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_          = {},
90773                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_                    = {},
90774                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_           = {},
90775                                                          VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_                             = {},
90776                                                          VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_                                = {},
90777                                                          VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_                                  = {},
90778                                                          VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_                               = {},
90779                                                          VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_                        = {},
90780                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_                        = {},
90781                                                          VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_                        = {},
90782                                                          VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_                                     = {},
90783                                                          VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_                                  = {},
90784                                                          VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_                                = {},
90785                                                          VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_                   = {},
90786                                                          VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_                     = {},
90787                                                          VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_                                  = {},
90788                                                          VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_                       = {},
90789                                                          VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_      = {},
90790                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_                          = {},
90791                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_                                  = {},
90792                                                          VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_                         = {},
90793                                                          void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
90794       : pNext{ pNext_ }
90795       , samplerMirrorClampToEdge{ samplerMirrorClampToEdge_ }
90796       , drawIndirectCount{ drawIndirectCount_ }
90797       , storageBuffer8BitAccess{ storageBuffer8BitAccess_ }
90798       , uniformAndStorageBuffer8BitAccess{ uniformAndStorageBuffer8BitAccess_ }
90799       , storagePushConstant8{ storagePushConstant8_ }
90800       , shaderBufferInt64Atomics{ shaderBufferInt64Atomics_ }
90801       , shaderSharedInt64Atomics{ shaderSharedInt64Atomics_ }
90802       , shaderFloat16{ shaderFloat16_ }
90803       , shaderInt8{ shaderInt8_ }
90804       , descriptorIndexing{ descriptorIndexing_ }
90805       , shaderInputAttachmentArrayDynamicIndexing{ shaderInputAttachmentArrayDynamicIndexing_ }
90806       , shaderUniformTexelBufferArrayDynamicIndexing{ shaderUniformTexelBufferArrayDynamicIndexing_ }
90807       , shaderStorageTexelBufferArrayDynamicIndexing{ shaderStorageTexelBufferArrayDynamicIndexing_ }
90808       , shaderUniformBufferArrayNonUniformIndexing{ shaderUniformBufferArrayNonUniformIndexing_ }
90809       , shaderSampledImageArrayNonUniformIndexing{ shaderSampledImageArrayNonUniformIndexing_ }
90810       , shaderStorageBufferArrayNonUniformIndexing{ shaderStorageBufferArrayNonUniformIndexing_ }
90811       , shaderStorageImageArrayNonUniformIndexing{ shaderStorageImageArrayNonUniformIndexing_ }
90812       , shaderInputAttachmentArrayNonUniformIndexing{ shaderInputAttachmentArrayNonUniformIndexing_ }
90813       , shaderUniformTexelBufferArrayNonUniformIndexing{ shaderUniformTexelBufferArrayNonUniformIndexing_ }
90814       , shaderStorageTexelBufferArrayNonUniformIndexing{ shaderStorageTexelBufferArrayNonUniformIndexing_ }
90815       , descriptorBindingUniformBufferUpdateAfterBind{ descriptorBindingUniformBufferUpdateAfterBind_ }
90816       , descriptorBindingSampledImageUpdateAfterBind{ descriptorBindingSampledImageUpdateAfterBind_ }
90817       , descriptorBindingStorageImageUpdateAfterBind{ descriptorBindingStorageImageUpdateAfterBind_ }
90818       , descriptorBindingStorageBufferUpdateAfterBind{ descriptorBindingStorageBufferUpdateAfterBind_ }
90819       , descriptorBindingUniformTexelBufferUpdateAfterBind{ descriptorBindingUniformTexelBufferUpdateAfterBind_ }
90820       , descriptorBindingStorageTexelBufferUpdateAfterBind{ descriptorBindingStorageTexelBufferUpdateAfterBind_ }
90821       , descriptorBindingUpdateUnusedWhilePending{ descriptorBindingUpdateUnusedWhilePending_ }
90822       , descriptorBindingPartiallyBound{ descriptorBindingPartiallyBound_ }
90823       , descriptorBindingVariableDescriptorCount{ descriptorBindingVariableDescriptorCount_ }
90824       , runtimeDescriptorArray{ runtimeDescriptorArray_ }
90825       , samplerFilterMinmax{ samplerFilterMinmax_ }
90826       , scalarBlockLayout{ scalarBlockLayout_ }
90827       , imagelessFramebuffer{ imagelessFramebuffer_ }
90828       , uniformBufferStandardLayout{ uniformBufferStandardLayout_ }
90829       , shaderSubgroupExtendedTypes{ shaderSubgroupExtendedTypes_ }
90830       , separateDepthStencilLayouts{ separateDepthStencilLayouts_ }
90831       , hostQueryReset{ hostQueryReset_ }
90832       , timelineSemaphore{ timelineSemaphore_ }
90833       , bufferDeviceAddress{ bufferDeviceAddress_ }
90834       , bufferDeviceAddressCaptureReplay{ bufferDeviceAddressCaptureReplay_ }
90835       , bufferDeviceAddressMultiDevice{ bufferDeviceAddressMultiDevice_ }
90836       , vulkanMemoryModel{ vulkanMemoryModel_ }
90837       , vulkanMemoryModelDeviceScope{ vulkanMemoryModelDeviceScope_ }
90838       , vulkanMemoryModelAvailabilityVisibilityChains{ vulkanMemoryModelAvailabilityVisibilityChains_ }
90839       , shaderOutputViewportIndex{ shaderOutputViewportIndex_ }
90840       , shaderOutputLayer{ shaderOutputLayer_ }
90841       , subgroupBroadcastDynamicId{ subgroupBroadcastDynamicId_ }
90842     {
90843     }
90844 
90845     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90846 
PhysicalDeviceVulkan12FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90847     PhysicalDeviceVulkan12Features( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
90848       : PhysicalDeviceVulkan12Features( *reinterpret_cast<PhysicalDeviceVulkan12Features const *>( &rhs ) )
90849     {
90850     }
90851 
90852     PhysicalDeviceVulkan12Features & operator=( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90853 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90854 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90855     PhysicalDeviceVulkan12Features & operator=( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
90856     {
90857       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features const *>( &rhs );
90858       return *this;
90859     }
90860 
90861 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90862     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
90863     {
90864       pNext = pNext_;
90865       return *this;
90866     }
90867 
90868     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setSamplerMirrorClampToEdgeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90869       setSamplerMirrorClampToEdge( VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_ ) VULKAN_HPP_NOEXCEPT
90870     {
90871       samplerMirrorClampToEdge = samplerMirrorClampToEdge_;
90872       return *this;
90873     }
90874 
setDrawIndirectCountVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90875     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDrawIndirectCount( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_ ) VULKAN_HPP_NOEXCEPT
90876     {
90877       drawIndirectCount = drawIndirectCount_;
90878       return *this;
90879     }
90880 
90881     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90882       setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
90883     {
90884       storageBuffer8BitAccess = storageBuffer8BitAccess_;
90885       return *this;
90886     }
90887 
90888     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setUniformAndStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90889       setUniformAndStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
90890     {
90891       uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_;
90892       return *this;
90893     }
90894 
setStoragePushConstant8VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90895     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT
90896     {
90897       storagePushConstant8 = storagePushConstant8_;
90898       return *this;
90899     }
90900 
90901     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderBufferInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90902       setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
90903     {
90904       shaderBufferInt64Atomics = shaderBufferInt64Atomics_;
90905       return *this;
90906     }
90907 
90908     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderSharedInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90909       setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
90910     {
90911       shaderSharedInt64Atomics = shaderSharedInt64Atomics_;
90912       return *this;
90913     }
90914 
setShaderFloat16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90915     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT
90916     {
90917       shaderFloat16 = shaderFloat16_;
90918       return *this;
90919     }
90920 
setShaderInt8VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90921     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT
90922     {
90923       shaderInt8 = shaderInt8_;
90924       return *this;
90925     }
90926 
setDescriptorIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90927     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorIndexing( VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_ ) VULKAN_HPP_NOEXCEPT
90928     {
90929       descriptorIndexing = descriptorIndexing_;
90930       return *this;
90931     }
90932 
90933     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderInputAttachmentArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90934       setShaderInputAttachmentArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
90935     {
90936       shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_;
90937       return *this;
90938     }
90939 
90940     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderUniformTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90941       setShaderUniformTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
90942     {
90943       shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_;
90944       return *this;
90945     }
90946 
90947     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderStorageTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90948       setShaderStorageTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
90949     {
90950       shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_;
90951       return *this;
90952     }
90953 
90954     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderUniformBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90955       setShaderUniformBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
90956     {
90957       shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_;
90958       return *this;
90959     }
90960 
90961     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderSampledImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90962       setShaderSampledImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
90963     {
90964       shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_;
90965       return *this;
90966     }
90967 
90968     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderStorageBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90969       setShaderStorageBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
90970     {
90971       shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_;
90972       return *this;
90973     }
90974 
90975     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderStorageImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90976       setShaderStorageImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
90977     {
90978       shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_;
90979       return *this;
90980     }
90981 
90982     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderInputAttachmentArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90983       setShaderInputAttachmentArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
90984     {
90985       shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_;
90986       return *this;
90987     }
90988 
90989     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderUniformTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90990       setShaderUniformTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
90991     {
90992       shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_;
90993       return *this;
90994     }
90995 
90996     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderStorageTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features90997       setShaderStorageTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
90998     {
90999       shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_;
91000       return *this;
91001     }
91002 
91003     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingUniformBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91004       setDescriptorBindingUniformBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
91005     {
91006       descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_;
91007       return *this;
91008     }
91009 
91010     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingSampledImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91011       setDescriptorBindingSampledImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
91012     {
91013       descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_;
91014       return *this;
91015     }
91016 
91017     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingStorageImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91018       setDescriptorBindingStorageImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
91019     {
91020       descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_;
91021       return *this;
91022     }
91023 
91024     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingStorageBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91025       setDescriptorBindingStorageBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
91026     {
91027       descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_;
91028       return *this;
91029     }
91030 
setDescriptorBindingUniformTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91031     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUniformTexelBufferUpdateAfterBind(
91032       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
91033     {
91034       descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_;
91035       return *this;
91036     }
91037 
setDescriptorBindingStorageTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91038     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageTexelBufferUpdateAfterBind(
91039       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
91040     {
91041       descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_;
91042       return *this;
91043     }
91044 
91045     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingUpdateUnusedWhilePendingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91046       setDescriptorBindingUpdateUnusedWhilePending( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT
91047     {
91048       descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_;
91049       return *this;
91050     }
91051 
91052     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingPartiallyBoundVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91053       setDescriptorBindingPartiallyBound( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT
91054     {
91055       descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_;
91056       return *this;
91057     }
91058 
91059     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingVariableDescriptorCountVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91060       setDescriptorBindingVariableDescriptorCount( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT
91061     {
91062       descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_;
91063       return *this;
91064     }
91065 
91066     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setRuntimeDescriptorArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91067       setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT
91068     {
91069       runtimeDescriptorArray = runtimeDescriptorArray_;
91070       return *this;
91071     }
91072 
setSamplerFilterMinmaxVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91073     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setSamplerFilterMinmax( VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_ ) VULKAN_HPP_NOEXCEPT
91074     {
91075       samplerFilterMinmax = samplerFilterMinmax_;
91076       return *this;
91077     }
91078 
setScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91079     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
91080     {
91081       scalarBlockLayout = scalarBlockLayout_;
91082       return *this;
91083     }
91084 
setImagelessFramebufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91085     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT
91086     {
91087       imagelessFramebuffer = imagelessFramebuffer_;
91088       return *this;
91089     }
91090 
91091     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setUniformBufferStandardLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91092       setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT
91093     {
91094       uniformBufferStandardLayout = uniformBufferStandardLayout_;
91095       return *this;
91096     }
91097 
91098     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderSubgroupExtendedTypesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91099       setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT
91100     {
91101       shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_;
91102       return *this;
91103     }
91104 
91105     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setSeparateDepthStencilLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91106       setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT
91107     {
91108       separateDepthStencilLayouts = separateDepthStencilLayouts_;
91109       return *this;
91110     }
91111 
setHostQueryResetVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91112     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT
91113     {
91114       hostQueryReset = hostQueryReset_;
91115       return *this;
91116     }
91117 
setTimelineSemaphoreVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91118     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT
91119     {
91120       timelineSemaphore = timelineSemaphore_;
91121       return *this;
91122     }
91123 
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91124     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
91125     {
91126       bufferDeviceAddress = bufferDeviceAddress_;
91127       return *this;
91128     }
91129 
91130     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91131       setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
91132     {
91133       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
91134       return *this;
91135     }
91136 
91137     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91138       setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
91139     {
91140       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
91141       return *this;
91142     }
91143 
setVulkanMemoryModelVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91144     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT
91145     {
91146       vulkanMemoryModel = vulkanMemoryModel_;
91147       return *this;
91148     }
91149 
91150     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setVulkanMemoryModelDeviceScopeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91151       setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT
91152     {
91153       vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_;
91154       return *this;
91155     }
91156 
91157     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setVulkanMemoryModelAvailabilityVisibilityChainsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91158       setVulkanMemoryModelAvailabilityVisibilityChains( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT
91159     {
91160       vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_;
91161       return *this;
91162     }
91163 
91164     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderOutputViewportIndexVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91165       setShaderOutputViewportIndex( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_ ) VULKAN_HPP_NOEXCEPT
91166     {
91167       shaderOutputViewportIndex = shaderOutputViewportIndex_;
91168       return *this;
91169     }
91170 
setShaderOutputLayerVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91171     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderOutputLayer( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_ ) VULKAN_HPP_NOEXCEPT
91172     {
91173       shaderOutputLayer = shaderOutputLayer_;
91174       return *this;
91175     }
91176 
91177     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setSubgroupBroadcastDynamicIdVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91178       setSubgroupBroadcastDynamicId( VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_ ) VULKAN_HPP_NOEXCEPT
91179     {
91180       subgroupBroadcastDynamicId = subgroupBroadcastDynamicId_;
91181       return *this;
91182     }
91183 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91184 
operator VkPhysicalDeviceVulkan12Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91185     operator VkPhysicalDeviceVulkan12Features const &() const VULKAN_HPP_NOEXCEPT
91186     {
91187       return *reinterpret_cast<const VkPhysicalDeviceVulkan12Features *>( this );
91188     }
91189 
operator VkPhysicalDeviceVulkan12Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91190     operator VkPhysicalDeviceVulkan12Features &() VULKAN_HPP_NOEXCEPT
91191     {
91192       return *reinterpret_cast<VkPhysicalDeviceVulkan12Features *>( this );
91193     }
91194 
91195 #if defined( VULKAN_HPP_USE_REFLECT )
91196 #  if 14 <= VULKAN_HPP_CPP_VERSION
91197     auto
91198 #  else
91199     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
91200                void * const &,
91201                VULKAN_HPP_NAMESPACE::Bool32 const &,
91202                VULKAN_HPP_NAMESPACE::Bool32 const &,
91203                VULKAN_HPP_NAMESPACE::Bool32 const &,
91204                VULKAN_HPP_NAMESPACE::Bool32 const &,
91205                VULKAN_HPP_NAMESPACE::Bool32 const &,
91206                VULKAN_HPP_NAMESPACE::Bool32 const &,
91207                VULKAN_HPP_NAMESPACE::Bool32 const &,
91208                VULKAN_HPP_NAMESPACE::Bool32 const &,
91209                VULKAN_HPP_NAMESPACE::Bool32 const &,
91210                VULKAN_HPP_NAMESPACE::Bool32 const &,
91211                VULKAN_HPP_NAMESPACE::Bool32 const &,
91212                VULKAN_HPP_NAMESPACE::Bool32 const &,
91213                VULKAN_HPP_NAMESPACE::Bool32 const &,
91214                VULKAN_HPP_NAMESPACE::Bool32 const &,
91215                VULKAN_HPP_NAMESPACE::Bool32 const &,
91216                VULKAN_HPP_NAMESPACE::Bool32 const &,
91217                VULKAN_HPP_NAMESPACE::Bool32 const &,
91218                VULKAN_HPP_NAMESPACE::Bool32 const &,
91219                VULKAN_HPP_NAMESPACE::Bool32 const &,
91220                VULKAN_HPP_NAMESPACE::Bool32 const &,
91221                VULKAN_HPP_NAMESPACE::Bool32 const &,
91222                VULKAN_HPP_NAMESPACE::Bool32 const &,
91223                VULKAN_HPP_NAMESPACE::Bool32 const &,
91224                VULKAN_HPP_NAMESPACE::Bool32 const &,
91225                VULKAN_HPP_NAMESPACE::Bool32 const &,
91226                VULKAN_HPP_NAMESPACE::Bool32 const &,
91227                VULKAN_HPP_NAMESPACE::Bool32 const &,
91228                VULKAN_HPP_NAMESPACE::Bool32 const &,
91229                VULKAN_HPP_NAMESPACE::Bool32 const &,
91230                VULKAN_HPP_NAMESPACE::Bool32 const &,
91231                VULKAN_HPP_NAMESPACE::Bool32 const &,
91232                VULKAN_HPP_NAMESPACE::Bool32 const &,
91233                VULKAN_HPP_NAMESPACE::Bool32 const &,
91234                VULKAN_HPP_NAMESPACE::Bool32 const &,
91235                VULKAN_HPP_NAMESPACE::Bool32 const &,
91236                VULKAN_HPP_NAMESPACE::Bool32 const &,
91237                VULKAN_HPP_NAMESPACE::Bool32 const &,
91238                VULKAN_HPP_NAMESPACE::Bool32 const &,
91239                VULKAN_HPP_NAMESPACE::Bool32 const &,
91240                VULKAN_HPP_NAMESPACE::Bool32 const &,
91241                VULKAN_HPP_NAMESPACE::Bool32 const &,
91242                VULKAN_HPP_NAMESPACE::Bool32 const &,
91243                VULKAN_HPP_NAMESPACE::Bool32 const &,
91244                VULKAN_HPP_NAMESPACE::Bool32 const &,
91245                VULKAN_HPP_NAMESPACE::Bool32 const &,
91246                VULKAN_HPP_NAMESPACE::Bool32 const &,
91247                VULKAN_HPP_NAMESPACE::Bool32 const &>
91248 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91249       reflect() const VULKAN_HPP_NOEXCEPT
91250     {
91251       return std::tie( sType,
91252                        pNext,
91253                        samplerMirrorClampToEdge,
91254                        drawIndirectCount,
91255                        storageBuffer8BitAccess,
91256                        uniformAndStorageBuffer8BitAccess,
91257                        storagePushConstant8,
91258                        shaderBufferInt64Atomics,
91259                        shaderSharedInt64Atomics,
91260                        shaderFloat16,
91261                        shaderInt8,
91262                        descriptorIndexing,
91263                        shaderInputAttachmentArrayDynamicIndexing,
91264                        shaderUniformTexelBufferArrayDynamicIndexing,
91265                        shaderStorageTexelBufferArrayDynamicIndexing,
91266                        shaderUniformBufferArrayNonUniformIndexing,
91267                        shaderSampledImageArrayNonUniformIndexing,
91268                        shaderStorageBufferArrayNonUniformIndexing,
91269                        shaderStorageImageArrayNonUniformIndexing,
91270                        shaderInputAttachmentArrayNonUniformIndexing,
91271                        shaderUniformTexelBufferArrayNonUniformIndexing,
91272                        shaderStorageTexelBufferArrayNonUniformIndexing,
91273                        descriptorBindingUniformBufferUpdateAfterBind,
91274                        descriptorBindingSampledImageUpdateAfterBind,
91275                        descriptorBindingStorageImageUpdateAfterBind,
91276                        descriptorBindingStorageBufferUpdateAfterBind,
91277                        descriptorBindingUniformTexelBufferUpdateAfterBind,
91278                        descriptorBindingStorageTexelBufferUpdateAfterBind,
91279                        descriptorBindingUpdateUnusedWhilePending,
91280                        descriptorBindingPartiallyBound,
91281                        descriptorBindingVariableDescriptorCount,
91282                        runtimeDescriptorArray,
91283                        samplerFilterMinmax,
91284                        scalarBlockLayout,
91285                        imagelessFramebuffer,
91286                        uniformBufferStandardLayout,
91287                        shaderSubgroupExtendedTypes,
91288                        separateDepthStencilLayouts,
91289                        hostQueryReset,
91290                        timelineSemaphore,
91291                        bufferDeviceAddress,
91292                        bufferDeviceAddressCaptureReplay,
91293                        bufferDeviceAddressMultiDevice,
91294                        vulkanMemoryModel,
91295                        vulkanMemoryModelDeviceScope,
91296                        vulkanMemoryModelAvailabilityVisibilityChains,
91297                        shaderOutputViewportIndex,
91298                        shaderOutputLayer,
91299                        subgroupBroadcastDynamicId );
91300     }
91301 #endif
91302 
91303 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91304     auto operator<=>( PhysicalDeviceVulkan12Features const & ) const = default;
91305 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91306     bool operator==( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT
91307     {
91308 #  if defined( VULKAN_HPP_USE_REFLECT )
91309       return this->reflect() == rhs.reflect();
91310 #  else
91311       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( samplerMirrorClampToEdge == rhs.samplerMirrorClampToEdge ) &&
91312              ( drawIndirectCount == rhs.drawIndirectCount ) && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess ) &&
91313              ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess ) && ( storagePushConstant8 == rhs.storagePushConstant8 ) &&
91314              ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics ) && ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics ) &&
91315              ( shaderFloat16 == rhs.shaderFloat16 ) && ( shaderInt8 == rhs.shaderInt8 ) && ( descriptorIndexing == rhs.descriptorIndexing ) &&
91316              ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing ) &&
91317              ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing ) &&
91318              ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing ) &&
91319              ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing ) &&
91320              ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing ) &&
91321              ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing ) &&
91322              ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing ) &&
91323              ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing ) &&
91324              ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing ) &&
91325              ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing ) &&
91326              ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind ) &&
91327              ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind ) &&
91328              ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind ) &&
91329              ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind ) &&
91330              ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind ) &&
91331              ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind ) &&
91332              ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending ) &&
91333              ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound ) &&
91334              ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount ) &&
91335              ( runtimeDescriptorArray == rhs.runtimeDescriptorArray ) && ( samplerFilterMinmax == rhs.samplerFilterMinmax ) &&
91336              ( scalarBlockLayout == rhs.scalarBlockLayout ) && ( imagelessFramebuffer == rhs.imagelessFramebuffer ) &&
91337              ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout ) && ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes ) &&
91338              ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts ) && ( hostQueryReset == rhs.hostQueryReset ) &&
91339              ( timelineSemaphore == rhs.timelineSemaphore ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) &&
91340              ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) &&
91341              ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ) && ( vulkanMemoryModel == rhs.vulkanMemoryModel ) &&
91342              ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope ) &&
91343              ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains ) &&
91344              ( shaderOutputViewportIndex == rhs.shaderOutputViewportIndex ) && ( shaderOutputLayer == rhs.shaderOutputLayer ) &&
91345              ( subgroupBroadcastDynamicId == rhs.subgroupBroadcastDynamicId );
91346 #  endif
91347     }
91348 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features91349     bool operator!=( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT
91350     {
91351       return !operator==( rhs );
91352     }
91353 #endif
91354 
91355   public:
91356     VULKAN_HPP_NAMESPACE::StructureType sType                                              = StructureType::ePhysicalDeviceVulkan12Features;
91357     void *                              pNext                                              = {};
91358     VULKAN_HPP_NAMESPACE::Bool32        samplerMirrorClampToEdge                           = {};
91359     VULKAN_HPP_NAMESPACE::Bool32        drawIndirectCount                                  = {};
91360     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer8BitAccess                            = {};
91361     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer8BitAccess                  = {};
91362     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant8                               = {};
91363     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferInt64Atomics                           = {};
91364     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedInt64Atomics                           = {};
91365     VULKAN_HPP_NAMESPACE::Bool32        shaderFloat16                                      = {};
91366     VULKAN_HPP_NAMESPACE::Bool32        shaderInt8                                         = {};
91367     VULKAN_HPP_NAMESPACE::Bool32        descriptorIndexing                                 = {};
91368     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayDynamicIndexing          = {};
91369     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayDynamicIndexing       = {};
91370     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayDynamicIndexing       = {};
91371     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformBufferArrayNonUniformIndexing         = {};
91372     VULKAN_HPP_NAMESPACE::Bool32        shaderSampledImageArrayNonUniformIndexing          = {};
91373     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageBufferArrayNonUniformIndexing         = {};
91374     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageImageArrayNonUniformIndexing          = {};
91375     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayNonUniformIndexing       = {};
91376     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayNonUniformIndexing    = {};
91377     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayNonUniformIndexing    = {};
91378     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformBufferUpdateAfterBind      = {};
91379     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingSampledImageUpdateAfterBind       = {};
91380     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageImageUpdateAfterBind       = {};
91381     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageBufferUpdateAfterBind      = {};
91382     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformTexelBufferUpdateAfterBind = {};
91383     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageTexelBufferUpdateAfterBind = {};
91384     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUpdateUnusedWhilePending          = {};
91385     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingPartiallyBound                    = {};
91386     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingVariableDescriptorCount           = {};
91387     VULKAN_HPP_NAMESPACE::Bool32        runtimeDescriptorArray                             = {};
91388     VULKAN_HPP_NAMESPACE::Bool32        samplerFilterMinmax                                = {};
91389     VULKAN_HPP_NAMESPACE::Bool32        scalarBlockLayout                                  = {};
91390     VULKAN_HPP_NAMESPACE::Bool32        imagelessFramebuffer                               = {};
91391     VULKAN_HPP_NAMESPACE::Bool32        uniformBufferStandardLayout                        = {};
91392     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupExtendedTypes                        = {};
91393     VULKAN_HPP_NAMESPACE::Bool32        separateDepthStencilLayouts                        = {};
91394     VULKAN_HPP_NAMESPACE::Bool32        hostQueryReset                                     = {};
91395     VULKAN_HPP_NAMESPACE::Bool32        timelineSemaphore                                  = {};
91396     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddress                                = {};
91397     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressCaptureReplay                   = {};
91398     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressMultiDevice                     = {};
91399     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModel                                  = {};
91400     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelDeviceScope                       = {};
91401     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelAvailabilityVisibilityChains      = {};
91402     VULKAN_HPP_NAMESPACE::Bool32        shaderOutputViewportIndex                          = {};
91403     VULKAN_HPP_NAMESPACE::Bool32        shaderOutputLayer                                  = {};
91404     VULKAN_HPP_NAMESPACE::Bool32        subgroupBroadcastDynamicId                         = {};
91405   };
91406 
91407   template <>
91408   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan12Features>
91409   {
91410     using Type = PhysicalDeviceVulkan12Features;
91411   };
91412 
91413   struct PhysicalDeviceVulkan12Properties
91414   {
91415     using NativeType = VkPhysicalDeviceVulkan12Properties;
91416 
91417     static const bool                                  allowDuplicate = false;
91418     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan12Properties;
91419 
91420 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan12PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties91421     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties(
91422       VULKAN_HPP_NAMESPACE::DriverId                        driverID_                   = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary,
91423       std::array<char, VK_MAX_DRIVER_NAME_SIZE> const &     driverName_                 = {},
91424       std::array<char, VK_MAX_DRIVER_INFO_SIZE> const &     driverInfo_                 = {},
91425       VULKAN_HPP_NAMESPACE::ConformanceVersion              conformanceVersion_         = {},
91426       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
91427       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_   = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
91428       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat16_                = {},
91429       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat32_                = {},
91430       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat64_                = {},
91431       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat16_                          = {},
91432       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat32_                          = {},
91433       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat64_                          = {},
91434       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat16_                       = {},
91435       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat32_                       = {},
91436       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat64_                       = {},
91437       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat16_                         = {},
91438       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat32_                         = {},
91439       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat64_                         = {},
91440       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat16_                         = {},
91441       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat32_                         = {},
91442       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat64_                         = {},
91443       uint32_t                                              maxUpdateAfterBindDescriptorsInAllPools_              = {},
91444       VULKAN_HPP_NAMESPACE::Bool32                          shaderUniformBufferArrayNonUniformIndexingNative_     = {},
91445       VULKAN_HPP_NAMESPACE::Bool32                          shaderSampledImageArrayNonUniformIndexingNative_      = {},
91446       VULKAN_HPP_NAMESPACE::Bool32                          shaderStorageBufferArrayNonUniformIndexingNative_     = {},
91447       VULKAN_HPP_NAMESPACE::Bool32                          shaderStorageImageArrayNonUniformIndexingNative_      = {},
91448       VULKAN_HPP_NAMESPACE::Bool32                          shaderInputAttachmentArrayNonUniformIndexingNative_   = {},
91449       VULKAN_HPP_NAMESPACE::Bool32                          robustBufferAccessUpdateAfterBind_                    = {},
91450       VULKAN_HPP_NAMESPACE::Bool32                          quadDivergentImplicitLod_                             = {},
91451       uint32_t                                              maxPerStageDescriptorUpdateAfterBindSamplers_         = {},
91452       uint32_t                                              maxPerStageDescriptorUpdateAfterBindUniformBuffers_   = {},
91453       uint32_t                                              maxPerStageDescriptorUpdateAfterBindStorageBuffers_   = {},
91454       uint32_t                                              maxPerStageDescriptorUpdateAfterBindSampledImages_    = {},
91455       uint32_t                                              maxPerStageDescriptorUpdateAfterBindStorageImages_    = {},
91456       uint32_t                                              maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {},
91457       uint32_t                                              maxPerStageUpdateAfterBindResources_                  = {},
91458       uint32_t                                              maxDescriptorSetUpdateAfterBindSamplers_              = {},
91459       uint32_t                                              maxDescriptorSetUpdateAfterBindUniformBuffers_        = {},
91460       uint32_t                                              maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {},
91461       uint32_t                                              maxDescriptorSetUpdateAfterBindStorageBuffers_        = {},
91462       uint32_t                                              maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {},
91463       uint32_t                                              maxDescriptorSetUpdateAfterBindSampledImages_         = {},
91464       uint32_t                                              maxDescriptorSetUpdateAfterBindStorageImages_         = {},
91465       uint32_t                                              maxDescriptorSetUpdateAfterBindInputAttachments_      = {},
91466       VULKAN_HPP_NAMESPACE::ResolveModeFlags                supportedDepthResolveModes_                           = {},
91467       VULKAN_HPP_NAMESPACE::ResolveModeFlags                supportedStencilResolveModes_                         = {},
91468       VULKAN_HPP_NAMESPACE::Bool32                          independentResolveNone_                               = {},
91469       VULKAN_HPP_NAMESPACE::Bool32                          independentResolve_                                   = {},
91470       VULKAN_HPP_NAMESPACE::Bool32                          filterMinmaxSingleComponentFormats_                   = {},
91471       VULKAN_HPP_NAMESPACE::Bool32                          filterMinmaxImageComponentMapping_                    = {},
91472       uint64_t                                              maxTimelineSemaphoreValueDifference_                  = {},
91473       VULKAN_HPP_NAMESPACE::SampleCountFlags                framebufferIntegerColorSampleCounts_                  = {},
91474       void *                                                pNext_                                                = nullptr ) VULKAN_HPP_NOEXCEPT
91475       : pNext{ pNext_ }
91476       , driverID{ driverID_ }
91477       , driverName{ driverName_ }
91478       , driverInfo{ driverInfo_ }
91479       , conformanceVersion{ conformanceVersion_ }
91480       , denormBehaviorIndependence{ denormBehaviorIndependence_ }
91481       , roundingModeIndependence{ roundingModeIndependence_ }
91482       , shaderSignedZeroInfNanPreserveFloat16{ shaderSignedZeroInfNanPreserveFloat16_ }
91483       , shaderSignedZeroInfNanPreserveFloat32{ shaderSignedZeroInfNanPreserveFloat32_ }
91484       , shaderSignedZeroInfNanPreserveFloat64{ shaderSignedZeroInfNanPreserveFloat64_ }
91485       , shaderDenormPreserveFloat16{ shaderDenormPreserveFloat16_ }
91486       , shaderDenormPreserveFloat32{ shaderDenormPreserveFloat32_ }
91487       , shaderDenormPreserveFloat64{ shaderDenormPreserveFloat64_ }
91488       , shaderDenormFlushToZeroFloat16{ shaderDenormFlushToZeroFloat16_ }
91489       , shaderDenormFlushToZeroFloat32{ shaderDenormFlushToZeroFloat32_ }
91490       , shaderDenormFlushToZeroFloat64{ shaderDenormFlushToZeroFloat64_ }
91491       , shaderRoundingModeRTEFloat16{ shaderRoundingModeRTEFloat16_ }
91492       , shaderRoundingModeRTEFloat32{ shaderRoundingModeRTEFloat32_ }
91493       , shaderRoundingModeRTEFloat64{ shaderRoundingModeRTEFloat64_ }
91494       , shaderRoundingModeRTZFloat16{ shaderRoundingModeRTZFloat16_ }
91495       , shaderRoundingModeRTZFloat32{ shaderRoundingModeRTZFloat32_ }
91496       , shaderRoundingModeRTZFloat64{ shaderRoundingModeRTZFloat64_ }
91497       , maxUpdateAfterBindDescriptorsInAllPools{ maxUpdateAfterBindDescriptorsInAllPools_ }
91498       , shaderUniformBufferArrayNonUniformIndexingNative{ shaderUniformBufferArrayNonUniformIndexingNative_ }
91499       , shaderSampledImageArrayNonUniformIndexingNative{ shaderSampledImageArrayNonUniformIndexingNative_ }
91500       , shaderStorageBufferArrayNonUniformIndexingNative{ shaderStorageBufferArrayNonUniformIndexingNative_ }
91501       , shaderStorageImageArrayNonUniformIndexingNative{ shaderStorageImageArrayNonUniformIndexingNative_ }
91502       , shaderInputAttachmentArrayNonUniformIndexingNative{ shaderInputAttachmentArrayNonUniformIndexingNative_ }
91503       , robustBufferAccessUpdateAfterBind{ robustBufferAccessUpdateAfterBind_ }
91504       , quadDivergentImplicitLod{ quadDivergentImplicitLod_ }
91505       , maxPerStageDescriptorUpdateAfterBindSamplers{ maxPerStageDescriptorUpdateAfterBindSamplers_ }
91506       , maxPerStageDescriptorUpdateAfterBindUniformBuffers{ maxPerStageDescriptorUpdateAfterBindUniformBuffers_ }
91507       , maxPerStageDescriptorUpdateAfterBindStorageBuffers{ maxPerStageDescriptorUpdateAfterBindStorageBuffers_ }
91508       , maxPerStageDescriptorUpdateAfterBindSampledImages{ maxPerStageDescriptorUpdateAfterBindSampledImages_ }
91509       , maxPerStageDescriptorUpdateAfterBindStorageImages{ maxPerStageDescriptorUpdateAfterBindStorageImages_ }
91510       , maxPerStageDescriptorUpdateAfterBindInputAttachments{ maxPerStageDescriptorUpdateAfterBindInputAttachments_ }
91511       , maxPerStageUpdateAfterBindResources{ maxPerStageUpdateAfterBindResources_ }
91512       , maxDescriptorSetUpdateAfterBindSamplers{ maxDescriptorSetUpdateAfterBindSamplers_ }
91513       , maxDescriptorSetUpdateAfterBindUniformBuffers{ maxDescriptorSetUpdateAfterBindUniformBuffers_ }
91514       , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic{ maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ }
91515       , maxDescriptorSetUpdateAfterBindStorageBuffers{ maxDescriptorSetUpdateAfterBindStorageBuffers_ }
91516       , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic{ maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ }
91517       , maxDescriptorSetUpdateAfterBindSampledImages{ maxDescriptorSetUpdateAfterBindSampledImages_ }
91518       , maxDescriptorSetUpdateAfterBindStorageImages{ maxDescriptorSetUpdateAfterBindStorageImages_ }
91519       , maxDescriptorSetUpdateAfterBindInputAttachments{ maxDescriptorSetUpdateAfterBindInputAttachments_ }
91520       , supportedDepthResolveModes{ supportedDepthResolveModes_ }
91521       , supportedStencilResolveModes{ supportedStencilResolveModes_ }
91522       , independentResolveNone{ independentResolveNone_ }
91523       , independentResolve{ independentResolve_ }
91524       , filterMinmaxSingleComponentFormats{ filterMinmaxSingleComponentFormats_ }
91525       , filterMinmaxImageComponentMapping{ filterMinmaxImageComponentMapping_ }
91526       , maxTimelineSemaphoreValueDifference{ maxTimelineSemaphoreValueDifference_ }
91527       , framebufferIntegerColorSampleCounts{ framebufferIntegerColorSampleCounts_ }
91528     {
91529     }
91530 
91531     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91532 
PhysicalDeviceVulkan12PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties91533     PhysicalDeviceVulkan12Properties( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
91534       : PhysicalDeviceVulkan12Properties( *reinterpret_cast<PhysicalDeviceVulkan12Properties const *>( &rhs ) )
91535     {
91536     }
91537 
91538     PhysicalDeviceVulkan12Properties & operator=( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91539 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91540 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties91541     PhysicalDeviceVulkan12Properties & operator=( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
91542     {
91543       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties const *>( &rhs );
91544       return *this;
91545     }
91546 
operator VkPhysicalDeviceVulkan12Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties91547     operator VkPhysicalDeviceVulkan12Properties const &() const VULKAN_HPP_NOEXCEPT
91548     {
91549       return *reinterpret_cast<const VkPhysicalDeviceVulkan12Properties *>( this );
91550     }
91551 
operator VkPhysicalDeviceVulkan12Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties91552     operator VkPhysicalDeviceVulkan12Properties &() VULKAN_HPP_NOEXCEPT
91553     {
91554       return *reinterpret_cast<VkPhysicalDeviceVulkan12Properties *>( this );
91555     }
91556 
91557 #if defined( VULKAN_HPP_USE_REFLECT )
91558 #  if 14 <= VULKAN_HPP_CPP_VERSION
91559     auto
91560 #  else
91561     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
91562                void * const &,
91563                VULKAN_HPP_NAMESPACE::DriverId const &,
91564                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> const &,
91565                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> const &,
91566                VULKAN_HPP_NAMESPACE::ConformanceVersion const &,
91567                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
91568                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
91569                VULKAN_HPP_NAMESPACE::Bool32 const &,
91570                VULKAN_HPP_NAMESPACE::Bool32 const &,
91571                VULKAN_HPP_NAMESPACE::Bool32 const &,
91572                VULKAN_HPP_NAMESPACE::Bool32 const &,
91573                VULKAN_HPP_NAMESPACE::Bool32 const &,
91574                VULKAN_HPP_NAMESPACE::Bool32 const &,
91575                VULKAN_HPP_NAMESPACE::Bool32 const &,
91576                VULKAN_HPP_NAMESPACE::Bool32 const &,
91577                VULKAN_HPP_NAMESPACE::Bool32 const &,
91578                VULKAN_HPP_NAMESPACE::Bool32 const &,
91579                VULKAN_HPP_NAMESPACE::Bool32 const &,
91580                VULKAN_HPP_NAMESPACE::Bool32 const &,
91581                VULKAN_HPP_NAMESPACE::Bool32 const &,
91582                VULKAN_HPP_NAMESPACE::Bool32 const &,
91583                VULKAN_HPP_NAMESPACE::Bool32 const &,
91584                uint32_t const &,
91585                VULKAN_HPP_NAMESPACE::Bool32 const &,
91586                VULKAN_HPP_NAMESPACE::Bool32 const &,
91587                VULKAN_HPP_NAMESPACE::Bool32 const &,
91588                VULKAN_HPP_NAMESPACE::Bool32 const &,
91589                VULKAN_HPP_NAMESPACE::Bool32 const &,
91590                VULKAN_HPP_NAMESPACE::Bool32 const &,
91591                VULKAN_HPP_NAMESPACE::Bool32 const &,
91592                uint32_t const &,
91593                uint32_t const &,
91594                uint32_t const &,
91595                uint32_t const &,
91596                uint32_t const &,
91597                uint32_t const &,
91598                uint32_t const &,
91599                uint32_t const &,
91600                uint32_t const &,
91601                uint32_t const &,
91602                uint32_t const &,
91603                uint32_t const &,
91604                uint32_t const &,
91605                uint32_t const &,
91606                uint32_t const &,
91607                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
91608                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
91609                VULKAN_HPP_NAMESPACE::Bool32 const &,
91610                VULKAN_HPP_NAMESPACE::Bool32 const &,
91611                VULKAN_HPP_NAMESPACE::Bool32 const &,
91612                VULKAN_HPP_NAMESPACE::Bool32 const &,
91613                uint64_t const &,
91614                VULKAN_HPP_NAMESPACE::SampleCountFlags const &>
91615 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties91616       reflect() const VULKAN_HPP_NOEXCEPT
91617     {
91618       return std::tie( sType,
91619                        pNext,
91620                        driverID,
91621                        driverName,
91622                        driverInfo,
91623                        conformanceVersion,
91624                        denormBehaviorIndependence,
91625                        roundingModeIndependence,
91626                        shaderSignedZeroInfNanPreserveFloat16,
91627                        shaderSignedZeroInfNanPreserveFloat32,
91628                        shaderSignedZeroInfNanPreserveFloat64,
91629                        shaderDenormPreserveFloat16,
91630                        shaderDenormPreserveFloat32,
91631                        shaderDenormPreserveFloat64,
91632                        shaderDenormFlushToZeroFloat16,
91633                        shaderDenormFlushToZeroFloat32,
91634                        shaderDenormFlushToZeroFloat64,
91635                        shaderRoundingModeRTEFloat16,
91636                        shaderRoundingModeRTEFloat32,
91637                        shaderRoundingModeRTEFloat64,
91638                        shaderRoundingModeRTZFloat16,
91639                        shaderRoundingModeRTZFloat32,
91640                        shaderRoundingModeRTZFloat64,
91641                        maxUpdateAfterBindDescriptorsInAllPools,
91642                        shaderUniformBufferArrayNonUniformIndexingNative,
91643                        shaderSampledImageArrayNonUniformIndexingNative,
91644                        shaderStorageBufferArrayNonUniformIndexingNative,
91645                        shaderStorageImageArrayNonUniformIndexingNative,
91646                        shaderInputAttachmentArrayNonUniformIndexingNative,
91647                        robustBufferAccessUpdateAfterBind,
91648                        quadDivergentImplicitLod,
91649                        maxPerStageDescriptorUpdateAfterBindSamplers,
91650                        maxPerStageDescriptorUpdateAfterBindUniformBuffers,
91651                        maxPerStageDescriptorUpdateAfterBindStorageBuffers,
91652                        maxPerStageDescriptorUpdateAfterBindSampledImages,
91653                        maxPerStageDescriptorUpdateAfterBindStorageImages,
91654                        maxPerStageDescriptorUpdateAfterBindInputAttachments,
91655                        maxPerStageUpdateAfterBindResources,
91656                        maxDescriptorSetUpdateAfterBindSamplers,
91657                        maxDescriptorSetUpdateAfterBindUniformBuffers,
91658                        maxDescriptorSetUpdateAfterBindUniformBuffersDynamic,
91659                        maxDescriptorSetUpdateAfterBindStorageBuffers,
91660                        maxDescriptorSetUpdateAfterBindStorageBuffersDynamic,
91661                        maxDescriptorSetUpdateAfterBindSampledImages,
91662                        maxDescriptorSetUpdateAfterBindStorageImages,
91663                        maxDescriptorSetUpdateAfterBindInputAttachments,
91664                        supportedDepthResolveModes,
91665                        supportedStencilResolveModes,
91666                        independentResolveNone,
91667                        independentResolve,
91668                        filterMinmaxSingleComponentFormats,
91669                        filterMinmaxImageComponentMapping,
91670                        maxTimelineSemaphoreValueDifference,
91671                        framebufferIntegerColorSampleCounts );
91672     }
91673 #endif
91674 
91675 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties91676     std::strong_ordering operator<=>( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
91677     {
91678       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
91679         return cmp;
91680       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
91681         return cmp;
91682       if ( auto cmp = driverID <=> rhs.driverID; cmp != 0 )
91683         return cmp;
91684       if ( auto cmp = strcmp( driverName, rhs.driverName ); cmp != 0 )
91685         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
91686       if ( auto cmp = strcmp( driverInfo, rhs.driverInfo ); cmp != 0 )
91687         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
91688       if ( auto cmp = conformanceVersion <=> rhs.conformanceVersion; cmp != 0 )
91689         return cmp;
91690       if ( auto cmp = denormBehaviorIndependence <=> rhs.denormBehaviorIndependence; cmp != 0 )
91691         return cmp;
91692       if ( auto cmp = roundingModeIndependence <=> rhs.roundingModeIndependence; cmp != 0 )
91693         return cmp;
91694       if ( auto cmp = shaderSignedZeroInfNanPreserveFloat16 <=> rhs.shaderSignedZeroInfNanPreserveFloat16; cmp != 0 )
91695         return cmp;
91696       if ( auto cmp = shaderSignedZeroInfNanPreserveFloat32 <=> rhs.shaderSignedZeroInfNanPreserveFloat32; cmp != 0 )
91697         return cmp;
91698       if ( auto cmp = shaderSignedZeroInfNanPreserveFloat64 <=> rhs.shaderSignedZeroInfNanPreserveFloat64; cmp != 0 )
91699         return cmp;
91700       if ( auto cmp = shaderDenormPreserveFloat16 <=> rhs.shaderDenormPreserveFloat16; cmp != 0 )
91701         return cmp;
91702       if ( auto cmp = shaderDenormPreserveFloat32 <=> rhs.shaderDenormPreserveFloat32; cmp != 0 )
91703         return cmp;
91704       if ( auto cmp = shaderDenormPreserveFloat64 <=> rhs.shaderDenormPreserveFloat64; cmp != 0 )
91705         return cmp;
91706       if ( auto cmp = shaderDenormFlushToZeroFloat16 <=> rhs.shaderDenormFlushToZeroFloat16; cmp != 0 )
91707         return cmp;
91708       if ( auto cmp = shaderDenormFlushToZeroFloat32 <=> rhs.shaderDenormFlushToZeroFloat32; cmp != 0 )
91709         return cmp;
91710       if ( auto cmp = shaderDenormFlushToZeroFloat64 <=> rhs.shaderDenormFlushToZeroFloat64; cmp != 0 )
91711         return cmp;
91712       if ( auto cmp = shaderRoundingModeRTEFloat16 <=> rhs.shaderRoundingModeRTEFloat16; cmp != 0 )
91713         return cmp;
91714       if ( auto cmp = shaderRoundingModeRTEFloat32 <=> rhs.shaderRoundingModeRTEFloat32; cmp != 0 )
91715         return cmp;
91716       if ( auto cmp = shaderRoundingModeRTEFloat64 <=> rhs.shaderRoundingModeRTEFloat64; cmp != 0 )
91717         return cmp;
91718       if ( auto cmp = shaderRoundingModeRTZFloat16 <=> rhs.shaderRoundingModeRTZFloat16; cmp != 0 )
91719         return cmp;
91720       if ( auto cmp = shaderRoundingModeRTZFloat32 <=> rhs.shaderRoundingModeRTZFloat32; cmp != 0 )
91721         return cmp;
91722       if ( auto cmp = shaderRoundingModeRTZFloat64 <=> rhs.shaderRoundingModeRTZFloat64; cmp != 0 )
91723         return cmp;
91724       if ( auto cmp = maxUpdateAfterBindDescriptorsInAllPools <=> rhs.maxUpdateAfterBindDescriptorsInAllPools; cmp != 0 )
91725         return cmp;
91726       if ( auto cmp = shaderUniformBufferArrayNonUniformIndexingNative <=> rhs.shaderUniformBufferArrayNonUniformIndexingNative; cmp != 0 )
91727         return cmp;
91728       if ( auto cmp = shaderSampledImageArrayNonUniformIndexingNative <=> rhs.shaderSampledImageArrayNonUniformIndexingNative; cmp != 0 )
91729         return cmp;
91730       if ( auto cmp = shaderStorageBufferArrayNonUniformIndexingNative <=> rhs.shaderStorageBufferArrayNonUniformIndexingNative; cmp != 0 )
91731         return cmp;
91732       if ( auto cmp = shaderStorageImageArrayNonUniformIndexingNative <=> rhs.shaderStorageImageArrayNonUniformIndexingNative; cmp != 0 )
91733         return cmp;
91734       if ( auto cmp = shaderInputAttachmentArrayNonUniformIndexingNative <=> rhs.shaderInputAttachmentArrayNonUniformIndexingNative; cmp != 0 )
91735         return cmp;
91736       if ( auto cmp = robustBufferAccessUpdateAfterBind <=> rhs.robustBufferAccessUpdateAfterBind; cmp != 0 )
91737         return cmp;
91738       if ( auto cmp = quadDivergentImplicitLod <=> rhs.quadDivergentImplicitLod; cmp != 0 )
91739         return cmp;
91740       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindSamplers <=> rhs.maxPerStageDescriptorUpdateAfterBindSamplers; cmp != 0 )
91741         return cmp;
91742       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindUniformBuffers <=> rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers; cmp != 0 )
91743         return cmp;
91744       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindStorageBuffers <=> rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers; cmp != 0 )
91745         return cmp;
91746       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindSampledImages <=> rhs.maxPerStageDescriptorUpdateAfterBindSampledImages; cmp != 0 )
91747         return cmp;
91748       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindStorageImages <=> rhs.maxPerStageDescriptorUpdateAfterBindStorageImages; cmp != 0 )
91749         return cmp;
91750       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindInputAttachments <=> rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments; cmp != 0 )
91751         return cmp;
91752       if ( auto cmp = maxPerStageUpdateAfterBindResources <=> rhs.maxPerStageUpdateAfterBindResources; cmp != 0 )
91753         return cmp;
91754       if ( auto cmp = maxDescriptorSetUpdateAfterBindSamplers <=> rhs.maxDescriptorSetUpdateAfterBindSamplers; cmp != 0 )
91755         return cmp;
91756       if ( auto cmp = maxDescriptorSetUpdateAfterBindUniformBuffers <=> rhs.maxDescriptorSetUpdateAfterBindUniformBuffers; cmp != 0 )
91757         return cmp;
91758       if ( auto cmp = maxDescriptorSetUpdateAfterBindUniformBuffersDynamic <=> rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; cmp != 0 )
91759         return cmp;
91760       if ( auto cmp = maxDescriptorSetUpdateAfterBindStorageBuffers <=> rhs.maxDescriptorSetUpdateAfterBindStorageBuffers; cmp != 0 )
91761         return cmp;
91762       if ( auto cmp = maxDescriptorSetUpdateAfterBindStorageBuffersDynamic <=> rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; cmp != 0 )
91763         return cmp;
91764       if ( auto cmp = maxDescriptorSetUpdateAfterBindSampledImages <=> rhs.maxDescriptorSetUpdateAfterBindSampledImages; cmp != 0 )
91765         return cmp;
91766       if ( auto cmp = maxDescriptorSetUpdateAfterBindStorageImages <=> rhs.maxDescriptorSetUpdateAfterBindStorageImages; cmp != 0 )
91767         return cmp;
91768       if ( auto cmp = maxDescriptorSetUpdateAfterBindInputAttachments <=> rhs.maxDescriptorSetUpdateAfterBindInputAttachments; cmp != 0 )
91769         return cmp;
91770       if ( auto cmp = supportedDepthResolveModes <=> rhs.supportedDepthResolveModes; cmp != 0 )
91771         return cmp;
91772       if ( auto cmp = supportedStencilResolveModes <=> rhs.supportedStencilResolveModes; cmp != 0 )
91773         return cmp;
91774       if ( auto cmp = independentResolveNone <=> rhs.independentResolveNone; cmp != 0 )
91775         return cmp;
91776       if ( auto cmp = independentResolve <=> rhs.independentResolve; cmp != 0 )
91777         return cmp;
91778       if ( auto cmp = filterMinmaxSingleComponentFormats <=> rhs.filterMinmaxSingleComponentFormats; cmp != 0 )
91779         return cmp;
91780       if ( auto cmp = filterMinmaxImageComponentMapping <=> rhs.filterMinmaxImageComponentMapping; cmp != 0 )
91781         return cmp;
91782       if ( auto cmp = maxTimelineSemaphoreValueDifference <=> rhs.maxTimelineSemaphoreValueDifference; cmp != 0 )
91783         return cmp;
91784       if ( auto cmp = framebufferIntegerColorSampleCounts <=> rhs.framebufferIntegerColorSampleCounts; cmp != 0 )
91785         return cmp;
91786 
91787       return std::strong_ordering::equivalent;
91788     }
91789 #endif
91790 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties91791     bool operator==( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
91792     {
91793       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( driverID == rhs.driverID ) && ( strcmp( driverName, rhs.driverName ) == 0 ) &&
91794              ( strcmp( driverInfo, rhs.driverInfo ) == 0 ) && ( conformanceVersion == rhs.conformanceVersion ) &&
91795              ( denormBehaviorIndependence == rhs.denormBehaviorIndependence ) && ( roundingModeIndependence == rhs.roundingModeIndependence ) &&
91796              ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 ) &&
91797              ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 ) &&
91798              ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 ) &&
91799              ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 ) && ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 ) &&
91800              ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 ) && ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 ) &&
91801              ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 ) &&
91802              ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 ) && ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 ) &&
91803              ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 ) && ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 ) &&
91804              ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 ) && ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 ) &&
91805              ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 ) &&
91806              ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools ) &&
91807              ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative ) &&
91808              ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative ) &&
91809              ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative ) &&
91810              ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative ) &&
91811              ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative ) &&
91812              ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind ) && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod ) &&
91813              ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers ) &&
91814              ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers ) &&
91815              ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers ) &&
91816              ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages ) &&
91817              ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages ) &&
91818              ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments ) &&
91819              ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources ) &&
91820              ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers ) &&
91821              ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers ) &&
91822              ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ) &&
91823              ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers ) &&
91824              ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ) &&
91825              ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages ) &&
91826              ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages ) &&
91827              ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments ) &&
91828              ( supportedDepthResolveModes == rhs.supportedDepthResolveModes ) && ( supportedStencilResolveModes == rhs.supportedStencilResolveModes ) &&
91829              ( independentResolveNone == rhs.independentResolveNone ) && ( independentResolve == rhs.independentResolve ) &&
91830              ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats ) &&
91831              ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping ) &&
91832              ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference ) &&
91833              ( framebufferIntegerColorSampleCounts == rhs.framebufferIntegerColorSampleCounts );
91834     }
91835 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties91836     bool operator!=( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
91837     {
91838       return !operator==( rhs );
91839     }
91840 
91841   public:
91842     VULKAN_HPP_NAMESPACE::StructureType                                 sType              = StructureType::ePhysicalDeviceVulkan12Properties;
91843     void *                                                              pNext              = {};
91844     VULKAN_HPP_NAMESPACE::DriverId                                      driverID           = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary;
91845     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> driverName         = {};
91846     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> driverInfo         = {};
91847     VULKAN_HPP_NAMESPACE::ConformanceVersion                            conformanceVersion = {};
91848     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence       = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
91849     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence         = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
91850     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat16                = {};
91851     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat32                = {};
91852     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat64                = {};
91853     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat16                          = {};
91854     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat32                          = {};
91855     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat64                          = {};
91856     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat16                       = {};
91857     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat32                       = {};
91858     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat64                       = {};
91859     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat16                         = {};
91860     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat32                         = {};
91861     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat64                         = {};
91862     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat16                         = {};
91863     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat32                         = {};
91864     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat64                         = {};
91865     uint32_t                                              maxUpdateAfterBindDescriptorsInAllPools              = {};
91866     VULKAN_HPP_NAMESPACE::Bool32                          shaderUniformBufferArrayNonUniformIndexingNative     = {};
91867     VULKAN_HPP_NAMESPACE::Bool32                          shaderSampledImageArrayNonUniformIndexingNative      = {};
91868     VULKAN_HPP_NAMESPACE::Bool32                          shaderStorageBufferArrayNonUniformIndexingNative     = {};
91869     VULKAN_HPP_NAMESPACE::Bool32                          shaderStorageImageArrayNonUniformIndexingNative      = {};
91870     VULKAN_HPP_NAMESPACE::Bool32                          shaderInputAttachmentArrayNonUniformIndexingNative   = {};
91871     VULKAN_HPP_NAMESPACE::Bool32                          robustBufferAccessUpdateAfterBind                    = {};
91872     VULKAN_HPP_NAMESPACE::Bool32                          quadDivergentImplicitLod                             = {};
91873     uint32_t                                              maxPerStageDescriptorUpdateAfterBindSamplers         = {};
91874     uint32_t                                              maxPerStageDescriptorUpdateAfterBindUniformBuffers   = {};
91875     uint32_t                                              maxPerStageDescriptorUpdateAfterBindStorageBuffers   = {};
91876     uint32_t                                              maxPerStageDescriptorUpdateAfterBindSampledImages    = {};
91877     uint32_t                                              maxPerStageDescriptorUpdateAfterBindStorageImages    = {};
91878     uint32_t                                              maxPerStageDescriptorUpdateAfterBindInputAttachments = {};
91879     uint32_t                                              maxPerStageUpdateAfterBindResources                  = {};
91880     uint32_t                                              maxDescriptorSetUpdateAfterBindSamplers              = {};
91881     uint32_t                                              maxDescriptorSetUpdateAfterBindUniformBuffers        = {};
91882     uint32_t                                              maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {};
91883     uint32_t                                              maxDescriptorSetUpdateAfterBindStorageBuffers        = {};
91884     uint32_t                                              maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {};
91885     uint32_t                                              maxDescriptorSetUpdateAfterBindSampledImages         = {};
91886     uint32_t                                              maxDescriptorSetUpdateAfterBindStorageImages         = {};
91887     uint32_t                                              maxDescriptorSetUpdateAfterBindInputAttachments      = {};
91888     VULKAN_HPP_NAMESPACE::ResolveModeFlags                supportedDepthResolveModes                           = {};
91889     VULKAN_HPP_NAMESPACE::ResolveModeFlags                supportedStencilResolveModes                         = {};
91890     VULKAN_HPP_NAMESPACE::Bool32                          independentResolveNone                               = {};
91891     VULKAN_HPP_NAMESPACE::Bool32                          independentResolve                                   = {};
91892     VULKAN_HPP_NAMESPACE::Bool32                          filterMinmaxSingleComponentFormats                   = {};
91893     VULKAN_HPP_NAMESPACE::Bool32                          filterMinmaxImageComponentMapping                    = {};
91894     uint64_t                                              maxTimelineSemaphoreValueDifference                  = {};
91895     VULKAN_HPP_NAMESPACE::SampleCountFlags                framebufferIntegerColorSampleCounts                  = {};
91896   };
91897 
91898   template <>
91899   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan12Properties>
91900   {
91901     using Type = PhysicalDeviceVulkan12Properties;
91902   };
91903 
91904   struct PhysicalDeviceVulkan13Features
91905   {
91906     using NativeType = VkPhysicalDeviceVulkan13Features;
91907 
91908     static const bool                                  allowDuplicate = false;
91909     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan13Features;
91910 
91911 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan13FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features91912     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Features( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_                                  = {},
91913                                                          VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_                                 = {},
91914                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {},
91915                                                          VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_                       = {},
91916                                                          VULKAN_HPP_NAMESPACE::Bool32 privateData_                                        = {},
91917                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_                     = {},
91918                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_                          = {},
91919                                                          VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_                                = {},
91920                                                          VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_                               = {},
91921                                                          VULKAN_HPP_NAMESPACE::Bool32 synchronization2_                                   = {},
91922                                                          VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_                         = {},
91923                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_                = {},
91924                                                          VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_                                   = {},
91925                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_                            = {},
91926                                                          VULKAN_HPP_NAMESPACE::Bool32 maintenance4_                                       = {},
91927                                                          void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
91928       : pNext{ pNext_ }
91929       , robustImageAccess{ robustImageAccess_ }
91930       , inlineUniformBlock{ inlineUniformBlock_ }
91931       , descriptorBindingInlineUniformBlockUpdateAfterBind{ descriptorBindingInlineUniformBlockUpdateAfterBind_ }
91932       , pipelineCreationCacheControl{ pipelineCreationCacheControl_ }
91933       , privateData{ privateData_ }
91934       , shaderDemoteToHelperInvocation{ shaderDemoteToHelperInvocation_ }
91935       , shaderTerminateInvocation{ shaderTerminateInvocation_ }
91936       , subgroupSizeControl{ subgroupSizeControl_ }
91937       , computeFullSubgroups{ computeFullSubgroups_ }
91938       , synchronization2{ synchronization2_ }
91939       , textureCompressionASTC_HDR{ textureCompressionASTC_HDR_ }
91940       , shaderZeroInitializeWorkgroupMemory{ shaderZeroInitializeWorkgroupMemory_ }
91941       , dynamicRendering{ dynamicRendering_ }
91942       , shaderIntegerDotProduct{ shaderIntegerDotProduct_ }
91943       , maintenance4{ maintenance4_ }
91944     {
91945     }
91946 
91947     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Features( PhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91948 
PhysicalDeviceVulkan13FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features91949     PhysicalDeviceVulkan13Features( VkPhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT
91950       : PhysicalDeviceVulkan13Features( *reinterpret_cast<PhysicalDeviceVulkan13Features const *>( &rhs ) )
91951     {
91952     }
91953 
91954     PhysicalDeviceVulkan13Features & operator=( PhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91955 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91956 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features91957     PhysicalDeviceVulkan13Features & operator=( VkPhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT
91958     {
91959       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features const *>( &rhs );
91960       return *this;
91961     }
91962 
91963 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features91964     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
91965     {
91966       pNext = pNext_;
91967       return *this;
91968     }
91969 
setRobustImageAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features91970     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setRobustImageAccess( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ ) VULKAN_HPP_NOEXCEPT
91971     {
91972       robustImageAccess = robustImageAccess_;
91973       return *this;
91974     }
91975 
setInlineUniformBlockVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features91976     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setInlineUniformBlock( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ ) VULKAN_HPP_NOEXCEPT
91977     {
91978       inlineUniformBlock = inlineUniformBlock_;
91979       return *this;
91980     }
91981 
setDescriptorBindingInlineUniformBlockUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features91982     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setDescriptorBindingInlineUniformBlockUpdateAfterBind(
91983       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
91984     {
91985       descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_;
91986       return *this;
91987     }
91988 
91989     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setPipelineCreationCacheControlVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features91990       setPipelineCreationCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ ) VULKAN_HPP_NOEXCEPT
91991     {
91992       pipelineCreationCacheControl = pipelineCreationCacheControl_;
91993       return *this;
91994     }
91995 
setPrivateDataVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features91996     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPrivateData( VULKAN_HPP_NAMESPACE::Bool32 privateData_ ) VULKAN_HPP_NOEXCEPT
91997     {
91998       privateData = privateData_;
91999       return *this;
92000     }
92001 
92002     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setShaderDemoteToHelperInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92003       setShaderDemoteToHelperInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ ) VULKAN_HPP_NOEXCEPT
92004     {
92005       shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_;
92006       return *this;
92007     }
92008 
92009     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setShaderTerminateInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92010       setShaderTerminateInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ ) VULKAN_HPP_NOEXCEPT
92011     {
92012       shaderTerminateInvocation = shaderTerminateInvocation_;
92013       return *this;
92014     }
92015 
setSubgroupSizeControlVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92016     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setSubgroupSizeControl( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ ) VULKAN_HPP_NOEXCEPT
92017     {
92018       subgroupSizeControl = subgroupSizeControl_;
92019       return *this;
92020     }
92021 
setComputeFullSubgroupsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92022     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setComputeFullSubgroups( VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ ) VULKAN_HPP_NOEXCEPT
92023     {
92024       computeFullSubgroups = computeFullSubgroups_;
92025       return *this;
92026     }
92027 
setSynchronization2VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92028     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setSynchronization2( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ ) VULKAN_HPP_NOEXCEPT
92029     {
92030       synchronization2 = synchronization2_;
92031       return *this;
92032     }
92033 
92034     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setTextureCompressionASTC_HDRVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92035       setTextureCompressionASTC_HDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ ) VULKAN_HPP_NOEXCEPT
92036     {
92037       textureCompressionASTC_HDR = textureCompressionASTC_HDR_;
92038       return *this;
92039     }
92040 
92041     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setShaderZeroInitializeWorkgroupMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92042       setShaderZeroInitializeWorkgroupMemory( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ ) VULKAN_HPP_NOEXCEPT
92043     {
92044       shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_;
92045       return *this;
92046     }
92047 
setDynamicRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92048     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setDynamicRendering( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ ) VULKAN_HPP_NOEXCEPT
92049     {
92050       dynamicRendering = dynamicRendering_;
92051       return *this;
92052     }
92053 
92054     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setShaderIntegerDotProductVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92055       setShaderIntegerDotProduct( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ ) VULKAN_HPP_NOEXCEPT
92056     {
92057       shaderIntegerDotProduct = shaderIntegerDotProduct_;
92058       return *this;
92059     }
92060 
setMaintenance4VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92061     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setMaintenance4( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ ) VULKAN_HPP_NOEXCEPT
92062     {
92063       maintenance4 = maintenance4_;
92064       return *this;
92065     }
92066 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92067 
operator VkPhysicalDeviceVulkan13Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92068     operator VkPhysicalDeviceVulkan13Features const &() const VULKAN_HPP_NOEXCEPT
92069     {
92070       return *reinterpret_cast<const VkPhysicalDeviceVulkan13Features *>( this );
92071     }
92072 
operator VkPhysicalDeviceVulkan13Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92073     operator VkPhysicalDeviceVulkan13Features &() VULKAN_HPP_NOEXCEPT
92074     {
92075       return *reinterpret_cast<VkPhysicalDeviceVulkan13Features *>( this );
92076     }
92077 
92078 #if defined( VULKAN_HPP_USE_REFLECT )
92079 #  if 14 <= VULKAN_HPP_CPP_VERSION
92080     auto
92081 #  else
92082     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92083                void * const &,
92084                VULKAN_HPP_NAMESPACE::Bool32 const &,
92085                VULKAN_HPP_NAMESPACE::Bool32 const &,
92086                VULKAN_HPP_NAMESPACE::Bool32 const &,
92087                VULKAN_HPP_NAMESPACE::Bool32 const &,
92088                VULKAN_HPP_NAMESPACE::Bool32 const &,
92089                VULKAN_HPP_NAMESPACE::Bool32 const &,
92090                VULKAN_HPP_NAMESPACE::Bool32 const &,
92091                VULKAN_HPP_NAMESPACE::Bool32 const &,
92092                VULKAN_HPP_NAMESPACE::Bool32 const &,
92093                VULKAN_HPP_NAMESPACE::Bool32 const &,
92094                VULKAN_HPP_NAMESPACE::Bool32 const &,
92095                VULKAN_HPP_NAMESPACE::Bool32 const &,
92096                VULKAN_HPP_NAMESPACE::Bool32 const &,
92097                VULKAN_HPP_NAMESPACE::Bool32 const &,
92098                VULKAN_HPP_NAMESPACE::Bool32 const &>
92099 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92100       reflect() const VULKAN_HPP_NOEXCEPT
92101     {
92102       return std::tie( sType,
92103                        pNext,
92104                        robustImageAccess,
92105                        inlineUniformBlock,
92106                        descriptorBindingInlineUniformBlockUpdateAfterBind,
92107                        pipelineCreationCacheControl,
92108                        privateData,
92109                        shaderDemoteToHelperInvocation,
92110                        shaderTerminateInvocation,
92111                        subgroupSizeControl,
92112                        computeFullSubgroups,
92113                        synchronization2,
92114                        textureCompressionASTC_HDR,
92115                        shaderZeroInitializeWorkgroupMemory,
92116                        dynamicRendering,
92117                        shaderIntegerDotProduct,
92118                        maintenance4 );
92119     }
92120 #endif
92121 
92122 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92123     auto operator<=>( PhysicalDeviceVulkan13Features const & ) const = default;
92124 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92125     bool operator==( PhysicalDeviceVulkan13Features const & rhs ) const VULKAN_HPP_NOEXCEPT
92126     {
92127 #  if defined( VULKAN_HPP_USE_REFLECT )
92128       return this->reflect() == rhs.reflect();
92129 #  else
92130       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustImageAccess == rhs.robustImageAccess ) &&
92131              ( inlineUniformBlock == rhs.inlineUniformBlock ) &&
92132              ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind ) &&
92133              ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl ) && ( privateData == rhs.privateData ) &&
92134              ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation ) && ( shaderTerminateInvocation == rhs.shaderTerminateInvocation ) &&
92135              ( subgroupSizeControl == rhs.subgroupSizeControl ) && ( computeFullSubgroups == rhs.computeFullSubgroups ) &&
92136              ( synchronization2 == rhs.synchronization2 ) && ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR ) &&
92137              ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory ) && ( dynamicRendering == rhs.dynamicRendering ) &&
92138              ( shaderIntegerDotProduct == rhs.shaderIntegerDotProduct ) && ( maintenance4 == rhs.maintenance4 );
92139 #  endif
92140     }
92141 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features92142     bool operator!=( PhysicalDeviceVulkan13Features const & rhs ) const VULKAN_HPP_NOEXCEPT
92143     {
92144       return !operator==( rhs );
92145     }
92146 #endif
92147 
92148   public:
92149     VULKAN_HPP_NAMESPACE::StructureType sType                                              = StructureType::ePhysicalDeviceVulkan13Features;
92150     void *                              pNext                                              = {};
92151     VULKAN_HPP_NAMESPACE::Bool32        robustImageAccess                                  = {};
92152     VULKAN_HPP_NAMESPACE::Bool32        inlineUniformBlock                                 = {};
92153     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingInlineUniformBlockUpdateAfterBind = {};
92154     VULKAN_HPP_NAMESPACE::Bool32        pipelineCreationCacheControl                       = {};
92155     VULKAN_HPP_NAMESPACE::Bool32        privateData                                        = {};
92156     VULKAN_HPP_NAMESPACE::Bool32        shaderDemoteToHelperInvocation                     = {};
92157     VULKAN_HPP_NAMESPACE::Bool32        shaderTerminateInvocation                          = {};
92158     VULKAN_HPP_NAMESPACE::Bool32        subgroupSizeControl                                = {};
92159     VULKAN_HPP_NAMESPACE::Bool32        computeFullSubgroups                               = {};
92160     VULKAN_HPP_NAMESPACE::Bool32        synchronization2                                   = {};
92161     VULKAN_HPP_NAMESPACE::Bool32        textureCompressionASTC_HDR                         = {};
92162     VULKAN_HPP_NAMESPACE::Bool32        shaderZeroInitializeWorkgroupMemory                = {};
92163     VULKAN_HPP_NAMESPACE::Bool32        dynamicRendering                                   = {};
92164     VULKAN_HPP_NAMESPACE::Bool32        shaderIntegerDotProduct                            = {};
92165     VULKAN_HPP_NAMESPACE::Bool32        maintenance4                                       = {};
92166   };
92167 
92168   template <>
92169   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan13Features>
92170   {
92171     using Type = PhysicalDeviceVulkan13Features;
92172   };
92173 
92174   struct PhysicalDeviceVulkan13Properties
92175   {
92176     using NativeType = VkPhysicalDeviceVulkan13Properties;
92177 
92178     static const bool                                  allowDuplicate = false;
92179     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan13Properties;
92180 
92181 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
92182     VULKAN_HPP_CONSTEXPR
PhysicalDeviceVulkan13PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties92183       PhysicalDeviceVulkan13Properties( uint32_t                               minSubgroupSize_                                                         = {},
92184                                         uint32_t                               maxSubgroupSize_                                                         = {},
92185                                         uint32_t                               maxComputeWorkgroupSubgroups_                                            = {},
92186                                         VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages_                                              = {},
92187                                         uint32_t                               maxInlineUniformBlockSize_                                               = {},
92188                                         uint32_t                               maxPerStageDescriptorInlineUniformBlocks_                                = {},
92189                                         uint32_t                               maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_                 = {},
92190                                         uint32_t                               maxDescriptorSetInlineUniformBlocks_                                     = {},
92191                                         uint32_t                               maxDescriptorSetUpdateAfterBindInlineUniformBlocks_                      = {},
92192                                         uint32_t                               maxInlineUniformTotalSize_                                               = {},
92193                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitUnsignedAccelerated_                                = {},
92194                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitSignedAccelerated_                                  = {},
92195                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitMixedSignednessAccelerated_                         = {},
92196                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedUnsignedAccelerated_                        = {},
92197                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedSignedAccelerated_                          = {},
92198                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedMixedSignednessAccelerated_                 = {},
92199                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitUnsignedAccelerated_                               = {},
92200                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitSignedAccelerated_                                 = {},
92201                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitMixedSignednessAccelerated_                        = {},
92202                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitUnsignedAccelerated_                               = {},
92203                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitSignedAccelerated_                                 = {},
92204                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitMixedSignednessAccelerated_                        = {},
92205                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitUnsignedAccelerated_                               = {},
92206                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitSignedAccelerated_                                 = {},
92207                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitMixedSignednessAccelerated_                        = {},
92208                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_          = {},
92209                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitSignedAccelerated_            = {},
92210                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_   = {},
92211                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_  = {},
92212                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_    = {},
92213                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {},
92214                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_               = {},
92215                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating16BitSignedAccelerated_                 = {},
92216                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_        = {},
92217                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_               = {},
92218                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating32BitSignedAccelerated_                 = {},
92219                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_        = {},
92220                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_               = {},
92221                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating64BitSignedAccelerated_                 = {},
92222                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_        = {},
92223                                         VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes_                                        = {},
92224                                         VULKAN_HPP_NAMESPACE::Bool32     storageTexelBufferOffsetSingleTexelAlignment_                                  = {},
92225                                         VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes_                                        = {},
92226                                         VULKAN_HPP_NAMESPACE::Bool32     uniformTexelBufferOffsetSingleTexelAlignment_                                  = {},
92227                                         VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize_                                                                 = {},
92228                                         void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
92229       : pNext{ pNext_ }
92230       , minSubgroupSize{ minSubgroupSize_ }
92231       , maxSubgroupSize{ maxSubgroupSize_ }
92232       , maxComputeWorkgroupSubgroups{ maxComputeWorkgroupSubgroups_ }
92233       , requiredSubgroupSizeStages{ requiredSubgroupSizeStages_ }
92234       , maxInlineUniformBlockSize{ maxInlineUniformBlockSize_ }
92235       , maxPerStageDescriptorInlineUniformBlocks{ maxPerStageDescriptorInlineUniformBlocks_ }
92236       , maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks{ maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ }
92237       , maxDescriptorSetInlineUniformBlocks{ maxDescriptorSetInlineUniformBlocks_ }
92238       , maxDescriptorSetUpdateAfterBindInlineUniformBlocks{ maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ }
92239       , maxInlineUniformTotalSize{ maxInlineUniformTotalSize_ }
92240       , integerDotProduct8BitUnsignedAccelerated{ integerDotProduct8BitUnsignedAccelerated_ }
92241       , integerDotProduct8BitSignedAccelerated{ integerDotProduct8BitSignedAccelerated_ }
92242       , integerDotProduct8BitMixedSignednessAccelerated{ integerDotProduct8BitMixedSignednessAccelerated_ }
92243       , integerDotProduct4x8BitPackedUnsignedAccelerated{ integerDotProduct4x8BitPackedUnsignedAccelerated_ }
92244       , integerDotProduct4x8BitPackedSignedAccelerated{ integerDotProduct4x8BitPackedSignedAccelerated_ }
92245       , integerDotProduct4x8BitPackedMixedSignednessAccelerated{ integerDotProduct4x8BitPackedMixedSignednessAccelerated_ }
92246       , integerDotProduct16BitUnsignedAccelerated{ integerDotProduct16BitUnsignedAccelerated_ }
92247       , integerDotProduct16BitSignedAccelerated{ integerDotProduct16BitSignedAccelerated_ }
92248       , integerDotProduct16BitMixedSignednessAccelerated{ integerDotProduct16BitMixedSignednessAccelerated_ }
92249       , integerDotProduct32BitUnsignedAccelerated{ integerDotProduct32BitUnsignedAccelerated_ }
92250       , integerDotProduct32BitSignedAccelerated{ integerDotProduct32BitSignedAccelerated_ }
92251       , integerDotProduct32BitMixedSignednessAccelerated{ integerDotProduct32BitMixedSignednessAccelerated_ }
92252       , integerDotProduct64BitUnsignedAccelerated{ integerDotProduct64BitUnsignedAccelerated_ }
92253       , integerDotProduct64BitSignedAccelerated{ integerDotProduct64BitSignedAccelerated_ }
92254       , integerDotProduct64BitMixedSignednessAccelerated{ integerDotProduct64BitMixedSignednessAccelerated_ }
92255       , integerDotProductAccumulatingSaturating8BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ }
92256       , integerDotProductAccumulatingSaturating8BitSignedAccelerated{ integerDotProductAccumulatingSaturating8BitSignedAccelerated_ }
92257       , integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ }
92258       , integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ }
92259       , integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ }
92260       , integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ }
92261       , integerDotProductAccumulatingSaturating16BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ }
92262       , integerDotProductAccumulatingSaturating16BitSignedAccelerated{ integerDotProductAccumulatingSaturating16BitSignedAccelerated_ }
92263       , integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ }
92264       , integerDotProductAccumulatingSaturating32BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ }
92265       , integerDotProductAccumulatingSaturating32BitSignedAccelerated{ integerDotProductAccumulatingSaturating32BitSignedAccelerated_ }
92266       , integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ }
92267       , integerDotProductAccumulatingSaturating64BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ }
92268       , integerDotProductAccumulatingSaturating64BitSignedAccelerated{ integerDotProductAccumulatingSaturating64BitSignedAccelerated_ }
92269       , integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ }
92270       , storageTexelBufferOffsetAlignmentBytes{ storageTexelBufferOffsetAlignmentBytes_ }
92271       , storageTexelBufferOffsetSingleTexelAlignment{ storageTexelBufferOffsetSingleTexelAlignment_ }
92272       , uniformTexelBufferOffsetAlignmentBytes{ uniformTexelBufferOffsetAlignmentBytes_ }
92273       , uniformTexelBufferOffsetSingleTexelAlignment{ uniformTexelBufferOffsetSingleTexelAlignment_ }
92274       , maxBufferSize{ maxBufferSize_ }
92275     {
92276     }
92277 
92278     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Properties( PhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92279 
PhysicalDeviceVulkan13PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties92280     PhysicalDeviceVulkan13Properties( VkPhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT
92281       : PhysicalDeviceVulkan13Properties( *reinterpret_cast<PhysicalDeviceVulkan13Properties const *>( &rhs ) )
92282     {
92283     }
92284 
92285     PhysicalDeviceVulkan13Properties & operator=( PhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92286 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92287 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties92288     PhysicalDeviceVulkan13Properties & operator=( VkPhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT
92289     {
92290       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties const *>( &rhs );
92291       return *this;
92292     }
92293 
operator VkPhysicalDeviceVulkan13Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties92294     operator VkPhysicalDeviceVulkan13Properties const &() const VULKAN_HPP_NOEXCEPT
92295     {
92296       return *reinterpret_cast<const VkPhysicalDeviceVulkan13Properties *>( this );
92297     }
92298 
operator VkPhysicalDeviceVulkan13Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties92299     operator VkPhysicalDeviceVulkan13Properties &() VULKAN_HPP_NOEXCEPT
92300     {
92301       return *reinterpret_cast<VkPhysicalDeviceVulkan13Properties *>( this );
92302     }
92303 
92304 #if defined( VULKAN_HPP_USE_REFLECT )
92305 #  if 14 <= VULKAN_HPP_CPP_VERSION
92306     auto
92307 #  else
92308     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92309                void * const &,
92310                uint32_t const &,
92311                uint32_t const &,
92312                uint32_t const &,
92313                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
92314                uint32_t const &,
92315                uint32_t const &,
92316                uint32_t const &,
92317                uint32_t const &,
92318                uint32_t const &,
92319                uint32_t const &,
92320                VULKAN_HPP_NAMESPACE::Bool32 const &,
92321                VULKAN_HPP_NAMESPACE::Bool32 const &,
92322                VULKAN_HPP_NAMESPACE::Bool32 const &,
92323                VULKAN_HPP_NAMESPACE::Bool32 const &,
92324                VULKAN_HPP_NAMESPACE::Bool32 const &,
92325                VULKAN_HPP_NAMESPACE::Bool32 const &,
92326                VULKAN_HPP_NAMESPACE::Bool32 const &,
92327                VULKAN_HPP_NAMESPACE::Bool32 const &,
92328                VULKAN_HPP_NAMESPACE::Bool32 const &,
92329                VULKAN_HPP_NAMESPACE::Bool32 const &,
92330                VULKAN_HPP_NAMESPACE::Bool32 const &,
92331                VULKAN_HPP_NAMESPACE::Bool32 const &,
92332                VULKAN_HPP_NAMESPACE::Bool32 const &,
92333                VULKAN_HPP_NAMESPACE::Bool32 const &,
92334                VULKAN_HPP_NAMESPACE::Bool32 const &,
92335                VULKAN_HPP_NAMESPACE::Bool32 const &,
92336                VULKAN_HPP_NAMESPACE::Bool32 const &,
92337                VULKAN_HPP_NAMESPACE::Bool32 const &,
92338                VULKAN_HPP_NAMESPACE::Bool32 const &,
92339                VULKAN_HPP_NAMESPACE::Bool32 const &,
92340                VULKAN_HPP_NAMESPACE::Bool32 const &,
92341                VULKAN_HPP_NAMESPACE::Bool32 const &,
92342                VULKAN_HPP_NAMESPACE::Bool32 const &,
92343                VULKAN_HPP_NAMESPACE::Bool32 const &,
92344                VULKAN_HPP_NAMESPACE::Bool32 const &,
92345                VULKAN_HPP_NAMESPACE::Bool32 const &,
92346                VULKAN_HPP_NAMESPACE::Bool32 const &,
92347                VULKAN_HPP_NAMESPACE::Bool32 const &,
92348                VULKAN_HPP_NAMESPACE::Bool32 const &,
92349                VULKAN_HPP_NAMESPACE::Bool32 const &,
92350                VULKAN_HPP_NAMESPACE::DeviceSize const &,
92351                VULKAN_HPP_NAMESPACE::Bool32 const &,
92352                VULKAN_HPP_NAMESPACE::DeviceSize const &,
92353                VULKAN_HPP_NAMESPACE::Bool32 const &,
92354                VULKAN_HPP_NAMESPACE::DeviceSize const &>
92355 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties92356       reflect() const VULKAN_HPP_NOEXCEPT
92357     {
92358       return std::tie( sType,
92359                        pNext,
92360                        minSubgroupSize,
92361                        maxSubgroupSize,
92362                        maxComputeWorkgroupSubgroups,
92363                        requiredSubgroupSizeStages,
92364                        maxInlineUniformBlockSize,
92365                        maxPerStageDescriptorInlineUniformBlocks,
92366                        maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
92367                        maxDescriptorSetInlineUniformBlocks,
92368                        maxDescriptorSetUpdateAfterBindInlineUniformBlocks,
92369                        maxInlineUniformTotalSize,
92370                        integerDotProduct8BitUnsignedAccelerated,
92371                        integerDotProduct8BitSignedAccelerated,
92372                        integerDotProduct8BitMixedSignednessAccelerated,
92373                        integerDotProduct4x8BitPackedUnsignedAccelerated,
92374                        integerDotProduct4x8BitPackedSignedAccelerated,
92375                        integerDotProduct4x8BitPackedMixedSignednessAccelerated,
92376                        integerDotProduct16BitUnsignedAccelerated,
92377                        integerDotProduct16BitSignedAccelerated,
92378                        integerDotProduct16BitMixedSignednessAccelerated,
92379                        integerDotProduct32BitUnsignedAccelerated,
92380                        integerDotProduct32BitSignedAccelerated,
92381                        integerDotProduct32BitMixedSignednessAccelerated,
92382                        integerDotProduct64BitUnsignedAccelerated,
92383                        integerDotProduct64BitSignedAccelerated,
92384                        integerDotProduct64BitMixedSignednessAccelerated,
92385                        integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
92386                        integerDotProductAccumulatingSaturating8BitSignedAccelerated,
92387                        integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
92388                        integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
92389                        integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
92390                        integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
92391                        integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
92392                        integerDotProductAccumulatingSaturating16BitSignedAccelerated,
92393                        integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
92394                        integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
92395                        integerDotProductAccumulatingSaturating32BitSignedAccelerated,
92396                        integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
92397                        integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
92398                        integerDotProductAccumulatingSaturating64BitSignedAccelerated,
92399                        integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated,
92400                        storageTexelBufferOffsetAlignmentBytes,
92401                        storageTexelBufferOffsetSingleTexelAlignment,
92402                        uniformTexelBufferOffsetAlignmentBytes,
92403                        uniformTexelBufferOffsetSingleTexelAlignment,
92404                        maxBufferSize );
92405     }
92406 #endif
92407 
92408 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92409     auto operator<=>( PhysicalDeviceVulkan13Properties const & ) const = default;
92410 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties92411     bool operator==( PhysicalDeviceVulkan13Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
92412     {
92413 #  if defined( VULKAN_HPP_USE_REFLECT )
92414       return this->reflect() == rhs.reflect();
92415 #  else
92416       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minSubgroupSize == rhs.minSubgroupSize ) && ( maxSubgroupSize == rhs.maxSubgroupSize ) &&
92417              ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups ) && ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages ) &&
92418              ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize ) &&
92419              ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks ) &&
92420              ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ) &&
92421              ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks ) &&
92422              ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ) &&
92423              ( maxInlineUniformTotalSize == rhs.maxInlineUniformTotalSize ) &&
92424              ( integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated ) &&
92425              ( integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated ) &&
92426              ( integerDotProduct8BitMixedSignednessAccelerated == rhs.integerDotProduct8BitMixedSignednessAccelerated ) &&
92427              ( integerDotProduct4x8BitPackedUnsignedAccelerated == rhs.integerDotProduct4x8BitPackedUnsignedAccelerated ) &&
92428              ( integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated ) &&
92429              ( integerDotProduct4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated ) &&
92430              ( integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated ) &&
92431              ( integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated ) &&
92432              ( integerDotProduct16BitMixedSignednessAccelerated == rhs.integerDotProduct16BitMixedSignednessAccelerated ) &&
92433              ( integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated ) &&
92434              ( integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated ) &&
92435              ( integerDotProduct32BitMixedSignednessAccelerated == rhs.integerDotProduct32BitMixedSignednessAccelerated ) &&
92436              ( integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated ) &&
92437              ( integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated ) &&
92438              ( integerDotProduct64BitMixedSignednessAccelerated == rhs.integerDotProduct64BitMixedSignednessAccelerated ) &&
92439              ( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ) &&
92440              ( integerDotProductAccumulatingSaturating8BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated ) &&
92441              ( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ==
92442                rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ) &&
92443              ( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ==
92444                rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ) &&
92445              ( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ==
92446                rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ) &&
92447              ( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ==
92448                rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ) &&
92449              ( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ) &&
92450              ( integerDotProductAccumulatingSaturating16BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated ) &&
92451              ( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ==
92452                rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ) &&
92453              ( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ) &&
92454              ( integerDotProductAccumulatingSaturating32BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated ) &&
92455              ( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ==
92456                rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ) &&
92457              ( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ) &&
92458              ( integerDotProductAccumulatingSaturating64BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated ) &&
92459              ( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ==
92460                rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ) &&
92461              ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes ) &&
92462              ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment ) &&
92463              ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes ) &&
92464              ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment ) && ( maxBufferSize == rhs.maxBufferSize );
92465 #  endif
92466     }
92467 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties92468     bool operator!=( PhysicalDeviceVulkan13Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
92469     {
92470       return !operator==( rhs );
92471     }
92472 #endif
92473 
92474   public:
92475     VULKAN_HPP_NAMESPACE::StructureType    sType                                                          = StructureType::ePhysicalDeviceVulkan13Properties;
92476     void *                                 pNext                                                          = {};
92477     uint32_t                               minSubgroupSize                                                = {};
92478     uint32_t                               maxSubgroupSize                                                = {};
92479     uint32_t                               maxComputeWorkgroupSubgroups                                   = {};
92480     VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages                                     = {};
92481     uint32_t                               maxInlineUniformBlockSize                                      = {};
92482     uint32_t                               maxPerStageDescriptorInlineUniformBlocks                       = {};
92483     uint32_t                               maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks        = {};
92484     uint32_t                               maxDescriptorSetInlineUniformBlocks                            = {};
92485     uint32_t                               maxDescriptorSetUpdateAfterBindInlineUniformBlocks             = {};
92486     uint32_t                               maxInlineUniformTotalSize                                      = {};
92487     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitUnsignedAccelerated                       = {};
92488     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitSignedAccelerated                         = {};
92489     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitMixedSignednessAccelerated                = {};
92490     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedUnsignedAccelerated               = {};
92491     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedSignedAccelerated                 = {};
92492     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedMixedSignednessAccelerated        = {};
92493     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitUnsignedAccelerated                      = {};
92494     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitSignedAccelerated                        = {};
92495     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitMixedSignednessAccelerated               = {};
92496     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitUnsignedAccelerated                      = {};
92497     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitSignedAccelerated                        = {};
92498     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitMixedSignednessAccelerated               = {};
92499     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitUnsignedAccelerated                      = {};
92500     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitSignedAccelerated                        = {};
92501     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitMixedSignednessAccelerated               = {};
92502     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = {};
92503     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitSignedAccelerated   = {};
92504     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated         = {};
92505     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated        = {};
92506     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated          = {};
92507     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {};
92508     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating16BitUnsignedAccelerated               = {};
92509     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating16BitSignedAccelerated                 = {};
92510     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated        = {};
92511     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating32BitUnsignedAccelerated               = {};
92512     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating32BitSignedAccelerated                 = {};
92513     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated        = {};
92514     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating64BitUnsignedAccelerated               = {};
92515     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating64BitSignedAccelerated                 = {};
92516     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated        = {};
92517     VULKAN_HPP_NAMESPACE::DeviceSize       storageTexelBufferOffsetAlignmentBytes                                        = {};
92518     VULKAN_HPP_NAMESPACE::Bool32           storageTexelBufferOffsetSingleTexelAlignment                                  = {};
92519     VULKAN_HPP_NAMESPACE::DeviceSize       uniformTexelBufferOffsetAlignmentBytes                                        = {};
92520     VULKAN_HPP_NAMESPACE::Bool32           uniformTexelBufferOffsetSingleTexelAlignment                                  = {};
92521     VULKAN_HPP_NAMESPACE::DeviceSize       maxBufferSize                                                                 = {};
92522   };
92523 
92524   template <>
92525   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan13Properties>
92526   {
92527     using Type = PhysicalDeviceVulkan13Properties;
92528   };
92529 
92530   struct PhysicalDeviceVulkan14Features
92531   {
92532     using NativeType = VkPhysicalDeviceVulkan14Features;
92533 
92534     static const bool                                  allowDuplicate = false;
92535     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan14Features;
92536 
92537 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan14FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92538     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan14Features( VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery_                    = {},
92539                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotate_                   = {},
92540                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotateClustered_          = {},
92541                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderFloatControls2_                   = {},
92542                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderExpectAssume_                     = {},
92543                                                          VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_                       = {},
92544                                                          VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_                         = {},
92545                                                          VULKAN_HPP_NAMESPACE::Bool32 smoothLines_                            = {},
92546                                                          VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_               = {},
92547                                                          VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_                 = {},
92548                                                          VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_                    = {},
92549                                                          VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_     = {},
92550                                                          VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ = {},
92551                                                          VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_                         = {},
92552                                                          VULKAN_HPP_NAMESPACE::Bool32 dynamicRenderingLocalRead_              = {},
92553                                                          VULKAN_HPP_NAMESPACE::Bool32 maintenance5_                           = {},
92554                                                          VULKAN_HPP_NAMESPACE::Bool32 maintenance6_                           = {},
92555                                                          VULKAN_HPP_NAMESPACE::Bool32 pipelineProtectedAccess_                = {},
92556                                                          VULKAN_HPP_NAMESPACE::Bool32 pipelineRobustness_                     = {},
92557                                                          VULKAN_HPP_NAMESPACE::Bool32 hostImageCopy_                          = {},
92558                                                          void *                       pNext_                                  = nullptr ) VULKAN_HPP_NOEXCEPT
92559       : pNext{ pNext_ }
92560       , globalPriorityQuery{ globalPriorityQuery_ }
92561       , shaderSubgroupRotate{ shaderSubgroupRotate_ }
92562       , shaderSubgroupRotateClustered{ shaderSubgroupRotateClustered_ }
92563       , shaderFloatControls2{ shaderFloatControls2_ }
92564       , shaderExpectAssume{ shaderExpectAssume_ }
92565       , rectangularLines{ rectangularLines_ }
92566       , bresenhamLines{ bresenhamLines_ }
92567       , smoothLines{ smoothLines_ }
92568       , stippledRectangularLines{ stippledRectangularLines_ }
92569       , stippledBresenhamLines{ stippledBresenhamLines_ }
92570       , stippledSmoothLines{ stippledSmoothLines_ }
92571       , vertexAttributeInstanceRateDivisor{ vertexAttributeInstanceRateDivisor_ }
92572       , vertexAttributeInstanceRateZeroDivisor{ vertexAttributeInstanceRateZeroDivisor_ }
92573       , indexTypeUint8{ indexTypeUint8_ }
92574       , dynamicRenderingLocalRead{ dynamicRenderingLocalRead_ }
92575       , maintenance5{ maintenance5_ }
92576       , maintenance6{ maintenance6_ }
92577       , pipelineProtectedAccess{ pipelineProtectedAccess_ }
92578       , pipelineRobustness{ pipelineRobustness_ }
92579       , hostImageCopy{ hostImageCopy_ }
92580     {
92581     }
92582 
92583     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan14Features( PhysicalDeviceVulkan14Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92584 
PhysicalDeviceVulkan14FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92585     PhysicalDeviceVulkan14Features( VkPhysicalDeviceVulkan14Features const & rhs ) VULKAN_HPP_NOEXCEPT
92586       : PhysicalDeviceVulkan14Features( *reinterpret_cast<PhysicalDeviceVulkan14Features const *>( &rhs ) )
92587     {
92588     }
92589 
92590     PhysicalDeviceVulkan14Features & operator=( PhysicalDeviceVulkan14Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92591 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92592 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92593     PhysicalDeviceVulkan14Features & operator=( VkPhysicalDeviceVulkan14Features const & rhs ) VULKAN_HPP_NOEXCEPT
92594     {
92595       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features const *>( &rhs );
92596       return *this;
92597     }
92598 
92599 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92600     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
92601     {
92602       pNext = pNext_;
92603       return *this;
92604     }
92605 
setGlobalPriorityQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92606     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setGlobalPriorityQuery( VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery_ ) VULKAN_HPP_NOEXCEPT
92607     {
92608       globalPriorityQuery = globalPriorityQuery_;
92609       return *this;
92610     }
92611 
setShaderSubgroupRotateVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92612     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setShaderSubgroupRotate( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotate_ ) VULKAN_HPP_NOEXCEPT
92613     {
92614       shaderSubgroupRotate = shaderSubgroupRotate_;
92615       return *this;
92616     }
92617 
92618     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features &
setShaderSubgroupRotateClusteredVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92619       setShaderSubgroupRotateClustered( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotateClustered_ ) VULKAN_HPP_NOEXCEPT
92620     {
92621       shaderSubgroupRotateClustered = shaderSubgroupRotateClustered_;
92622       return *this;
92623     }
92624 
setShaderFloatControls2VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92625     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setShaderFloatControls2( VULKAN_HPP_NAMESPACE::Bool32 shaderFloatControls2_ ) VULKAN_HPP_NOEXCEPT
92626     {
92627       shaderFloatControls2 = shaderFloatControls2_;
92628       return *this;
92629     }
92630 
setShaderExpectAssumeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92631     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setShaderExpectAssume( VULKAN_HPP_NAMESPACE::Bool32 shaderExpectAssume_ ) VULKAN_HPP_NOEXCEPT
92632     {
92633       shaderExpectAssume = shaderExpectAssume_;
92634       return *this;
92635     }
92636 
setRectangularLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92637     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_ ) VULKAN_HPP_NOEXCEPT
92638     {
92639       rectangularLines = rectangularLines_;
92640       return *this;
92641     }
92642 
setBresenhamLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92643     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_ ) VULKAN_HPP_NOEXCEPT
92644     {
92645       bresenhamLines = bresenhamLines_;
92646       return *this;
92647     }
92648 
setSmoothLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92649     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 smoothLines_ ) VULKAN_HPP_NOEXCEPT
92650     {
92651       smoothLines = smoothLines_;
92652       return *this;
92653     }
92654 
92655     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features &
setStippledRectangularLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92656       setStippledRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ ) VULKAN_HPP_NOEXCEPT
92657     {
92658       stippledRectangularLines = stippledRectangularLines_;
92659       return *this;
92660     }
92661 
92662     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features &
setStippledBresenhamLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92663       setStippledBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_ ) VULKAN_HPP_NOEXCEPT
92664     {
92665       stippledBresenhamLines = stippledBresenhamLines_;
92666       return *this;
92667     }
92668 
setStippledSmoothLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92669     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setStippledSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_ ) VULKAN_HPP_NOEXCEPT
92670     {
92671       stippledSmoothLines = stippledSmoothLines_;
92672       return *this;
92673     }
92674 
92675     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features &
setVertexAttributeInstanceRateDivisorVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92676       setVertexAttributeInstanceRateDivisor( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_ ) VULKAN_HPP_NOEXCEPT
92677     {
92678       vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_;
92679       return *this;
92680     }
92681 
92682     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features &
setVertexAttributeInstanceRateZeroDivisorVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92683       setVertexAttributeInstanceRateZeroDivisor( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ ) VULKAN_HPP_NOEXCEPT
92684     {
92685       vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_;
92686       return *this;
92687     }
92688 
setIndexTypeUint8VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92689     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setIndexTypeUint8( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ ) VULKAN_HPP_NOEXCEPT
92690     {
92691       indexTypeUint8 = indexTypeUint8_;
92692       return *this;
92693     }
92694 
92695     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features &
setDynamicRenderingLocalReadVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92696       setDynamicRenderingLocalRead( VULKAN_HPP_NAMESPACE::Bool32 dynamicRenderingLocalRead_ ) VULKAN_HPP_NOEXCEPT
92697     {
92698       dynamicRenderingLocalRead = dynamicRenderingLocalRead_;
92699       return *this;
92700     }
92701 
setMaintenance5VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92702     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setMaintenance5( VULKAN_HPP_NAMESPACE::Bool32 maintenance5_ ) VULKAN_HPP_NOEXCEPT
92703     {
92704       maintenance5 = maintenance5_;
92705       return *this;
92706     }
92707 
setMaintenance6VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92708     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setMaintenance6( VULKAN_HPP_NAMESPACE::Bool32 maintenance6_ ) VULKAN_HPP_NOEXCEPT
92709     {
92710       maintenance6 = maintenance6_;
92711       return *this;
92712     }
92713 
92714     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features &
setPipelineProtectedAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92715       setPipelineProtectedAccess( VULKAN_HPP_NAMESPACE::Bool32 pipelineProtectedAccess_ ) VULKAN_HPP_NOEXCEPT
92716     {
92717       pipelineProtectedAccess = pipelineProtectedAccess_;
92718       return *this;
92719     }
92720 
setPipelineRobustnessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92721     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setPipelineRobustness( VULKAN_HPP_NAMESPACE::Bool32 pipelineRobustness_ ) VULKAN_HPP_NOEXCEPT
92722     {
92723       pipelineRobustness = pipelineRobustness_;
92724       return *this;
92725     }
92726 
setHostImageCopyVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92727     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setHostImageCopy( VULKAN_HPP_NAMESPACE::Bool32 hostImageCopy_ ) VULKAN_HPP_NOEXCEPT
92728     {
92729       hostImageCopy = hostImageCopy_;
92730       return *this;
92731     }
92732 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92733 
operator VkPhysicalDeviceVulkan14Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92734     operator VkPhysicalDeviceVulkan14Features const &() const VULKAN_HPP_NOEXCEPT
92735     {
92736       return *reinterpret_cast<const VkPhysicalDeviceVulkan14Features *>( this );
92737     }
92738 
operator VkPhysicalDeviceVulkan14Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92739     operator VkPhysicalDeviceVulkan14Features &() VULKAN_HPP_NOEXCEPT
92740     {
92741       return *reinterpret_cast<VkPhysicalDeviceVulkan14Features *>( this );
92742     }
92743 
92744 #if defined( VULKAN_HPP_USE_REFLECT )
92745 #  if 14 <= VULKAN_HPP_CPP_VERSION
92746     auto
92747 #  else
92748     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92749                void * const &,
92750                VULKAN_HPP_NAMESPACE::Bool32 const &,
92751                VULKAN_HPP_NAMESPACE::Bool32 const &,
92752                VULKAN_HPP_NAMESPACE::Bool32 const &,
92753                VULKAN_HPP_NAMESPACE::Bool32 const &,
92754                VULKAN_HPP_NAMESPACE::Bool32 const &,
92755                VULKAN_HPP_NAMESPACE::Bool32 const &,
92756                VULKAN_HPP_NAMESPACE::Bool32 const &,
92757                VULKAN_HPP_NAMESPACE::Bool32 const &,
92758                VULKAN_HPP_NAMESPACE::Bool32 const &,
92759                VULKAN_HPP_NAMESPACE::Bool32 const &,
92760                VULKAN_HPP_NAMESPACE::Bool32 const &,
92761                VULKAN_HPP_NAMESPACE::Bool32 const &,
92762                VULKAN_HPP_NAMESPACE::Bool32 const &,
92763                VULKAN_HPP_NAMESPACE::Bool32 const &,
92764                VULKAN_HPP_NAMESPACE::Bool32 const &,
92765                VULKAN_HPP_NAMESPACE::Bool32 const &,
92766                VULKAN_HPP_NAMESPACE::Bool32 const &,
92767                VULKAN_HPP_NAMESPACE::Bool32 const &,
92768                VULKAN_HPP_NAMESPACE::Bool32 const &,
92769                VULKAN_HPP_NAMESPACE::Bool32 const &>
92770 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92771       reflect() const VULKAN_HPP_NOEXCEPT
92772     {
92773       return std::tie( sType,
92774                        pNext,
92775                        globalPriorityQuery,
92776                        shaderSubgroupRotate,
92777                        shaderSubgroupRotateClustered,
92778                        shaderFloatControls2,
92779                        shaderExpectAssume,
92780                        rectangularLines,
92781                        bresenhamLines,
92782                        smoothLines,
92783                        stippledRectangularLines,
92784                        stippledBresenhamLines,
92785                        stippledSmoothLines,
92786                        vertexAttributeInstanceRateDivisor,
92787                        vertexAttributeInstanceRateZeroDivisor,
92788                        indexTypeUint8,
92789                        dynamicRenderingLocalRead,
92790                        maintenance5,
92791                        maintenance6,
92792                        pipelineProtectedAccess,
92793                        pipelineRobustness,
92794                        hostImageCopy );
92795     }
92796 #endif
92797 
92798 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92799     auto operator<=>( PhysicalDeviceVulkan14Features const & ) const = default;
92800 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92801     bool operator==( PhysicalDeviceVulkan14Features const & rhs ) const VULKAN_HPP_NOEXCEPT
92802     {
92803 #  if defined( VULKAN_HPP_USE_REFLECT )
92804       return this->reflect() == rhs.reflect();
92805 #  else
92806       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( globalPriorityQuery == rhs.globalPriorityQuery ) &&
92807              ( shaderSubgroupRotate == rhs.shaderSubgroupRotate ) && ( shaderSubgroupRotateClustered == rhs.shaderSubgroupRotateClustered ) &&
92808              ( shaderFloatControls2 == rhs.shaderFloatControls2 ) && ( shaderExpectAssume == rhs.shaderExpectAssume ) &&
92809              ( rectangularLines == rhs.rectangularLines ) && ( bresenhamLines == rhs.bresenhamLines ) && ( smoothLines == rhs.smoothLines ) &&
92810              ( stippledRectangularLines == rhs.stippledRectangularLines ) && ( stippledBresenhamLines == rhs.stippledBresenhamLines ) &&
92811              ( stippledSmoothLines == rhs.stippledSmoothLines ) && ( vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor ) &&
92812              ( vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor ) && ( indexTypeUint8 == rhs.indexTypeUint8 ) &&
92813              ( dynamicRenderingLocalRead == rhs.dynamicRenderingLocalRead ) && ( maintenance5 == rhs.maintenance5 ) && ( maintenance6 == rhs.maintenance6 ) &&
92814              ( pipelineProtectedAccess == rhs.pipelineProtectedAccess ) && ( pipelineRobustness == rhs.pipelineRobustness ) &&
92815              ( hostImageCopy == rhs.hostImageCopy );
92816 #  endif
92817     }
92818 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features92819     bool operator!=( PhysicalDeviceVulkan14Features const & rhs ) const VULKAN_HPP_NOEXCEPT
92820     {
92821       return !operator==( rhs );
92822     }
92823 #endif
92824 
92825   public:
92826     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceVulkan14Features;
92827     void *                              pNext                                  = {};
92828     VULKAN_HPP_NAMESPACE::Bool32        globalPriorityQuery                    = {};
92829     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupRotate                   = {};
92830     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupRotateClustered          = {};
92831     VULKAN_HPP_NAMESPACE::Bool32        shaderFloatControls2                   = {};
92832     VULKAN_HPP_NAMESPACE::Bool32        shaderExpectAssume                     = {};
92833     VULKAN_HPP_NAMESPACE::Bool32        rectangularLines                       = {};
92834     VULKAN_HPP_NAMESPACE::Bool32        bresenhamLines                         = {};
92835     VULKAN_HPP_NAMESPACE::Bool32        smoothLines                            = {};
92836     VULKAN_HPP_NAMESPACE::Bool32        stippledRectangularLines               = {};
92837     VULKAN_HPP_NAMESPACE::Bool32        stippledBresenhamLines                 = {};
92838     VULKAN_HPP_NAMESPACE::Bool32        stippledSmoothLines                    = {};
92839     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeInstanceRateDivisor     = {};
92840     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeInstanceRateZeroDivisor = {};
92841     VULKAN_HPP_NAMESPACE::Bool32        indexTypeUint8                         = {};
92842     VULKAN_HPP_NAMESPACE::Bool32        dynamicRenderingLocalRead              = {};
92843     VULKAN_HPP_NAMESPACE::Bool32        maintenance5                           = {};
92844     VULKAN_HPP_NAMESPACE::Bool32        maintenance6                           = {};
92845     VULKAN_HPP_NAMESPACE::Bool32        pipelineProtectedAccess                = {};
92846     VULKAN_HPP_NAMESPACE::Bool32        pipelineRobustness                     = {};
92847     VULKAN_HPP_NAMESPACE::Bool32        hostImageCopy                          = {};
92848   };
92849 
92850   template <>
92851   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan14Features>
92852   {
92853     using Type = PhysicalDeviceVulkan14Features;
92854   };
92855 
92856   struct PhysicalDeviceVulkan14Properties
92857   {
92858     using NativeType = VkPhysicalDeviceVulkan14Properties;
92859 
92860     static const bool                                  allowDuplicate = false;
92861     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan14Properties;
92862 
92863 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan14PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties92864     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Properties(
92865       uint32_t                                               lineSubPixelPrecisionBits_                           = {},
92866       uint32_t                                               maxVertexAttribDivisor_                              = {},
92867       VULKAN_HPP_NAMESPACE::Bool32                           supportsNonZeroFirstInstance_                        = {},
92868       uint32_t                                               maxPushDescriptors_                                  = {},
92869       VULKAN_HPP_NAMESPACE::Bool32                           dynamicRenderingLocalReadDepthStencilAttachments_    = {},
92870       VULKAN_HPP_NAMESPACE::Bool32                           dynamicRenderingLocalReadMultisampledAttachments_    = {},
92871       VULKAN_HPP_NAMESPACE::Bool32                           earlyFragmentMultisampleCoverageAfterSampleCounting_ = {},
92872       VULKAN_HPP_NAMESPACE::Bool32                           earlyFragmentSampleMaskTestBeforeSampleCounting_     = {},
92873       VULKAN_HPP_NAMESPACE::Bool32                           depthStencilSwizzleOneSupport_                       = {},
92874       VULKAN_HPP_NAMESPACE::Bool32                           polygonModePointSize_                                = {},
92875       VULKAN_HPP_NAMESPACE::Bool32                           nonStrictSinglePixelWideLinesUseParallelogram_       = {},
92876       VULKAN_HPP_NAMESPACE::Bool32                           nonStrictWideLinesUseParallelogram_                  = {},
92877       VULKAN_HPP_NAMESPACE::Bool32                           blockTexelViewCompatibleMultipleLayers_              = {},
92878       uint32_t                                               maxCombinedImageSamplerDescriptorCount_              = {},
92879       VULKAN_HPP_NAMESPACE::Bool32                           fragmentShadingRateClampCombinerInputs_              = {},
92880       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers_ =
92881         VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault,
92882       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers_ =
92883         VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault,
92884       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessVertexInputs_ =
92885         VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault,
92886       VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior defaultRobustnessImages_ = VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior::eDeviceDefault,
92887       uint32_t                                              copySrcLayoutCount_      = {},
92888       VULKAN_HPP_NAMESPACE::ImageLayout *                   pCopySrcLayouts_         = {},
92889       uint32_t                                              copyDstLayoutCount_      = {},
92890       VULKAN_HPP_NAMESPACE::ImageLayout *                   pCopyDstLayouts_         = {},
92891       std::array<uint8_t, VK_UUID_SIZE> const &             optimalTilingLayoutUUID_ = {},
92892       VULKAN_HPP_NAMESPACE::Bool32                          identicalMemoryTypeRequirements_ = {},
92893       void *                                                pNext_                           = nullptr ) VULKAN_HPP_NOEXCEPT
92894       : pNext{ pNext_ }
92895       , lineSubPixelPrecisionBits{ lineSubPixelPrecisionBits_ }
92896       , maxVertexAttribDivisor{ maxVertexAttribDivisor_ }
92897       , supportsNonZeroFirstInstance{ supportsNonZeroFirstInstance_ }
92898       , maxPushDescriptors{ maxPushDescriptors_ }
92899       , dynamicRenderingLocalReadDepthStencilAttachments{ dynamicRenderingLocalReadDepthStencilAttachments_ }
92900       , dynamicRenderingLocalReadMultisampledAttachments{ dynamicRenderingLocalReadMultisampledAttachments_ }
92901       , earlyFragmentMultisampleCoverageAfterSampleCounting{ earlyFragmentMultisampleCoverageAfterSampleCounting_ }
92902       , earlyFragmentSampleMaskTestBeforeSampleCounting{ earlyFragmentSampleMaskTestBeforeSampleCounting_ }
92903       , depthStencilSwizzleOneSupport{ depthStencilSwizzleOneSupport_ }
92904       , polygonModePointSize{ polygonModePointSize_ }
92905       , nonStrictSinglePixelWideLinesUseParallelogram{ nonStrictSinglePixelWideLinesUseParallelogram_ }
92906       , nonStrictWideLinesUseParallelogram{ nonStrictWideLinesUseParallelogram_ }
92907       , blockTexelViewCompatibleMultipleLayers{ blockTexelViewCompatibleMultipleLayers_ }
92908       , maxCombinedImageSamplerDescriptorCount{ maxCombinedImageSamplerDescriptorCount_ }
92909       , fragmentShadingRateClampCombinerInputs{ fragmentShadingRateClampCombinerInputs_ }
92910       , defaultRobustnessStorageBuffers{ defaultRobustnessStorageBuffers_ }
92911       , defaultRobustnessUniformBuffers{ defaultRobustnessUniformBuffers_ }
92912       , defaultRobustnessVertexInputs{ defaultRobustnessVertexInputs_ }
92913       , defaultRobustnessImages{ defaultRobustnessImages_ }
92914       , copySrcLayoutCount{ copySrcLayoutCount_ }
92915       , pCopySrcLayouts{ pCopySrcLayouts_ }
92916       , copyDstLayoutCount{ copyDstLayoutCount_ }
92917       , pCopyDstLayouts{ pCopyDstLayouts_ }
92918       , optimalTilingLayoutUUID{ optimalTilingLayoutUUID_ }
92919       , identicalMemoryTypeRequirements{ identicalMemoryTypeRequirements_ }
92920     {
92921     }
92922 
92923     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Properties( PhysicalDeviceVulkan14Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92924 
PhysicalDeviceVulkan14PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties92925     PhysicalDeviceVulkan14Properties( VkPhysicalDeviceVulkan14Properties const & rhs ) VULKAN_HPP_NOEXCEPT
92926       : PhysicalDeviceVulkan14Properties( *reinterpret_cast<PhysicalDeviceVulkan14Properties const *>( &rhs ) )
92927     {
92928     }
92929 
92930     PhysicalDeviceVulkan14Properties & operator=( PhysicalDeviceVulkan14Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92931 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92932 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties92933     PhysicalDeviceVulkan14Properties & operator=( VkPhysicalDeviceVulkan14Properties const & rhs ) VULKAN_HPP_NOEXCEPT
92934     {
92935       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties const *>( &rhs );
92936       return *this;
92937     }
92938 
operator VkPhysicalDeviceVulkan14Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties92939     operator VkPhysicalDeviceVulkan14Properties const &() const VULKAN_HPP_NOEXCEPT
92940     {
92941       return *reinterpret_cast<const VkPhysicalDeviceVulkan14Properties *>( this );
92942     }
92943 
operator VkPhysicalDeviceVulkan14Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties92944     operator VkPhysicalDeviceVulkan14Properties &() VULKAN_HPP_NOEXCEPT
92945     {
92946       return *reinterpret_cast<VkPhysicalDeviceVulkan14Properties *>( this );
92947     }
92948 
92949 #if defined( VULKAN_HPP_USE_REFLECT )
92950 #  if 14 <= VULKAN_HPP_CPP_VERSION
92951     auto
92952 #  else
92953     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92954                void * const &,
92955                uint32_t const &,
92956                uint32_t const &,
92957                VULKAN_HPP_NAMESPACE::Bool32 const &,
92958                uint32_t const &,
92959                VULKAN_HPP_NAMESPACE::Bool32 const &,
92960                VULKAN_HPP_NAMESPACE::Bool32 const &,
92961                VULKAN_HPP_NAMESPACE::Bool32 const &,
92962                VULKAN_HPP_NAMESPACE::Bool32 const &,
92963                VULKAN_HPP_NAMESPACE::Bool32 const &,
92964                VULKAN_HPP_NAMESPACE::Bool32 const &,
92965                VULKAN_HPP_NAMESPACE::Bool32 const &,
92966                VULKAN_HPP_NAMESPACE::Bool32 const &,
92967                VULKAN_HPP_NAMESPACE::Bool32 const &,
92968                uint32_t const &,
92969                VULKAN_HPP_NAMESPACE::Bool32 const &,
92970                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior const &,
92971                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior const &,
92972                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior const &,
92973                VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior const &,
92974                uint32_t const &,
92975                VULKAN_HPP_NAMESPACE::ImageLayout * const &,
92976                uint32_t const &,
92977                VULKAN_HPP_NAMESPACE::ImageLayout * const &,
92978                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
92979                VULKAN_HPP_NAMESPACE::Bool32 const &>
92980 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties92981       reflect() const VULKAN_HPP_NOEXCEPT
92982     {
92983       return std::tie( sType,
92984                        pNext,
92985                        lineSubPixelPrecisionBits,
92986                        maxVertexAttribDivisor,
92987                        supportsNonZeroFirstInstance,
92988                        maxPushDescriptors,
92989                        dynamicRenderingLocalReadDepthStencilAttachments,
92990                        dynamicRenderingLocalReadMultisampledAttachments,
92991                        earlyFragmentMultisampleCoverageAfterSampleCounting,
92992                        earlyFragmentSampleMaskTestBeforeSampleCounting,
92993                        depthStencilSwizzleOneSupport,
92994                        polygonModePointSize,
92995                        nonStrictSinglePixelWideLinesUseParallelogram,
92996                        nonStrictWideLinesUseParallelogram,
92997                        blockTexelViewCompatibleMultipleLayers,
92998                        maxCombinedImageSamplerDescriptorCount,
92999                        fragmentShadingRateClampCombinerInputs,
93000                        defaultRobustnessStorageBuffers,
93001                        defaultRobustnessUniformBuffers,
93002                        defaultRobustnessVertexInputs,
93003                        defaultRobustnessImages,
93004                        copySrcLayoutCount,
93005                        pCopySrcLayouts,
93006                        copyDstLayoutCount,
93007                        pCopyDstLayouts,
93008                        optimalTilingLayoutUUID,
93009                        identicalMemoryTypeRequirements );
93010     }
93011 #endif
93012 
93013 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93014     auto operator<=>( PhysicalDeviceVulkan14Properties const & ) const = default;
93015 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties93016     bool operator==( PhysicalDeviceVulkan14Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
93017     {
93018 #  if defined( VULKAN_HPP_USE_REFLECT )
93019       return this->reflect() == rhs.reflect();
93020 #  else
93021       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lineSubPixelPrecisionBits == rhs.lineSubPixelPrecisionBits ) &&
93022              ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor ) && ( supportsNonZeroFirstInstance == rhs.supportsNonZeroFirstInstance ) &&
93023              ( maxPushDescriptors == rhs.maxPushDescriptors ) &&
93024              ( dynamicRenderingLocalReadDepthStencilAttachments == rhs.dynamicRenderingLocalReadDepthStencilAttachments ) &&
93025              ( dynamicRenderingLocalReadMultisampledAttachments == rhs.dynamicRenderingLocalReadMultisampledAttachments ) &&
93026              ( earlyFragmentMultisampleCoverageAfterSampleCounting == rhs.earlyFragmentMultisampleCoverageAfterSampleCounting ) &&
93027              ( earlyFragmentSampleMaskTestBeforeSampleCounting == rhs.earlyFragmentSampleMaskTestBeforeSampleCounting ) &&
93028              ( depthStencilSwizzleOneSupport == rhs.depthStencilSwizzleOneSupport ) && ( polygonModePointSize == rhs.polygonModePointSize ) &&
93029              ( nonStrictSinglePixelWideLinesUseParallelogram == rhs.nonStrictSinglePixelWideLinesUseParallelogram ) &&
93030              ( nonStrictWideLinesUseParallelogram == rhs.nonStrictWideLinesUseParallelogram ) &&
93031              ( blockTexelViewCompatibleMultipleLayers == rhs.blockTexelViewCompatibleMultipleLayers ) &&
93032              ( maxCombinedImageSamplerDescriptorCount == rhs.maxCombinedImageSamplerDescriptorCount ) &&
93033              ( fragmentShadingRateClampCombinerInputs == rhs.fragmentShadingRateClampCombinerInputs ) &&
93034              ( defaultRobustnessStorageBuffers == rhs.defaultRobustnessStorageBuffers ) &&
93035              ( defaultRobustnessUniformBuffers == rhs.defaultRobustnessUniformBuffers ) &&
93036              ( defaultRobustnessVertexInputs == rhs.defaultRobustnessVertexInputs ) && ( defaultRobustnessImages == rhs.defaultRobustnessImages ) &&
93037              ( copySrcLayoutCount == rhs.copySrcLayoutCount ) && ( pCopySrcLayouts == rhs.pCopySrcLayouts ) &&
93038              ( copyDstLayoutCount == rhs.copyDstLayoutCount ) && ( pCopyDstLayouts == rhs.pCopyDstLayouts ) &&
93039              ( optimalTilingLayoutUUID == rhs.optimalTilingLayoutUUID ) && ( identicalMemoryTypeRequirements == rhs.identicalMemoryTypeRequirements );
93040 #  endif
93041     }
93042 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties93043     bool operator!=( PhysicalDeviceVulkan14Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
93044     {
93045       return !operator==( rhs );
93046     }
93047 #endif
93048 
93049   public:
93050     VULKAN_HPP_NAMESPACE::StructureType                    sType                                            = StructureType::ePhysicalDeviceVulkan14Properties;
93051     void *                                                 pNext                                            = {};
93052     uint32_t                                               lineSubPixelPrecisionBits                        = {};
93053     uint32_t                                               maxVertexAttribDivisor                           = {};
93054     VULKAN_HPP_NAMESPACE::Bool32                           supportsNonZeroFirstInstance                     = {};
93055     uint32_t                                               maxPushDescriptors                               = {};
93056     VULKAN_HPP_NAMESPACE::Bool32                           dynamicRenderingLocalReadDepthStencilAttachments = {};
93057     VULKAN_HPP_NAMESPACE::Bool32                           dynamicRenderingLocalReadMultisampledAttachments = {};
93058     VULKAN_HPP_NAMESPACE::Bool32                           earlyFragmentMultisampleCoverageAfterSampleCounting = {};
93059     VULKAN_HPP_NAMESPACE::Bool32                           earlyFragmentSampleMaskTestBeforeSampleCounting     = {};
93060     VULKAN_HPP_NAMESPACE::Bool32                           depthStencilSwizzleOneSupport                       = {};
93061     VULKAN_HPP_NAMESPACE::Bool32                           polygonModePointSize                                = {};
93062     VULKAN_HPP_NAMESPACE::Bool32                           nonStrictSinglePixelWideLinesUseParallelogram       = {};
93063     VULKAN_HPP_NAMESPACE::Bool32                           nonStrictWideLinesUseParallelogram                  = {};
93064     VULKAN_HPP_NAMESPACE::Bool32                           blockTexelViewCompatibleMultipleLayers              = {};
93065     uint32_t                                               maxCombinedImageSamplerDescriptorCount              = {};
93066     VULKAN_HPP_NAMESPACE::Bool32                           fragmentShadingRateClampCombinerInputs              = {};
93067     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers =
93068       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault;
93069     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers =
93070       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault;
93071     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior defaultRobustnessVertexInputs =
93072       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault;
93073     VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior       defaultRobustnessImages = VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior::eDeviceDefault;
93074     uint32_t                                                    copySrcLayoutCount      = {};
93075     VULKAN_HPP_NAMESPACE::ImageLayout *                         pCopySrcLayouts         = {};
93076     uint32_t                                                    copyDstLayoutCount      = {};
93077     VULKAN_HPP_NAMESPACE::ImageLayout *                         pCopyDstLayouts         = {};
93078     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> optimalTilingLayoutUUID = {};
93079     VULKAN_HPP_NAMESPACE::Bool32                                identicalMemoryTypeRequirements = {};
93080   };
93081 
93082   template <>
93083   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan14Properties>
93084   {
93085     using Type = PhysicalDeviceVulkan14Properties;
93086   };
93087 
93088   struct PhysicalDeviceVulkanMemoryModelFeatures
93089   {
93090     using NativeType = VkPhysicalDeviceVulkanMemoryModelFeatures;
93091 
93092     static const bool                                  allowDuplicate = false;
93093     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures;
93094 
93095 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkanMemoryModelFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93096     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_                             = {},
93097                                                                   VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_                  = {},
93098                                                                   VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {},
93099                                                                   void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
93100       : pNext{ pNext_ }
93101       , vulkanMemoryModel{ vulkanMemoryModel_ }
93102       , vulkanMemoryModelDeviceScope{ vulkanMemoryModelDeviceScope_ }
93103       , vulkanMemoryModelAvailabilityVisibilityChains{ vulkanMemoryModelAvailabilityVisibilityChains_ }
93104     {
93105     }
93106 
93107     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93108 
PhysicalDeviceVulkanMemoryModelFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93109     PhysicalDeviceVulkanMemoryModelFeatures( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
93110       : PhysicalDeviceVulkanMemoryModelFeatures( *reinterpret_cast<PhysicalDeviceVulkanMemoryModelFeatures const *>( &rhs ) )
93111     {
93112     }
93113 
93114     PhysicalDeviceVulkanMemoryModelFeatures & operator=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93115 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93116 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93117     PhysicalDeviceVulkanMemoryModelFeatures & operator=( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
93118     {
93119       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures const *>( &rhs );
93120       return *this;
93121     }
93122 
93123 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93124     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
93125     {
93126       pNext = pNext_;
93127       return *this;
93128     }
93129 
93130     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures &
setVulkanMemoryModelVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93131       setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT
93132     {
93133       vulkanMemoryModel = vulkanMemoryModel_;
93134       return *this;
93135     }
93136 
93137     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures &
setVulkanMemoryModelDeviceScopeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93138       setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT
93139     {
93140       vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_;
93141       return *this;
93142     }
93143 
93144     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures &
setVulkanMemoryModelAvailabilityVisibilityChainsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93145       setVulkanMemoryModelAvailabilityVisibilityChains( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT
93146     {
93147       vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_;
93148       return *this;
93149     }
93150 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93151 
operator VkPhysicalDeviceVulkanMemoryModelFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93152     operator VkPhysicalDeviceVulkanMemoryModelFeatures const &() const VULKAN_HPP_NOEXCEPT
93153     {
93154       return *reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeatures *>( this );
93155     }
93156 
operator VkPhysicalDeviceVulkanMemoryModelFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93157     operator VkPhysicalDeviceVulkanMemoryModelFeatures &() VULKAN_HPP_NOEXCEPT
93158     {
93159       return *reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeatures *>( this );
93160     }
93161 
93162 #if defined( VULKAN_HPP_USE_REFLECT )
93163 #  if 14 <= VULKAN_HPP_CPP_VERSION
93164     auto
93165 #  else
93166     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93167                void * const &,
93168                VULKAN_HPP_NAMESPACE::Bool32 const &,
93169                VULKAN_HPP_NAMESPACE::Bool32 const &,
93170                VULKAN_HPP_NAMESPACE::Bool32 const &>
93171 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93172       reflect() const VULKAN_HPP_NOEXCEPT
93173     {
93174       return std::tie( sType, pNext, vulkanMemoryModel, vulkanMemoryModelDeviceScope, vulkanMemoryModelAvailabilityVisibilityChains );
93175     }
93176 #endif
93177 
93178 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93179     auto operator<=>( PhysicalDeviceVulkanMemoryModelFeatures const & ) const = default;
93180 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93181     bool operator==( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
93182     {
93183 #  if defined( VULKAN_HPP_USE_REFLECT )
93184       return this->reflect() == rhs.reflect();
93185 #  else
93186       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vulkanMemoryModel == rhs.vulkanMemoryModel ) &&
93187              ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope ) &&
93188              ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains );
93189 #  endif
93190     }
93191 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures93192     bool operator!=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
93193     {
93194       return !operator==( rhs );
93195     }
93196 #endif
93197 
93198   public:
93199     VULKAN_HPP_NAMESPACE::StructureType sType                                         = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures;
93200     void *                              pNext                                         = {};
93201     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModel                             = {};
93202     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelDeviceScope                  = {};
93203     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelAvailabilityVisibilityChains = {};
93204   };
93205 
93206   template <>
93207   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkanMemoryModelFeatures>
93208   {
93209     using Type = PhysicalDeviceVulkanMemoryModelFeatures;
93210   };
93211 
93212   using PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
93213 
93214   struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
93215   {
93216     using NativeType = VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
93217 
93218     static const bool                                  allowDuplicate = false;
93219     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
93220 
93221 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
93222     VULKAN_HPP_CONSTEXPR
PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93223       PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout_                  = {},
93224                                                               VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ = {},
93225                                                               VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess_        = {},
93226                                                               VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess_       = {},
93227                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
93228       : pNext{ pNext_ }
93229       , workgroupMemoryExplicitLayout{ workgroupMemoryExplicitLayout_ }
93230       , workgroupMemoryExplicitLayoutScalarBlockLayout{ workgroupMemoryExplicitLayoutScalarBlockLayout_ }
93231       , workgroupMemoryExplicitLayout8BitAccess{ workgroupMemoryExplicitLayout8BitAccess_ }
93232       , workgroupMemoryExplicitLayout16BitAccess{ workgroupMemoryExplicitLayout16BitAccess_ }
93233     {
93234     }
93235 
93236     VULKAN_HPP_CONSTEXPR PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs )
93237       VULKAN_HPP_NOEXCEPT = default;
93238 
PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93239     PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93240       : PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( *reinterpret_cast<PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const *>( &rhs ) )
93241     {
93242     }
93243 
93244     PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
93245       operator=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93246 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93247 
93248     PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93249       operator=( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93250     {
93251       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const *>( &rhs );
93252       return *this;
93253     }
93254 
93255 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93256     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
93257     {
93258       pNext = pNext_;
93259       return *this;
93260     }
93261 
93262     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93263       setWorkgroupMemoryExplicitLayout( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout_ ) VULKAN_HPP_NOEXCEPT
93264     {
93265       workgroupMemoryExplicitLayout = workgroupMemoryExplicitLayout_;
93266       return *this;
93267     }
93268 
93269     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayoutScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93270       setWorkgroupMemoryExplicitLayoutScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
93271     {
93272       workgroupMemoryExplicitLayoutScalarBlockLayout = workgroupMemoryExplicitLayoutScalarBlockLayout_;
93273       return *this;
93274     }
93275 
93276     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayout8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93277       setWorkgroupMemoryExplicitLayout8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess_ ) VULKAN_HPP_NOEXCEPT
93278     {
93279       workgroupMemoryExplicitLayout8BitAccess = workgroupMemoryExplicitLayout8BitAccess_;
93280       return *this;
93281     }
93282 
93283     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayout16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93284       setWorkgroupMemoryExplicitLayout16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess_ ) VULKAN_HPP_NOEXCEPT
93285     {
93286       workgroupMemoryExplicitLayout16BitAccess = workgroupMemoryExplicitLayout16BitAccess_;
93287       return *this;
93288     }
93289 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93290 
operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93291     operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
93292     {
93293       return *reinterpret_cast<const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *>( this );
93294     }
93295 
operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93296     operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &() VULKAN_HPP_NOEXCEPT
93297     {
93298       return *reinterpret_cast<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *>( this );
93299     }
93300 
93301 #if defined( VULKAN_HPP_USE_REFLECT )
93302 #  if 14 <= VULKAN_HPP_CPP_VERSION
93303     auto
93304 #  else
93305     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93306                void * const &,
93307                VULKAN_HPP_NAMESPACE::Bool32 const &,
93308                VULKAN_HPP_NAMESPACE::Bool32 const &,
93309                VULKAN_HPP_NAMESPACE::Bool32 const &,
93310                VULKAN_HPP_NAMESPACE::Bool32 const &>
93311 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93312       reflect() const VULKAN_HPP_NOEXCEPT
93313     {
93314       return std::tie( sType,
93315                        pNext,
93316                        workgroupMemoryExplicitLayout,
93317                        workgroupMemoryExplicitLayoutScalarBlockLayout,
93318                        workgroupMemoryExplicitLayout8BitAccess,
93319                        workgroupMemoryExplicitLayout16BitAccess );
93320     }
93321 #endif
93322 
93323 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93324     auto operator<=>( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & ) const = default;
93325 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93326     bool operator==( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93327     {
93328 #  if defined( VULKAN_HPP_USE_REFLECT )
93329       return this->reflect() == rhs.reflect();
93330 #  else
93331       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( workgroupMemoryExplicitLayout == rhs.workgroupMemoryExplicitLayout ) &&
93332              ( workgroupMemoryExplicitLayoutScalarBlockLayout == rhs.workgroupMemoryExplicitLayoutScalarBlockLayout ) &&
93333              ( workgroupMemoryExplicitLayout8BitAccess == rhs.workgroupMemoryExplicitLayout8BitAccess ) &&
93334              ( workgroupMemoryExplicitLayout16BitAccess == rhs.workgroupMemoryExplicitLayout16BitAccess );
93335 #  endif
93336     }
93337 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR93338     bool operator!=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93339     {
93340       return !operator==( rhs );
93341     }
93342 #endif
93343 
93344   public:
93345     VULKAN_HPP_NAMESPACE::StructureType sType                                          = StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
93346     void *                              pNext                                          = {};
93347     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayout                  = {};
93348     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayoutScalarBlockLayout = {};
93349     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayout8BitAccess        = {};
93350     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayout16BitAccess       = {};
93351   };
93352 
93353   template <>
93354   struct CppType<StructureType, StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>
93355   {
93356     using Type = PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
93357   };
93358 
93359   struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
93360   {
93361     using NativeType = VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
93362 
93363     static const bool                                  allowDuplicate = false;
93364     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
93365 
93366 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT93367     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats_ = {},
93368                                                                          void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
93369       : pNext{ pNext_ }
93370       , ycbcr2plane444Formats{ ycbcr2plane444Formats_ }
93371     {
93372     }
93373 
93374     VULKAN_HPP_CONSTEXPR
93375       PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93376 
PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT93377     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
93378       : PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( *reinterpret_cast<PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *>( &rhs ) )
93379     {
93380     }
93381 
93382     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & operator=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93383 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93384 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT93385     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & operator=( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
93386     {
93387       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *>( &rhs );
93388       return *this;
93389     }
93390 
93391 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT93392     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
93393     {
93394       pNext = pNext_;
93395       return *this;
93396     }
93397 
93398     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &
setYcbcr2plane444FormatsVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT93399       setYcbcr2plane444Formats( VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats_ ) VULKAN_HPP_NOEXCEPT
93400     {
93401       ycbcr2plane444Formats = ycbcr2plane444Formats_;
93402       return *this;
93403     }
93404 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93405 
operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT93406     operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
93407     {
93408       return *reinterpret_cast<const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *>( this );
93409     }
93410 
operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT93411     operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
93412     {
93413       return *reinterpret_cast<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *>( this );
93414     }
93415 
93416 #if defined( VULKAN_HPP_USE_REFLECT )
93417 #  if 14 <= VULKAN_HPP_CPP_VERSION
93418     auto
93419 #  else
93420     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
93421 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT93422       reflect() const VULKAN_HPP_NOEXCEPT
93423     {
93424       return std::tie( sType, pNext, ycbcr2plane444Formats );
93425     }
93426 #endif
93427 
93428 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93429     auto operator<=>( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & ) const = default;
93430 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT93431     bool operator==( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
93432     {
93433 #  if defined( VULKAN_HPP_USE_REFLECT )
93434       return this->reflect() == rhs.reflect();
93435 #  else
93436       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcr2plane444Formats == rhs.ycbcr2plane444Formats );
93437 #  endif
93438     }
93439 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT93440     bool operator!=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
93441     {
93442       return !operator==( rhs );
93443     }
93444 #endif
93445 
93446   public:
93447     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
93448     void *                              pNext                 = {};
93449     VULKAN_HPP_NAMESPACE::Bool32        ycbcr2plane444Formats = {};
93450   };
93451 
93452   template <>
93453   struct CppType<StructureType, StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>
93454   {
93455     using Type = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
93456   };
93457 
93458   struct PhysicalDeviceYcbcrDegammaFeaturesQCOM
93459   {
93460     using NativeType = VkPhysicalDeviceYcbcrDegammaFeaturesQCOM;
93461 
93462     static const bool                                  allowDuplicate = false;
93463     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceYcbcrDegammaFeaturesQCOM;
93464 
93465 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceYcbcrDegammaFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM93466     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrDegammaFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 ycbcrDegamma_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
93467       : pNext{ pNext_ }
93468       , ycbcrDegamma{ ycbcrDegamma_ }
93469     {
93470     }
93471 
93472     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrDegammaFeaturesQCOM( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93473 
PhysicalDeviceYcbcrDegammaFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM93474     PhysicalDeviceYcbcrDegammaFeaturesQCOM( VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
93475       : PhysicalDeviceYcbcrDegammaFeaturesQCOM( *reinterpret_cast<PhysicalDeviceYcbcrDegammaFeaturesQCOM const *>( &rhs ) )
93476     {
93477     }
93478 
93479     PhysicalDeviceYcbcrDegammaFeaturesQCOM & operator=( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93480 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93481 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM93482     PhysicalDeviceYcbcrDegammaFeaturesQCOM & operator=( VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
93483     {
93484       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM const *>( &rhs );
93485       return *this;
93486     }
93487 
93488 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM93489     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrDegammaFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
93490     {
93491       pNext = pNext_;
93492       return *this;
93493     }
93494 
setYcbcrDegammaVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM93495     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrDegammaFeaturesQCOM & setYcbcrDegamma( VULKAN_HPP_NAMESPACE::Bool32 ycbcrDegamma_ ) VULKAN_HPP_NOEXCEPT
93496     {
93497       ycbcrDegamma = ycbcrDegamma_;
93498       return *this;
93499     }
93500 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93501 
operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM93502     operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
93503     {
93504       return *reinterpret_cast<const VkPhysicalDeviceYcbcrDegammaFeaturesQCOM *>( this );
93505     }
93506 
operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM93507     operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
93508     {
93509       return *reinterpret_cast<VkPhysicalDeviceYcbcrDegammaFeaturesQCOM *>( this );
93510     }
93511 
93512 #if defined( VULKAN_HPP_USE_REFLECT )
93513 #  if 14 <= VULKAN_HPP_CPP_VERSION
93514     auto
93515 #  else
93516     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
93517 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM93518       reflect() const VULKAN_HPP_NOEXCEPT
93519     {
93520       return std::tie( sType, pNext, ycbcrDegamma );
93521     }
93522 #endif
93523 
93524 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93525     auto operator<=>( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & ) const = default;
93526 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM93527     bool operator==( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
93528     {
93529 #  if defined( VULKAN_HPP_USE_REFLECT )
93530       return this->reflect() == rhs.reflect();
93531 #  else
93532       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcrDegamma == rhs.ycbcrDegamma );
93533 #  endif
93534     }
93535 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM93536     bool operator!=( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
93537     {
93538       return !operator==( rhs );
93539     }
93540 #endif
93541 
93542   public:
93543     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceYcbcrDegammaFeaturesQCOM;
93544     void *                              pNext        = {};
93545     VULKAN_HPP_NAMESPACE::Bool32        ycbcrDegamma = {};
93546   };
93547 
93548   template <>
93549   struct CppType<StructureType, StructureType::ePhysicalDeviceYcbcrDegammaFeaturesQCOM>
93550   {
93551     using Type = PhysicalDeviceYcbcrDegammaFeaturesQCOM;
93552   };
93553 
93554   struct PhysicalDeviceYcbcrImageArraysFeaturesEXT
93555   {
93556     using NativeType = VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
93557 
93558     static const bool                                  allowDuplicate = false;
93559     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT;
93560 
93561 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceYcbcrImageArraysFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT93562     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ = {},
93563                                                                     void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
93564       : pNext{ pNext_ }
93565       , ycbcrImageArrays{ ycbcrImageArrays_ }
93566     {
93567     }
93568 
93569     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93570 
PhysicalDeviceYcbcrImageArraysFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT93571     PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
93572       : PhysicalDeviceYcbcrImageArraysFeaturesEXT( *reinterpret_cast<PhysicalDeviceYcbcrImageArraysFeaturesEXT const *>( &rhs ) )
93573     {
93574     }
93575 
93576     PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93577 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93578 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT93579     PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
93580     {
93581       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT const *>( &rhs );
93582       return *this;
93583     }
93584 
93585 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT93586     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
93587     {
93588       pNext = pNext_;
93589       return *this;
93590     }
93591 
93592     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT &
setYcbcrImageArraysVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT93593       setYcbcrImageArrays( VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ ) VULKAN_HPP_NOEXCEPT
93594     {
93595       ycbcrImageArrays = ycbcrImageArrays_;
93596       return *this;
93597     }
93598 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93599 
operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT93600     operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
93601     {
93602       return *reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *>( this );
93603     }
93604 
operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT93605     operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &() VULKAN_HPP_NOEXCEPT
93606     {
93607       return *reinterpret_cast<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *>( this );
93608     }
93609 
93610 #if defined( VULKAN_HPP_USE_REFLECT )
93611 #  if 14 <= VULKAN_HPP_CPP_VERSION
93612     auto
93613 #  else
93614     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
93615 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT93616       reflect() const VULKAN_HPP_NOEXCEPT
93617     {
93618       return std::tie( sType, pNext, ycbcrImageArrays );
93619     }
93620 #endif
93621 
93622 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93623     auto operator<=>( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & ) const = default;
93624 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT93625     bool operator==( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
93626     {
93627 #  if defined( VULKAN_HPP_USE_REFLECT )
93628       return this->reflect() == rhs.reflect();
93629 #  else
93630       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcrImageArrays == rhs.ycbcrImageArrays );
93631 #  endif
93632     }
93633 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT93634     bool operator!=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
93635     {
93636       return !operator==( rhs );
93637     }
93638 #endif
93639 
93640   public:
93641     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT;
93642     void *                              pNext            = {};
93643     VULKAN_HPP_NAMESPACE::Bool32        ycbcrImageArrays = {};
93644   };
93645 
93646   template <>
93647   struct CppType<StructureType, StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT>
93648   {
93649     using Type = PhysicalDeviceYcbcrImageArraysFeaturesEXT;
93650   };
93651 
93652   struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
93653   {
93654     using NativeType = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
93655 
93656     static const bool                                  allowDuplicate = false;
93657     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
93658 
93659 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures93660     VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ = {},
93661                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
93662       : pNext{ pNext_ }
93663       , shaderZeroInitializeWorkgroupMemory{ shaderZeroInitializeWorkgroupMemory_ }
93664     {
93665     }
93666 
93667     VULKAN_HPP_CONSTEXPR
93668       PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93669 
PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures93670     PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
93671       : PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( *reinterpret_cast<PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const *>( &rhs ) )
93672     {
93673     }
93674 
93675     PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &
93676       operator=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93677 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93678 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures93679     PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & operator=( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
93680     {
93681       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const *>( &rhs );
93682       return *this;
93683     }
93684 
93685 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures93686     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
93687     {
93688       pNext = pNext_;
93689       return *this;
93690     }
93691 
93692     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &
setShaderZeroInitializeWorkgroupMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures93693       setShaderZeroInitializeWorkgroupMemory( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ ) VULKAN_HPP_NOEXCEPT
93694     {
93695       shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_;
93696       return *this;
93697     }
93698 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93699 
operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures93700     operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT
93701     {
93702       return *reinterpret_cast<const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *>( this );
93703     }
93704 
operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures93705     operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &() VULKAN_HPP_NOEXCEPT
93706     {
93707       return *reinterpret_cast<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *>( this );
93708     }
93709 
93710 #if defined( VULKAN_HPP_USE_REFLECT )
93711 #  if 14 <= VULKAN_HPP_CPP_VERSION
93712     auto
93713 #  else
93714     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
93715 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures93716       reflect() const VULKAN_HPP_NOEXCEPT
93717     {
93718       return std::tie( sType, pNext, shaderZeroInitializeWorkgroupMemory );
93719     }
93720 #endif
93721 
93722 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93723     auto operator<=>( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & ) const = default;
93724 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures93725     bool operator==( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
93726     {
93727 #  if defined( VULKAN_HPP_USE_REFLECT )
93728       return this->reflect() == rhs.reflect();
93729 #  else
93730       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory );
93731 #  endif
93732     }
93733 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures93734     bool operator!=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
93735     {
93736       return !operator==( rhs );
93737     }
93738 #endif
93739 
93740   public:
93741     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
93742     void *                              pNext                               = {};
93743     VULKAN_HPP_NAMESPACE::Bool32        shaderZeroInitializeWorkgroupMemory = {};
93744   };
93745 
93746   template <>
93747   struct CppType<StructureType, StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>
93748   {
93749     using Type = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
93750   };
93751 
93752   using PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
93753 
93754   struct PipelineBinaryKeyKHR
93755   {
93756     using NativeType = VkPipelineBinaryKeyKHR;
93757 
93758     static const bool                                  allowDuplicate = false;
93759     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineBinaryKeyKHR;
93760 
93761 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineBinaryKeyKHRVULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93762     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR( uint32_t                                                         keySize_ = {},
93763                                                   std::array<uint8_t, VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR> const & key_     = {},
93764                                                   void *                                                           pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
93765       : pNext{ pNext_ }
93766       , keySize{ keySize_ }
93767       , key{ key_ }
93768     {
93769     }
93770 
93771     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR( PipelineBinaryKeyKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93772 
PipelineBinaryKeyKHRVULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93773     PipelineBinaryKeyKHR( VkPipelineBinaryKeyKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93774       : PipelineBinaryKeyKHR( *reinterpret_cast<PipelineBinaryKeyKHR const *>( &rhs ) )
93775     {
93776     }
93777 
93778     PipelineBinaryKeyKHR & operator=( PipelineBinaryKeyKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93779 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93780 
operator =VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93781     PipelineBinaryKeyKHR & operator=( VkPipelineBinaryKeyKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93782     {
93783       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR const *>( &rhs );
93784       return *this;
93785     }
93786 
93787 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93788     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
93789     {
93790       pNext = pNext_;
93791       return *this;
93792     }
93793 
setKeySizeVULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93794     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR & setKeySize( uint32_t keySize_ ) VULKAN_HPP_NOEXCEPT
93795     {
93796       keySize = keySize_;
93797       return *this;
93798     }
93799 
setKeyVULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93800     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR & setKey( std::array<uint8_t, VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR> key_ ) VULKAN_HPP_NOEXCEPT
93801     {
93802       key = key_;
93803       return *this;
93804     }
93805 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93806 
operator VkPipelineBinaryKeyKHR const&VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93807     operator VkPipelineBinaryKeyKHR const &() const VULKAN_HPP_NOEXCEPT
93808     {
93809       return *reinterpret_cast<const VkPipelineBinaryKeyKHR *>( this );
93810     }
93811 
operator VkPipelineBinaryKeyKHR&VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93812     operator VkPipelineBinaryKeyKHR &() VULKAN_HPP_NOEXCEPT
93813     {
93814       return *reinterpret_cast<VkPipelineBinaryKeyKHR *>( this );
93815     }
93816 
93817 #if defined( VULKAN_HPP_USE_REFLECT )
93818 #  if 14 <= VULKAN_HPP_CPP_VERSION
93819     auto
93820 #  else
93821     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93822                void * const &,
93823                uint32_t const &,
93824                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR> const &>
93825 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93826       reflect() const VULKAN_HPP_NOEXCEPT
93827     {
93828       return std::tie( sType, pNext, keySize, key );
93829     }
93830 #endif
93831 
93832 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93833     auto operator<=>( PipelineBinaryKeyKHR const & ) const = default;
93834 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93835     bool operator==( PipelineBinaryKeyKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93836     {
93837 #  if defined( VULKAN_HPP_USE_REFLECT )
93838       return this->reflect() == rhs.reflect();
93839 #  else
93840       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( keySize == rhs.keySize ) && ( key == rhs.key );
93841 #  endif
93842     }
93843 
operator !=VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR93844     bool operator!=( PipelineBinaryKeyKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93845     {
93846       return !operator==( rhs );
93847     }
93848 #endif
93849 
93850   public:
93851     VULKAN_HPP_NAMESPACE::StructureType                                                sType   = StructureType::ePipelineBinaryKeyKHR;
93852     void *                                                                             pNext   = {};
93853     uint32_t                                                                           keySize = {};
93854     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR> key     = {};
93855   };
93856 
93857   template <>
93858   struct CppType<StructureType, StructureType::ePipelineBinaryKeyKHR>
93859   {
93860     using Type = PipelineBinaryKeyKHR;
93861   };
93862 
93863   struct PipelineBinaryDataKHR
93864   {
93865     using NativeType = VkPipelineBinaryDataKHR;
93866 
93867 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineBinaryDataKHRVULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93868     VULKAN_HPP_CONSTEXPR PipelineBinaryDataKHR( size_t dataSize_ = {}, void * pData_ = {} ) VULKAN_HPP_NOEXCEPT
93869       : dataSize{ dataSize_ }
93870       , pData{ pData_ }
93871     {
93872     }
93873 
93874     VULKAN_HPP_CONSTEXPR PipelineBinaryDataKHR( PipelineBinaryDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93875 
PipelineBinaryDataKHRVULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93876     PipelineBinaryDataKHR( VkPipelineBinaryDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93877       : PipelineBinaryDataKHR( *reinterpret_cast<PipelineBinaryDataKHR const *>( &rhs ) )
93878     {
93879     }
93880 
93881 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
93882     template <typename T>
PipelineBinaryDataKHRVULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93883     PipelineBinaryDataKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<T> const & data_ ) : dataSize( data_.size() * sizeof( T ) ), pData( data_.data() )
93884     {
93885     }
93886 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93887 
93888     PipelineBinaryDataKHR & operator=( PipelineBinaryDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93889 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93890 
operator =VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93891     PipelineBinaryDataKHR & operator=( VkPipelineBinaryDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93892     {
93893       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR const *>( &rhs );
93894       return *this;
93895     }
93896 
93897 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDataSizeVULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93898     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataKHR & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT
93899     {
93900       dataSize = dataSize_;
93901       return *this;
93902     }
93903 
setPDataVULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93904     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataKHR & setPData( void * pData_ ) VULKAN_HPP_NOEXCEPT
93905     {
93906       pData = pData_;
93907       return *this;
93908     }
93909 
93910 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
93911     template <typename T>
setDataVULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93912     PipelineBinaryDataKHR & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<T> const & data_ ) VULKAN_HPP_NOEXCEPT
93913     {
93914       dataSize = data_.size() * sizeof( T );
93915       pData    = data_.data();
93916       return *this;
93917     }
93918 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93919 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93920 
operator VkPipelineBinaryDataKHR const&VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93921     operator VkPipelineBinaryDataKHR const &() const VULKAN_HPP_NOEXCEPT
93922     {
93923       return *reinterpret_cast<const VkPipelineBinaryDataKHR *>( this );
93924     }
93925 
operator VkPipelineBinaryDataKHR&VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93926     operator VkPipelineBinaryDataKHR &() VULKAN_HPP_NOEXCEPT
93927     {
93928       return *reinterpret_cast<VkPipelineBinaryDataKHR *>( this );
93929     }
93930 
93931 #if defined( VULKAN_HPP_USE_REFLECT )
93932 #  if 14 <= VULKAN_HPP_CPP_VERSION
93933     auto
93934 #  else
93935     std::tuple<size_t const &, void * const &>
93936 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93937       reflect() const VULKAN_HPP_NOEXCEPT
93938     {
93939       return std::tie( dataSize, pData );
93940     }
93941 #endif
93942 
93943 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93944     auto operator<=>( PipelineBinaryDataKHR const & ) const = default;
93945 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93946     bool operator==( PipelineBinaryDataKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93947     {
93948 #  if defined( VULKAN_HPP_USE_REFLECT )
93949       return this->reflect() == rhs.reflect();
93950 #  else
93951       return ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
93952 #  endif
93953     }
93954 
operator !=VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR93955     bool operator!=( PipelineBinaryDataKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93956     {
93957       return !operator==( rhs );
93958     }
93959 #endif
93960 
93961   public:
93962     size_t dataSize = {};
93963     void * pData    = {};
93964   };
93965 
93966   struct PipelineBinaryKeysAndDataKHR
93967   {
93968     using NativeType = VkPipelineBinaryKeysAndDataKHR;
93969 
93970 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineBinaryKeysAndDataKHRVULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR93971     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR( uint32_t                                            binaryCount_         = {},
93972                                                           const VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR *  pPipelineBinaryKeys_ = {},
93973                                                           const VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR * pPipelineBinaryData_ = {} ) VULKAN_HPP_NOEXCEPT
93974       : binaryCount{ binaryCount_ }
93975       , pPipelineBinaryKeys{ pPipelineBinaryKeys_ }
93976       , pPipelineBinaryData{ pPipelineBinaryData_ }
93977     {
93978     }
93979 
93980     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR( PipelineBinaryKeysAndDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93981 
PipelineBinaryKeysAndDataKHRVULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR93982     PipelineBinaryKeysAndDataKHR( VkPipelineBinaryKeysAndDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93983       : PipelineBinaryKeysAndDataKHR( *reinterpret_cast<PipelineBinaryKeysAndDataKHR const *>( &rhs ) )
93984     {
93985     }
93986 
93987 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineBinaryKeysAndDataKHRVULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR93988     PipelineBinaryKeysAndDataKHR(
93989       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR> const &  pipelineBinaryKeys_,
93990       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR> const & pipelineBinaryData_ = {} )
93991       : binaryCount( static_cast<uint32_t>( pipelineBinaryKeys_.size() ) )
93992       , pPipelineBinaryKeys( pipelineBinaryKeys_.data() )
93993       , pPipelineBinaryData( pipelineBinaryData_.data() )
93994     {
93995 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
93996       VULKAN_HPP_ASSERT( pipelineBinaryKeys_.size() == pipelineBinaryData_.size() );
93997 #    else
93998       if ( pipelineBinaryKeys_.size() != pipelineBinaryData_.size() )
93999       {
94000         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
94001                           "::PipelineBinaryKeysAndDataKHR::PipelineBinaryKeysAndDataKHR: pipelineBinaryKeys_.size() != pipelineBinaryData_.size()" );
94002       }
94003 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
94004     }
94005 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94006 
94007     PipelineBinaryKeysAndDataKHR & operator=( PipelineBinaryKeysAndDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94008 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94009 
operator =VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94010     PipelineBinaryKeysAndDataKHR & operator=( VkPipelineBinaryKeysAndDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94011     {
94012       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR const *>( &rhs );
94013       return *this;
94014     }
94015 
94016 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBinaryCountVULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94017     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR & setBinaryCount( uint32_t binaryCount_ ) VULKAN_HPP_NOEXCEPT
94018     {
94019       binaryCount = binaryCount_;
94020       return *this;
94021     }
94022 
94023     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR &
setPPipelineBinaryKeysVULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94024       setPPipelineBinaryKeys( const VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR * pPipelineBinaryKeys_ ) VULKAN_HPP_NOEXCEPT
94025     {
94026       pPipelineBinaryKeys = pPipelineBinaryKeys_;
94027       return *this;
94028     }
94029 
94030 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelineBinaryKeysVULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94031     PipelineBinaryKeysAndDataKHR & setPipelineBinaryKeys(
94032       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR> const & pipelineBinaryKeys_ ) VULKAN_HPP_NOEXCEPT
94033     {
94034       binaryCount         = static_cast<uint32_t>( pipelineBinaryKeys_.size() );
94035       pPipelineBinaryKeys = pipelineBinaryKeys_.data();
94036       return *this;
94037     }
94038 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94039 
94040     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR &
setPPipelineBinaryDataVULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94041       setPPipelineBinaryData( const VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR * pPipelineBinaryData_ ) VULKAN_HPP_NOEXCEPT
94042     {
94043       pPipelineBinaryData = pPipelineBinaryData_;
94044       return *this;
94045     }
94046 
94047 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelineBinaryDataVULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94048     PipelineBinaryKeysAndDataKHR & setPipelineBinaryData(
94049       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR> const & pipelineBinaryData_ ) VULKAN_HPP_NOEXCEPT
94050     {
94051       binaryCount         = static_cast<uint32_t>( pipelineBinaryData_.size() );
94052       pPipelineBinaryData = pipelineBinaryData_.data();
94053       return *this;
94054     }
94055 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94056 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94057 
operator VkPipelineBinaryKeysAndDataKHR const&VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94058     operator VkPipelineBinaryKeysAndDataKHR const &() const VULKAN_HPP_NOEXCEPT
94059     {
94060       return *reinterpret_cast<const VkPipelineBinaryKeysAndDataKHR *>( this );
94061     }
94062 
operator VkPipelineBinaryKeysAndDataKHR&VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94063     operator VkPipelineBinaryKeysAndDataKHR &() VULKAN_HPP_NOEXCEPT
94064     {
94065       return *reinterpret_cast<VkPipelineBinaryKeysAndDataKHR *>( this );
94066     }
94067 
94068 #if defined( VULKAN_HPP_USE_REFLECT )
94069 #  if 14 <= VULKAN_HPP_CPP_VERSION
94070     auto
94071 #  else
94072     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR * const &, const VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR * const &>
94073 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94074       reflect() const VULKAN_HPP_NOEXCEPT
94075     {
94076       return std::tie( binaryCount, pPipelineBinaryKeys, pPipelineBinaryData );
94077     }
94078 #endif
94079 
94080 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94081     auto operator<=>( PipelineBinaryKeysAndDataKHR const & ) const = default;
94082 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94083     bool operator==( PipelineBinaryKeysAndDataKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94084     {
94085 #  if defined( VULKAN_HPP_USE_REFLECT )
94086       return this->reflect() == rhs.reflect();
94087 #  else
94088       return ( binaryCount == rhs.binaryCount ) && ( pPipelineBinaryKeys == rhs.pPipelineBinaryKeys ) && ( pPipelineBinaryData == rhs.pPipelineBinaryData );
94089 #  endif
94090     }
94091 
operator !=VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR94092     bool operator!=( PipelineBinaryKeysAndDataKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94093     {
94094       return !operator==( rhs );
94095     }
94096 #endif
94097 
94098   public:
94099     uint32_t                                            binaryCount         = {};
94100     const VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR *  pPipelineBinaryKeys = {};
94101     const VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR * pPipelineBinaryData = {};
94102   };
94103 
94104   struct PipelineCreateInfoKHR
94105   {
94106     using NativeType = VkPipelineCreateInfoKHR;
94107 
94108     static const bool                                  allowDuplicate = false;
94109     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCreateInfoKHR;
94110 
94111 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR94112     VULKAN_HPP_CONSTEXPR PipelineCreateInfoKHR( void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {}
94113 
94114     VULKAN_HPP_CONSTEXPR PipelineCreateInfoKHR( PipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94115 
PipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR94116     PipelineCreateInfoKHR( VkPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94117       : PipelineCreateInfoKHR( *reinterpret_cast<PipelineCreateInfoKHR const *>( &rhs ) )
94118     {
94119     }
94120 
94121     PipelineCreateInfoKHR & operator=( PipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94122 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94123 
operator =VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR94124     PipelineCreateInfoKHR & operator=( VkPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94125     {
94126       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR const *>( &rhs );
94127       return *this;
94128     }
94129 
94130 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR94131     VULKAN_HPP_CONSTEXPR_14 PipelineCreateInfoKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
94132     {
94133       pNext = pNext_;
94134       return *this;
94135     }
94136 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94137 
operator VkPipelineCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR94138     operator VkPipelineCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
94139     {
94140       return *reinterpret_cast<const VkPipelineCreateInfoKHR *>( this );
94141     }
94142 
operator VkPipelineCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR94143     operator VkPipelineCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
94144     {
94145       return *reinterpret_cast<VkPipelineCreateInfoKHR *>( this );
94146     }
94147 
94148 #if defined( VULKAN_HPP_USE_REFLECT )
94149 #  if 14 <= VULKAN_HPP_CPP_VERSION
94150     auto
94151 #  else
94152     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &>
94153 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR94154       reflect() const VULKAN_HPP_NOEXCEPT
94155     {
94156       return std::tie( sType, pNext );
94157     }
94158 #endif
94159 
94160 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94161     auto operator<=>( PipelineCreateInfoKHR const & ) const = default;
94162 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR94163     bool operator==( PipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94164     {
94165 #  if defined( VULKAN_HPP_USE_REFLECT )
94166       return this->reflect() == rhs.reflect();
94167 #  else
94168       return ( sType == rhs.sType ) && ( pNext == rhs.pNext );
94169 #  endif
94170     }
94171 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR94172     bool operator!=( PipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94173     {
94174       return !operator==( rhs );
94175     }
94176 #endif
94177 
94178   public:
94179     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCreateInfoKHR;
94180     void *                              pNext = {};
94181   };
94182 
94183   template <>
94184   struct CppType<StructureType, StructureType::ePipelineCreateInfoKHR>
94185   {
94186     using Type = PipelineCreateInfoKHR;
94187   };
94188 
94189   struct PipelineBinaryCreateInfoKHR
94190   {
94191     using NativeType = VkPipelineBinaryCreateInfoKHR;
94192 
94193     static const bool                                  allowDuplicate = false;
94194     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineBinaryCreateInfoKHR;
94195 
94196 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineBinaryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94197     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR( const VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR * pKeysAndDataInfo_    = {},
94198                                                          VULKAN_HPP_NAMESPACE::Pipeline                             pipeline_            = {},
94199                                                          const VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR *        pPipelineCreateInfo_ = {},
94200                                                          const void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
94201       : pNext{ pNext_ }
94202       , pKeysAndDataInfo{ pKeysAndDataInfo_ }
94203       , pipeline{ pipeline_ }
94204       , pPipelineCreateInfo{ pPipelineCreateInfo_ }
94205     {
94206     }
94207 
94208     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR( PipelineBinaryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94209 
PipelineBinaryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94210     PipelineBinaryCreateInfoKHR( VkPipelineBinaryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94211       : PipelineBinaryCreateInfoKHR( *reinterpret_cast<PipelineBinaryCreateInfoKHR const *>( &rhs ) )
94212     {
94213     }
94214 
94215     PipelineBinaryCreateInfoKHR & operator=( PipelineBinaryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94216 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94217 
operator =VULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94218     PipelineBinaryCreateInfoKHR & operator=( VkPipelineBinaryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94219     {
94220       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR const *>( &rhs );
94221       return *this;
94222     }
94223 
94224 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94225     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94226     {
94227       pNext = pNext_;
94228       return *this;
94229     }
94230 
94231     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR &
setPKeysAndDataInfoVULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94232       setPKeysAndDataInfo( const VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR * pKeysAndDataInfo_ ) VULKAN_HPP_NOEXCEPT
94233     {
94234       pKeysAndDataInfo = pKeysAndDataInfo_;
94235       return *this;
94236     }
94237 
setPipelineVULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94238     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
94239     {
94240       pipeline = pipeline_;
94241       return *this;
94242     }
94243 
94244     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR &
setPPipelineCreateInfoVULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94245       setPPipelineCreateInfo( const VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR * pPipelineCreateInfo_ ) VULKAN_HPP_NOEXCEPT
94246     {
94247       pPipelineCreateInfo = pPipelineCreateInfo_;
94248       return *this;
94249     }
94250 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94251 
operator VkPipelineBinaryCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94252     operator VkPipelineBinaryCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
94253     {
94254       return *reinterpret_cast<const VkPipelineBinaryCreateInfoKHR *>( this );
94255     }
94256 
operator VkPipelineBinaryCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94257     operator VkPipelineBinaryCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
94258     {
94259       return *reinterpret_cast<VkPipelineBinaryCreateInfoKHR *>( this );
94260     }
94261 
94262 #if defined( VULKAN_HPP_USE_REFLECT )
94263 #  if 14 <= VULKAN_HPP_CPP_VERSION
94264     auto
94265 #  else
94266     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94267                const void * const &,
94268                const VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR * const &,
94269                VULKAN_HPP_NAMESPACE::Pipeline const &,
94270                const VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR * const &>
94271 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94272       reflect() const VULKAN_HPP_NOEXCEPT
94273     {
94274       return std::tie( sType, pNext, pKeysAndDataInfo, pipeline, pPipelineCreateInfo );
94275     }
94276 #endif
94277 
94278 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94279     auto operator<=>( PipelineBinaryCreateInfoKHR const & ) const = default;
94280 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94281     bool operator==( PipelineBinaryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94282     {
94283 #  if defined( VULKAN_HPP_USE_REFLECT )
94284       return this->reflect() == rhs.reflect();
94285 #  else
94286       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pKeysAndDataInfo == rhs.pKeysAndDataInfo ) && ( pipeline == rhs.pipeline ) &&
94287              ( pPipelineCreateInfo == rhs.pPipelineCreateInfo );
94288 #  endif
94289     }
94290 
operator !=VULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR94291     bool operator!=( PipelineBinaryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94292     {
94293       return !operator==( rhs );
94294     }
94295 #endif
94296 
94297   public:
94298     VULKAN_HPP_NAMESPACE::StructureType                        sType               = StructureType::ePipelineBinaryCreateInfoKHR;
94299     const void *                                               pNext               = {};
94300     const VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR * pKeysAndDataInfo    = {};
94301     VULKAN_HPP_NAMESPACE::Pipeline                             pipeline            = {};
94302     const VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR *        pPipelineCreateInfo = {};
94303   };
94304 
94305   template <>
94306   struct CppType<StructureType, StructureType::ePipelineBinaryCreateInfoKHR>
94307   {
94308     using Type = PipelineBinaryCreateInfoKHR;
94309   };
94310 
94311   struct PipelineBinaryDataInfoKHR
94312   {
94313     using NativeType = VkPipelineBinaryDataInfoKHR;
94314 
94315     static const bool                                  allowDuplicate = false;
94316     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineBinaryDataInfoKHR;
94317 
94318 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineBinaryDataInfoKHRVULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR94319     VULKAN_HPP_CONSTEXPR PipelineBinaryDataInfoKHR( VULKAN_HPP_NAMESPACE::PipelineBinaryKHR pipelineBinary_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
94320       : pNext{ pNext_ }
94321       , pipelineBinary{ pipelineBinary_ }
94322     {
94323     }
94324 
94325     VULKAN_HPP_CONSTEXPR PipelineBinaryDataInfoKHR( PipelineBinaryDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94326 
PipelineBinaryDataInfoKHRVULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR94327     PipelineBinaryDataInfoKHR( VkPipelineBinaryDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94328       : PipelineBinaryDataInfoKHR( *reinterpret_cast<PipelineBinaryDataInfoKHR const *>( &rhs ) )
94329     {
94330     }
94331 
94332     PipelineBinaryDataInfoKHR & operator=( PipelineBinaryDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94333 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94334 
operator =VULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR94335     PipelineBinaryDataInfoKHR & operator=( VkPipelineBinaryDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94336     {
94337       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR const *>( &rhs );
94338       return *this;
94339     }
94340 
94341 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR94342     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataInfoKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
94343     {
94344       pNext = pNext_;
94345       return *this;
94346     }
94347 
setPipelineBinaryVULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR94348     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataInfoKHR & setPipelineBinary( VULKAN_HPP_NAMESPACE::PipelineBinaryKHR pipelineBinary_ ) VULKAN_HPP_NOEXCEPT
94349     {
94350       pipelineBinary = pipelineBinary_;
94351       return *this;
94352     }
94353 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94354 
operator VkPipelineBinaryDataInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR94355     operator VkPipelineBinaryDataInfoKHR const &() const VULKAN_HPP_NOEXCEPT
94356     {
94357       return *reinterpret_cast<const VkPipelineBinaryDataInfoKHR *>( this );
94358     }
94359 
operator VkPipelineBinaryDataInfoKHR&VULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR94360     operator VkPipelineBinaryDataInfoKHR &() VULKAN_HPP_NOEXCEPT
94361     {
94362       return *reinterpret_cast<VkPipelineBinaryDataInfoKHR *>( this );
94363     }
94364 
94365 #if defined( VULKAN_HPP_USE_REFLECT )
94366 #  if 14 <= VULKAN_HPP_CPP_VERSION
94367     auto
94368 #  else
94369     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineBinaryKHR const &>
94370 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR94371       reflect() const VULKAN_HPP_NOEXCEPT
94372     {
94373       return std::tie( sType, pNext, pipelineBinary );
94374     }
94375 #endif
94376 
94377 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94378     auto operator<=>( PipelineBinaryDataInfoKHR const & ) const = default;
94379 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR94380     bool operator==( PipelineBinaryDataInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94381     {
94382 #  if defined( VULKAN_HPP_USE_REFLECT )
94383       return this->reflect() == rhs.reflect();
94384 #  else
94385       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBinary == rhs.pipelineBinary );
94386 #  endif
94387     }
94388 
operator !=VULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR94389     bool operator!=( PipelineBinaryDataInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94390     {
94391       return !operator==( rhs );
94392     }
94393 #endif
94394 
94395   public:
94396     VULKAN_HPP_NAMESPACE::StructureType     sType          = StructureType::ePipelineBinaryDataInfoKHR;
94397     void *                                  pNext          = {};
94398     VULKAN_HPP_NAMESPACE::PipelineBinaryKHR pipelineBinary = {};
94399   };
94400 
94401   template <>
94402   struct CppType<StructureType, StructureType::ePipelineBinaryDataInfoKHR>
94403   {
94404     using Type = PipelineBinaryDataInfoKHR;
94405   };
94406 
94407   struct PipelineBinaryHandlesInfoKHR
94408   {
94409     using NativeType = VkPipelineBinaryHandlesInfoKHR;
94410 
94411     static const bool                                  allowDuplicate = false;
94412     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineBinaryHandlesInfoKHR;
94413 
94414 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineBinaryHandlesInfoKHRVULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94415     VULKAN_HPP_CONSTEXPR PipelineBinaryHandlesInfoKHR( uint32_t                                  pipelineBinaryCount_ = {},
94416                                                        VULKAN_HPP_NAMESPACE::PipelineBinaryKHR * pPipelineBinaries_   = {},
94417                                                        const void *                              pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
94418       : pNext{ pNext_ }
94419       , pipelineBinaryCount{ pipelineBinaryCount_ }
94420       , pPipelineBinaries{ pPipelineBinaries_ }
94421     {
94422     }
94423 
94424     VULKAN_HPP_CONSTEXPR PipelineBinaryHandlesInfoKHR( PipelineBinaryHandlesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94425 
PipelineBinaryHandlesInfoKHRVULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94426     PipelineBinaryHandlesInfoKHR( VkPipelineBinaryHandlesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94427       : PipelineBinaryHandlesInfoKHR( *reinterpret_cast<PipelineBinaryHandlesInfoKHR const *>( &rhs ) )
94428     {
94429     }
94430 
94431 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineBinaryHandlesInfoKHRVULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94432     PipelineBinaryHandlesInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineBinaryKHR> const & pipelineBinaries_,
94433                                   const void *                                                                                   pNext_ = nullptr )
94434       : pNext( pNext_ ), pipelineBinaryCount( static_cast<uint32_t>( pipelineBinaries_.size() ) ), pPipelineBinaries( pipelineBinaries_.data() )
94435     {
94436     }
94437 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94438 
94439     PipelineBinaryHandlesInfoKHR & operator=( PipelineBinaryHandlesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94440 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94441 
operator =VULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94442     PipelineBinaryHandlesInfoKHR & operator=( VkPipelineBinaryHandlesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94443     {
94444       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR const *>( &rhs );
94445       return *this;
94446     }
94447 
94448 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94449     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryHandlesInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94450     {
94451       pNext = pNext_;
94452       return *this;
94453     }
94454 
setPipelineBinaryCountVULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94455     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryHandlesInfoKHR & setPipelineBinaryCount( uint32_t pipelineBinaryCount_ ) VULKAN_HPP_NOEXCEPT
94456     {
94457       pipelineBinaryCount = pipelineBinaryCount_;
94458       return *this;
94459     }
94460 
94461     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryHandlesInfoKHR &
setPPipelineBinariesVULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94462       setPPipelineBinaries( VULKAN_HPP_NAMESPACE::PipelineBinaryKHR * pPipelineBinaries_ ) VULKAN_HPP_NOEXCEPT
94463     {
94464       pPipelineBinaries = pPipelineBinaries_;
94465       return *this;
94466     }
94467 
94468 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelineBinariesVULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94469     PipelineBinaryHandlesInfoKHR & setPipelineBinaries(
94470       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineBinaryKHR> const & pipelineBinaries_ ) VULKAN_HPP_NOEXCEPT
94471     {
94472       pipelineBinaryCount = static_cast<uint32_t>( pipelineBinaries_.size() );
94473       pPipelineBinaries   = pipelineBinaries_.data();
94474       return *this;
94475     }
94476 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94477 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94478 
operator VkPipelineBinaryHandlesInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94479     operator VkPipelineBinaryHandlesInfoKHR const &() const VULKAN_HPP_NOEXCEPT
94480     {
94481       return *reinterpret_cast<const VkPipelineBinaryHandlesInfoKHR *>( this );
94482     }
94483 
operator VkPipelineBinaryHandlesInfoKHR&VULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94484     operator VkPipelineBinaryHandlesInfoKHR &() VULKAN_HPP_NOEXCEPT
94485     {
94486       return *reinterpret_cast<VkPipelineBinaryHandlesInfoKHR *>( this );
94487     }
94488 
94489 #if defined( VULKAN_HPP_USE_REFLECT )
94490 #  if 14 <= VULKAN_HPP_CPP_VERSION
94491     auto
94492 #  else
94493     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::PipelineBinaryKHR * const &>
94494 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94495       reflect() const VULKAN_HPP_NOEXCEPT
94496     {
94497       return std::tie( sType, pNext, pipelineBinaryCount, pPipelineBinaries );
94498     }
94499 #endif
94500 
94501 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94502     auto operator<=>( PipelineBinaryHandlesInfoKHR const & ) const = default;
94503 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94504     bool operator==( PipelineBinaryHandlesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94505     {
94506 #  if defined( VULKAN_HPP_USE_REFLECT )
94507       return this->reflect() == rhs.reflect();
94508 #  else
94509       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBinaryCount == rhs.pipelineBinaryCount ) &&
94510              ( pPipelineBinaries == rhs.pPipelineBinaries );
94511 #  endif
94512     }
94513 
operator !=VULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR94514     bool operator!=( PipelineBinaryHandlesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94515     {
94516       return !operator==( rhs );
94517     }
94518 #endif
94519 
94520   public:
94521     VULKAN_HPP_NAMESPACE::StructureType       sType               = StructureType::ePipelineBinaryHandlesInfoKHR;
94522     const void *                              pNext               = {};
94523     uint32_t                                  pipelineBinaryCount = {};
94524     VULKAN_HPP_NAMESPACE::PipelineBinaryKHR * pPipelineBinaries   = {};
94525   };
94526 
94527   template <>
94528   struct CppType<StructureType, StructureType::ePipelineBinaryHandlesInfoKHR>
94529   {
94530     using Type = PipelineBinaryHandlesInfoKHR;
94531   };
94532 
94533   struct PipelineBinaryInfoKHR
94534   {
94535     using NativeType = VkPipelineBinaryInfoKHR;
94536 
94537     static const bool                                  allowDuplicate = false;
94538     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineBinaryInfoKHR;
94539 
94540 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineBinaryInfoKHRVULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94541     VULKAN_HPP_CONSTEXPR PipelineBinaryInfoKHR( uint32_t                                        binaryCount_       = {},
94542                                                 const VULKAN_HPP_NAMESPACE::PipelineBinaryKHR * pPipelineBinaries_ = {},
94543                                                 const void *                                    pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
94544       : pNext{ pNext_ }
94545       , binaryCount{ binaryCount_ }
94546       , pPipelineBinaries{ pPipelineBinaries_ }
94547     {
94548     }
94549 
94550     VULKAN_HPP_CONSTEXPR PipelineBinaryInfoKHR( PipelineBinaryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94551 
PipelineBinaryInfoKHRVULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94552     PipelineBinaryInfoKHR( VkPipelineBinaryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94553       : PipelineBinaryInfoKHR( *reinterpret_cast<PipelineBinaryInfoKHR const *>( &rhs ) )
94554     {
94555     }
94556 
94557 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineBinaryInfoKHRVULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94558     PipelineBinaryInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineBinaryKHR> const & pipelineBinaries_,
94559                            const void *                                                                                         pNext_ = nullptr )
94560       : pNext( pNext_ ), binaryCount( static_cast<uint32_t>( pipelineBinaries_.size() ) ), pPipelineBinaries( pipelineBinaries_.data() )
94561     {
94562     }
94563 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94564 
94565     PipelineBinaryInfoKHR & operator=( PipelineBinaryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94566 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94567 
operator =VULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94568     PipelineBinaryInfoKHR & operator=( VkPipelineBinaryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94569     {
94570       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR const *>( &rhs );
94571       return *this;
94572     }
94573 
94574 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94575     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94576     {
94577       pNext = pNext_;
94578       return *this;
94579     }
94580 
setBinaryCountVULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94581     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryInfoKHR & setBinaryCount( uint32_t binaryCount_ ) VULKAN_HPP_NOEXCEPT
94582     {
94583       binaryCount = binaryCount_;
94584       return *this;
94585     }
94586 
94587     VULKAN_HPP_CONSTEXPR_14 PipelineBinaryInfoKHR &
setPPipelineBinariesVULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94588       setPPipelineBinaries( const VULKAN_HPP_NAMESPACE::PipelineBinaryKHR * pPipelineBinaries_ ) VULKAN_HPP_NOEXCEPT
94589     {
94590       pPipelineBinaries = pPipelineBinaries_;
94591       return *this;
94592     }
94593 
94594 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelineBinariesVULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94595     PipelineBinaryInfoKHR & setPipelineBinaries(
94596       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineBinaryKHR> const & pipelineBinaries_ ) VULKAN_HPP_NOEXCEPT
94597     {
94598       binaryCount       = static_cast<uint32_t>( pipelineBinaries_.size() );
94599       pPipelineBinaries = pipelineBinaries_.data();
94600       return *this;
94601     }
94602 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94603 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94604 
operator VkPipelineBinaryInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94605     operator VkPipelineBinaryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
94606     {
94607       return *reinterpret_cast<const VkPipelineBinaryInfoKHR *>( this );
94608     }
94609 
operator VkPipelineBinaryInfoKHR&VULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94610     operator VkPipelineBinaryInfoKHR &() VULKAN_HPP_NOEXCEPT
94611     {
94612       return *reinterpret_cast<VkPipelineBinaryInfoKHR *>( this );
94613     }
94614 
94615 #if defined( VULKAN_HPP_USE_REFLECT )
94616 #  if 14 <= VULKAN_HPP_CPP_VERSION
94617     auto
94618 #  else
94619     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PipelineBinaryKHR * const &>
94620 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94621       reflect() const VULKAN_HPP_NOEXCEPT
94622     {
94623       return std::tie( sType, pNext, binaryCount, pPipelineBinaries );
94624     }
94625 #endif
94626 
94627 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94628     auto operator<=>( PipelineBinaryInfoKHR const & ) const = default;
94629 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94630     bool operator==( PipelineBinaryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94631     {
94632 #  if defined( VULKAN_HPP_USE_REFLECT )
94633       return this->reflect() == rhs.reflect();
94634 #  else
94635       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( binaryCount == rhs.binaryCount ) && ( pPipelineBinaries == rhs.pPipelineBinaries );
94636 #  endif
94637     }
94638 
operator !=VULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR94639     bool operator!=( PipelineBinaryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94640     {
94641       return !operator==( rhs );
94642     }
94643 #endif
94644 
94645   public:
94646     VULKAN_HPP_NAMESPACE::StructureType             sType             = StructureType::ePipelineBinaryInfoKHR;
94647     const void *                                    pNext             = {};
94648     uint32_t                                        binaryCount       = {};
94649     const VULKAN_HPP_NAMESPACE::PipelineBinaryKHR * pPipelineBinaries = {};
94650   };
94651 
94652   template <>
94653   struct CppType<StructureType, StructureType::ePipelineBinaryInfoKHR>
94654   {
94655     using Type = PipelineBinaryInfoKHR;
94656   };
94657 
94658   struct PipelineCacheCreateInfo
94659   {
94660     using NativeType = VkPipelineCacheCreateInfo;
94661 
94662     static const bool                                  allowDuplicate = false;
94663     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCacheCreateInfo;
94664 
94665 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94666     VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_           = {},
94667                                                   size_t                                         initialDataSize_ = {},
94668                                                   const void *                                   pInitialData_    = {},
94669                                                   const void *                                   pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
94670       : pNext{ pNext_ }
94671       , flags{ flags_ }
94672       , initialDataSize{ initialDataSize_ }
94673       , pInitialData{ pInitialData_ }
94674     {
94675     }
94676 
94677     VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94678 
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94679     PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
94680       : PipelineCacheCreateInfo( *reinterpret_cast<PipelineCacheCreateInfo const *>( &rhs ) )
94681     {
94682     }
94683 
94684 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
94685     template <typename T>
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94686     PipelineCacheCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags                 flags_,
94687                              VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_,
94688                              const void *                                                   pNext_ = nullptr )
94689       : pNext( pNext_ ), flags( flags_ ), initialDataSize( initialData_.size() * sizeof( T ) ), pInitialData( initialData_.data() )
94690     {
94691     }
94692 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94693 
94694     PipelineCacheCreateInfo & operator=( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94695 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94696 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94697     PipelineCacheCreateInfo & operator=( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
94698     {
94699       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const *>( &rhs );
94700       return *this;
94701     }
94702 
94703 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94704     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94705     {
94706       pNext = pNext_;
94707       return *this;
94708     }
94709 
setFlagsVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94710     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
94711     {
94712       flags = flags_;
94713       return *this;
94714     }
94715 
setInitialDataSizeVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94716     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT
94717     {
94718       initialDataSize = initialDataSize_;
94719       return *this;
94720     }
94721 
setPInitialDataVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94722     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPInitialData( const void * pInitialData_ ) VULKAN_HPP_NOEXCEPT
94723     {
94724       pInitialData = pInitialData_;
94725       return *this;
94726     }
94727 
94728 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
94729     template <typename T>
setInitialDataVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94730     PipelineCacheCreateInfo & setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_ ) VULKAN_HPP_NOEXCEPT
94731     {
94732       initialDataSize = initialData_.size() * sizeof( T );
94733       pInitialData    = initialData_.data();
94734       return *this;
94735     }
94736 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94737 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94738 
operator VkPipelineCacheCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94739     operator VkPipelineCacheCreateInfo const &() const VULKAN_HPP_NOEXCEPT
94740     {
94741       return *reinterpret_cast<const VkPipelineCacheCreateInfo *>( this );
94742     }
94743 
operator VkPipelineCacheCreateInfo&VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94744     operator VkPipelineCacheCreateInfo &() VULKAN_HPP_NOEXCEPT
94745     {
94746       return *reinterpret_cast<VkPipelineCacheCreateInfo *>( this );
94747     }
94748 
94749 #if defined( VULKAN_HPP_USE_REFLECT )
94750 #  if 14 <= VULKAN_HPP_CPP_VERSION
94751     auto
94752 #  else
94753     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94754                const void * const &,
94755                VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags const &,
94756                size_t const &,
94757                const void * const &>
94758 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94759       reflect() const VULKAN_HPP_NOEXCEPT
94760     {
94761       return std::tie( sType, pNext, flags, initialDataSize, pInitialData );
94762     }
94763 #endif
94764 
94765 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94766     auto operator<=>( PipelineCacheCreateInfo const & ) const = default;
94767 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94768     bool operator==( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
94769     {
94770 #  if defined( VULKAN_HPP_USE_REFLECT )
94771       return this->reflect() == rhs.reflect();
94772 #  else
94773       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( initialDataSize == rhs.initialDataSize ) &&
94774              ( pInitialData == rhs.pInitialData );
94775 #  endif
94776     }
94777 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo94778     bool operator!=( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
94779     {
94780       return !operator==( rhs );
94781     }
94782 #endif
94783 
94784   public:
94785     VULKAN_HPP_NAMESPACE::StructureType            sType           = StructureType::ePipelineCacheCreateInfo;
94786     const void *                                   pNext           = {};
94787     VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags           = {};
94788     size_t                                         initialDataSize = {};
94789     const void *                                   pInitialData    = {};
94790   };
94791 
94792   template <>
94793   struct CppType<StructureType, StructureType::ePipelineCacheCreateInfo>
94794   {
94795     using Type = PipelineCacheCreateInfo;
94796   };
94797 
94798   struct PipelineCacheHeaderVersionOne
94799   {
94800     using NativeType = VkPipelineCacheHeaderVersionOne;
94801 
94802 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
94803     VULKAN_HPP_CONSTEXPR_14
PipelineCacheHeaderVersionOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94804       PipelineCacheHeaderVersionOne( uint32_t                                         headerSize_    = {},
94805                                      VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion_ = VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion::eOne,
94806                                      uint32_t                                         vendorID_      = {},
94807                                      uint32_t                                         deviceID_      = {},
94808                                      std::array<uint8_t, VK_UUID_SIZE> const &        pipelineCacheUUID_ = {} ) VULKAN_HPP_NOEXCEPT
94809       : headerSize{ headerSize_ }
94810       , headerVersion{ headerVersion_ }
94811       , vendorID{ vendorID_ }
94812       , deviceID{ deviceID_ }
94813       , pipelineCacheUUID{ pipelineCacheUUID_ }
94814     {
94815     }
94816 
94817     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94818 
PipelineCacheHeaderVersionOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94819     PipelineCacheHeaderVersionOne( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT
94820       : PipelineCacheHeaderVersionOne( *reinterpret_cast<PipelineCacheHeaderVersionOne const *>( &rhs ) )
94821     {
94822     }
94823 
94824     PipelineCacheHeaderVersionOne & operator=( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94825 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94826 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94827     PipelineCacheHeaderVersionOne & operator=( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT
94828     {
94829       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne const *>( &rhs );
94830       return *this;
94831     }
94832 
94833 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setHeaderSizeVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94834     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setHeaderSize( uint32_t headerSize_ ) VULKAN_HPP_NOEXCEPT
94835     {
94836       headerSize = headerSize_;
94837       return *this;
94838     }
94839 
94840     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne &
setHeaderVersionVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94841       setHeaderVersion( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion_ ) VULKAN_HPP_NOEXCEPT
94842     {
94843       headerVersion = headerVersion_;
94844       return *this;
94845     }
94846 
setVendorIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94847     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setVendorID( uint32_t vendorID_ ) VULKAN_HPP_NOEXCEPT
94848     {
94849       vendorID = vendorID_;
94850       return *this;
94851     }
94852 
setDeviceIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94853     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setDeviceID( uint32_t deviceID_ ) VULKAN_HPP_NOEXCEPT
94854     {
94855       deviceID = deviceID_;
94856       return *this;
94857     }
94858 
setPipelineCacheUUIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94859     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setPipelineCacheUUID( std::array<uint8_t, VK_UUID_SIZE> pipelineCacheUUID_ ) VULKAN_HPP_NOEXCEPT
94860     {
94861       pipelineCacheUUID = pipelineCacheUUID_;
94862       return *this;
94863     }
94864 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94865 
operator VkPipelineCacheHeaderVersionOne const&VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94866     operator VkPipelineCacheHeaderVersionOne const &() const VULKAN_HPP_NOEXCEPT
94867     {
94868       return *reinterpret_cast<const VkPipelineCacheHeaderVersionOne *>( this );
94869     }
94870 
operator VkPipelineCacheHeaderVersionOne&VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94871     operator VkPipelineCacheHeaderVersionOne &() VULKAN_HPP_NOEXCEPT
94872     {
94873       return *reinterpret_cast<VkPipelineCacheHeaderVersionOne *>( this );
94874     }
94875 
94876 #if defined( VULKAN_HPP_USE_REFLECT )
94877 #  if 14 <= VULKAN_HPP_CPP_VERSION
94878     auto
94879 #  else
94880     std::tuple<uint32_t const &,
94881                VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion const &,
94882                uint32_t const &,
94883                uint32_t const &,
94884                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
94885 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94886       reflect() const VULKAN_HPP_NOEXCEPT
94887     {
94888       return std::tie( headerSize, headerVersion, vendorID, deviceID, pipelineCacheUUID );
94889     }
94890 #endif
94891 
94892 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94893     auto operator<=>( PipelineCacheHeaderVersionOne const & ) const = default;
94894 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94895     bool operator==( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT
94896     {
94897 #  if defined( VULKAN_HPP_USE_REFLECT )
94898       return this->reflect() == rhs.reflect();
94899 #  else
94900       return ( headerSize == rhs.headerSize ) && ( headerVersion == rhs.headerVersion ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) &&
94901              ( pipelineCacheUUID == rhs.pipelineCacheUUID );
94902 #  endif
94903     }
94904 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne94905     bool operator!=( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT
94906     {
94907       return !operator==( rhs );
94908     }
94909 #endif
94910 
94911   public:
94912     uint32_t                                                    headerSize        = {};
94913     VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion            headerVersion     = VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion::eOne;
94914     uint32_t                                                    vendorID          = {};
94915     uint32_t                                                    deviceID          = {};
94916     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> pipelineCacheUUID = {};
94917   };
94918 
94919   struct PipelineColorBlendAdvancedStateCreateInfoEXT
94920   {
94921     using NativeType = VkPipelineColorBlendAdvancedStateCreateInfoEXT;
94922 
94923     static const bool                                  allowDuplicate = false;
94924     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
94925 
94926 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
94927     VULKAN_HPP_CONSTEXPR
PipelineColorBlendAdvancedStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT94928       PipelineColorBlendAdvancedStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::Bool32          srcPremultiplied_ = {},
94929                                                     VULKAN_HPP_NAMESPACE::Bool32          dstPremultiplied_ = {},
94930                                                     VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated,
94931                                                     const void *                          pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
94932       : pNext{ pNext_ }
94933       , srcPremultiplied{ srcPremultiplied_ }
94934       , dstPremultiplied{ dstPremultiplied_ }
94935       , blendOverlap{ blendOverlap_ }
94936     {
94937     }
94938 
94939     VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94940 
PipelineColorBlendAdvancedStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT94941     PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
94942       : PipelineColorBlendAdvancedStateCreateInfoEXT( *reinterpret_cast<PipelineColorBlendAdvancedStateCreateInfoEXT const *>( &rhs ) )
94943     {
94944     }
94945 
94946     PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94947 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94948 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT94949     PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
94950     {
94951       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT const *>( &rhs );
94952       return *this;
94953     }
94954 
94955 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT94956     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94957     {
94958       pNext = pNext_;
94959       return *this;
94960     }
94961 
94962     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT &
setSrcPremultipliedVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT94963       setSrcPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ ) VULKAN_HPP_NOEXCEPT
94964     {
94965       srcPremultiplied = srcPremultiplied_;
94966       return *this;
94967     }
94968 
94969     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT &
setDstPremultipliedVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT94970       setDstPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ ) VULKAN_HPP_NOEXCEPT
94971     {
94972       dstPremultiplied = dstPremultiplied_;
94973       return *this;
94974     }
94975 
94976     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT &
setBlendOverlapVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT94977       setBlendOverlap( VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ ) VULKAN_HPP_NOEXCEPT
94978     {
94979       blendOverlap = blendOverlap_;
94980       return *this;
94981     }
94982 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94983 
operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT94984     operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
94985     {
94986       return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT *>( this );
94987     }
94988 
operator VkPipelineColorBlendAdvancedStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT94989     operator VkPipelineColorBlendAdvancedStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
94990     {
94991       return *reinterpret_cast<VkPipelineColorBlendAdvancedStateCreateInfoEXT *>( this );
94992     }
94993 
94994 #if defined( VULKAN_HPP_USE_REFLECT )
94995 #  if 14 <= VULKAN_HPP_CPP_VERSION
94996     auto
94997 #  else
94998     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94999                const void * const &,
95000                VULKAN_HPP_NAMESPACE::Bool32 const &,
95001                VULKAN_HPP_NAMESPACE::Bool32 const &,
95002                VULKAN_HPP_NAMESPACE::BlendOverlapEXT const &>
95003 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT95004       reflect() const VULKAN_HPP_NOEXCEPT
95005     {
95006       return std::tie( sType, pNext, srcPremultiplied, dstPremultiplied, blendOverlap );
95007     }
95008 #endif
95009 
95010 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95011     auto operator<=>( PipelineColorBlendAdvancedStateCreateInfoEXT const & ) const = default;
95012 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT95013     bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95014     {
95015 #  if defined( VULKAN_HPP_USE_REFLECT )
95016       return this->reflect() == rhs.reflect();
95017 #  else
95018       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcPremultiplied == rhs.srcPremultiplied ) && ( dstPremultiplied == rhs.dstPremultiplied ) &&
95019              ( blendOverlap == rhs.blendOverlap );
95020 #  endif
95021     }
95022 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT95023     bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95024     {
95025       return !operator==( rhs );
95026     }
95027 #endif
95028 
95029   public:
95030     VULKAN_HPP_NAMESPACE::StructureType   sType            = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
95031     const void *                          pNext            = {};
95032     VULKAN_HPP_NAMESPACE::Bool32          srcPremultiplied = {};
95033     VULKAN_HPP_NAMESPACE::Bool32          dstPremultiplied = {};
95034     VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap     = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated;
95035   };
95036 
95037   template <>
95038   struct CppType<StructureType, StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT>
95039   {
95040     using Type = PipelineColorBlendAdvancedStateCreateInfoEXT;
95041   };
95042 
95043   struct PipelineColorWriteCreateInfoEXT
95044   {
95045     using NativeType = VkPipelineColorWriteCreateInfoEXT;
95046 
95047     static const bool                                  allowDuplicate = false;
95048     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineColorWriteCreateInfoEXT;
95049 
95050 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95051     VULKAN_HPP_CONSTEXPR PipelineColorWriteCreateInfoEXT( uint32_t                             attachmentCount_    = {},
95052                                                           const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables_ = {},
95053                                                           const void *                         pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
95054       : pNext{ pNext_ }
95055       , attachmentCount{ attachmentCount_ }
95056       , pColorWriteEnables{ pColorWriteEnables_ }
95057     {
95058     }
95059 
95060     VULKAN_HPP_CONSTEXPR PipelineColorWriteCreateInfoEXT( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95061 
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95062     PipelineColorWriteCreateInfoEXT( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
95063       : PipelineColorWriteCreateInfoEXT( *reinterpret_cast<PipelineColorWriteCreateInfoEXT const *>( &rhs ) )
95064     {
95065     }
95066 
95067 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95068     PipelineColorWriteCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables_,
95069                                      const void *                                                                              pNext_ = nullptr )
95070       : pNext( pNext_ ), attachmentCount( static_cast<uint32_t>( colorWriteEnables_.size() ) ), pColorWriteEnables( colorWriteEnables_.data() )
95071     {
95072     }
95073 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
95074 
95075     PipelineColorWriteCreateInfoEXT & operator=( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95076 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95077 
operator =VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95078     PipelineColorWriteCreateInfoEXT & operator=( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
95079     {
95080       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT const *>( &rhs );
95081       return *this;
95082     }
95083 
95084 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95085     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95086     {
95087       pNext = pNext_;
95088       return *this;
95089     }
95090 
setAttachmentCountVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95091     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
95092     {
95093       attachmentCount = attachmentCount_;
95094       return *this;
95095     }
95096 
95097     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT &
setPColorWriteEnablesVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95098       setPColorWriteEnables( const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables_ ) VULKAN_HPP_NOEXCEPT
95099     {
95100       pColorWriteEnables = pColorWriteEnables_;
95101       return *this;
95102     }
95103 
95104 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
95105     PipelineColorWriteCreateInfoEXT &
setColorWriteEnablesVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95106       setColorWriteEnables( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables_ ) VULKAN_HPP_NOEXCEPT
95107     {
95108       attachmentCount    = static_cast<uint32_t>( colorWriteEnables_.size() );
95109       pColorWriteEnables = colorWriteEnables_.data();
95110       return *this;
95111     }
95112 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
95113 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95114 
operator VkPipelineColorWriteCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95115     operator VkPipelineColorWriteCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
95116     {
95117       return *reinterpret_cast<const VkPipelineColorWriteCreateInfoEXT *>( this );
95118     }
95119 
operator VkPipelineColorWriteCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95120     operator VkPipelineColorWriteCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
95121     {
95122       return *reinterpret_cast<VkPipelineColorWriteCreateInfoEXT *>( this );
95123     }
95124 
95125 #if defined( VULKAN_HPP_USE_REFLECT )
95126 #  if 14 <= VULKAN_HPP_CPP_VERSION
95127     auto
95128 #  else
95129     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Bool32 * const &>
95130 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95131       reflect() const VULKAN_HPP_NOEXCEPT
95132     {
95133       return std::tie( sType, pNext, attachmentCount, pColorWriteEnables );
95134     }
95135 #endif
95136 
95137 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95138     auto operator<=>( PipelineColorWriteCreateInfoEXT const & ) const = default;
95139 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95140     bool operator==( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95141     {
95142 #  if defined( VULKAN_HPP_USE_REFLECT )
95143       return this->reflect() == rhs.reflect();
95144 #  else
95145       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentCount == rhs.attachmentCount ) && ( pColorWriteEnables == rhs.pColorWriteEnables );
95146 #  endif
95147     }
95148 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT95149     bool operator!=( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95150     {
95151       return !operator==( rhs );
95152     }
95153 #endif
95154 
95155   public:
95156     VULKAN_HPP_NAMESPACE::StructureType  sType              = StructureType::ePipelineColorWriteCreateInfoEXT;
95157     const void *                         pNext              = {};
95158     uint32_t                             attachmentCount    = {};
95159     const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables = {};
95160   };
95161 
95162   template <>
95163   struct CppType<StructureType, StructureType::ePipelineColorWriteCreateInfoEXT>
95164   {
95165     using Type = PipelineColorWriteCreateInfoEXT;
95166   };
95167 
95168   struct PipelineCompilerControlCreateInfoAMD
95169   {
95170     using NativeType = VkPipelineCompilerControlCreateInfoAMD;
95171 
95172     static const bool                                  allowDuplicate = false;
95173     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCompilerControlCreateInfoAMD;
95174 
95175 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCompilerControlCreateInfoAMDVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD95176     VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags_ = {},
95177                                                                const void *                                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
95178       : pNext{ pNext_ }
95179       , compilerControlFlags{ compilerControlFlags_ }
95180     {
95181     }
95182 
95183     VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95184 
PipelineCompilerControlCreateInfoAMDVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD95185     PipelineCompilerControlCreateInfoAMD( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
95186       : PipelineCompilerControlCreateInfoAMD( *reinterpret_cast<PipelineCompilerControlCreateInfoAMD const *>( &rhs ) )
95187     {
95188     }
95189 
95190     PipelineCompilerControlCreateInfoAMD & operator=( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95191 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95192 
operator =VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD95193     PipelineCompilerControlCreateInfoAMD & operator=( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
95194     {
95195       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD const *>( &rhs );
95196       return *this;
95197     }
95198 
95199 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD95200     VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95201     {
95202       pNext = pNext_;
95203       return *this;
95204     }
95205 
95206     VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD &
setCompilerControlFlagsVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD95207       setCompilerControlFlags( VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags_ ) VULKAN_HPP_NOEXCEPT
95208     {
95209       compilerControlFlags = compilerControlFlags_;
95210       return *this;
95211     }
95212 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95213 
operator VkPipelineCompilerControlCreateInfoAMD const&VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD95214     operator VkPipelineCompilerControlCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT
95215     {
95216       return *reinterpret_cast<const VkPipelineCompilerControlCreateInfoAMD *>( this );
95217     }
95218 
operator VkPipelineCompilerControlCreateInfoAMD&VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD95219     operator VkPipelineCompilerControlCreateInfoAMD &() VULKAN_HPP_NOEXCEPT
95220     {
95221       return *reinterpret_cast<VkPipelineCompilerControlCreateInfoAMD *>( this );
95222     }
95223 
95224 #if defined( VULKAN_HPP_USE_REFLECT )
95225 #  if 14 <= VULKAN_HPP_CPP_VERSION
95226     auto
95227 #  else
95228     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD const &>
95229 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD95230       reflect() const VULKAN_HPP_NOEXCEPT
95231     {
95232       return std::tie( sType, pNext, compilerControlFlags );
95233     }
95234 #endif
95235 
95236 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95237     auto operator<=>( PipelineCompilerControlCreateInfoAMD const & ) const = default;
95238 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD95239     bool operator==( PipelineCompilerControlCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
95240     {
95241 #  if defined( VULKAN_HPP_USE_REFLECT )
95242       return this->reflect() == rhs.reflect();
95243 #  else
95244       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( compilerControlFlags == rhs.compilerControlFlags );
95245 #  endif
95246     }
95247 
operator !=VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD95248     bool operator!=( PipelineCompilerControlCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
95249     {
95250       return !operator==( rhs );
95251     }
95252 #endif
95253 
95254   public:
95255     VULKAN_HPP_NAMESPACE::StructureType                   sType                = StructureType::ePipelineCompilerControlCreateInfoAMD;
95256     const void *                                          pNext                = {};
95257     VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags = {};
95258   };
95259 
95260   template <>
95261   struct CppType<StructureType, StructureType::ePipelineCompilerControlCreateInfoAMD>
95262   {
95263     using Type = PipelineCompilerControlCreateInfoAMD;
95264   };
95265 
95266   struct PipelineCoverageModulationStateCreateInfoNV
95267   {
95268     using NativeType = VkPipelineCoverageModulationStateCreateInfoNV;
95269 
95270     static const bool                                  allowDuplicate = false;
95271     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCoverageModulationStateCreateInfoNV;
95272 
95273 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCoverageModulationStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95274     VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV(
95275       VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_                         = {},
95276       VULKAN_HPP_NAMESPACE::CoverageModulationModeNV                     coverageModulationMode_        = VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone,
95277       VULKAN_HPP_NAMESPACE::Bool32                                       coverageModulationTableEnable_ = {},
95278       uint32_t                                                           coverageModulationTableCount_  = {},
95279       const float *                                                      pCoverageModulationTable_      = {},
95280       const void *                                                       pNext_                         = nullptr ) VULKAN_HPP_NOEXCEPT
95281       : pNext{ pNext_ }
95282       , flags{ flags_ }
95283       , coverageModulationMode{ coverageModulationMode_ }
95284       , coverageModulationTableEnable{ coverageModulationTableEnable_ }
95285       , coverageModulationTableCount{ coverageModulationTableCount_ }
95286       , pCoverageModulationTable{ pCoverageModulationTable_ }
95287     {
95288     }
95289 
95290     VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95291 
PipelineCoverageModulationStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95292     PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
95293       : PipelineCoverageModulationStateCreateInfoNV( *reinterpret_cast<PipelineCoverageModulationStateCreateInfoNV const *>( &rhs ) )
95294     {
95295     }
95296 
95297 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineCoverageModulationStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95298     PipelineCoverageModulationStateCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_,
95299                                                  VULKAN_HPP_NAMESPACE::CoverageModulationModeNV                     coverageModulationMode_,
95300                                                  VULKAN_HPP_NAMESPACE::Bool32                                       coverageModulationTableEnable_,
95301                                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & coverageModulationTable_,
95302                                                  const void *                                                       pNext_ = nullptr )
95303       : pNext( pNext_ )
95304       , flags( flags_ )
95305       , coverageModulationMode( coverageModulationMode_ )
95306       , coverageModulationTableEnable( coverageModulationTableEnable_ )
95307       , coverageModulationTableCount( static_cast<uint32_t>( coverageModulationTable_.size() ) )
95308       , pCoverageModulationTable( coverageModulationTable_.data() )
95309     {
95310     }
95311 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
95312 
95313     PipelineCoverageModulationStateCreateInfoNV & operator=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95314 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95315 
operator =VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95316     PipelineCoverageModulationStateCreateInfoNV & operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
95317     {
95318       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV const *>( &rhs );
95319       return *this;
95320     }
95321 
95322 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95323     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95324     {
95325       pNext = pNext_;
95326       return *this;
95327     }
95328 
95329     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95330       setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
95331     {
95332       flags = flags_;
95333       return *this;
95334     }
95335 
95336     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setCoverageModulationModeVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95337       setCoverageModulationMode( VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode_ ) VULKAN_HPP_NOEXCEPT
95338     {
95339       coverageModulationMode = coverageModulationMode_;
95340       return *this;
95341     }
95342 
95343     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setCoverageModulationTableEnableVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95344       setCoverageModulationTableEnable( VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_ ) VULKAN_HPP_NOEXCEPT
95345     {
95346       coverageModulationTableEnable = coverageModulationTableEnable_;
95347       return *this;
95348     }
95349 
95350     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setCoverageModulationTableCountVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95351       setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ ) VULKAN_HPP_NOEXCEPT
95352     {
95353       coverageModulationTableCount = coverageModulationTableCount_;
95354       return *this;
95355     }
95356 
95357     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setPCoverageModulationTableVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95358       setPCoverageModulationTable( const float * pCoverageModulationTable_ ) VULKAN_HPP_NOEXCEPT
95359     {
95360       pCoverageModulationTable = pCoverageModulationTable_;
95361       return *this;
95362     }
95363 
95364 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
95365     PipelineCoverageModulationStateCreateInfoNV &
setCoverageModulationTableVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95366       setCoverageModulationTable( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & coverageModulationTable_ ) VULKAN_HPP_NOEXCEPT
95367     {
95368       coverageModulationTableCount = static_cast<uint32_t>( coverageModulationTable_.size() );
95369       pCoverageModulationTable     = coverageModulationTable_.data();
95370       return *this;
95371     }
95372 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
95373 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95374 
operator VkPipelineCoverageModulationStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95375     operator VkPipelineCoverageModulationStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
95376     {
95377       return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV *>( this );
95378     }
95379 
operator VkPipelineCoverageModulationStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95380     operator VkPipelineCoverageModulationStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
95381     {
95382       return *reinterpret_cast<VkPipelineCoverageModulationStateCreateInfoNV *>( this );
95383     }
95384 
95385 #if defined( VULKAN_HPP_USE_REFLECT )
95386 #  if 14 <= VULKAN_HPP_CPP_VERSION
95387     auto
95388 #  else
95389     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95390                const void * const &,
95391                VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV const &,
95392                VULKAN_HPP_NAMESPACE::CoverageModulationModeNV const &,
95393                VULKAN_HPP_NAMESPACE::Bool32 const &,
95394                uint32_t const &,
95395                const float * const &>
95396 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95397       reflect() const VULKAN_HPP_NOEXCEPT
95398     {
95399       return std::tie( sType, pNext, flags, coverageModulationMode, coverageModulationTableEnable, coverageModulationTableCount, pCoverageModulationTable );
95400     }
95401 #endif
95402 
95403 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95404     auto operator<=>( PipelineCoverageModulationStateCreateInfoNV const & ) const = default;
95405 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95406     bool operator==( PipelineCoverageModulationStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
95407     {
95408 #  if defined( VULKAN_HPP_USE_REFLECT )
95409       return this->reflect() == rhs.reflect();
95410 #  else
95411       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( coverageModulationMode == rhs.coverageModulationMode ) &&
95412              ( coverageModulationTableEnable == rhs.coverageModulationTableEnable ) && ( coverageModulationTableCount == rhs.coverageModulationTableCount ) &&
95413              ( pCoverageModulationTable == rhs.pCoverageModulationTable );
95414 #  endif
95415     }
95416 
operator !=VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV95417     bool operator!=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
95418     {
95419       return !operator==( rhs );
95420     }
95421 #endif
95422 
95423   public:
95424     VULKAN_HPP_NAMESPACE::StructureType                                sType                  = StructureType::ePipelineCoverageModulationStateCreateInfoNV;
95425     const void *                                                       pNext                  = {};
95426     VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags                  = {};
95427     VULKAN_HPP_NAMESPACE::CoverageModulationModeNV                     coverageModulationMode = VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone;
95428     VULKAN_HPP_NAMESPACE::Bool32                                       coverageModulationTableEnable = {};
95429     uint32_t                                                           coverageModulationTableCount  = {};
95430     const float *                                                      pCoverageModulationTable      = {};
95431   };
95432 
95433   template <>
95434   struct CppType<StructureType, StructureType::ePipelineCoverageModulationStateCreateInfoNV>
95435   {
95436     using Type = PipelineCoverageModulationStateCreateInfoNV;
95437   };
95438 
95439   struct PipelineCoverageReductionStateCreateInfoNV
95440   {
95441     using NativeType = VkPipelineCoverageReductionStateCreateInfoNV;
95442 
95443     static const bool                                  allowDuplicate = false;
95444     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCoverageReductionStateCreateInfoNV;
95445 
95446 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCoverageReductionStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95447     VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV(
95448       VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags_                 = {},
95449       VULKAN_HPP_NAMESPACE::CoverageReductionModeNV                     coverageReductionMode_ = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge,
95450       const void *                                                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
95451       : pNext{ pNext_ }
95452       , flags{ flags_ }
95453       , coverageReductionMode{ coverageReductionMode_ }
95454     {
95455     }
95456 
95457     VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95458 
PipelineCoverageReductionStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95459     PipelineCoverageReductionStateCreateInfoNV( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
95460       : PipelineCoverageReductionStateCreateInfoNV( *reinterpret_cast<PipelineCoverageReductionStateCreateInfoNV const *>( &rhs ) )
95461     {
95462     }
95463 
95464     PipelineCoverageReductionStateCreateInfoNV & operator=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95465 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95466 
operator =VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95467     PipelineCoverageReductionStateCreateInfoNV & operator=( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
95468     {
95469       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV const *>( &rhs );
95470       return *this;
95471     }
95472 
95473 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95474     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95475     {
95476       pNext = pNext_;
95477       return *this;
95478     }
95479 
95480     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95481       setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
95482     {
95483       flags = flags_;
95484       return *this;
95485     }
95486 
95487     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV &
setCoverageReductionModeVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95488       setCoverageReductionMode( VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ ) VULKAN_HPP_NOEXCEPT
95489     {
95490       coverageReductionMode = coverageReductionMode_;
95491       return *this;
95492     }
95493 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95494 
operator VkPipelineCoverageReductionStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95495     operator VkPipelineCoverageReductionStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
95496     {
95497       return *reinterpret_cast<const VkPipelineCoverageReductionStateCreateInfoNV *>( this );
95498     }
95499 
operator VkPipelineCoverageReductionStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95500     operator VkPipelineCoverageReductionStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
95501     {
95502       return *reinterpret_cast<VkPipelineCoverageReductionStateCreateInfoNV *>( this );
95503     }
95504 
95505 #if defined( VULKAN_HPP_USE_REFLECT )
95506 #  if 14 <= VULKAN_HPP_CPP_VERSION
95507     auto
95508 #  else
95509     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95510                const void * const &,
95511                VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV const &,
95512                VULKAN_HPP_NAMESPACE::CoverageReductionModeNV const &>
95513 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95514       reflect() const VULKAN_HPP_NOEXCEPT
95515     {
95516       return std::tie( sType, pNext, flags, coverageReductionMode );
95517     }
95518 #endif
95519 
95520 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95521     auto operator<=>( PipelineCoverageReductionStateCreateInfoNV const & ) const = default;
95522 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95523     bool operator==( PipelineCoverageReductionStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
95524     {
95525 #  if defined( VULKAN_HPP_USE_REFLECT )
95526       return this->reflect() == rhs.reflect();
95527 #  else
95528       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( coverageReductionMode == rhs.coverageReductionMode );
95529 #  endif
95530     }
95531 
operator !=VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV95532     bool operator!=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
95533     {
95534       return !operator==( rhs );
95535     }
95536 #endif
95537 
95538   public:
95539     VULKAN_HPP_NAMESPACE::StructureType                               sType                 = StructureType::ePipelineCoverageReductionStateCreateInfoNV;
95540     const void *                                                      pNext                 = {};
95541     VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags                 = {};
95542     VULKAN_HPP_NAMESPACE::CoverageReductionModeNV                     coverageReductionMode = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge;
95543   };
95544 
95545   template <>
95546   struct CppType<StructureType, StructureType::ePipelineCoverageReductionStateCreateInfoNV>
95547   {
95548     using Type = PipelineCoverageReductionStateCreateInfoNV;
95549   };
95550 
95551   struct PipelineCoverageToColorStateCreateInfoNV
95552   {
95553     using NativeType = VkPipelineCoverageToColorStateCreateInfoNV;
95554 
95555     static const bool                                  allowDuplicate = false;
95556     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCoverageToColorStateCreateInfoNV;
95557 
95558 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCoverageToColorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95559     VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags_                 = {},
95560                                                                    VULKAN_HPP_NAMESPACE::Bool32                                    coverageToColorEnable_ = {},
95561                                                                    uint32_t     coverageToColorLocation_                                                  = {},
95562                                                                    const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
95563       : pNext{ pNext_ }
95564       , flags{ flags_ }
95565       , coverageToColorEnable{ coverageToColorEnable_ }
95566       , coverageToColorLocation{ coverageToColorLocation_ }
95567     {
95568     }
95569 
95570     VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95571 
PipelineCoverageToColorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95572     PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
95573       : PipelineCoverageToColorStateCreateInfoNV( *reinterpret_cast<PipelineCoverageToColorStateCreateInfoNV const *>( &rhs ) )
95574     {
95575     }
95576 
95577     PipelineCoverageToColorStateCreateInfoNV & operator=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95578 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95579 
operator =VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95580     PipelineCoverageToColorStateCreateInfoNV & operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
95581     {
95582       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV const *>( &rhs );
95583       return *this;
95584     }
95585 
95586 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95587     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95588     {
95589       pNext = pNext_;
95590       return *this;
95591     }
95592 
95593     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95594       setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
95595     {
95596       flags = flags_;
95597       return *this;
95598     }
95599 
95600     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV &
setCoverageToColorEnableVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95601       setCoverageToColorEnable( VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable_ ) VULKAN_HPP_NOEXCEPT
95602     {
95603       coverageToColorEnable = coverageToColorEnable_;
95604       return *this;
95605     }
95606 
setCoverageToColorLocationVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95607     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & setCoverageToColorLocation( uint32_t coverageToColorLocation_ ) VULKAN_HPP_NOEXCEPT
95608     {
95609       coverageToColorLocation = coverageToColorLocation_;
95610       return *this;
95611     }
95612 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95613 
operator VkPipelineCoverageToColorStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95614     operator VkPipelineCoverageToColorStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
95615     {
95616       return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV *>( this );
95617     }
95618 
operator VkPipelineCoverageToColorStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95619     operator VkPipelineCoverageToColorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
95620     {
95621       return *reinterpret_cast<VkPipelineCoverageToColorStateCreateInfoNV *>( this );
95622     }
95623 
95624 #if defined( VULKAN_HPP_USE_REFLECT )
95625 #  if 14 <= VULKAN_HPP_CPP_VERSION
95626     auto
95627 #  else
95628     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95629                const void * const &,
95630                VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV const &,
95631                VULKAN_HPP_NAMESPACE::Bool32 const &,
95632                uint32_t const &>
95633 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95634       reflect() const VULKAN_HPP_NOEXCEPT
95635     {
95636       return std::tie( sType, pNext, flags, coverageToColorEnable, coverageToColorLocation );
95637     }
95638 #endif
95639 
95640 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95641     auto operator<=>( PipelineCoverageToColorStateCreateInfoNV const & ) const = default;
95642 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95643     bool operator==( PipelineCoverageToColorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
95644     {
95645 #  if defined( VULKAN_HPP_USE_REFLECT )
95646       return this->reflect() == rhs.reflect();
95647 #  else
95648       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( coverageToColorEnable == rhs.coverageToColorEnable ) &&
95649              ( coverageToColorLocation == rhs.coverageToColorLocation );
95650 #  endif
95651     }
95652 
operator !=VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV95653     bool operator!=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
95654     {
95655       return !operator==( rhs );
95656     }
95657 #endif
95658 
95659   public:
95660     VULKAN_HPP_NAMESPACE::StructureType                             sType                   = StructureType::ePipelineCoverageToColorStateCreateInfoNV;
95661     const void *                                                    pNext                   = {};
95662     VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags                   = {};
95663     VULKAN_HPP_NAMESPACE::Bool32                                    coverageToColorEnable   = {};
95664     uint32_t                                                        coverageToColorLocation = {};
95665   };
95666 
95667   template <>
95668   struct CppType<StructureType, StructureType::ePipelineCoverageToColorStateCreateInfoNV>
95669   {
95670     using Type = PipelineCoverageToColorStateCreateInfoNV;
95671   };
95672 
95673   struct PipelineCreateFlags2CreateInfo
95674   {
95675     using NativeType = VkPipelineCreateFlags2CreateInfo;
95676 
95677     static const bool                                  allowDuplicate = false;
95678     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCreateFlags2CreateInfo;
95679 
95680 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCreateFlags2CreateInfoVULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo95681     VULKAN_HPP_CONSTEXPR PipelineCreateFlags2CreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags2 flags_ = {},
95682                                                          const void *                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
95683       : pNext{ pNext_ }
95684       , flags{ flags_ }
95685     {
95686     }
95687 
95688     VULKAN_HPP_CONSTEXPR PipelineCreateFlags2CreateInfo( PipelineCreateFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95689 
PipelineCreateFlags2CreateInfoVULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo95690     PipelineCreateFlags2CreateInfo( VkPipelineCreateFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
95691       : PipelineCreateFlags2CreateInfo( *reinterpret_cast<PipelineCreateFlags2CreateInfo const *>( &rhs ) )
95692     {
95693     }
95694 
95695     PipelineCreateFlags2CreateInfo & operator=( PipelineCreateFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95696 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95697 
operator =VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo95698     PipelineCreateFlags2CreateInfo & operator=( VkPipelineCreateFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
95699     {
95700       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo const *>( &rhs );
95701       return *this;
95702     }
95703 
95704 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo95705     VULKAN_HPP_CONSTEXPR_14 PipelineCreateFlags2CreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95706     {
95707       pNext = pNext_;
95708       return *this;
95709     }
95710 
setFlagsVULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo95711     VULKAN_HPP_CONSTEXPR_14 PipelineCreateFlags2CreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags2 flags_ ) VULKAN_HPP_NOEXCEPT
95712     {
95713       flags = flags_;
95714       return *this;
95715     }
95716 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95717 
operator VkPipelineCreateFlags2CreateInfo const&VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo95718     operator VkPipelineCreateFlags2CreateInfo const &() const VULKAN_HPP_NOEXCEPT
95719     {
95720       return *reinterpret_cast<const VkPipelineCreateFlags2CreateInfo *>( this );
95721     }
95722 
operator VkPipelineCreateFlags2CreateInfo&VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo95723     operator VkPipelineCreateFlags2CreateInfo &() VULKAN_HPP_NOEXCEPT
95724     {
95725       return *reinterpret_cast<VkPipelineCreateFlags2CreateInfo *>( this );
95726     }
95727 
95728 #if defined( VULKAN_HPP_USE_REFLECT )
95729 #  if 14 <= VULKAN_HPP_CPP_VERSION
95730     auto
95731 #  else
95732     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineCreateFlags2 const &>
95733 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo95734       reflect() const VULKAN_HPP_NOEXCEPT
95735     {
95736       return std::tie( sType, pNext, flags );
95737     }
95738 #endif
95739 
95740 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95741     auto operator<=>( PipelineCreateFlags2CreateInfo const & ) const = default;
95742 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo95743     bool operator==( PipelineCreateFlags2CreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
95744     {
95745 #  if defined( VULKAN_HPP_USE_REFLECT )
95746       return this->reflect() == rhs.reflect();
95747 #  else
95748       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
95749 #  endif
95750     }
95751 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo95752     bool operator!=( PipelineCreateFlags2CreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
95753     {
95754       return !operator==( rhs );
95755     }
95756 #endif
95757 
95758   public:
95759     VULKAN_HPP_NAMESPACE::StructureType        sType = StructureType::ePipelineCreateFlags2CreateInfo;
95760     const void *                               pNext = {};
95761     VULKAN_HPP_NAMESPACE::PipelineCreateFlags2 flags = {};
95762   };
95763 
95764   template <>
95765   struct CppType<StructureType, StructureType::ePipelineCreateFlags2CreateInfo>
95766   {
95767     using Type = PipelineCreateFlags2CreateInfo;
95768   };
95769 
95770   using PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo;
95771 
95772   struct PipelineCreationFeedback
95773   {
95774     using NativeType = VkPipelineCreationFeedback;
95775 
95776 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCreationFeedbackVULKAN_HPP_NAMESPACE::PipelineCreationFeedback95777     VULKAN_HPP_CONSTEXPR PipelineCreationFeedback( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags flags_    = {},
95778                                                    uint64_t                                            duration_ = {} ) VULKAN_HPP_NOEXCEPT
95779       : flags{ flags_ }
95780       , duration{ duration_ }
95781     {
95782     }
95783 
95784     VULKAN_HPP_CONSTEXPR PipelineCreationFeedback( PipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95785 
PipelineCreationFeedbackVULKAN_HPP_NAMESPACE::PipelineCreationFeedback95786     PipelineCreationFeedback( VkPipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT
95787       : PipelineCreationFeedback( *reinterpret_cast<PipelineCreationFeedback const *>( &rhs ) )
95788     {
95789     }
95790 
95791     PipelineCreationFeedback & operator=( PipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95792 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95793 
operator =VULKAN_HPP_NAMESPACE::PipelineCreationFeedback95794     PipelineCreationFeedback & operator=( VkPipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT
95795     {
95796       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreationFeedback const *>( &rhs );
95797       return *this;
95798     }
95799 
operator VkPipelineCreationFeedback const&VULKAN_HPP_NAMESPACE::PipelineCreationFeedback95800     operator VkPipelineCreationFeedback const &() const VULKAN_HPP_NOEXCEPT
95801     {
95802       return *reinterpret_cast<const VkPipelineCreationFeedback *>( this );
95803     }
95804 
operator VkPipelineCreationFeedback&VULKAN_HPP_NAMESPACE::PipelineCreationFeedback95805     operator VkPipelineCreationFeedback &() VULKAN_HPP_NOEXCEPT
95806     {
95807       return *reinterpret_cast<VkPipelineCreationFeedback *>( this );
95808     }
95809 
95810 #if defined( VULKAN_HPP_USE_REFLECT )
95811 #  if 14 <= VULKAN_HPP_CPP_VERSION
95812     auto
95813 #  else
95814     std::tuple<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags const &, uint64_t const &>
95815 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreationFeedback95816       reflect() const VULKAN_HPP_NOEXCEPT
95817     {
95818       return std::tie( flags, duration );
95819     }
95820 #endif
95821 
95822 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95823     auto operator<=>( PipelineCreationFeedback const & ) const = default;
95824 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreationFeedback95825     bool operator==( PipelineCreationFeedback const & rhs ) const VULKAN_HPP_NOEXCEPT
95826     {
95827 #  if defined( VULKAN_HPP_USE_REFLECT )
95828       return this->reflect() == rhs.reflect();
95829 #  else
95830       return ( flags == rhs.flags ) && ( duration == rhs.duration );
95831 #  endif
95832     }
95833 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreationFeedback95834     bool operator!=( PipelineCreationFeedback const & rhs ) const VULKAN_HPP_NOEXCEPT
95835     {
95836       return !operator==( rhs );
95837     }
95838 #endif
95839 
95840   public:
95841     VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags flags    = {};
95842     uint64_t                                            duration = {};
95843   };
95844 
95845   using PipelineCreationFeedbackEXT = PipelineCreationFeedback;
95846 
95847   struct PipelineCreationFeedbackCreateInfo
95848   {
95849     using NativeType = VkPipelineCreationFeedbackCreateInfo;
95850 
95851     static const bool                                  allowDuplicate = false;
95852     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCreationFeedbackCreateInfo;
95853 
95854 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCreationFeedbackCreateInfoVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95855     VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback_          = {},
95856                                                              uint32_t                                         pipelineStageCreationFeedbackCount_ = {},
95857                                                              VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks_    = {},
95858                                                              const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
95859       : pNext{ pNext_ }
95860       , pPipelineCreationFeedback{ pPipelineCreationFeedback_ }
95861       , pipelineStageCreationFeedbackCount{ pipelineStageCreationFeedbackCount_ }
95862       , pPipelineStageCreationFeedbacks{ pPipelineStageCreationFeedbacks_ }
95863     {
95864     }
95865 
95866     VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfo( PipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95867 
PipelineCreationFeedbackCreateInfoVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95868     PipelineCreationFeedbackCreateInfo( VkPipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
95869       : PipelineCreationFeedbackCreateInfo( *reinterpret_cast<PipelineCreationFeedbackCreateInfo const *>( &rhs ) )
95870     {
95871     }
95872 
95873 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineCreationFeedbackCreateInfoVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95874     PipelineCreationFeedbackCreateInfo(
95875       VULKAN_HPP_NAMESPACE::PipelineCreationFeedback *                                                      pPipelineCreationFeedback_,
95876       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineCreationFeedback> const & pipelineStageCreationFeedbacks_,
95877       const void *                                                                                          pNext_ = nullptr )
95878       : pNext( pNext_ )
95879       , pPipelineCreationFeedback( pPipelineCreationFeedback_ )
95880       , pipelineStageCreationFeedbackCount( static_cast<uint32_t>( pipelineStageCreationFeedbacks_.size() ) )
95881       , pPipelineStageCreationFeedbacks( pipelineStageCreationFeedbacks_.data() )
95882     {
95883     }
95884 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
95885 
95886     PipelineCreationFeedbackCreateInfo & operator=( PipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95887 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95888 
operator =VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95889     PipelineCreationFeedbackCreateInfo & operator=( VkPipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
95890     {
95891       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo const *>( &rhs );
95892       return *this;
95893     }
95894 
95895 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95896     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95897     {
95898       pNext = pNext_;
95899       return *this;
95900     }
95901 
95902     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo &
setPPipelineCreationFeedbackVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95903       setPPipelineCreationFeedback( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback_ ) VULKAN_HPP_NOEXCEPT
95904     {
95905       pPipelineCreationFeedback = pPipelineCreationFeedback_;
95906       return *this;
95907     }
95908 
95909     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo &
setPipelineStageCreationFeedbackCountVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95910       setPipelineStageCreationFeedbackCount( uint32_t pipelineStageCreationFeedbackCount_ ) VULKAN_HPP_NOEXCEPT
95911     {
95912       pipelineStageCreationFeedbackCount = pipelineStageCreationFeedbackCount_;
95913       return *this;
95914     }
95915 
95916     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo &
setPPipelineStageCreationFeedbacksVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95917       setPPipelineStageCreationFeedbacks( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT
95918     {
95919       pPipelineStageCreationFeedbacks = pPipelineStageCreationFeedbacks_;
95920       return *this;
95921     }
95922 
95923 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelineStageCreationFeedbacksVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95924     PipelineCreationFeedbackCreateInfo & setPipelineStageCreationFeedbacks(
95925       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineCreationFeedback> const & pipelineStageCreationFeedbacks_ )
95926       VULKAN_HPP_NOEXCEPT
95927     {
95928       pipelineStageCreationFeedbackCount = static_cast<uint32_t>( pipelineStageCreationFeedbacks_.size() );
95929       pPipelineStageCreationFeedbacks    = pipelineStageCreationFeedbacks_.data();
95930       return *this;
95931     }
95932 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
95933 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95934 
operator VkPipelineCreationFeedbackCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95935     operator VkPipelineCreationFeedbackCreateInfo const &() const VULKAN_HPP_NOEXCEPT
95936     {
95937       return *reinterpret_cast<const VkPipelineCreationFeedbackCreateInfo *>( this );
95938     }
95939 
operator VkPipelineCreationFeedbackCreateInfo&VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95940     operator VkPipelineCreationFeedbackCreateInfo &() VULKAN_HPP_NOEXCEPT
95941     {
95942       return *reinterpret_cast<VkPipelineCreationFeedbackCreateInfo *>( this );
95943     }
95944 
95945 #if defined( VULKAN_HPP_USE_REFLECT )
95946 #  if 14 <= VULKAN_HPP_CPP_VERSION
95947     auto
95948 #  else
95949     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95950                const void * const &,
95951                VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * const &,
95952                uint32_t const &,
95953                VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * const &>
95954 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95955       reflect() const VULKAN_HPP_NOEXCEPT
95956     {
95957       return std::tie( sType, pNext, pPipelineCreationFeedback, pipelineStageCreationFeedbackCount, pPipelineStageCreationFeedbacks );
95958     }
95959 #endif
95960 
95961 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95962     auto operator<=>( PipelineCreationFeedbackCreateInfo const & ) const = default;
95963 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95964     bool operator==( PipelineCreationFeedbackCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
95965     {
95966 #  if defined( VULKAN_HPP_USE_REFLECT )
95967       return this->reflect() == rhs.reflect();
95968 #  else
95969       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pPipelineCreationFeedback == rhs.pPipelineCreationFeedback ) &&
95970              ( pipelineStageCreationFeedbackCount == rhs.pipelineStageCreationFeedbackCount ) &&
95971              ( pPipelineStageCreationFeedbacks == rhs.pPipelineStageCreationFeedbacks );
95972 #  endif
95973     }
95974 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo95975     bool operator!=( PipelineCreationFeedbackCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
95976     {
95977       return !operator==( rhs );
95978     }
95979 #endif
95980 
95981   public:
95982     VULKAN_HPP_NAMESPACE::StructureType              sType                              = StructureType::ePipelineCreationFeedbackCreateInfo;
95983     const void *                                     pNext                              = {};
95984     VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback          = {};
95985     uint32_t                                         pipelineStageCreationFeedbackCount = {};
95986     VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks    = {};
95987   };
95988 
95989   template <>
95990   struct CppType<StructureType, StructureType::ePipelineCreationFeedbackCreateInfo>
95991   {
95992     using Type = PipelineCreationFeedbackCreateInfo;
95993   };
95994 
95995   using PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo;
95996 
95997   struct PipelineDiscardRectangleStateCreateInfoEXT
95998   {
95999     using NativeType = VkPipelineDiscardRectangleStateCreateInfoEXT;
96000 
96001     static const bool                                  allowDuplicate = false;
96002     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
96003 
96004 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96005     VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT(
96006       VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_                 = {},
96007       VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT                     discardRectangleMode_  = VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive,
96008       uint32_t                                                          discardRectangleCount_ = {},
96009       const VULKAN_HPP_NAMESPACE::Rect2D *                              pDiscardRectangles_    = {},
96010       const void *                                                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
96011       : pNext{ pNext_ }
96012       , flags{ flags_ }
96013       , discardRectangleMode{ discardRectangleMode_ }
96014       , discardRectangleCount{ discardRectangleCount_ }
96015       , pDiscardRectangles{ pDiscardRectangles_ }
96016     {
96017     }
96018 
96019     VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96020 
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96021     PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
96022       : PipelineDiscardRectangleStateCreateInfoEXT( *reinterpret_cast<PipelineDiscardRectangleStateCreateInfoEXT const *>( &rhs ) )
96023     {
96024     }
96025 
96026 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96027     PipelineDiscardRectangleStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT                         flags_,
96028                                                 VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT                                             discardRectangleMode_,
96029                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles_,
96030                                                 const void *                                                                              pNext_ = nullptr )
96031       : pNext( pNext_ )
96032       , flags( flags_ )
96033       , discardRectangleMode( discardRectangleMode_ )
96034       , discardRectangleCount( static_cast<uint32_t>( discardRectangles_.size() ) )
96035       , pDiscardRectangles( discardRectangles_.data() )
96036     {
96037     }
96038 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
96039 
96040     PipelineDiscardRectangleStateCreateInfoEXT & operator=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96041 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96042 
operator =VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96043     PipelineDiscardRectangleStateCreateInfoEXT & operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
96044     {
96045       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT const *>( &rhs );
96046       return *this;
96047     }
96048 
96049 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96050     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96051     {
96052       pNext = pNext_;
96053       return *this;
96054     }
96055 
96056     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96057       setFlags( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
96058     {
96059       flags = flags_;
96060       return *this;
96061     }
96062 
96063     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setDiscardRectangleModeVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96064       setDiscardRectangleMode( VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_ ) VULKAN_HPP_NOEXCEPT
96065     {
96066       discardRectangleMode = discardRectangleMode_;
96067       return *this;
96068     }
96069 
setDiscardRectangleCountVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96070     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangleCount( uint32_t discardRectangleCount_ ) VULKAN_HPP_NOEXCEPT
96071     {
96072       discardRectangleCount = discardRectangleCount_;
96073       return *this;
96074     }
96075 
96076     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setPDiscardRectanglesVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96077       setPDiscardRectangles( const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles_ ) VULKAN_HPP_NOEXCEPT
96078     {
96079       pDiscardRectangles = pDiscardRectangles_;
96080       return *this;
96081     }
96082 
96083 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
96084     PipelineDiscardRectangleStateCreateInfoEXT &
setDiscardRectanglesVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96085       setDiscardRectangles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles_ ) VULKAN_HPP_NOEXCEPT
96086     {
96087       discardRectangleCount = static_cast<uint32_t>( discardRectangles_.size() );
96088       pDiscardRectangles    = discardRectangles_.data();
96089       return *this;
96090     }
96091 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
96092 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96093 
operator VkPipelineDiscardRectangleStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96094     operator VkPipelineDiscardRectangleStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
96095     {
96096       return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT *>( this );
96097     }
96098 
operator VkPipelineDiscardRectangleStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96099     operator VkPipelineDiscardRectangleStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
96100     {
96101       return *reinterpret_cast<VkPipelineDiscardRectangleStateCreateInfoEXT *>( this );
96102     }
96103 
96104 #if defined( VULKAN_HPP_USE_REFLECT )
96105 #  if 14 <= VULKAN_HPP_CPP_VERSION
96106     auto
96107 #  else
96108     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
96109                const void * const &,
96110                VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT const &,
96111                VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT const &,
96112                uint32_t const &,
96113                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
96114 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96115       reflect() const VULKAN_HPP_NOEXCEPT
96116     {
96117       return std::tie( sType, pNext, flags, discardRectangleMode, discardRectangleCount, pDiscardRectangles );
96118     }
96119 #endif
96120 
96121 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96122     auto operator<=>( PipelineDiscardRectangleStateCreateInfoEXT const & ) const = default;
96123 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96124     bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
96125     {
96126 #  if defined( VULKAN_HPP_USE_REFLECT )
96127       return this->reflect() == rhs.reflect();
96128 #  else
96129       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( discardRectangleMode == rhs.discardRectangleMode ) &&
96130              ( discardRectangleCount == rhs.discardRectangleCount ) && ( pDiscardRectangles == rhs.pDiscardRectangles );
96131 #  endif
96132     }
96133 
operator !=VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT96134     bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
96135     {
96136       return !operator==( rhs );
96137     }
96138 #endif
96139 
96140   public:
96141     VULKAN_HPP_NAMESPACE::StructureType                               sType                 = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
96142     const void *                                                      pNext                 = {};
96143     VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags                 = {};
96144     VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT                     discardRectangleMode  = VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive;
96145     uint32_t                                                          discardRectangleCount = {};
96146     const VULKAN_HPP_NAMESPACE::Rect2D *                              pDiscardRectangles    = {};
96147   };
96148 
96149   template <>
96150   struct CppType<StructureType, StructureType::ePipelineDiscardRectangleStateCreateInfoEXT>
96151   {
96152     using Type = PipelineDiscardRectangleStateCreateInfoEXT;
96153   };
96154 
96155   struct PipelineExecutableInfoKHR
96156   {
96157     using NativeType = VkPipelineExecutableInfoKHR;
96158 
96159     static const bool                                  allowDuplicate = false;
96160     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutableInfoKHR;
96161 
96162 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineExecutableInfoKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96163     VULKAN_HPP_CONSTEXPR PipelineExecutableInfoKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline_        = {},
96164                                                     uint32_t                       executableIndex_ = {},
96165                                                     const void *                   pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
96166       : pNext{ pNext_ }
96167       , pipeline{ pipeline_ }
96168       , executableIndex{ executableIndex_ }
96169     {
96170     }
96171 
96172     VULKAN_HPP_CONSTEXPR PipelineExecutableInfoKHR( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96173 
PipelineExecutableInfoKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96174     PipelineExecutableInfoKHR( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96175       : PipelineExecutableInfoKHR( *reinterpret_cast<PipelineExecutableInfoKHR const *>( &rhs ) )
96176     {
96177     }
96178 
96179     PipelineExecutableInfoKHR & operator=( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96180 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96181 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96182     PipelineExecutableInfoKHR & operator=( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96183     {
96184       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR const *>( &rhs );
96185       return *this;
96186     }
96187 
96188 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96189     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96190     {
96191       pNext = pNext_;
96192       return *this;
96193     }
96194 
setPipelineVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96195     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
96196     {
96197       pipeline = pipeline_;
96198       return *this;
96199     }
96200 
setExecutableIndexVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96201     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setExecutableIndex( uint32_t executableIndex_ ) VULKAN_HPP_NOEXCEPT
96202     {
96203       executableIndex = executableIndex_;
96204       return *this;
96205     }
96206 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96207 
operator VkPipelineExecutableInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96208     operator VkPipelineExecutableInfoKHR const &() const VULKAN_HPP_NOEXCEPT
96209     {
96210       return *reinterpret_cast<const VkPipelineExecutableInfoKHR *>( this );
96211     }
96212 
operator VkPipelineExecutableInfoKHR&VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96213     operator VkPipelineExecutableInfoKHR &() VULKAN_HPP_NOEXCEPT
96214     {
96215       return *reinterpret_cast<VkPipelineExecutableInfoKHR *>( this );
96216     }
96217 
96218 #if defined( VULKAN_HPP_USE_REFLECT )
96219 #  if 14 <= VULKAN_HPP_CPP_VERSION
96220     auto
96221 #  else
96222     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Pipeline const &, uint32_t const &>
96223 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96224       reflect() const VULKAN_HPP_NOEXCEPT
96225     {
96226       return std::tie( sType, pNext, pipeline, executableIndex );
96227     }
96228 #endif
96229 
96230 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96231     auto operator<=>( PipelineExecutableInfoKHR const & ) const = default;
96232 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96233     bool operator==( PipelineExecutableInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96234     {
96235 #  if defined( VULKAN_HPP_USE_REFLECT )
96236       return this->reflect() == rhs.reflect();
96237 #  else
96238       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline ) && ( executableIndex == rhs.executableIndex );
96239 #  endif
96240     }
96241 
operator !=VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR96242     bool operator!=( PipelineExecutableInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96243     {
96244       return !operator==( rhs );
96245     }
96246 #endif
96247 
96248   public:
96249     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePipelineExecutableInfoKHR;
96250     const void *                        pNext           = {};
96251     VULKAN_HPP_NAMESPACE::Pipeline      pipeline        = {};
96252     uint32_t                            executableIndex = {};
96253   };
96254 
96255   template <>
96256   struct CppType<StructureType, StructureType::ePipelineExecutableInfoKHR>
96257   {
96258     using Type = PipelineExecutableInfoKHR;
96259   };
96260 
96261   struct PipelineExecutableInternalRepresentationKHR
96262   {
96263     using NativeType = VkPipelineExecutableInternalRepresentationKHR;
96264 
96265     static const bool                                  allowDuplicate = false;
96266     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutableInternalRepresentationKHR;
96267 
96268 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineExecutableInternalRepresentationKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR96269     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInternalRepresentationKHR( std::array<char, VK_MAX_DESCRIPTION_SIZE> const & name_        = {},
96270                                                                          std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_ = {},
96271                                                                          VULKAN_HPP_NAMESPACE::Bool32                      isText_      = {},
96272                                                                          size_t                                            dataSize_    = {},
96273                                                                          void *                                            pData_       = {},
96274                                                                          void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
96275       : pNext{ pNext_ }
96276       , name{ name_ }
96277       , description{ description_ }
96278       , isText{ isText_ }
96279       , dataSize{ dataSize_ }
96280       , pData{ pData_ }
96281     {
96282     }
96283 
96284     VULKAN_HPP_CONSTEXPR_14
96285       PipelineExecutableInternalRepresentationKHR( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96286 
PipelineExecutableInternalRepresentationKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR96287     PipelineExecutableInternalRepresentationKHR( VkPipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96288       : PipelineExecutableInternalRepresentationKHR( *reinterpret_cast<PipelineExecutableInternalRepresentationKHR const *>( &rhs ) )
96289     {
96290     }
96291 
96292     PipelineExecutableInternalRepresentationKHR & operator=( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96293 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96294 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR96295     PipelineExecutableInternalRepresentationKHR & operator=( VkPipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96296     {
96297       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR const *>( &rhs );
96298       return *this;
96299     }
96300 
operator VkPipelineExecutableInternalRepresentationKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR96301     operator VkPipelineExecutableInternalRepresentationKHR const &() const VULKAN_HPP_NOEXCEPT
96302     {
96303       return *reinterpret_cast<const VkPipelineExecutableInternalRepresentationKHR *>( this );
96304     }
96305 
operator VkPipelineExecutableInternalRepresentationKHR&VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR96306     operator VkPipelineExecutableInternalRepresentationKHR &() VULKAN_HPP_NOEXCEPT
96307     {
96308       return *reinterpret_cast<VkPipelineExecutableInternalRepresentationKHR *>( this );
96309     }
96310 
96311 #if defined( VULKAN_HPP_USE_REFLECT )
96312 #  if 14 <= VULKAN_HPP_CPP_VERSION
96313     auto
96314 #  else
96315     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
96316                void * const &,
96317                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
96318                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
96319                VULKAN_HPP_NAMESPACE::Bool32 const &,
96320                size_t const &,
96321                void * const &>
96322 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR96323       reflect() const VULKAN_HPP_NOEXCEPT
96324     {
96325       return std::tie( sType, pNext, name, description, isText, dataSize, pData );
96326     }
96327 #endif
96328 
96329 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR96330     std::strong_ordering operator<=>( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96331     {
96332       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
96333         return cmp;
96334       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
96335         return cmp;
96336       if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 )
96337         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
96338       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
96339         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
96340       if ( auto cmp = isText <=> rhs.isText; cmp != 0 )
96341         return cmp;
96342       if ( auto cmp = dataSize <=> rhs.dataSize; cmp != 0 )
96343         return cmp;
96344       if ( auto cmp = pData <=> rhs.pData; cmp != 0 )
96345         return cmp;
96346 
96347       return std::strong_ordering::equivalent;
96348     }
96349 #endif
96350 
operator ==VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR96351     bool operator==( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96352     {
96353       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( strcmp( name, rhs.name ) == 0 ) && ( strcmp( description, rhs.description ) == 0 ) &&
96354              ( isText == rhs.isText ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
96355     }
96356 
operator !=VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR96357     bool operator!=( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96358     {
96359       return !operator==( rhs );
96360     }
96361 
96362   public:
96363     VULKAN_HPP_NAMESPACE::StructureType                                 sType       = StructureType::ePipelineExecutableInternalRepresentationKHR;
96364     void *                                                              pNext       = {};
96365     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name        = {};
96366     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
96367     VULKAN_HPP_NAMESPACE::Bool32                                        isText      = {};
96368     size_t                                                              dataSize    = {};
96369     void *                                                              pData       = {};
96370   };
96371 
96372   template <>
96373   struct CppType<StructureType, StructureType::ePipelineExecutableInternalRepresentationKHR>
96374   {
96375     using Type = PipelineExecutableInternalRepresentationKHR;
96376   };
96377 
96378   struct PipelineExecutablePropertiesKHR
96379   {
96380     using NativeType = VkPipelineExecutablePropertiesKHR;
96381 
96382     static const bool                                  allowDuplicate = false;
96383     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutablePropertiesKHR;
96384 
96385 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineExecutablePropertiesKHRVULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR96386     VULKAN_HPP_CONSTEXPR_14 PipelineExecutablePropertiesKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags            stages_       = {},
96387                                                              std::array<char, VK_MAX_DESCRIPTION_SIZE> const & name_         = {},
96388                                                              std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_  = {},
96389                                                              uint32_t                                          subgroupSize_ = {},
96390                                                              void *                                            pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
96391       : pNext{ pNext_ }
96392       , stages{ stages_ }
96393       , name{ name_ }
96394       , description{ description_ }
96395       , subgroupSize{ subgroupSize_ }
96396     {
96397     }
96398 
96399     VULKAN_HPP_CONSTEXPR_14 PipelineExecutablePropertiesKHR( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96400 
PipelineExecutablePropertiesKHRVULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR96401     PipelineExecutablePropertiesKHR( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96402       : PipelineExecutablePropertiesKHR( *reinterpret_cast<PipelineExecutablePropertiesKHR const *>( &rhs ) )
96403     {
96404     }
96405 
96406     PipelineExecutablePropertiesKHR & operator=( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96407 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96408 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR96409     PipelineExecutablePropertiesKHR & operator=( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96410     {
96411       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR const *>( &rhs );
96412       return *this;
96413     }
96414 
operator VkPipelineExecutablePropertiesKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR96415     operator VkPipelineExecutablePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
96416     {
96417       return *reinterpret_cast<const VkPipelineExecutablePropertiesKHR *>( this );
96418     }
96419 
operator VkPipelineExecutablePropertiesKHR&VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR96420     operator VkPipelineExecutablePropertiesKHR &() VULKAN_HPP_NOEXCEPT
96421     {
96422       return *reinterpret_cast<VkPipelineExecutablePropertiesKHR *>( this );
96423     }
96424 
96425 #if defined( VULKAN_HPP_USE_REFLECT )
96426 #  if 14 <= VULKAN_HPP_CPP_VERSION
96427     auto
96428 #  else
96429     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
96430                void * const &,
96431                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
96432                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
96433                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
96434                uint32_t const &>
96435 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR96436       reflect() const VULKAN_HPP_NOEXCEPT
96437     {
96438       return std::tie( sType, pNext, stages, name, description, subgroupSize );
96439     }
96440 #endif
96441 
96442 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR96443     std::strong_ordering operator<=>( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96444     {
96445       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
96446         return cmp;
96447       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
96448         return cmp;
96449       if ( auto cmp = stages <=> rhs.stages; cmp != 0 )
96450         return cmp;
96451       if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 )
96452         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
96453       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
96454         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
96455       if ( auto cmp = subgroupSize <=> rhs.subgroupSize; cmp != 0 )
96456         return cmp;
96457 
96458       return std::strong_ordering::equivalent;
96459     }
96460 #endif
96461 
operator ==VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR96462     bool operator==( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96463     {
96464       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stages == rhs.stages ) && ( strcmp( name, rhs.name ) == 0 ) &&
96465              ( strcmp( description, rhs.description ) == 0 ) && ( subgroupSize == rhs.subgroupSize );
96466     }
96467 
operator !=VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR96468     bool operator!=( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96469     {
96470       return !operator==( rhs );
96471     }
96472 
96473   public:
96474     VULKAN_HPP_NAMESPACE::StructureType                                 sType        = StructureType::ePipelineExecutablePropertiesKHR;
96475     void *                                                              pNext        = {};
96476     VULKAN_HPP_NAMESPACE::ShaderStageFlags                              stages       = {};
96477     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name         = {};
96478     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description  = {};
96479     uint32_t                                                            subgroupSize = {};
96480   };
96481 
96482   template <>
96483   struct CppType<StructureType, StructureType::ePipelineExecutablePropertiesKHR>
96484   {
96485     using Type = PipelineExecutablePropertiesKHR;
96486   };
96487 
96488   union PipelineExecutableStatisticValueKHR
96489   {
96490     using NativeType = VkPipelineExecutableStatisticValueKHR;
96491 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
96492 
PipelineExecutableStatisticValueKHR(VULKAN_HPP_NAMESPACE::Bool32 b32_={} )96493     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( VULKAN_HPP_NAMESPACE::Bool32 b32_ = {} ) : b32( b32_ ) {}
96494 
PipelineExecutableStatisticValueKHR(int64_t i64_)96495     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( int64_t i64_ ) : i64( i64_ ) {}
96496 
PipelineExecutableStatisticValueKHR(uint64_t u64_)96497     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( uint64_t u64_ ) : u64( u64_ ) {}
96498 
PipelineExecutableStatisticValueKHR(double f64_)96499     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( double f64_ ) : f64( f64_ ) {}
96500 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
96501 
96502 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setB32(VULKAN_HPP_NAMESPACE::Bool32 b32_)96503     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setB32( VULKAN_HPP_NAMESPACE::Bool32 b32_ ) VULKAN_HPP_NOEXCEPT
96504     {
96505       b32 = b32_;
96506       return *this;
96507     }
96508 
setI64(int64_t i64_)96509     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setI64( int64_t i64_ ) VULKAN_HPP_NOEXCEPT
96510     {
96511       i64 = i64_;
96512       return *this;
96513     }
96514 
setU64(uint64_t u64_)96515     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setU64( uint64_t u64_ ) VULKAN_HPP_NOEXCEPT
96516     {
96517       u64 = u64_;
96518       return *this;
96519     }
96520 
setF64(double f64_)96521     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setF64( double f64_ ) VULKAN_HPP_NOEXCEPT
96522     {
96523       f64 = f64_;
96524       return *this;
96525     }
96526 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
96527 
operator VkPipelineExecutableStatisticValueKHR const&() const96528     operator VkPipelineExecutableStatisticValueKHR const &() const
96529     {
96530       return *reinterpret_cast<const VkPipelineExecutableStatisticValueKHR *>( this );
96531     }
96532 
operator VkPipelineExecutableStatisticValueKHR&()96533     operator VkPipelineExecutableStatisticValueKHR &()
96534     {
96535       return *reinterpret_cast<VkPipelineExecutableStatisticValueKHR *>( this );
96536     }
96537 
96538 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
96539     VULKAN_HPP_NAMESPACE::Bool32 b32;
96540     int64_t                      i64;
96541     uint64_t                     u64;
96542     double                       f64;
96543 #else
96544     VkBool32 b32;
96545     int64_t  i64;
96546     uint64_t u64;
96547     double   f64;
96548 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
96549   };
96550 
96551   struct PipelineExecutableStatisticKHR
96552   {
96553     using NativeType = VkPipelineExecutableStatisticKHR;
96554 
96555     static const bool                                  allowDuplicate = false;
96556     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutableStatisticKHR;
96557 
96558 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineExecutableStatisticKHRVULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR96559     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticKHR(
96560       std::array<char, VK_MAX_DESCRIPTION_SIZE> const &          name_        = {},
96561       std::array<char, VK_MAX_DESCRIPTION_SIZE> const &          description_ = {},
96562       VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR format_      = VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32,
96563       VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR  value_       = {},
96564       void *                                                     pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
96565       : pNext{ pNext_ }
96566       , name{ name_ }
96567       , description{ description_ }
96568       , format{ format_ }
96569       , value{ value_ }
96570     {
96571     }
96572 
96573     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticKHR( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96574 
PipelineExecutableStatisticKHRVULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR96575     PipelineExecutableStatisticKHR( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96576       : PipelineExecutableStatisticKHR( *reinterpret_cast<PipelineExecutableStatisticKHR const *>( &rhs ) )
96577     {
96578     }
96579 
96580     PipelineExecutableStatisticKHR & operator=( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96581 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96582 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR96583     PipelineExecutableStatisticKHR & operator=( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96584     {
96585       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR const *>( &rhs );
96586       return *this;
96587     }
96588 
operator VkPipelineExecutableStatisticKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR96589     operator VkPipelineExecutableStatisticKHR const &() const VULKAN_HPP_NOEXCEPT
96590     {
96591       return *reinterpret_cast<const VkPipelineExecutableStatisticKHR *>( this );
96592     }
96593 
operator VkPipelineExecutableStatisticKHR&VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR96594     operator VkPipelineExecutableStatisticKHR &() VULKAN_HPP_NOEXCEPT
96595     {
96596       return *reinterpret_cast<VkPipelineExecutableStatisticKHR *>( this );
96597     }
96598 
96599 #if defined( VULKAN_HPP_USE_REFLECT )
96600 #  if 14 <= VULKAN_HPP_CPP_VERSION
96601     auto
96602 #  else
96603     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
96604                void * const &,
96605                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
96606                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
96607                VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR const &,
96608                VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR const &>
96609 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR96610       reflect() const VULKAN_HPP_NOEXCEPT
96611     {
96612       return std::tie( sType, pNext, name, description, format, value );
96613     }
96614 #endif
96615 
96616   public:
96617     VULKAN_HPP_NAMESPACE::StructureType                                 sType       = StructureType::ePipelineExecutableStatisticKHR;
96618     void *                                                              pNext       = {};
96619     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name        = {};
96620     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
96621     VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR          format      = VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32;
96622     VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR           value       = {};
96623   };
96624 
96625   template <>
96626   struct CppType<StructureType, StructureType::ePipelineExecutableStatisticKHR>
96627   {
96628     using Type = PipelineExecutableStatisticKHR;
96629   };
96630 
96631   struct PipelineFragmentShadingRateEnumStateCreateInfoNV
96632   {
96633     using NativeType = VkPipelineFragmentShadingRateEnumStateCreateInfoNV;
96634 
96635     static const bool                                  allowDuplicate = false;
96636     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV;
96637 
96638 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineFragmentShadingRateEnumStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96639     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV(
96640       VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType_ = VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize,
96641       VULKAN_HPP_NAMESPACE::FragmentShadingRateNV     shadingRate_     = VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel,
96642       std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &
96643         combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep, VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } },
96644       const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
96645       : pNext{ pNext_ }
96646       , shadingRateType{ shadingRateType_ }
96647       , shadingRate{ shadingRate_ }
96648       , combinerOps{ combinerOps_ }
96649     {
96650     }
96651 
96652     VULKAN_HPP_CONSTEXPR_14
96653       PipelineFragmentShadingRateEnumStateCreateInfoNV( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96654 
PipelineFragmentShadingRateEnumStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96655     PipelineFragmentShadingRateEnumStateCreateInfoNV( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
96656       : PipelineFragmentShadingRateEnumStateCreateInfoNV( *reinterpret_cast<PipelineFragmentShadingRateEnumStateCreateInfoNV const *>( &rhs ) )
96657     {
96658     }
96659 
96660     PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96661 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96662 
operator =VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96663     PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
96664     {
96665       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV const *>( &rhs );
96666       return *this;
96667     }
96668 
96669 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96670     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96671     {
96672       pNext = pNext_;
96673       return *this;
96674     }
96675 
96676     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV &
setShadingRateTypeVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96677       setShadingRateType( VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType_ ) VULKAN_HPP_NOEXCEPT
96678     {
96679       shadingRateType = shadingRateType_;
96680       return *this;
96681     }
96682 
96683     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV &
setShadingRateVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96684       setShadingRate( VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate_ ) VULKAN_HPP_NOEXCEPT
96685     {
96686       shadingRate = shadingRate_;
96687       return *this;
96688     }
96689 
96690     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV &
setCombinerOpsVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96691       setCombinerOps( std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps_ ) VULKAN_HPP_NOEXCEPT
96692     {
96693       combinerOps = combinerOps_;
96694       return *this;
96695     }
96696 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96697 
operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96698     operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
96699     {
96700       return *reinterpret_cast<const VkPipelineFragmentShadingRateEnumStateCreateInfoNV *>( this );
96701     }
96702 
operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96703     operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
96704     {
96705       return *reinterpret_cast<VkPipelineFragmentShadingRateEnumStateCreateInfoNV *>( this );
96706     }
96707 
96708 #if defined( VULKAN_HPP_USE_REFLECT )
96709 #  if 14 <= VULKAN_HPP_CPP_VERSION
96710     auto
96711 #  else
96712     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
96713                const void * const &,
96714                VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV const &,
96715                VULKAN_HPP_NAMESPACE::FragmentShadingRateNV const &,
96716                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &>
96717 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96718       reflect() const VULKAN_HPP_NOEXCEPT
96719     {
96720       return std::tie( sType, pNext, shadingRateType, shadingRate, combinerOps );
96721     }
96722 #endif
96723 
96724 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96725     auto operator<=>( PipelineFragmentShadingRateEnumStateCreateInfoNV const & ) const = default;
96726 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96727     bool     operator==( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
96728     {
96729 #  if defined( VULKAN_HPP_USE_REFLECT )
96730       return this->reflect() == rhs.reflect();
96731 #  else
96732       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateType == rhs.shadingRateType ) && ( shadingRate == rhs.shadingRate ) &&
96733              ( combinerOps == rhs.combinerOps );
96734 #  endif
96735     }
96736 
operator !=VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV96737     bool operator!=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
96738     {
96739       return !operator==( rhs );
96740     }
96741 #endif
96742 
96743   public:
96744     VULKAN_HPP_NAMESPACE::StructureType             sType           = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV;
96745     const void *                                    pNext           = {};
96746     VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType = VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize;
96747     VULKAN_HPP_NAMESPACE::FragmentShadingRateNV     shadingRate     = VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel;
96748     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps = {};
96749   };
96750 
96751   template <>
96752   struct CppType<StructureType, StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV>
96753   {
96754     using Type = PipelineFragmentShadingRateEnumStateCreateInfoNV;
96755   };
96756 
96757   struct PipelineFragmentShadingRateStateCreateInfoKHR
96758   {
96759     using NativeType = VkPipelineFragmentShadingRateStateCreateInfoKHR;
96760 
96761     static const bool                                  allowDuplicate = false;
96762     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR;
96763 
96764 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineFragmentShadingRateStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96765     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR(
96766       VULKAN_HPP_NAMESPACE::Extent2D fragmentSize_ = {},
96767       std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &
96768         combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep, VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } },
96769       const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
96770       : pNext{ pNext_ }
96771       , fragmentSize{ fragmentSize_ }
96772       , combinerOps{ combinerOps_ }
96773     {
96774     }
96775 
96776     VULKAN_HPP_CONSTEXPR_14
96777       PipelineFragmentShadingRateStateCreateInfoKHR( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96778 
PipelineFragmentShadingRateStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96779     PipelineFragmentShadingRateStateCreateInfoKHR( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96780       : PipelineFragmentShadingRateStateCreateInfoKHR( *reinterpret_cast<PipelineFragmentShadingRateStateCreateInfoKHR const *>( &rhs ) )
96781     {
96782     }
96783 
96784     PipelineFragmentShadingRateStateCreateInfoKHR & operator=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96785 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96786 
operator =VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96787     PipelineFragmentShadingRateStateCreateInfoKHR & operator=( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96788     {
96789       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR const *>( &rhs );
96790       return *this;
96791     }
96792 
96793 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96794     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96795     {
96796       pNext = pNext_;
96797       return *this;
96798     }
96799 
96800     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR &
setFragmentSizeVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96801       setFragmentSize( VULKAN_HPP_NAMESPACE::Extent2D const & fragmentSize_ ) VULKAN_HPP_NOEXCEPT
96802     {
96803       fragmentSize = fragmentSize_;
96804       return *this;
96805     }
96806 
96807     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR &
setCombinerOpsVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96808       setCombinerOps( std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps_ ) VULKAN_HPP_NOEXCEPT
96809     {
96810       combinerOps = combinerOps_;
96811       return *this;
96812     }
96813 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96814 
operator VkPipelineFragmentShadingRateStateCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96815     operator VkPipelineFragmentShadingRateStateCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
96816     {
96817       return *reinterpret_cast<const VkPipelineFragmentShadingRateStateCreateInfoKHR *>( this );
96818     }
96819 
operator VkPipelineFragmentShadingRateStateCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96820     operator VkPipelineFragmentShadingRateStateCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
96821     {
96822       return *reinterpret_cast<VkPipelineFragmentShadingRateStateCreateInfoKHR *>( this );
96823     }
96824 
96825 #if defined( VULKAN_HPP_USE_REFLECT )
96826 #  if 14 <= VULKAN_HPP_CPP_VERSION
96827     auto
96828 #  else
96829     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
96830                const void * const &,
96831                VULKAN_HPP_NAMESPACE::Extent2D const &,
96832                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &>
96833 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96834       reflect() const VULKAN_HPP_NOEXCEPT
96835     {
96836       return std::tie( sType, pNext, fragmentSize, combinerOps );
96837     }
96838 #endif
96839 
96840 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96841     auto operator<=>( PipelineFragmentShadingRateStateCreateInfoKHR const & ) const = default;
96842 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96843     bool operator==( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96844     {
96845 #  if defined( VULKAN_HPP_USE_REFLECT )
96846       return this->reflect() == rhs.reflect();
96847 #  else
96848       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentSize == rhs.fragmentSize ) && ( combinerOps == rhs.combinerOps );
96849 #  endif
96850     }
96851 
operator !=VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR96852     bool operator!=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96853     {
96854       return !operator==( rhs );
96855     }
96856 #endif
96857 
96858   public:
96859     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR;
96860     const void *                        pNext        = {};
96861     VULKAN_HPP_NAMESPACE::Extent2D      fragmentSize = {};
96862     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps = {};
96863   };
96864 
96865   template <>
96866   struct CppType<StructureType, StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR>
96867   {
96868     using Type = PipelineFragmentShadingRateStateCreateInfoKHR;
96869   };
96870 
96871   struct PipelineIndirectDeviceAddressInfoNV
96872   {
96873     using NativeType = VkPipelineIndirectDeviceAddressInfoNV;
96874 
96875     static const bool                                  allowDuplicate = false;
96876     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineIndirectDeviceAddressInfoNV;
96877 
96878 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
96879     VULKAN_HPP_CONSTEXPR
PipelineIndirectDeviceAddressInfoNVVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96880       PipelineIndirectDeviceAddressInfoNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
96881                                            VULKAN_HPP_NAMESPACE::Pipeline          pipeline_          = {},
96882                                            const void *                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
96883       : pNext{ pNext_ }
96884       , pipelineBindPoint{ pipelineBindPoint_ }
96885       , pipeline{ pipeline_ }
96886     {
96887     }
96888 
96889     VULKAN_HPP_CONSTEXPR PipelineIndirectDeviceAddressInfoNV( PipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96890 
PipelineIndirectDeviceAddressInfoNVVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96891     PipelineIndirectDeviceAddressInfoNV( VkPipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
96892       : PipelineIndirectDeviceAddressInfoNV( *reinterpret_cast<PipelineIndirectDeviceAddressInfoNV const *>( &rhs ) )
96893     {
96894     }
96895 
96896     PipelineIndirectDeviceAddressInfoNV & operator=( PipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96897 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96898 
operator =VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96899     PipelineIndirectDeviceAddressInfoNV & operator=( VkPipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
96900     {
96901       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV const *>( &rhs );
96902       return *this;
96903     }
96904 
96905 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96906     VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96907     {
96908       pNext = pNext_;
96909       return *this;
96910     }
96911 
96912     VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV &
setPipelineBindPointVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96913       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
96914     {
96915       pipelineBindPoint = pipelineBindPoint_;
96916       return *this;
96917     }
96918 
setPipelineVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96919     VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
96920     {
96921       pipeline = pipeline_;
96922       return *this;
96923     }
96924 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96925 
operator VkPipelineIndirectDeviceAddressInfoNV const&VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96926     operator VkPipelineIndirectDeviceAddressInfoNV const &() const VULKAN_HPP_NOEXCEPT
96927     {
96928       return *reinterpret_cast<const VkPipelineIndirectDeviceAddressInfoNV *>( this );
96929     }
96930 
operator VkPipelineIndirectDeviceAddressInfoNV&VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96931     operator VkPipelineIndirectDeviceAddressInfoNV &() VULKAN_HPP_NOEXCEPT
96932     {
96933       return *reinterpret_cast<VkPipelineIndirectDeviceAddressInfoNV *>( this );
96934     }
96935 
96936 #if defined( VULKAN_HPP_USE_REFLECT )
96937 #  if 14 <= VULKAN_HPP_CPP_VERSION
96938     auto
96939 #  else
96940     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
96941                const void * const &,
96942                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
96943                VULKAN_HPP_NAMESPACE::Pipeline const &>
96944 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96945       reflect() const VULKAN_HPP_NOEXCEPT
96946     {
96947       return std::tie( sType, pNext, pipelineBindPoint, pipeline );
96948     }
96949 #endif
96950 
96951 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96952     auto operator<=>( PipelineIndirectDeviceAddressInfoNV const & ) const = default;
96953 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96954     bool operator==( PipelineIndirectDeviceAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
96955     {
96956 #  if defined( VULKAN_HPP_USE_REFLECT )
96957       return this->reflect() == rhs.reflect();
96958 #  else
96959       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipeline == rhs.pipeline );
96960 #  endif
96961     }
96962 
operator !=VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV96963     bool operator!=( PipelineIndirectDeviceAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
96964     {
96965       return !operator==( rhs );
96966     }
96967 #endif
96968 
96969   public:
96970     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::ePipelineIndirectDeviceAddressInfoNV;
96971     const void *                            pNext             = {};
96972     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
96973     VULKAN_HPP_NAMESPACE::Pipeline          pipeline          = {};
96974   };
96975 
96976   template <>
96977   struct CppType<StructureType, StructureType::ePipelineIndirectDeviceAddressInfoNV>
96978   {
96979     using Type = PipelineIndirectDeviceAddressInfoNV;
96980   };
96981 
96982   struct PipelineInfoKHR
96983   {
96984     using NativeType = VkPipelineInfoKHR;
96985 
96986     static const bool                                  allowDuplicate = false;
96987     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineInfoKHR;
96988 
96989 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineInfoKHRVULKAN_HPP_NAMESPACE::PipelineInfoKHR96990     VULKAN_HPP_CONSTEXPR PipelineInfoKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
96991       : pNext{ pNext_ }
96992       , pipeline{ pipeline_ }
96993     {
96994     }
96995 
96996     VULKAN_HPP_CONSTEXPR PipelineInfoKHR( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96997 
PipelineInfoKHRVULKAN_HPP_NAMESPACE::PipelineInfoKHR96998     PipelineInfoKHR( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PipelineInfoKHR( *reinterpret_cast<PipelineInfoKHR const *>( &rhs ) ) {}
96999 
97000     PipelineInfoKHR & operator=( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97001 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97002 
operator =VULKAN_HPP_NAMESPACE::PipelineInfoKHR97003     PipelineInfoKHR & operator=( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
97004     {
97005       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineInfoKHR const *>( &rhs );
97006       return *this;
97007     }
97008 
97009 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineInfoKHR97010     VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97011     {
97012       pNext = pNext_;
97013       return *this;
97014     }
97015 
setPipelineVULKAN_HPP_NAMESPACE::PipelineInfoKHR97016     VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
97017     {
97018       pipeline = pipeline_;
97019       return *this;
97020     }
97021 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97022 
operator VkPipelineInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineInfoKHR97023     operator VkPipelineInfoKHR const &() const VULKAN_HPP_NOEXCEPT
97024     {
97025       return *reinterpret_cast<const VkPipelineInfoKHR *>( this );
97026     }
97027 
operator VkPipelineInfoKHR&VULKAN_HPP_NAMESPACE::PipelineInfoKHR97028     operator VkPipelineInfoKHR &() VULKAN_HPP_NOEXCEPT
97029     {
97030       return *reinterpret_cast<VkPipelineInfoKHR *>( this );
97031     }
97032 
97033 #if defined( VULKAN_HPP_USE_REFLECT )
97034 #  if 14 <= VULKAN_HPP_CPP_VERSION
97035     auto
97036 #  else
97037     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Pipeline const &>
97038 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineInfoKHR97039       reflect() const VULKAN_HPP_NOEXCEPT
97040     {
97041       return std::tie( sType, pNext, pipeline );
97042     }
97043 #endif
97044 
97045 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97046     auto operator<=>( PipelineInfoKHR const & ) const = default;
97047 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineInfoKHR97048     bool operator==( PipelineInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
97049     {
97050 #  if defined( VULKAN_HPP_USE_REFLECT )
97051       return this->reflect() == rhs.reflect();
97052 #  else
97053       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline );
97054 #  endif
97055     }
97056 
operator !=VULKAN_HPP_NAMESPACE::PipelineInfoKHR97057     bool operator!=( PipelineInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
97058     {
97059       return !operator==( rhs );
97060     }
97061 #endif
97062 
97063   public:
97064     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::ePipelineInfoKHR;
97065     const void *                        pNext    = {};
97066     VULKAN_HPP_NAMESPACE::Pipeline      pipeline = {};
97067   };
97068 
97069   template <>
97070   struct CppType<StructureType, StructureType::ePipelineInfoKHR>
97071   {
97072     using Type = PipelineInfoKHR;
97073   };
97074 
97075   using PipelineInfoEXT = PipelineInfoKHR;
97076 
97077   struct PushConstantRange
97078   {
97079     using NativeType = VkPushConstantRange;
97080 
97081 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
97082     VULKAN_HPP_CONSTEXPR
PushConstantRangeVULKAN_HPP_NAMESPACE::PushConstantRange97083       PushConstantRange( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {}, uint32_t offset_ = {}, uint32_t size_ = {} ) VULKAN_HPP_NOEXCEPT
97084       : stageFlags{ stageFlags_ }
97085       , offset{ offset_ }
97086       , size{ size_ }
97087     {
97088     }
97089 
97090     VULKAN_HPP_CONSTEXPR PushConstantRange( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97091 
PushConstantRangeVULKAN_HPP_NAMESPACE::PushConstantRange97092     PushConstantRange( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT : PushConstantRange( *reinterpret_cast<PushConstantRange const *>( &rhs ) ) {}
97093 
97094     PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97095 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97096 
operator =VULKAN_HPP_NAMESPACE::PushConstantRange97097     PushConstantRange & operator=( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT
97098     {
97099       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushConstantRange const *>( &rhs );
97100       return *this;
97101     }
97102 
97103 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setStageFlagsVULKAN_HPP_NAMESPACE::PushConstantRange97104     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
97105     {
97106       stageFlags = stageFlags_;
97107       return *this;
97108     }
97109 
setOffsetVULKAN_HPP_NAMESPACE::PushConstantRange97110     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
97111     {
97112       offset = offset_;
97113       return *this;
97114     }
97115 
setSizeVULKAN_HPP_NAMESPACE::PushConstantRange97116     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
97117     {
97118       size = size_;
97119       return *this;
97120     }
97121 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97122 
operator VkPushConstantRange const&VULKAN_HPP_NAMESPACE::PushConstantRange97123     operator VkPushConstantRange const &() const VULKAN_HPP_NOEXCEPT
97124     {
97125       return *reinterpret_cast<const VkPushConstantRange *>( this );
97126     }
97127 
operator VkPushConstantRange&VULKAN_HPP_NAMESPACE::PushConstantRange97128     operator VkPushConstantRange &() VULKAN_HPP_NOEXCEPT
97129     {
97130       return *reinterpret_cast<VkPushConstantRange *>( this );
97131     }
97132 
97133 #if defined( VULKAN_HPP_USE_REFLECT )
97134 #  if 14 <= VULKAN_HPP_CPP_VERSION
97135     auto
97136 #  else
97137     std::tuple<VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, uint32_t const &, uint32_t const &>
97138 #  endif
reflectVULKAN_HPP_NAMESPACE::PushConstantRange97139       reflect() const VULKAN_HPP_NOEXCEPT
97140     {
97141       return std::tie( stageFlags, offset, size );
97142     }
97143 #endif
97144 
97145 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97146     auto operator<=>( PushConstantRange const & ) const = default;
97147 #else
operator ==VULKAN_HPP_NAMESPACE::PushConstantRange97148     bool operator==( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT
97149     {
97150 #  if defined( VULKAN_HPP_USE_REFLECT )
97151       return this->reflect() == rhs.reflect();
97152 #  else
97153       return ( stageFlags == rhs.stageFlags ) && ( offset == rhs.offset ) && ( size == rhs.size );
97154 #  endif
97155     }
97156 
operator !=VULKAN_HPP_NAMESPACE::PushConstantRange97157     bool operator!=( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT
97158     {
97159       return !operator==( rhs );
97160     }
97161 #endif
97162 
97163   public:
97164     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {};
97165     uint32_t                               offset     = {};
97166     uint32_t                               size       = {};
97167   };
97168 
97169   struct PipelineLayoutCreateInfo
97170   {
97171     using NativeType = VkPipelineLayoutCreateInfo;
97172 
97173     static const bool                                  allowDuplicate = false;
97174     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineLayoutCreateInfo;
97175 
97176 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97177     VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags   flags_                  = {},
97178                                                    uint32_t                                          setLayoutCount_         = {},
97179                                                    const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_            = {},
97180                                                    uint32_t                                          pushConstantRangeCount_ = {},
97181                                                    const VULKAN_HPP_NAMESPACE::PushConstantRange *   pPushConstantRanges_    = {},
97182                                                    const void *                                      pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
97183       : pNext{ pNext_ }
97184       , flags{ flags_ }
97185       , setLayoutCount{ setLayoutCount_ }
97186       , pSetLayouts{ pSetLayouts_ }
97187       , pushConstantRangeCount{ pushConstantRangeCount_ }
97188       , pPushConstantRanges{ pPushConstantRanges_ }
97189     {
97190     }
97191 
97192     VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97193 
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97194     PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
97195       : PipelineLayoutCreateInfo( *reinterpret_cast<PipelineLayoutCreateInfo const *>( &rhs ) )
97196     {
97197     }
97198 
97199 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97200     PipelineLayoutCreateInfo( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags                                                        flags_,
97201                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_,
97202                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const &   pushConstantRanges_ = {},
97203                               const void *                                                                                           pNext_ = nullptr )
97204       : pNext( pNext_ )
97205       , flags( flags_ )
97206       , setLayoutCount( static_cast<uint32_t>( setLayouts_.size() ) )
97207       , pSetLayouts( setLayouts_.data() )
97208       , pushConstantRangeCount( static_cast<uint32_t>( pushConstantRanges_.size() ) )
97209       , pPushConstantRanges( pushConstantRanges_.data() )
97210     {
97211     }
97212 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97213 
97214     PipelineLayoutCreateInfo & operator=( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97215 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97216 
operator =VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97217     PipelineLayoutCreateInfo & operator=( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
97218     {
97219       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const *>( &rhs );
97220       return *this;
97221     }
97222 
97223 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97224     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97225     {
97226       pNext = pNext_;
97227       return *this;
97228     }
97229 
setFlagsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97230     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
97231     {
97232       flags = flags_;
97233       return *this;
97234     }
97235 
setSetLayoutCountVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97236     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setSetLayoutCount( uint32_t setLayoutCount_ ) VULKAN_HPP_NOEXCEPT
97237     {
97238       setLayoutCount = setLayoutCount_;
97239       return *this;
97240     }
97241 
setPSetLayoutsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97242     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT
97243     {
97244       pSetLayouts = pSetLayouts_;
97245       return *this;
97246     }
97247 
97248 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
97249     PipelineLayoutCreateInfo &
setSetLayoutsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97250       setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_ ) VULKAN_HPP_NOEXCEPT
97251     {
97252       setLayoutCount = static_cast<uint32_t>( setLayouts_.size() );
97253       pSetLayouts    = setLayouts_.data();
97254       return *this;
97255     }
97256 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97257 
setPushConstantRangeCountVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97258     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) VULKAN_HPP_NOEXCEPT
97259     {
97260       pushConstantRangeCount = pushConstantRangeCount_;
97261       return *this;
97262     }
97263 
97264     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo &
setPPushConstantRangesVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97265       setPPushConstantRanges( const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
97266     {
97267       pPushConstantRanges = pPushConstantRanges_;
97268       return *this;
97269     }
97270 
97271 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPushConstantRangesVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97272     PipelineLayoutCreateInfo & setPushConstantRanges(
97273       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const & pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
97274     {
97275       pushConstantRangeCount = static_cast<uint32_t>( pushConstantRanges_.size() );
97276       pPushConstantRanges    = pushConstantRanges_.data();
97277       return *this;
97278     }
97279 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97280 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97281 
operator VkPipelineLayoutCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97282     operator VkPipelineLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT
97283     {
97284       return *reinterpret_cast<const VkPipelineLayoutCreateInfo *>( this );
97285     }
97286 
operator VkPipelineLayoutCreateInfo&VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97287     operator VkPipelineLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT
97288     {
97289       return *reinterpret_cast<VkPipelineLayoutCreateInfo *>( this );
97290     }
97291 
97292 #if defined( VULKAN_HPP_USE_REFLECT )
97293 #  if 14 <= VULKAN_HPP_CPP_VERSION
97294     auto
97295 #  else
97296     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
97297                const void * const &,
97298                VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags const &,
97299                uint32_t const &,
97300                const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &,
97301                uint32_t const &,
97302                const VULKAN_HPP_NAMESPACE::PushConstantRange * const &>
97303 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97304       reflect() const VULKAN_HPP_NOEXCEPT
97305     {
97306       return std::tie( sType, pNext, flags, setLayoutCount, pSetLayouts, pushConstantRangeCount, pPushConstantRanges );
97307     }
97308 #endif
97309 
97310 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97311     auto operator<=>( PipelineLayoutCreateInfo const & ) const = default;
97312 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97313     bool operator==( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
97314     {
97315 #  if defined( VULKAN_HPP_USE_REFLECT )
97316       return this->reflect() == rhs.reflect();
97317 #  else
97318       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( setLayoutCount == rhs.setLayoutCount ) &&
97319              ( pSetLayouts == rhs.pSetLayouts ) && ( pushConstantRangeCount == rhs.pushConstantRangeCount ) &&
97320              ( pPushConstantRanges == rhs.pPushConstantRanges );
97321 #  endif
97322     }
97323 
operator !=VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo97324     bool operator!=( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
97325     {
97326       return !operator==( rhs );
97327     }
97328 #endif
97329 
97330   public:
97331     VULKAN_HPP_NAMESPACE::StructureType               sType                  = StructureType::ePipelineLayoutCreateInfo;
97332     const void *                                      pNext                  = {};
97333     VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags   flags                  = {};
97334     uint32_t                                          setLayoutCount         = {};
97335     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts            = {};
97336     uint32_t                                          pushConstantRangeCount = {};
97337     const VULKAN_HPP_NAMESPACE::PushConstantRange *   pPushConstantRanges    = {};
97338   };
97339 
97340   template <>
97341   struct CppType<StructureType, StructureType::ePipelineLayoutCreateInfo>
97342   {
97343     using Type = PipelineLayoutCreateInfo;
97344   };
97345 
97346   struct PipelinePropertiesIdentifierEXT
97347   {
97348     using NativeType = VkPipelinePropertiesIdentifierEXT;
97349 
97350     static const bool                                  allowDuplicate = false;
97351     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelinePropertiesIdentifierEXT;
97352 
97353 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelinePropertiesIdentifierEXTVULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT97354     VULKAN_HPP_CONSTEXPR_14 PipelinePropertiesIdentifierEXT( std::array<uint8_t, VK_UUID_SIZE> const & pipelineIdentifier_ = {},
97355                                                              void *                                    pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
97356       : pNext{ pNext_ }
97357       , pipelineIdentifier{ pipelineIdentifier_ }
97358     {
97359     }
97360 
97361     VULKAN_HPP_CONSTEXPR_14 PipelinePropertiesIdentifierEXT( PipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97362 
PipelinePropertiesIdentifierEXTVULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT97363     PipelinePropertiesIdentifierEXT( VkPipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT
97364       : PipelinePropertiesIdentifierEXT( *reinterpret_cast<PipelinePropertiesIdentifierEXT const *>( &rhs ) )
97365     {
97366     }
97367 
97368     PipelinePropertiesIdentifierEXT & operator=( PipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97369 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97370 
operator =VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT97371     PipelinePropertiesIdentifierEXT & operator=( VkPipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT
97372     {
97373       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT const *>( &rhs );
97374       return *this;
97375     }
97376 
operator VkPipelinePropertiesIdentifierEXT const&VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT97377     operator VkPipelinePropertiesIdentifierEXT const &() const VULKAN_HPP_NOEXCEPT
97378     {
97379       return *reinterpret_cast<const VkPipelinePropertiesIdentifierEXT *>( this );
97380     }
97381 
operator VkPipelinePropertiesIdentifierEXT&VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT97382     operator VkPipelinePropertiesIdentifierEXT &() VULKAN_HPP_NOEXCEPT
97383     {
97384       return *reinterpret_cast<VkPipelinePropertiesIdentifierEXT *>( this );
97385     }
97386 
97387 #if defined( VULKAN_HPP_USE_REFLECT )
97388 #  if 14 <= VULKAN_HPP_CPP_VERSION
97389     auto
97390 #  else
97391     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
97392 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT97393       reflect() const VULKAN_HPP_NOEXCEPT
97394     {
97395       return std::tie( sType, pNext, pipelineIdentifier );
97396     }
97397 #endif
97398 
97399 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97400     auto operator<=>( PipelinePropertiesIdentifierEXT const & ) const = default;
97401 #else
operator ==VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT97402     bool operator==( PipelinePropertiesIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
97403     {
97404 #  if defined( VULKAN_HPP_USE_REFLECT )
97405       return this->reflect() == rhs.reflect();
97406 #  else
97407       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineIdentifier == rhs.pipelineIdentifier );
97408 #  endif
97409     }
97410 
operator !=VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT97411     bool operator!=( PipelinePropertiesIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
97412     {
97413       return !operator==( rhs );
97414     }
97415 #endif
97416 
97417   public:
97418     VULKAN_HPP_NAMESPACE::StructureType                         sType              = StructureType::ePipelinePropertiesIdentifierEXT;
97419     void *                                                      pNext              = {};
97420     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> pipelineIdentifier = {};
97421   };
97422 
97423   template <>
97424   struct CppType<StructureType, StructureType::ePipelinePropertiesIdentifierEXT>
97425   {
97426     using Type = PipelinePropertiesIdentifierEXT;
97427   };
97428 
97429   struct PipelineRasterizationConservativeStateCreateInfoEXT
97430   {
97431     using NativeType = VkPipelineRasterizationConservativeStateCreateInfoEXT;
97432 
97433     static const bool                                  allowDuplicate = false;
97434     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
97435 
97436 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationConservativeStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97437     VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT(
97438       VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_     = {},
97439       VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ = VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled,
97440       float                                                  extraPrimitiveOverestimationSize_ = {},
97441       const void *                                           pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
97442       : pNext{ pNext_ }
97443       , flags{ flags_ }
97444       , conservativeRasterizationMode{ conservativeRasterizationMode_ }
97445       , extraPrimitiveOverestimationSize{ extraPrimitiveOverestimationSize_ }
97446     {
97447     }
97448 
97449     VULKAN_HPP_CONSTEXPR
97450       PipelineRasterizationConservativeStateCreateInfoEXT( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97451 
PipelineRasterizationConservativeStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97452     PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
97453       : PipelineRasterizationConservativeStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationConservativeStateCreateInfoEXT const *>( &rhs ) )
97454     {
97455     }
97456 
97457     PipelineRasterizationConservativeStateCreateInfoEXT &
97458       operator=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97459 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97460 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97461     PipelineRasterizationConservativeStateCreateInfoEXT & operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
97462     {
97463       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT const *>( &rhs );
97464       return *this;
97465     }
97466 
97467 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97468     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97469     {
97470       pNext = pNext_;
97471       return *this;
97472     }
97473 
97474     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97475       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
97476     {
97477       flags = flags_;
97478       return *this;
97479     }
97480 
97481     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT &
setConservativeRasterizationModeVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97482       setConservativeRasterizationMode( VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
97483     {
97484       conservativeRasterizationMode = conservativeRasterizationMode_;
97485       return *this;
97486     }
97487 
97488     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT &
setExtraPrimitiveOverestimationSizeVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97489       setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ ) VULKAN_HPP_NOEXCEPT
97490     {
97491       extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_;
97492       return *this;
97493     }
97494 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97495 
operator VkPipelineRasterizationConservativeStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97496     operator VkPipelineRasterizationConservativeStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
97497     {
97498       return *reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT *>( this );
97499     }
97500 
operator VkPipelineRasterizationConservativeStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97501     operator VkPipelineRasterizationConservativeStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
97502     {
97503       return *reinterpret_cast<VkPipelineRasterizationConservativeStateCreateInfoEXT *>( this );
97504     }
97505 
97506 #if defined( VULKAN_HPP_USE_REFLECT )
97507 #  if 14 <= VULKAN_HPP_CPP_VERSION
97508     auto
97509 #  else
97510     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
97511                const void * const &,
97512                VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT const &,
97513                VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT const &,
97514                float const &>
97515 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97516       reflect() const VULKAN_HPP_NOEXCEPT
97517     {
97518       return std::tie( sType, pNext, flags, conservativeRasterizationMode, extraPrimitiveOverestimationSize );
97519     }
97520 #endif
97521 
97522 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97523     auto operator<=>( PipelineRasterizationConservativeStateCreateInfoEXT const & ) const = default;
97524 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97525     bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
97526     {
97527 #  if defined( VULKAN_HPP_USE_REFLECT )
97528       return this->reflect() == rhs.reflect();
97529 #  else
97530       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
97531              ( conservativeRasterizationMode == rhs.conservativeRasterizationMode ) &&
97532              ( extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize );
97533 #  endif
97534     }
97535 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT97536     bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
97537     {
97538       return !operator==( rhs );
97539     }
97540 #endif
97541 
97542   public:
97543     VULKAN_HPP_NAMESPACE::StructureType                                        sType     = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
97544     const void *                                                               pNext     = {};
97545     VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags     = {};
97546     VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode = VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled;
97547     float                                                  extraPrimitiveOverestimationSize = {};
97548   };
97549 
97550   template <>
97551   struct CppType<StructureType, StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT>
97552   {
97553     using Type = PipelineRasterizationConservativeStateCreateInfoEXT;
97554   };
97555 
97556   struct PipelineRasterizationDepthClipStateCreateInfoEXT
97557   {
97558     using NativeType = VkPipelineRasterizationDepthClipStateCreateInfoEXT;
97559 
97560     static const bool                                  allowDuplicate = false;
97561     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT;
97562 
97563 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationDepthClipStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97564     VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ = {},
97565                                                                            VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_                                  = {},
97566                                                                            const void *                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
97567       : pNext{ pNext_ }
97568       , flags{ flags_ }
97569       , depthClipEnable{ depthClipEnable_ }
97570     {
97571     }
97572 
97573     VULKAN_HPP_CONSTEXPR
97574       PipelineRasterizationDepthClipStateCreateInfoEXT( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97575 
PipelineRasterizationDepthClipStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97576     PipelineRasterizationDepthClipStateCreateInfoEXT( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
97577       : PipelineRasterizationDepthClipStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationDepthClipStateCreateInfoEXT const *>( &rhs ) )
97578     {
97579     }
97580 
97581     PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97582 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97583 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97584     PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
97585     {
97586       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT const *>( &rhs );
97587       return *this;
97588     }
97589 
97590 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97591     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97592     {
97593       pNext = pNext_;
97594       return *this;
97595     }
97596 
97597     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97598       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
97599     {
97600       flags = flags_;
97601       return *this;
97602     }
97603 
97604     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT &
setDepthClipEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97605       setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT
97606     {
97607       depthClipEnable = depthClipEnable_;
97608       return *this;
97609     }
97610 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97611 
operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97612     operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
97613     {
97614       return *reinterpret_cast<const VkPipelineRasterizationDepthClipStateCreateInfoEXT *>( this );
97615     }
97616 
operator VkPipelineRasterizationDepthClipStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97617     operator VkPipelineRasterizationDepthClipStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
97618     {
97619       return *reinterpret_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT *>( this );
97620     }
97621 
97622 #if defined( VULKAN_HPP_USE_REFLECT )
97623 #  if 14 <= VULKAN_HPP_CPP_VERSION
97624     auto
97625 #  else
97626     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
97627                const void * const &,
97628                VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT const &,
97629                VULKAN_HPP_NAMESPACE::Bool32 const &>
97630 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97631       reflect() const VULKAN_HPP_NOEXCEPT
97632     {
97633       return std::tie( sType, pNext, flags, depthClipEnable );
97634     }
97635 #endif
97636 
97637 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97638     auto operator<=>( PipelineRasterizationDepthClipStateCreateInfoEXT const & ) const = default;
97639 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97640     bool operator==( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
97641     {
97642 #  if defined( VULKAN_HPP_USE_REFLECT )
97643       return this->reflect() == rhs.reflect();
97644 #  else
97645       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( depthClipEnable == rhs.depthClipEnable );
97646 #  endif
97647     }
97648 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT97649     bool operator!=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
97650     {
97651       return !operator==( rhs );
97652     }
97653 #endif
97654 
97655   public:
97656     VULKAN_HPP_NAMESPACE::StructureType                                     sType           = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT;
97657     const void *                                                            pNext           = {};
97658     VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags           = {};
97659     VULKAN_HPP_NAMESPACE::Bool32                                            depthClipEnable = {};
97660   };
97661 
97662   template <>
97663   struct CppType<StructureType, StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT>
97664   {
97665     using Type = PipelineRasterizationDepthClipStateCreateInfoEXT;
97666   };
97667 
97668   struct PipelineRasterizationLineStateCreateInfo
97669   {
97670     using NativeType = VkPipelineRasterizationLineStateCreateInfo;
97671 
97672     static const bool                                  allowDuplicate = false;
97673     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationLineStateCreateInfo;
97674 
97675 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationLineStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97676     VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfo(
97677       VULKAN_HPP_NAMESPACE::LineRasterizationMode lineRasterizationMode_ = VULKAN_HPP_NAMESPACE::LineRasterizationMode::eDefault,
97678       VULKAN_HPP_NAMESPACE::Bool32                stippledLineEnable_    = {},
97679       uint32_t                                    lineStippleFactor_     = {},
97680       uint16_t                                    lineStipplePattern_    = {},
97681       const void *                                pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
97682       : pNext{ pNext_ }
97683       , lineRasterizationMode{ lineRasterizationMode_ }
97684       , stippledLineEnable{ stippledLineEnable_ }
97685       , lineStippleFactor{ lineStippleFactor_ }
97686       , lineStipplePattern{ lineStipplePattern_ }
97687     {
97688     }
97689 
97690     VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfo( PipelineRasterizationLineStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97691 
PipelineRasterizationLineStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97692     PipelineRasterizationLineStateCreateInfo( VkPipelineRasterizationLineStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
97693       : PipelineRasterizationLineStateCreateInfo( *reinterpret_cast<PipelineRasterizationLineStateCreateInfo const *>( &rhs ) )
97694     {
97695     }
97696 
97697     PipelineRasterizationLineStateCreateInfo & operator=( PipelineRasterizationLineStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97698 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97699 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97700     PipelineRasterizationLineStateCreateInfo & operator=( VkPipelineRasterizationLineStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
97701     {
97702       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo const *>( &rhs );
97703       return *this;
97704     }
97705 
97706 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97707     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97708     {
97709       pNext = pNext_;
97710       return *this;
97711     }
97712 
97713     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo &
setLineRasterizationModeVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97714       setLineRasterizationMode( VULKAN_HPP_NAMESPACE::LineRasterizationMode lineRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
97715     {
97716       lineRasterizationMode = lineRasterizationMode_;
97717       return *this;
97718     }
97719 
97720     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo &
setStippledLineEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97721       setStippledLineEnable( VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable_ ) VULKAN_HPP_NOEXCEPT
97722     {
97723       stippledLineEnable = stippledLineEnable_;
97724       return *this;
97725     }
97726 
setLineStippleFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97727     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo & setLineStippleFactor( uint32_t lineStippleFactor_ ) VULKAN_HPP_NOEXCEPT
97728     {
97729       lineStippleFactor = lineStippleFactor_;
97730       return *this;
97731     }
97732 
setLineStipplePatternVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97733     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo & setLineStipplePattern( uint16_t lineStipplePattern_ ) VULKAN_HPP_NOEXCEPT
97734     {
97735       lineStipplePattern = lineStipplePattern_;
97736       return *this;
97737     }
97738 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97739 
operator VkPipelineRasterizationLineStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97740     operator VkPipelineRasterizationLineStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
97741     {
97742       return *reinterpret_cast<const VkPipelineRasterizationLineStateCreateInfo *>( this );
97743     }
97744 
operator VkPipelineRasterizationLineStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97745     operator VkPipelineRasterizationLineStateCreateInfo &() VULKAN_HPP_NOEXCEPT
97746     {
97747       return *reinterpret_cast<VkPipelineRasterizationLineStateCreateInfo *>( this );
97748     }
97749 
97750 #if defined( VULKAN_HPP_USE_REFLECT )
97751 #  if 14 <= VULKAN_HPP_CPP_VERSION
97752     auto
97753 #  else
97754     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
97755                const void * const &,
97756                VULKAN_HPP_NAMESPACE::LineRasterizationMode const &,
97757                VULKAN_HPP_NAMESPACE::Bool32 const &,
97758                uint32_t const &,
97759                uint16_t const &>
97760 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97761       reflect() const VULKAN_HPP_NOEXCEPT
97762     {
97763       return std::tie( sType, pNext, lineRasterizationMode, stippledLineEnable, lineStippleFactor, lineStipplePattern );
97764     }
97765 #endif
97766 
97767 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97768     auto operator<=>( PipelineRasterizationLineStateCreateInfo const & ) const = default;
97769 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97770     bool operator==( PipelineRasterizationLineStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
97771     {
97772 #  if defined( VULKAN_HPP_USE_REFLECT )
97773       return this->reflect() == rhs.reflect();
97774 #  else
97775       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lineRasterizationMode == rhs.lineRasterizationMode ) &&
97776              ( stippledLineEnable == rhs.stippledLineEnable ) && ( lineStippleFactor == rhs.lineStippleFactor ) &&
97777              ( lineStipplePattern == rhs.lineStipplePattern );
97778 #  endif
97779     }
97780 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo97781     bool operator!=( PipelineRasterizationLineStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
97782     {
97783       return !operator==( rhs );
97784     }
97785 #endif
97786 
97787   public:
97788     VULKAN_HPP_NAMESPACE::StructureType         sType                 = StructureType::ePipelineRasterizationLineStateCreateInfo;
97789     const void *                                pNext                 = {};
97790     VULKAN_HPP_NAMESPACE::LineRasterizationMode lineRasterizationMode = VULKAN_HPP_NAMESPACE::LineRasterizationMode::eDefault;
97791     VULKAN_HPP_NAMESPACE::Bool32                stippledLineEnable    = {};
97792     uint32_t                                    lineStippleFactor     = {};
97793     uint16_t                                    lineStipplePattern    = {};
97794   };
97795 
97796   template <>
97797   struct CppType<StructureType, StructureType::ePipelineRasterizationLineStateCreateInfo>
97798   {
97799     using Type = PipelineRasterizationLineStateCreateInfo;
97800   };
97801 
97802   using PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo;
97803   using PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo;
97804 
97805   struct PipelineRasterizationProvokingVertexStateCreateInfoEXT
97806   {
97807     using NativeType = VkPipelineRasterizationProvokingVertexStateCreateInfoEXT;
97808 
97809     static const bool                                  allowDuplicate = false;
97810     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT;
97811 
97812 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationProvokingVertexStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT97813     VULKAN_HPP_CONSTEXPR PipelineRasterizationProvokingVertexStateCreateInfoEXT(
97814       VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode_ = VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT::eFirstVertex,
97815       const void *                                 pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
97816       : pNext{ pNext_ }
97817       , provokingVertexMode{ provokingVertexMode_ }
97818     {
97819     }
97820 
97821     VULKAN_HPP_CONSTEXPR PipelineRasterizationProvokingVertexStateCreateInfoEXT( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs )
97822       VULKAN_HPP_NOEXCEPT = default;
97823 
PipelineRasterizationProvokingVertexStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT97824     PipelineRasterizationProvokingVertexStateCreateInfoEXT( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
97825       : PipelineRasterizationProvokingVertexStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationProvokingVertexStateCreateInfoEXT const *>( &rhs ) )
97826     {
97827     }
97828 
97829     PipelineRasterizationProvokingVertexStateCreateInfoEXT &
97830       operator=( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97831 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97832 
97833     PipelineRasterizationProvokingVertexStateCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT97834       operator=( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
97835     {
97836       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT const *>( &rhs );
97837       return *this;
97838     }
97839 
97840 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT97841     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97842     {
97843       pNext = pNext_;
97844       return *this;
97845     }
97846 
97847     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT &
setProvokingVertexModeVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT97848       setProvokingVertexMode( VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode_ ) VULKAN_HPP_NOEXCEPT
97849     {
97850       provokingVertexMode = provokingVertexMode_;
97851       return *this;
97852     }
97853 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97854 
operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT97855     operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
97856     {
97857       return *reinterpret_cast<const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *>( this );
97858     }
97859 
operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT97860     operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
97861     {
97862       return *reinterpret_cast<VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *>( this );
97863     }
97864 
97865 #if defined( VULKAN_HPP_USE_REFLECT )
97866 #  if 14 <= VULKAN_HPP_CPP_VERSION
97867     auto
97868 #  else
97869     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT const &>
97870 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT97871       reflect() const VULKAN_HPP_NOEXCEPT
97872     {
97873       return std::tie( sType, pNext, provokingVertexMode );
97874     }
97875 #endif
97876 
97877 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97878     auto operator<=>( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & ) const = default;
97879 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT97880     bool operator==( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
97881     {
97882 #  if defined( VULKAN_HPP_USE_REFLECT )
97883       return this->reflect() == rhs.reflect();
97884 #  else
97885       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexMode == rhs.provokingVertexMode );
97886 #  endif
97887     }
97888 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT97889     bool operator!=( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
97890     {
97891       return !operator==( rhs );
97892     }
97893 #endif
97894 
97895   public:
97896     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT;
97897     const void *                                 pNext               = {};
97898     VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode = VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT::eFirstVertex;
97899   };
97900 
97901   template <>
97902   struct CppType<StructureType, StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT>
97903   {
97904     using Type = PipelineRasterizationProvokingVertexStateCreateInfoEXT;
97905   };
97906 
97907   struct PipelineRasterizationStateRasterizationOrderAMD
97908   {
97909     using NativeType = VkPipelineRasterizationStateRasterizationOrderAMD;
97910 
97911     static const bool                                  allowDuplicate = false;
97912     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
97913 
97914 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationStateRasterizationOrderAMDVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD97915     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateRasterizationOrderAMD(
97916       VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder_ = VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict,
97917       const void *                                pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
97918       : pNext{ pNext_ }
97919       , rasterizationOrder{ rasterizationOrder_ }
97920     {
97921     }
97922 
97923     VULKAN_HPP_CONSTEXPR
97924       PipelineRasterizationStateRasterizationOrderAMD( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97925 
PipelineRasterizationStateRasterizationOrderAMDVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD97926     PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT
97927       : PipelineRasterizationStateRasterizationOrderAMD( *reinterpret_cast<PipelineRasterizationStateRasterizationOrderAMD const *>( &rhs ) )
97928     {
97929     }
97930 
97931     PipelineRasterizationStateRasterizationOrderAMD & operator=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97932 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97933 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD97934     PipelineRasterizationStateRasterizationOrderAMD & operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT
97935     {
97936       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD const *>( &rhs );
97937       return *this;
97938     }
97939 
97940 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD97941     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97942     {
97943       pNext = pNext_;
97944       return *this;
97945     }
97946 
97947     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD &
setRasterizationOrderVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD97948       setRasterizationOrder( VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder_ ) VULKAN_HPP_NOEXCEPT
97949     {
97950       rasterizationOrder = rasterizationOrder_;
97951       return *this;
97952     }
97953 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97954 
operator VkPipelineRasterizationStateRasterizationOrderAMD const&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD97955     operator VkPipelineRasterizationStateRasterizationOrderAMD const &() const VULKAN_HPP_NOEXCEPT
97956     {
97957       return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD *>( this );
97958     }
97959 
operator VkPipelineRasterizationStateRasterizationOrderAMD&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD97960     operator VkPipelineRasterizationStateRasterizationOrderAMD &() VULKAN_HPP_NOEXCEPT
97961     {
97962       return *reinterpret_cast<VkPipelineRasterizationStateRasterizationOrderAMD *>( this );
97963     }
97964 
97965 #if defined( VULKAN_HPP_USE_REFLECT )
97966 #  if 14 <= VULKAN_HPP_CPP_VERSION
97967     auto
97968 #  else
97969     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RasterizationOrderAMD const &>
97970 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD97971       reflect() const VULKAN_HPP_NOEXCEPT
97972     {
97973       return std::tie( sType, pNext, rasterizationOrder );
97974     }
97975 #endif
97976 
97977 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97978     auto operator<=>( PipelineRasterizationStateRasterizationOrderAMD const & ) const = default;
97979 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD97980     bool operator==( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
97981     {
97982 #  if defined( VULKAN_HPP_USE_REFLECT )
97983       return this->reflect() == rhs.reflect();
97984 #  else
97985       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rasterizationOrder == rhs.rasterizationOrder );
97986 #  endif
97987     }
97988 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD97989     bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
97990     {
97991       return !operator==( rhs );
97992     }
97993 #endif
97994 
97995   public:
97996     VULKAN_HPP_NAMESPACE::StructureType         sType              = StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
97997     const void *                                pNext              = {};
97998     VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder = VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict;
97999   };
98000 
98001   template <>
98002   struct CppType<StructureType, StructureType::ePipelineRasterizationStateRasterizationOrderAMD>
98003   {
98004     using Type = PipelineRasterizationStateRasterizationOrderAMD;
98005   };
98006 
98007   struct PipelineRasterizationStateStreamCreateInfoEXT
98008   {
98009     using NativeType = VkPipelineRasterizationStateStreamCreateInfoEXT;
98010 
98011     static const bool                                  allowDuplicate = false;
98012     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT;
98013 
98014 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationStateStreamCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98015     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateStreamCreateInfoEXT( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags_ = {},
98016                                                                         uint32_t     rasterizationStream_                                           = {},
98017                                                                         const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
98018       : pNext{ pNext_ }
98019       , flags{ flags_ }
98020       , rasterizationStream{ rasterizationStream_ }
98021     {
98022     }
98023 
98024     VULKAN_HPP_CONSTEXPR
98025       PipelineRasterizationStateStreamCreateInfoEXT( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98026 
PipelineRasterizationStateStreamCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98027     PipelineRasterizationStateStreamCreateInfoEXT( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
98028       : PipelineRasterizationStateStreamCreateInfoEXT( *reinterpret_cast<PipelineRasterizationStateStreamCreateInfoEXT const *>( &rhs ) )
98029     {
98030     }
98031 
98032     PipelineRasterizationStateStreamCreateInfoEXT & operator=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98033 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98034 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98035     PipelineRasterizationStateStreamCreateInfoEXT & operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
98036     {
98037       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT const *>( &rhs );
98038       return *this;
98039     }
98040 
98041 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98042     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98043     {
98044       pNext = pNext_;
98045       return *this;
98046     }
98047 
98048     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98049       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
98050     {
98051       flags = flags_;
98052       return *this;
98053     }
98054 
setRasterizationStreamVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98055     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & setRasterizationStream( uint32_t rasterizationStream_ ) VULKAN_HPP_NOEXCEPT
98056     {
98057       rasterizationStream = rasterizationStream_;
98058       return *this;
98059     }
98060 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98061 
operator VkPipelineRasterizationStateStreamCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98062     operator VkPipelineRasterizationStateStreamCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
98063     {
98064       return *reinterpret_cast<const VkPipelineRasterizationStateStreamCreateInfoEXT *>( this );
98065     }
98066 
operator VkPipelineRasterizationStateStreamCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98067     operator VkPipelineRasterizationStateStreamCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
98068     {
98069       return *reinterpret_cast<VkPipelineRasterizationStateStreamCreateInfoEXT *>( this );
98070     }
98071 
98072 #if defined( VULKAN_HPP_USE_REFLECT )
98073 #  if 14 <= VULKAN_HPP_CPP_VERSION
98074     auto
98075 #  else
98076     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
98077                const void * const &,
98078                VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT const &,
98079                uint32_t const &>
98080 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98081       reflect() const VULKAN_HPP_NOEXCEPT
98082     {
98083       return std::tie( sType, pNext, flags, rasterizationStream );
98084     }
98085 #endif
98086 
98087 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98088     auto operator<=>( PipelineRasterizationStateStreamCreateInfoEXT const & ) const = default;
98089 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98090     bool operator==( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
98091     {
98092 #  if defined( VULKAN_HPP_USE_REFLECT )
98093       return this->reflect() == rhs.reflect();
98094 #  else
98095       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rasterizationStream == rhs.rasterizationStream );
98096 #  endif
98097     }
98098 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT98099     bool operator!=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
98100     {
98101       return !operator==( rhs );
98102     }
98103 #endif
98104 
98105   public:
98106     VULKAN_HPP_NAMESPACE::StructureType                                  sType               = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT;
98107     const void *                                                         pNext               = {};
98108     VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags               = {};
98109     uint32_t                                                             rasterizationStream = {};
98110   };
98111 
98112   template <>
98113   struct CppType<StructureType, StructureType::ePipelineRasterizationStateStreamCreateInfoEXT>
98114   {
98115     using Type = PipelineRasterizationStateStreamCreateInfoEXT;
98116   };
98117 
98118   struct PipelineRenderingCreateInfo
98119   {
98120     using NativeType = VkPipelineRenderingCreateInfo;
98121 
98122     static const bool                                  allowDuplicate = false;
98123     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRenderingCreateInfo;
98124 
98125 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRenderingCreateInfoVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98126     VULKAN_HPP_CONSTEXPR PipelineRenderingCreateInfo( uint32_t                             viewMask_                = {},
98127                                                       uint32_t                             colorAttachmentCount_    = {},
98128                                                       const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ = {},
98129                                                       VULKAN_HPP_NAMESPACE::Format         depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
98130                                                       VULKAN_HPP_NAMESPACE::Format         stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
98131                                                       const void *                         pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
98132       : pNext{ pNext_ }
98133       , viewMask{ viewMask_ }
98134       , colorAttachmentCount{ colorAttachmentCount_ }
98135       , pColorAttachmentFormats{ pColorAttachmentFormats_ }
98136       , depthAttachmentFormat{ depthAttachmentFormat_ }
98137       , stencilAttachmentFormat{ stencilAttachmentFormat_ }
98138     {
98139     }
98140 
98141     VULKAN_HPP_CONSTEXPR PipelineRenderingCreateInfo( PipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98142 
PipelineRenderingCreateInfoVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98143     PipelineRenderingCreateInfo( VkPipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98144       : PipelineRenderingCreateInfo( *reinterpret_cast<PipelineRenderingCreateInfo const *>( &rhs ) )
98145     {
98146     }
98147 
98148 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineRenderingCreateInfoVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98149     PipelineRenderingCreateInfo( uint32_t                                                                                  viewMask_,
98150                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_,
98151                                  VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
98152                                  VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
98153                                  const void *                 pNext_                   = nullptr )
98154       : pNext( pNext_ )
98155       , viewMask( viewMask_ )
98156       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentFormats_.size() ) )
98157       , pColorAttachmentFormats( colorAttachmentFormats_.data() )
98158       , depthAttachmentFormat( depthAttachmentFormat_ )
98159       , stencilAttachmentFormat( stencilAttachmentFormat_ )
98160     {
98161     }
98162 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98163 
98164     PipelineRenderingCreateInfo & operator=( PipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98165 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98166 
operator =VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98167     PipelineRenderingCreateInfo & operator=( VkPipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98168     {
98169       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo const *>( &rhs );
98170       return *this;
98171     }
98172 
98173 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98174     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98175     {
98176       pNext = pNext_;
98177       return *this;
98178     }
98179 
setViewMaskVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98180     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
98181     {
98182       viewMask = viewMask_;
98183       return *this;
98184     }
98185 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98186     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
98187     {
98188       colorAttachmentCount = colorAttachmentCount_;
98189       return *this;
98190     }
98191 
98192     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo &
setPColorAttachmentFormatsVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98193       setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
98194     {
98195       pColorAttachmentFormats = pColorAttachmentFormats_;
98196       return *this;
98197     }
98198 
98199 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentFormatsVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98200     PipelineRenderingCreateInfo & setColorAttachmentFormats(
98201       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
98202     {
98203       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentFormats_.size() );
98204       pColorAttachmentFormats = colorAttachmentFormats_.data();
98205       return *this;
98206     }
98207 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98208 
setDepthAttachmentFormatVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98209     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
98210     {
98211       depthAttachmentFormat = depthAttachmentFormat_;
98212       return *this;
98213     }
98214 
98215     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo &
setStencilAttachmentFormatVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98216       setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
98217     {
98218       stencilAttachmentFormat = stencilAttachmentFormat_;
98219       return *this;
98220     }
98221 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98222 
operator VkPipelineRenderingCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98223     operator VkPipelineRenderingCreateInfo const &() const VULKAN_HPP_NOEXCEPT
98224     {
98225       return *reinterpret_cast<const VkPipelineRenderingCreateInfo *>( this );
98226     }
98227 
operator VkPipelineRenderingCreateInfo&VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98228     operator VkPipelineRenderingCreateInfo &() VULKAN_HPP_NOEXCEPT
98229     {
98230       return *reinterpret_cast<VkPipelineRenderingCreateInfo *>( this );
98231     }
98232 
98233 #if defined( VULKAN_HPP_USE_REFLECT )
98234 #  if 14 <= VULKAN_HPP_CPP_VERSION
98235     auto
98236 #  else
98237     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
98238                const void * const &,
98239                uint32_t const &,
98240                uint32_t const &,
98241                const VULKAN_HPP_NAMESPACE::Format * const &,
98242                VULKAN_HPP_NAMESPACE::Format const &,
98243                VULKAN_HPP_NAMESPACE::Format const &>
98244 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98245       reflect() const VULKAN_HPP_NOEXCEPT
98246     {
98247       return std::tie( sType, pNext, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat );
98248     }
98249 #endif
98250 
98251 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98252     auto operator<=>( PipelineRenderingCreateInfo const & ) const = default;
98253 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98254     bool operator==( PipelineRenderingCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
98255     {
98256 #  if defined( VULKAN_HPP_USE_REFLECT )
98257       return this->reflect() == rhs.reflect();
98258 #  else
98259       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewMask == rhs.viewMask ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
98260              ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) && ( depthAttachmentFormat == rhs.depthAttachmentFormat ) &&
98261              ( stencilAttachmentFormat == rhs.stencilAttachmentFormat );
98262 #  endif
98263     }
98264 
operator !=VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo98265     bool operator!=( PipelineRenderingCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
98266     {
98267       return !operator==( rhs );
98268     }
98269 #endif
98270 
98271   public:
98272     VULKAN_HPP_NAMESPACE::StructureType  sType                   = StructureType::ePipelineRenderingCreateInfo;
98273     const void *                         pNext                   = {};
98274     uint32_t                             viewMask                = {};
98275     uint32_t                             colorAttachmentCount    = {};
98276     const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats = {};
98277     VULKAN_HPP_NAMESPACE::Format         depthAttachmentFormat   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
98278     VULKAN_HPP_NAMESPACE::Format         stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
98279   };
98280 
98281   template <>
98282   struct CppType<StructureType, StructureType::ePipelineRenderingCreateInfo>
98283   {
98284     using Type = PipelineRenderingCreateInfo;
98285   };
98286 
98287   using PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo;
98288 
98289   struct PipelineRepresentativeFragmentTestStateCreateInfoNV
98290   {
98291     using NativeType = VkPipelineRepresentativeFragmentTestStateCreateInfoNV;
98292 
98293     static const bool                                  allowDuplicate = false;
98294     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV;
98295 
98296 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRepresentativeFragmentTestStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV98297     VULKAN_HPP_CONSTEXPR PipelineRepresentativeFragmentTestStateCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable_ = {},
98298                                                                               const void *                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
98299       : pNext{ pNext_ }
98300       , representativeFragmentTestEnable{ representativeFragmentTestEnable_ }
98301     {
98302     }
98303 
98304     VULKAN_HPP_CONSTEXPR
98305       PipelineRepresentativeFragmentTestStateCreateInfoNV( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98306 
PipelineRepresentativeFragmentTestStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV98307     PipelineRepresentativeFragmentTestStateCreateInfoNV( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
98308       : PipelineRepresentativeFragmentTestStateCreateInfoNV( *reinterpret_cast<PipelineRepresentativeFragmentTestStateCreateInfoNV const *>( &rhs ) )
98309     {
98310     }
98311 
98312     PipelineRepresentativeFragmentTestStateCreateInfoNV &
98313       operator=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98314 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98315 
operator =VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV98316     PipelineRepresentativeFragmentTestStateCreateInfoNV & operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
98317     {
98318       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV const *>( &rhs );
98319       return *this;
98320     }
98321 
98322 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV98323     VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98324     {
98325       pNext = pNext_;
98326       return *this;
98327     }
98328 
98329     VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV &
setRepresentativeFragmentTestEnableVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV98330       setRepresentativeFragmentTestEnable( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable_ ) VULKAN_HPP_NOEXCEPT
98331     {
98332       representativeFragmentTestEnable = representativeFragmentTestEnable_;
98333       return *this;
98334     }
98335 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98336 
operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV98337     operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
98338     {
98339       return *reinterpret_cast<const VkPipelineRepresentativeFragmentTestStateCreateInfoNV *>( this );
98340     }
98341 
operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV98342     operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
98343     {
98344       return *reinterpret_cast<VkPipelineRepresentativeFragmentTestStateCreateInfoNV *>( this );
98345     }
98346 
98347 #if defined( VULKAN_HPP_USE_REFLECT )
98348 #  if 14 <= VULKAN_HPP_CPP_VERSION
98349     auto
98350 #  else
98351     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
98352 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV98353       reflect() const VULKAN_HPP_NOEXCEPT
98354     {
98355       return std::tie( sType, pNext, representativeFragmentTestEnable );
98356     }
98357 #endif
98358 
98359 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98360     auto operator<=>( PipelineRepresentativeFragmentTestStateCreateInfoNV const & ) const = default;
98361 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV98362     bool operator==( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
98363     {
98364 #  if defined( VULKAN_HPP_USE_REFLECT )
98365       return this->reflect() == rhs.reflect();
98366 #  else
98367       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( representativeFragmentTestEnable == rhs.representativeFragmentTestEnable );
98368 #  endif
98369     }
98370 
operator !=VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV98371     bool operator!=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
98372     {
98373       return !operator==( rhs );
98374     }
98375 #endif
98376 
98377   public:
98378     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV;
98379     const void *                        pNext                            = {};
98380     VULKAN_HPP_NAMESPACE::Bool32        representativeFragmentTestEnable = {};
98381   };
98382 
98383   template <>
98384   struct CppType<StructureType, StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV>
98385   {
98386     using Type = PipelineRepresentativeFragmentTestStateCreateInfoNV;
98387   };
98388 
98389   struct PipelineRobustnessCreateInfo
98390   {
98391     using NativeType = VkPipelineRobustnessCreateInfo;
98392 
98393     static const bool                                  allowDuplicate = false;
98394     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRobustnessCreateInfo;
98395 
98396 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRobustnessCreateInfoVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98397     VULKAN_HPP_CONSTEXPR PipelineRobustnessCreateInfo(
98398       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior storageBuffers_ = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault,
98399       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior uniformBuffers_ = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault,
98400       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior vertexInputs_   = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault,
98401       VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior  images_         = VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior::eDeviceDefault,
98402       const void *                                           pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
98403       : pNext{ pNext_ }
98404       , storageBuffers{ storageBuffers_ }
98405       , uniformBuffers{ uniformBuffers_ }
98406       , vertexInputs{ vertexInputs_ }
98407       , images{ images_ }
98408     {
98409     }
98410 
98411     VULKAN_HPP_CONSTEXPR PipelineRobustnessCreateInfo( PipelineRobustnessCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98412 
PipelineRobustnessCreateInfoVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98413     PipelineRobustnessCreateInfo( VkPipelineRobustnessCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98414       : PipelineRobustnessCreateInfo( *reinterpret_cast<PipelineRobustnessCreateInfo const *>( &rhs ) )
98415     {
98416     }
98417 
98418     PipelineRobustnessCreateInfo & operator=( PipelineRobustnessCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98419 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98420 
operator =VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98421     PipelineRobustnessCreateInfo & operator=( VkPipelineRobustnessCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98422     {
98423       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo const *>( &rhs );
98424       return *this;
98425     }
98426 
98427 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98428     VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98429     {
98430       pNext = pNext_;
98431       return *this;
98432     }
98433 
98434     VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo &
setStorageBuffersVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98435       setStorageBuffers( VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior storageBuffers_ ) VULKAN_HPP_NOEXCEPT
98436     {
98437       storageBuffers = storageBuffers_;
98438       return *this;
98439     }
98440 
98441     VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo &
setUniformBuffersVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98442       setUniformBuffers( VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior uniformBuffers_ ) VULKAN_HPP_NOEXCEPT
98443     {
98444       uniformBuffers = uniformBuffers_;
98445       return *this;
98446     }
98447 
98448     VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo &
setVertexInputsVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98449       setVertexInputs( VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior vertexInputs_ ) VULKAN_HPP_NOEXCEPT
98450     {
98451       vertexInputs = vertexInputs_;
98452       return *this;
98453     }
98454 
setImagesVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98455     VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo & setImages( VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior images_ ) VULKAN_HPP_NOEXCEPT
98456     {
98457       images = images_;
98458       return *this;
98459     }
98460 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98461 
operator VkPipelineRobustnessCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98462     operator VkPipelineRobustnessCreateInfo const &() const VULKAN_HPP_NOEXCEPT
98463     {
98464       return *reinterpret_cast<const VkPipelineRobustnessCreateInfo *>( this );
98465     }
98466 
operator VkPipelineRobustnessCreateInfo&VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98467     operator VkPipelineRobustnessCreateInfo &() VULKAN_HPP_NOEXCEPT
98468     {
98469       return *reinterpret_cast<VkPipelineRobustnessCreateInfo *>( this );
98470     }
98471 
98472 #if defined( VULKAN_HPP_USE_REFLECT )
98473 #  if 14 <= VULKAN_HPP_CPP_VERSION
98474     auto
98475 #  else
98476     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
98477                const void * const &,
98478                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior const &,
98479                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior const &,
98480                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior const &,
98481                VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior const &>
98482 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98483       reflect() const VULKAN_HPP_NOEXCEPT
98484     {
98485       return std::tie( sType, pNext, storageBuffers, uniformBuffers, vertexInputs, images );
98486     }
98487 #endif
98488 
98489 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98490     auto operator<=>( PipelineRobustnessCreateInfo const & ) const = default;
98491 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98492     bool operator==( PipelineRobustnessCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
98493     {
98494 #  if defined( VULKAN_HPP_USE_REFLECT )
98495       return this->reflect() == rhs.reflect();
98496 #  else
98497       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffers == rhs.storageBuffers ) && ( uniformBuffers == rhs.uniformBuffers ) &&
98498              ( vertexInputs == rhs.vertexInputs ) && ( images == rhs.images );
98499 #  endif
98500     }
98501 
operator !=VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo98502     bool operator!=( PipelineRobustnessCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
98503     {
98504       return !operator==( rhs );
98505     }
98506 #endif
98507 
98508   public:
98509     VULKAN_HPP_NAMESPACE::StructureType                    sType          = StructureType::ePipelineRobustnessCreateInfo;
98510     const void *                                           pNext          = {};
98511     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior storageBuffers = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault;
98512     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior uniformBuffers = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault;
98513     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior vertexInputs   = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehavior::eDeviceDefault;
98514     VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior  images         = VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehavior::eDeviceDefault;
98515   };
98516 
98517   template <>
98518   struct CppType<StructureType, StructureType::ePipelineRobustnessCreateInfo>
98519   {
98520     using Type = PipelineRobustnessCreateInfo;
98521   };
98522 
98523   using PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo;
98524 
98525   struct PipelineSampleLocationsStateCreateInfoEXT
98526   {
98527     using NativeType = VkPipelineSampleLocationsStateCreateInfoEXT;
98528 
98529     static const bool                                  allowDuplicate = false;
98530     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
98531 
98532 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineSampleLocationsStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98533     VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::Bool32                 sampleLocationsEnable_ = {},
98534                                                                     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_   = {},
98535                                                                     const void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
98536       : pNext{ pNext_ }
98537       , sampleLocationsEnable{ sampleLocationsEnable_ }
98538       , sampleLocationsInfo{ sampleLocationsInfo_ }
98539     {
98540     }
98541 
98542     VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98543 
PipelineSampleLocationsStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98544     PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
98545       : PipelineSampleLocationsStateCreateInfoEXT( *reinterpret_cast<PipelineSampleLocationsStateCreateInfoEXT const *>( &rhs ) )
98546     {
98547     }
98548 
98549     PipelineSampleLocationsStateCreateInfoEXT & operator=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98550 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98551 
operator =VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98552     PipelineSampleLocationsStateCreateInfoEXT & operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
98553     {
98554       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT const *>( &rhs );
98555       return *this;
98556     }
98557 
98558 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98559     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98560     {
98561       pNext = pNext_;
98562       return *this;
98563     }
98564 
98565     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT &
setSampleLocationsEnableVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98566       setSampleLocationsEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable_ ) VULKAN_HPP_NOEXCEPT
98567     {
98568       sampleLocationsEnable = sampleLocationsEnable_;
98569       return *this;
98570     }
98571 
98572     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT &
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98573       setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
98574     {
98575       sampleLocationsInfo = sampleLocationsInfo_;
98576       return *this;
98577     }
98578 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98579 
operator VkPipelineSampleLocationsStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98580     operator VkPipelineSampleLocationsStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
98581     {
98582       return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT *>( this );
98583     }
98584 
operator VkPipelineSampleLocationsStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98585     operator VkPipelineSampleLocationsStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
98586     {
98587       return *reinterpret_cast<VkPipelineSampleLocationsStateCreateInfoEXT *>( this );
98588     }
98589 
98590 #if defined( VULKAN_HPP_USE_REFLECT )
98591 #  if 14 <= VULKAN_HPP_CPP_VERSION
98592     auto
98593 #  else
98594     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
98595                const void * const &,
98596                VULKAN_HPP_NAMESPACE::Bool32 const &,
98597                VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
98598 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98599       reflect() const VULKAN_HPP_NOEXCEPT
98600     {
98601       return std::tie( sType, pNext, sampleLocationsEnable, sampleLocationsInfo );
98602     }
98603 #endif
98604 
98605 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98606     auto operator<=>( PipelineSampleLocationsStateCreateInfoEXT const & ) const = default;
98607 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98608     bool operator==( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
98609     {
98610 #  if defined( VULKAN_HPP_USE_REFLECT )
98611       return this->reflect() == rhs.reflect();
98612 #  else
98613       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleLocationsEnable == rhs.sampleLocationsEnable ) &&
98614              ( sampleLocationsInfo == rhs.sampleLocationsInfo );
98615 #  endif
98616     }
98617 
operator !=VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT98618     bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
98619     {
98620       return !operator==( rhs );
98621     }
98622 #endif
98623 
98624   public:
98625     VULKAN_HPP_NAMESPACE::StructureType          sType                 = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
98626     const void *                                 pNext                 = {};
98627     VULKAN_HPP_NAMESPACE::Bool32                 sampleLocationsEnable = {};
98628     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo   = {};
98629   };
98630 
98631   template <>
98632   struct CppType<StructureType, StructureType::ePipelineSampleLocationsStateCreateInfoEXT>
98633   {
98634     using Type = PipelineSampleLocationsStateCreateInfoEXT;
98635   };
98636 
98637   struct PipelineShaderStageModuleIdentifierCreateInfoEXT
98638   {
98639     using NativeType = VkPipelineShaderStageModuleIdentifierCreateInfoEXT;
98640 
98641     static const bool                                  allowDuplicate = false;
98642     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineShaderStageModuleIdentifierCreateInfoEXT;
98643 
98644 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineShaderStageModuleIdentifierCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98645     VULKAN_HPP_CONSTEXPR PipelineShaderStageModuleIdentifierCreateInfoEXT( uint32_t        identifierSize_ = {},
98646                                                                            const uint8_t * pIdentifier_    = {},
98647                                                                            const void *    pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
98648       : pNext{ pNext_ }
98649       , identifierSize{ identifierSize_ }
98650       , pIdentifier{ pIdentifier_ }
98651     {
98652     }
98653 
98654     VULKAN_HPP_CONSTEXPR
98655       PipelineShaderStageModuleIdentifierCreateInfoEXT( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98656 
PipelineShaderStageModuleIdentifierCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98657     PipelineShaderStageModuleIdentifierCreateInfoEXT( VkPipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
98658       : PipelineShaderStageModuleIdentifierCreateInfoEXT( *reinterpret_cast<PipelineShaderStageModuleIdentifierCreateInfoEXT const *>( &rhs ) )
98659     {
98660     }
98661 
98662 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineShaderStageModuleIdentifierCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98663     PipelineShaderStageModuleIdentifierCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint8_t> const & identifier_,
98664                                                       const void *                                                         pNext_ = nullptr )
98665       : pNext( pNext_ ), identifierSize( static_cast<uint32_t>( identifier_.size() ) ), pIdentifier( identifier_.data() )
98666     {
98667     }
98668 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98669 
98670     PipelineShaderStageModuleIdentifierCreateInfoEXT & operator=( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98671 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98672 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98673     PipelineShaderStageModuleIdentifierCreateInfoEXT & operator=( VkPipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
98674     {
98675       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT const *>( &rhs );
98676       return *this;
98677     }
98678 
98679 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98680     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98681     {
98682       pNext = pNext_;
98683       return *this;
98684     }
98685 
setIdentifierSizeVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98686     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT & setIdentifierSize( uint32_t identifierSize_ ) VULKAN_HPP_NOEXCEPT
98687     {
98688       identifierSize = identifierSize_;
98689       return *this;
98690     }
98691 
setPIdentifierVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98692     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT & setPIdentifier( const uint8_t * pIdentifier_ ) VULKAN_HPP_NOEXCEPT
98693     {
98694       pIdentifier = pIdentifier_;
98695       return *this;
98696     }
98697 
98698 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
98699     PipelineShaderStageModuleIdentifierCreateInfoEXT &
setIdentifierVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98700       setIdentifier( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint8_t> const & identifier_ ) VULKAN_HPP_NOEXCEPT
98701     {
98702       identifierSize = static_cast<uint32_t>( identifier_.size() );
98703       pIdentifier    = identifier_.data();
98704       return *this;
98705     }
98706 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98707 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98708 
operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98709     operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
98710     {
98711       return *reinterpret_cast<const VkPipelineShaderStageModuleIdentifierCreateInfoEXT *>( this );
98712     }
98713 
operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98714     operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
98715     {
98716       return *reinterpret_cast<VkPipelineShaderStageModuleIdentifierCreateInfoEXT *>( this );
98717     }
98718 
98719 #if defined( VULKAN_HPP_USE_REFLECT )
98720 #  if 14 <= VULKAN_HPP_CPP_VERSION
98721     auto
98722 #  else
98723     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint8_t * const &>
98724 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98725       reflect() const VULKAN_HPP_NOEXCEPT
98726     {
98727       return std::tie( sType, pNext, identifierSize, pIdentifier );
98728     }
98729 #endif
98730 
98731 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98732     auto operator<=>( PipelineShaderStageModuleIdentifierCreateInfoEXT const & ) const = default;
98733 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98734     bool operator==( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
98735     {
98736 #  if defined( VULKAN_HPP_USE_REFLECT )
98737       return this->reflect() == rhs.reflect();
98738 #  else
98739       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( identifierSize == rhs.identifierSize ) && ( pIdentifier == rhs.pIdentifier );
98740 #  endif
98741     }
98742 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT98743     bool operator!=( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
98744     {
98745       return !operator==( rhs );
98746     }
98747 #endif
98748 
98749   public:
98750     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePipelineShaderStageModuleIdentifierCreateInfoEXT;
98751     const void *                        pNext          = {};
98752     uint32_t                            identifierSize = {};
98753     const uint8_t *                     pIdentifier    = {};
98754   };
98755 
98756   template <>
98757   struct CppType<StructureType, StructureType::ePipelineShaderStageModuleIdentifierCreateInfoEXT>
98758   {
98759     using Type = PipelineShaderStageModuleIdentifierCreateInfoEXT;
98760   };
98761 
98762 #if defined( VK_ENABLE_BETA_EXTENSIONS )
98763   struct PipelineShaderStageNodeCreateInfoAMDX
98764   {
98765     using NativeType = VkPipelineShaderStageNodeCreateInfoAMDX;
98766 
98767     static const bool                                  allowDuplicate = false;
98768     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineShaderStageNodeCreateInfoAMDX;
98769 
98770 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
98771     VULKAN_HPP_CONSTEXPR
PipelineShaderStageNodeCreateInfoAMDXVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98772       PipelineShaderStageNodeCreateInfoAMDX( const char * pName_ = {}, uint32_t index_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
98773       : pNext{ pNext_ }
98774       , pName{ pName_ }
98775       , index{ index_ }
98776     {
98777     }
98778 
98779     VULKAN_HPP_CONSTEXPR PipelineShaderStageNodeCreateInfoAMDX( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98780 
PipelineShaderStageNodeCreateInfoAMDXVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98781     PipelineShaderStageNodeCreateInfoAMDX( VkPipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
98782       : PipelineShaderStageNodeCreateInfoAMDX( *reinterpret_cast<PipelineShaderStageNodeCreateInfoAMDX const *>( &rhs ) )
98783     {
98784     }
98785 
98786     PipelineShaderStageNodeCreateInfoAMDX & operator=( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98787 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98788 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98789     PipelineShaderStageNodeCreateInfoAMDX & operator=( VkPipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
98790     {
98791       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX const *>( &rhs );
98792       return *this;
98793     }
98794 
98795 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98796     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98797     {
98798       pNext = pNext_;
98799       return *this;
98800     }
98801 
setPNameVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98802     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
98803     {
98804       pName = pName_;
98805       return *this;
98806     }
98807 
setIndexVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98808     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
98809     {
98810       index = index_;
98811       return *this;
98812     }
98813 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98814 
operator VkPipelineShaderStageNodeCreateInfoAMDX const&VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98815     operator VkPipelineShaderStageNodeCreateInfoAMDX const &() const VULKAN_HPP_NOEXCEPT
98816     {
98817       return *reinterpret_cast<const VkPipelineShaderStageNodeCreateInfoAMDX *>( this );
98818     }
98819 
operator VkPipelineShaderStageNodeCreateInfoAMDX&VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98820     operator VkPipelineShaderStageNodeCreateInfoAMDX &() VULKAN_HPP_NOEXCEPT
98821     {
98822       return *reinterpret_cast<VkPipelineShaderStageNodeCreateInfoAMDX *>( this );
98823     }
98824 
98825 #  if defined( VULKAN_HPP_USE_REFLECT )
98826 #    if 14 <= VULKAN_HPP_CPP_VERSION
98827     auto
98828 #    else
98829     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const char * const &, uint32_t const &>
98830 #    endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98831       reflect() const VULKAN_HPP_NOEXCEPT
98832     {
98833       return std::tie( sType, pNext, pName, index );
98834     }
98835 #  endif
98836 
98837 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98838     std::strong_ordering operator<=>( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
98839     {
98840       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
98841         return cmp;
98842       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
98843         return cmp;
98844       if ( pName != rhs.pName )
98845         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
98846           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
98847       if ( auto cmp = index <=> rhs.index; cmp != 0 )
98848         return cmp;
98849 
98850       return std::strong_ordering::equivalent;
98851     }
98852 #  endif
98853 
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98854     bool operator==( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
98855     {
98856       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && ( index == rhs.index );
98857     }
98858 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX98859     bool operator!=( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
98860     {
98861       return !operator==( rhs );
98862     }
98863 
98864   public:
98865     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageNodeCreateInfoAMDX;
98866     const void *                        pNext = {};
98867     const char *                        pName = {};
98868     uint32_t                            index = {};
98869   };
98870 
98871   template <>
98872   struct CppType<StructureType, StructureType::ePipelineShaderStageNodeCreateInfoAMDX>
98873   {
98874     using Type = PipelineShaderStageNodeCreateInfoAMDX;
98875   };
98876 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
98877 
98878   struct PipelineShaderStageRequiredSubgroupSizeCreateInfo
98879   {
98880     using NativeType = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo;
98881 
98882     static const bool                                  allowDuplicate = false;
98883     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo;
98884 
98885 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineShaderStageRequiredSubgroupSizeCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo98886     VULKAN_HPP_CONSTEXPR PipelineShaderStageRequiredSubgroupSizeCreateInfo( uint32_t requiredSubgroupSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
98887       : pNext{ pNext_ }
98888       , requiredSubgroupSize{ requiredSubgroupSize_ }
98889     {
98890     }
98891 
98892     VULKAN_HPP_CONSTEXPR
98893       PipelineShaderStageRequiredSubgroupSizeCreateInfo( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98894 
PipelineShaderStageRequiredSubgroupSizeCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo98895     PipelineShaderStageRequiredSubgroupSizeCreateInfo( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98896       : PipelineShaderStageRequiredSubgroupSizeCreateInfo( *reinterpret_cast<PipelineShaderStageRequiredSubgroupSizeCreateInfo const *>( &rhs ) )
98897     {
98898     }
98899 
98900     PipelineShaderStageRequiredSubgroupSizeCreateInfo &
98901       operator=( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98902 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98903 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo98904     PipelineShaderStageRequiredSubgroupSizeCreateInfo & operator=( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98905     {
98906       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo const *>( &rhs );
98907       return *this;
98908     }
98909 
operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo98910     operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
98911     {
98912       return *reinterpret_cast<const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *>( this );
98913     }
98914 
operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo&VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo98915     operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo &() VULKAN_HPP_NOEXCEPT
98916     {
98917       return *reinterpret_cast<VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *>( this );
98918     }
98919 
98920 #if defined( VULKAN_HPP_USE_REFLECT )
98921 #  if 14 <= VULKAN_HPP_CPP_VERSION
98922     auto
98923 #  else
98924     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
98925 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo98926       reflect() const VULKAN_HPP_NOEXCEPT
98927     {
98928       return std::tie( sType, pNext, requiredSubgroupSize );
98929     }
98930 #endif
98931 
98932 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98933     auto operator<=>( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & ) const = default;
98934 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo98935     bool operator==( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
98936     {
98937 #  if defined( VULKAN_HPP_USE_REFLECT )
98938       return this->reflect() == rhs.reflect();
98939 #  else
98940       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( requiredSubgroupSize == rhs.requiredSubgroupSize );
98941 #  endif
98942     }
98943 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo98944     bool operator!=( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
98945     {
98946       return !operator==( rhs );
98947     }
98948 #endif
98949 
98950   public:
98951     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo;
98952     void *                              pNext                = {};
98953     uint32_t                            requiredSubgroupSize = {};
98954   };
98955 
98956   template <>
98957   struct CppType<StructureType, StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo>
98958   {
98959     using Type = PipelineShaderStageRequiredSubgroupSizeCreateInfo;
98960   };
98961 
98962   using PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo;
98963   using ShaderRequiredSubgroupSizeCreateInfoEXT              = PipelineShaderStageRequiredSubgroupSizeCreateInfo;
98964 
98965   struct PipelineTessellationDomainOriginStateCreateInfo
98966   {
98967     using NativeType = VkPipelineTessellationDomainOriginStateCreateInfo;
98968 
98969     static const bool                                  allowDuplicate = false;
98970     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
98971 
98972 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineTessellationDomainOriginStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo98973     VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo(
98974       VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ = VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft,
98975       const void *                                   pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
98976       : pNext{ pNext_ }
98977       , domainOrigin{ domainOrigin_ }
98978     {
98979     }
98980 
98981     VULKAN_HPP_CONSTEXPR
98982       PipelineTessellationDomainOriginStateCreateInfo( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98983 
PipelineTessellationDomainOriginStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo98984     PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98985       : PipelineTessellationDomainOriginStateCreateInfo( *reinterpret_cast<PipelineTessellationDomainOriginStateCreateInfo const *>( &rhs ) )
98986     {
98987     }
98988 
98989     PipelineTessellationDomainOriginStateCreateInfo & operator=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98990 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98991 
operator =VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo98992     PipelineTessellationDomainOriginStateCreateInfo & operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98993     {
98994       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo const *>( &rhs );
98995       return *this;
98996     }
98997 
98998 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo98999     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99000     {
99001       pNext = pNext_;
99002       return *this;
99003     }
99004 
99005     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo &
setDomainOriginVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo99006       setDomainOrigin( VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ ) VULKAN_HPP_NOEXCEPT
99007     {
99008       domainOrigin = domainOrigin_;
99009       return *this;
99010     }
99011 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99012 
operator VkPipelineTessellationDomainOriginStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo99013     operator VkPipelineTessellationDomainOriginStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
99014     {
99015       return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo *>( this );
99016     }
99017 
operator VkPipelineTessellationDomainOriginStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo99018     operator VkPipelineTessellationDomainOriginStateCreateInfo &() VULKAN_HPP_NOEXCEPT
99019     {
99020       return *reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo *>( this );
99021     }
99022 
99023 #if defined( VULKAN_HPP_USE_REFLECT )
99024 #  if 14 <= VULKAN_HPP_CPP_VERSION
99025     auto
99026 #  else
99027     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::TessellationDomainOrigin const &>
99028 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo99029       reflect() const VULKAN_HPP_NOEXCEPT
99030     {
99031       return std::tie( sType, pNext, domainOrigin );
99032     }
99033 #endif
99034 
99035 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99036     auto operator<=>( PipelineTessellationDomainOriginStateCreateInfo const & ) const = default;
99037 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo99038     bool operator==( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
99039     {
99040 #  if defined( VULKAN_HPP_USE_REFLECT )
99041       return this->reflect() == rhs.reflect();
99042 #  else
99043       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( domainOrigin == rhs.domainOrigin );
99044 #  endif
99045     }
99046 
operator !=VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo99047     bool operator!=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
99048     {
99049       return !operator==( rhs );
99050     }
99051 #endif
99052 
99053   public:
99054     VULKAN_HPP_NAMESPACE::StructureType            sType        = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
99055     const void *                                   pNext        = {};
99056     VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin = VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft;
99057   };
99058 
99059   template <>
99060   struct CppType<StructureType, StructureType::ePipelineTessellationDomainOriginStateCreateInfo>
99061   {
99062     using Type = PipelineTessellationDomainOriginStateCreateInfo;
99063   };
99064 
99065   using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo;
99066 
99067   struct VertexInputBindingDivisorDescription
99068   {
99069     using NativeType = VkVertexInputBindingDivisorDescription;
99070 
99071 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputBindingDivisorDescriptionVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription99072     VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescription( uint32_t binding_ = {}, uint32_t divisor_ = {} ) VULKAN_HPP_NOEXCEPT
99073       : binding{ binding_ }
99074       , divisor{ divisor_ }
99075     {
99076     }
99077 
99078     VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescription( VertexInputBindingDivisorDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99079 
VertexInputBindingDivisorDescriptionVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription99080     VertexInputBindingDivisorDescription( VkVertexInputBindingDivisorDescription const & rhs ) VULKAN_HPP_NOEXCEPT
99081       : VertexInputBindingDivisorDescription( *reinterpret_cast<VertexInputBindingDivisorDescription const *>( &rhs ) )
99082     {
99083     }
99084 
99085     VertexInputBindingDivisorDescription & operator=( VertexInputBindingDivisorDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99086 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99087 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription99088     VertexInputBindingDivisorDescription & operator=( VkVertexInputBindingDivisorDescription const & rhs ) VULKAN_HPP_NOEXCEPT
99089     {
99090       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription const *>( &rhs );
99091       return *this;
99092     }
99093 
99094 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription99095     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
99096     {
99097       binding = binding_;
99098       return *this;
99099     }
99100 
setDivisorVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription99101     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescription & setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT
99102     {
99103       divisor = divisor_;
99104       return *this;
99105     }
99106 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99107 
operator VkVertexInputBindingDivisorDescription const&VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription99108     operator VkVertexInputBindingDivisorDescription const &() const VULKAN_HPP_NOEXCEPT
99109     {
99110       return *reinterpret_cast<const VkVertexInputBindingDivisorDescription *>( this );
99111     }
99112 
operator VkVertexInputBindingDivisorDescription&VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription99113     operator VkVertexInputBindingDivisorDescription &() VULKAN_HPP_NOEXCEPT
99114     {
99115       return *reinterpret_cast<VkVertexInputBindingDivisorDescription *>( this );
99116     }
99117 
99118 #if defined( VULKAN_HPP_USE_REFLECT )
99119 #  if 14 <= VULKAN_HPP_CPP_VERSION
99120     auto
99121 #  else
99122     std::tuple<uint32_t const &, uint32_t const &>
99123 #  endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription99124       reflect() const VULKAN_HPP_NOEXCEPT
99125     {
99126       return std::tie( binding, divisor );
99127     }
99128 #endif
99129 
99130 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99131     auto operator<=>( VertexInputBindingDivisorDescription const & ) const = default;
99132 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription99133     bool operator==( VertexInputBindingDivisorDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
99134     {
99135 #  if defined( VULKAN_HPP_USE_REFLECT )
99136       return this->reflect() == rhs.reflect();
99137 #  else
99138       return ( binding == rhs.binding ) && ( divisor == rhs.divisor );
99139 #  endif
99140     }
99141 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription99142     bool operator!=( VertexInputBindingDivisorDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
99143     {
99144       return !operator==( rhs );
99145     }
99146 #endif
99147 
99148   public:
99149     uint32_t binding = {};
99150     uint32_t divisor = {};
99151   };
99152 
99153   using VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription;
99154   using VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription;
99155 
99156   struct PipelineVertexInputDivisorStateCreateInfo
99157   {
99158     using NativeType = VkPipelineVertexInputDivisorStateCreateInfo;
99159 
99160     static const bool                                  allowDuplicate = false;
99161     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineVertexInputDivisorStateCreateInfo;
99162 
99163 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
99164     VULKAN_HPP_CONSTEXPR
PipelineVertexInputDivisorStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99165       PipelineVertexInputDivisorStateCreateInfo( uint32_t                                                           vertexBindingDivisorCount_ = {},
99166                                                  const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription * pVertexBindingDivisors_    = {},
99167                                                  const void *                                                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
99168       : pNext{ pNext_ }
99169       , vertexBindingDivisorCount{ vertexBindingDivisorCount_ }
99170       , pVertexBindingDivisors{ pVertexBindingDivisors_ }
99171     {
99172     }
99173 
99174     VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfo( PipelineVertexInputDivisorStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99175 
PipelineVertexInputDivisorStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99176     PipelineVertexInputDivisorStateCreateInfo( VkPipelineVertexInputDivisorStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
99177       : PipelineVertexInputDivisorStateCreateInfo( *reinterpret_cast<PipelineVertexInputDivisorStateCreateInfo const *>( &rhs ) )
99178     {
99179     }
99180 
99181 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineVertexInputDivisorStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99182     PipelineVertexInputDivisorStateCreateInfo(
99183       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription> const & vertexBindingDivisors_,
99184       const void *                                                                                                            pNext_ = nullptr )
99185       : pNext( pNext_ )
99186       , vertexBindingDivisorCount( static_cast<uint32_t>( vertexBindingDivisors_.size() ) )
99187       , pVertexBindingDivisors( vertexBindingDivisors_.data() )
99188     {
99189     }
99190 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99191 
99192     PipelineVertexInputDivisorStateCreateInfo & operator=( PipelineVertexInputDivisorStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99193 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99194 
operator =VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99195     PipelineVertexInputDivisorStateCreateInfo & operator=( VkPipelineVertexInputDivisorStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
99196     {
99197       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo const *>( &rhs );
99198       return *this;
99199     }
99200 
99201 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99202     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99203     {
99204       pNext = pNext_;
99205       return *this;
99206     }
99207 
setVertexBindingDivisorCountVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99208     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfo & setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ ) VULKAN_HPP_NOEXCEPT
99209     {
99210       vertexBindingDivisorCount = vertexBindingDivisorCount_;
99211       return *this;
99212     }
99213 
99214     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfo &
setPVertexBindingDivisorsVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99215       setPVertexBindingDivisors( const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription * pVertexBindingDivisors_ ) VULKAN_HPP_NOEXCEPT
99216     {
99217       pVertexBindingDivisors = pVertexBindingDivisors_;
99218       return *this;
99219     }
99220 
99221 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexBindingDivisorsVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99222     PipelineVertexInputDivisorStateCreateInfo & setVertexBindingDivisors(
99223       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription> const & vertexBindingDivisors_ )
99224       VULKAN_HPP_NOEXCEPT
99225     {
99226       vertexBindingDivisorCount = static_cast<uint32_t>( vertexBindingDivisors_.size() );
99227       pVertexBindingDivisors    = vertexBindingDivisors_.data();
99228       return *this;
99229     }
99230 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99231 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99232 
operator VkPipelineVertexInputDivisorStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99233     operator VkPipelineVertexInputDivisorStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
99234     {
99235       return *reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfo *>( this );
99236     }
99237 
operator VkPipelineVertexInputDivisorStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99238     operator VkPipelineVertexInputDivisorStateCreateInfo &() VULKAN_HPP_NOEXCEPT
99239     {
99240       return *reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfo *>( this );
99241     }
99242 
99243 #if defined( VULKAN_HPP_USE_REFLECT )
99244 #  if 14 <= VULKAN_HPP_CPP_VERSION
99245     auto
99246 #  else
99247     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
99248                const void * const &,
99249                uint32_t const &,
99250                const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription * const &>
99251 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99252       reflect() const VULKAN_HPP_NOEXCEPT
99253     {
99254       return std::tie( sType, pNext, vertexBindingDivisorCount, pVertexBindingDivisors );
99255     }
99256 #endif
99257 
99258 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99259     auto operator<=>( PipelineVertexInputDivisorStateCreateInfo const & ) const = default;
99260 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99261     bool operator==( PipelineVertexInputDivisorStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
99262     {
99263 #  if defined( VULKAN_HPP_USE_REFLECT )
99264       return this->reflect() == rhs.reflect();
99265 #  else
99266       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexBindingDivisorCount == rhs.vertexBindingDivisorCount ) &&
99267              ( pVertexBindingDivisors == rhs.pVertexBindingDivisors );
99268 #  endif
99269     }
99270 
operator !=VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo99271     bool operator!=( PipelineVertexInputDivisorStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
99272     {
99273       return !operator==( rhs );
99274     }
99275 #endif
99276 
99277   public:
99278     VULKAN_HPP_NAMESPACE::StructureType                                sType                     = StructureType::ePipelineVertexInputDivisorStateCreateInfo;
99279     const void *                                                       pNext                     = {};
99280     uint32_t                                                           vertexBindingDivisorCount = {};
99281     const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription * pVertexBindingDivisors    = {};
99282   };
99283 
99284   template <>
99285   struct CppType<StructureType, StructureType::ePipelineVertexInputDivisorStateCreateInfo>
99286   {
99287     using Type = PipelineVertexInputDivisorStateCreateInfo;
99288   };
99289 
99290   using PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo;
99291   using PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo;
99292 
99293   struct PipelineViewportCoarseSampleOrderStateCreateInfoNV
99294   {
99295     using NativeType = VkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
99296 
99297     static const bool                                  allowDuplicate = false;
99298     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV;
99299 
99300 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportCoarseSampleOrderStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99301     VULKAN_HPP_CONSTEXPR PipelineViewportCoarseSampleOrderStateCreateInfoNV(
99302       VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV           sampleOrderType_        = VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault,
99303       uint32_t                                                customSampleOrderCount_ = {},
99304       const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders_    = {},
99305       const void *                                            pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
99306       : pNext{ pNext_ }
99307       , sampleOrderType{ sampleOrderType_ }
99308       , customSampleOrderCount{ customSampleOrderCount_ }
99309       , pCustomSampleOrders{ pCustomSampleOrders_ }
99310     {
99311     }
99312 
99313     VULKAN_HPP_CONSTEXPR
99314       PipelineViewportCoarseSampleOrderStateCreateInfoNV( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99315 
PipelineViewportCoarseSampleOrderStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99316     PipelineViewportCoarseSampleOrderStateCreateInfoNV( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
99317       : PipelineViewportCoarseSampleOrderStateCreateInfoNV( *reinterpret_cast<PipelineViewportCoarseSampleOrderStateCreateInfoNV const *>( &rhs ) )
99318     {
99319     }
99320 
99321 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportCoarseSampleOrderStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99322     PipelineViewportCoarseSampleOrderStateCreateInfoNV(
99323       VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV                                                                sampleOrderType_,
99324       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders_,
99325       const void *                                                                                                 pNext_ = nullptr )
99326       : pNext( pNext_ )
99327       , sampleOrderType( sampleOrderType_ )
99328       , customSampleOrderCount( static_cast<uint32_t>( customSampleOrders_.size() ) )
99329       , pCustomSampleOrders( customSampleOrders_.data() )
99330     {
99331     }
99332 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99333 
99334     PipelineViewportCoarseSampleOrderStateCreateInfoNV &
99335       operator=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99336 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99337 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99338     PipelineViewportCoarseSampleOrderStateCreateInfoNV & operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
99339     {
99340       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV const *>( &rhs );
99341       return *this;
99342     }
99343 
99344 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99345     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99346     {
99347       pNext = pNext_;
99348       return *this;
99349     }
99350 
99351     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV &
setSampleOrderTypeVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99352       setSampleOrderType( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_ ) VULKAN_HPP_NOEXCEPT
99353     {
99354       sampleOrderType = sampleOrderType_;
99355       return *this;
99356     }
99357 
99358     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV &
setCustomSampleOrderCountVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99359       setCustomSampleOrderCount( uint32_t customSampleOrderCount_ ) VULKAN_HPP_NOEXCEPT
99360     {
99361       customSampleOrderCount = customSampleOrderCount_;
99362       return *this;
99363     }
99364 
99365     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV &
setPCustomSampleOrdersVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99366       setPCustomSampleOrders( const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders_ ) VULKAN_HPP_NOEXCEPT
99367     {
99368       pCustomSampleOrders = pCustomSampleOrders_;
99369       return *this;
99370     }
99371 
99372 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCustomSampleOrdersVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99373     PipelineViewportCoarseSampleOrderStateCreateInfoNV & setCustomSampleOrders(
99374       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders_ ) VULKAN_HPP_NOEXCEPT
99375     {
99376       customSampleOrderCount = static_cast<uint32_t>( customSampleOrders_.size() );
99377       pCustomSampleOrders    = customSampleOrders_.data();
99378       return *this;
99379     }
99380 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99381 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99382 
operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99383     operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
99384     {
99385       return *reinterpret_cast<const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *>( this );
99386     }
99387 
operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99388     operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
99389     {
99390       return *reinterpret_cast<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *>( this );
99391     }
99392 
99393 #if defined( VULKAN_HPP_USE_REFLECT )
99394 #  if 14 <= VULKAN_HPP_CPP_VERSION
99395     auto
99396 #  else
99397     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
99398                const void * const &,
99399                VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV const &,
99400                uint32_t const &,
99401                const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * const &>
99402 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99403       reflect() const VULKAN_HPP_NOEXCEPT
99404     {
99405       return std::tie( sType, pNext, sampleOrderType, customSampleOrderCount, pCustomSampleOrders );
99406     }
99407 #endif
99408 
99409 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99410     auto operator<=>( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & ) const = default;
99411 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99412     bool operator==( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
99413     {
99414 #  if defined( VULKAN_HPP_USE_REFLECT )
99415       return this->reflect() == rhs.reflect();
99416 #  else
99417       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleOrderType == rhs.sampleOrderType ) &&
99418              ( customSampleOrderCount == rhs.customSampleOrderCount ) && ( pCustomSampleOrders == rhs.pCustomSampleOrders );
99419 #  endif
99420     }
99421 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV99422     bool operator!=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
99423     {
99424       return !operator==( rhs );
99425     }
99426 #endif
99427 
99428   public:
99429     VULKAN_HPP_NAMESPACE::StructureType                     sType                  = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV;
99430     const void *                                            pNext                  = {};
99431     VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV           sampleOrderType        = VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault;
99432     uint32_t                                                customSampleOrderCount = {};
99433     const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders    = {};
99434   };
99435 
99436   template <>
99437   struct CppType<StructureType, StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV>
99438   {
99439     using Type = PipelineViewportCoarseSampleOrderStateCreateInfoNV;
99440   };
99441 
99442   struct PipelineViewportDepthClipControlCreateInfoEXT
99443   {
99444     using NativeType = VkPipelineViewportDepthClipControlCreateInfoEXT;
99445 
99446     static const bool                                  allowDuplicate = false;
99447     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportDepthClipControlCreateInfoEXT;
99448 
99449 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportDepthClipControlCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT99450     VULKAN_HPP_CONSTEXPR PipelineViewportDepthClipControlCreateInfoEXT( VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne_ = {},
99451                                                                         const void *                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
99452       : pNext{ pNext_ }
99453       , negativeOneToOne{ negativeOneToOne_ }
99454     {
99455     }
99456 
99457     VULKAN_HPP_CONSTEXPR
99458       PipelineViewportDepthClipControlCreateInfoEXT( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99459 
PipelineViewportDepthClipControlCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT99460     PipelineViewportDepthClipControlCreateInfoEXT( VkPipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
99461       : PipelineViewportDepthClipControlCreateInfoEXT( *reinterpret_cast<PipelineViewportDepthClipControlCreateInfoEXT const *>( &rhs ) )
99462     {
99463     }
99464 
99465     PipelineViewportDepthClipControlCreateInfoEXT & operator=( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99466 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99467 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT99468     PipelineViewportDepthClipControlCreateInfoEXT & operator=( VkPipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
99469     {
99470       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT const *>( &rhs );
99471       return *this;
99472     }
99473 
99474 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT99475     VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99476     {
99477       pNext = pNext_;
99478       return *this;
99479     }
99480 
99481     VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT &
setNegativeOneToOneVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT99482       setNegativeOneToOne( VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne_ ) VULKAN_HPP_NOEXCEPT
99483     {
99484       negativeOneToOne = negativeOneToOne_;
99485       return *this;
99486     }
99487 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99488 
operator VkPipelineViewportDepthClipControlCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT99489     operator VkPipelineViewportDepthClipControlCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
99490     {
99491       return *reinterpret_cast<const VkPipelineViewportDepthClipControlCreateInfoEXT *>( this );
99492     }
99493 
operator VkPipelineViewportDepthClipControlCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT99494     operator VkPipelineViewportDepthClipControlCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
99495     {
99496       return *reinterpret_cast<VkPipelineViewportDepthClipControlCreateInfoEXT *>( this );
99497     }
99498 
99499 #if defined( VULKAN_HPP_USE_REFLECT )
99500 #  if 14 <= VULKAN_HPP_CPP_VERSION
99501     auto
99502 #  else
99503     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
99504 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT99505       reflect() const VULKAN_HPP_NOEXCEPT
99506     {
99507       return std::tie( sType, pNext, negativeOneToOne );
99508     }
99509 #endif
99510 
99511 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99512     auto operator<=>( PipelineViewportDepthClipControlCreateInfoEXT const & ) const = default;
99513 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT99514     bool operator==( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
99515     {
99516 #  if defined( VULKAN_HPP_USE_REFLECT )
99517       return this->reflect() == rhs.reflect();
99518 #  else
99519       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( negativeOneToOne == rhs.negativeOneToOne );
99520 #  endif
99521     }
99522 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT99523     bool operator!=( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
99524     {
99525       return !operator==( rhs );
99526     }
99527 #endif
99528 
99529   public:
99530     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePipelineViewportDepthClipControlCreateInfoEXT;
99531     const void *                        pNext            = {};
99532     VULKAN_HPP_NAMESPACE::Bool32        negativeOneToOne = {};
99533   };
99534 
99535   template <>
99536   struct CppType<StructureType, StructureType::ePipelineViewportDepthClipControlCreateInfoEXT>
99537   {
99538     using Type = PipelineViewportDepthClipControlCreateInfoEXT;
99539   };
99540 
99541   struct PipelineViewportExclusiveScissorStateCreateInfoNV
99542   {
99543     using NativeType = VkPipelineViewportExclusiveScissorStateCreateInfoNV;
99544 
99545     static const bool                                  allowDuplicate = false;
99546     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV;
99547 
99548 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportExclusiveScissorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99549     VULKAN_HPP_CONSTEXPR PipelineViewportExclusiveScissorStateCreateInfoNV( uint32_t                             exclusiveScissorCount_ = {},
99550                                                                             const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors_    = {},
99551                                                                             const void *                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
99552       : pNext{ pNext_ }
99553       , exclusiveScissorCount{ exclusiveScissorCount_ }
99554       , pExclusiveScissors{ pExclusiveScissors_ }
99555     {
99556     }
99557 
99558     VULKAN_HPP_CONSTEXPR
99559       PipelineViewportExclusiveScissorStateCreateInfoNV( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99560 
PipelineViewportExclusiveScissorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99561     PipelineViewportExclusiveScissorStateCreateInfoNV( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
99562       : PipelineViewportExclusiveScissorStateCreateInfoNV( *reinterpret_cast<PipelineViewportExclusiveScissorStateCreateInfoNV const *>( &rhs ) )
99563     {
99564     }
99565 
99566 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportExclusiveScissorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99567     PipelineViewportExclusiveScissorStateCreateInfoNV(
99568       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors_, const void * pNext_ = nullptr )
99569       : pNext( pNext_ ), exclusiveScissorCount( static_cast<uint32_t>( exclusiveScissors_.size() ) ), pExclusiveScissors( exclusiveScissors_.data() )
99570     {
99571     }
99572 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99573 
99574     PipelineViewportExclusiveScissorStateCreateInfoNV &
99575       operator=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99576 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99577 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99578     PipelineViewportExclusiveScissorStateCreateInfoNV & operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
99579     {
99580       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV const *>( &rhs );
99581       return *this;
99582     }
99583 
99584 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99585     VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99586     {
99587       pNext = pNext_;
99588       return *this;
99589     }
99590 
setExclusiveScissorCountVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99591     VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & setExclusiveScissorCount( uint32_t exclusiveScissorCount_ ) VULKAN_HPP_NOEXCEPT
99592     {
99593       exclusiveScissorCount = exclusiveScissorCount_;
99594       return *this;
99595     }
99596 
99597     VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV &
setPExclusiveScissorsVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99598       setPExclusiveScissors( const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors_ ) VULKAN_HPP_NOEXCEPT
99599     {
99600       pExclusiveScissors = pExclusiveScissors_;
99601       return *this;
99602     }
99603 
99604 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
99605     PipelineViewportExclusiveScissorStateCreateInfoNV &
setExclusiveScissorsVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99606       setExclusiveScissors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors_ ) VULKAN_HPP_NOEXCEPT
99607     {
99608       exclusiveScissorCount = static_cast<uint32_t>( exclusiveScissors_.size() );
99609       pExclusiveScissors    = exclusiveScissors_.data();
99610       return *this;
99611     }
99612 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99613 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99614 
operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99615     operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
99616     {
99617       return *reinterpret_cast<const VkPipelineViewportExclusiveScissorStateCreateInfoNV *>( this );
99618     }
99619 
operator VkPipelineViewportExclusiveScissorStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99620     operator VkPipelineViewportExclusiveScissorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
99621     {
99622       return *reinterpret_cast<VkPipelineViewportExclusiveScissorStateCreateInfoNV *>( this );
99623     }
99624 
99625 #if defined( VULKAN_HPP_USE_REFLECT )
99626 #  if 14 <= VULKAN_HPP_CPP_VERSION
99627     auto
99628 #  else
99629     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Rect2D * const &>
99630 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99631       reflect() const VULKAN_HPP_NOEXCEPT
99632     {
99633       return std::tie( sType, pNext, exclusiveScissorCount, pExclusiveScissors );
99634     }
99635 #endif
99636 
99637 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99638     auto operator<=>( PipelineViewportExclusiveScissorStateCreateInfoNV const & ) const = default;
99639 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99640     bool operator==( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
99641     {
99642 #  if defined( VULKAN_HPP_USE_REFLECT )
99643       return this->reflect() == rhs.reflect();
99644 #  else
99645       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exclusiveScissorCount == rhs.exclusiveScissorCount ) &&
99646              ( pExclusiveScissors == rhs.pExclusiveScissors );
99647 #  endif
99648     }
99649 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV99650     bool operator!=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
99651     {
99652       return !operator==( rhs );
99653     }
99654 #endif
99655 
99656   public:
99657     VULKAN_HPP_NAMESPACE::StructureType  sType                 = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV;
99658     const void *                         pNext                 = {};
99659     uint32_t                             exclusiveScissorCount = {};
99660     const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors    = {};
99661   };
99662 
99663   template <>
99664   struct CppType<StructureType, StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV>
99665   {
99666     using Type = PipelineViewportExclusiveScissorStateCreateInfoNV;
99667   };
99668 
99669   struct ShadingRatePaletteNV
99670   {
99671     using NativeType = VkShadingRatePaletteNV;
99672 
99673 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShadingRatePaletteNVVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99674     VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV( uint32_t                                                shadingRatePaletteEntryCount_ = {},
99675                                                const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries_   = {} ) VULKAN_HPP_NOEXCEPT
99676       : shadingRatePaletteEntryCount{ shadingRatePaletteEntryCount_ }
99677       , pShadingRatePaletteEntries{ pShadingRatePaletteEntries_ }
99678     {
99679     }
99680 
99681     VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99682 
ShadingRatePaletteNVVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99683     ShadingRatePaletteNV( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT
99684       : ShadingRatePaletteNV( *reinterpret_cast<ShadingRatePaletteNV const *>( &rhs ) )
99685     {
99686     }
99687 
99688 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ShadingRatePaletteNVVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99689     ShadingRatePaletteNV(
99690       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV> const & shadingRatePaletteEntries_ )
99691       : shadingRatePaletteEntryCount( static_cast<uint32_t>( shadingRatePaletteEntries_.size() ) )
99692       , pShadingRatePaletteEntries( shadingRatePaletteEntries_.data() )
99693     {
99694     }
99695 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99696 
99697     ShadingRatePaletteNV & operator=( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99698 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99699 
operator =VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99700     ShadingRatePaletteNV & operator=( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT
99701     {
99702       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV const *>( &rhs );
99703       return *this;
99704     }
99705 
99706 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setShadingRatePaletteEntryCountVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99707     VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV & setShadingRatePaletteEntryCount( uint32_t shadingRatePaletteEntryCount_ ) VULKAN_HPP_NOEXCEPT
99708     {
99709       shadingRatePaletteEntryCount = shadingRatePaletteEntryCount_;
99710       return *this;
99711     }
99712 
99713     VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV &
setPShadingRatePaletteEntriesVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99714       setPShadingRatePaletteEntries( const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries_ ) VULKAN_HPP_NOEXCEPT
99715     {
99716       pShadingRatePaletteEntries = pShadingRatePaletteEntries_;
99717       return *this;
99718     }
99719 
99720 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setShadingRatePaletteEntriesVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99721     ShadingRatePaletteNV & setShadingRatePaletteEntries(
99722       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV> const & shadingRatePaletteEntries_ )
99723       VULKAN_HPP_NOEXCEPT
99724     {
99725       shadingRatePaletteEntryCount = static_cast<uint32_t>( shadingRatePaletteEntries_.size() );
99726       pShadingRatePaletteEntries   = shadingRatePaletteEntries_.data();
99727       return *this;
99728     }
99729 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99730 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99731 
operator VkShadingRatePaletteNV const&VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99732     operator VkShadingRatePaletteNV const &() const VULKAN_HPP_NOEXCEPT
99733     {
99734       return *reinterpret_cast<const VkShadingRatePaletteNV *>( this );
99735     }
99736 
operator VkShadingRatePaletteNV&VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99737     operator VkShadingRatePaletteNV &() VULKAN_HPP_NOEXCEPT
99738     {
99739       return *reinterpret_cast<VkShadingRatePaletteNV *>( this );
99740     }
99741 
99742 #if defined( VULKAN_HPP_USE_REFLECT )
99743 #  if 14 <= VULKAN_HPP_CPP_VERSION
99744     auto
99745 #  else
99746     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * const &>
99747 #  endif
reflectVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99748       reflect() const VULKAN_HPP_NOEXCEPT
99749     {
99750       return std::tie( shadingRatePaletteEntryCount, pShadingRatePaletteEntries );
99751     }
99752 #endif
99753 
99754 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99755     auto operator<=>( ShadingRatePaletteNV const & ) const = default;
99756 #else
operator ==VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99757     bool operator==( ShadingRatePaletteNV const & rhs ) const VULKAN_HPP_NOEXCEPT
99758     {
99759 #  if defined( VULKAN_HPP_USE_REFLECT )
99760       return this->reflect() == rhs.reflect();
99761 #  else
99762       return ( shadingRatePaletteEntryCount == rhs.shadingRatePaletteEntryCount ) && ( pShadingRatePaletteEntries == rhs.pShadingRatePaletteEntries );
99763 #  endif
99764     }
99765 
operator !=VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV99766     bool operator!=( ShadingRatePaletteNV const & rhs ) const VULKAN_HPP_NOEXCEPT
99767     {
99768       return !operator==( rhs );
99769     }
99770 #endif
99771 
99772   public:
99773     uint32_t                                                shadingRatePaletteEntryCount = {};
99774     const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries   = {};
99775   };
99776 
99777   struct PipelineViewportShadingRateImageStateCreateInfoNV
99778   {
99779     using NativeType = VkPipelineViewportShadingRateImageStateCreateInfoNV;
99780 
99781     static const bool                                  allowDuplicate = false;
99782     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV;
99783 
99784 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportShadingRateImageStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99785     VULKAN_HPP_CONSTEXPR PipelineViewportShadingRateImageStateCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32                       shadingRateImageEnable_ = {},
99786                                                                             uint32_t                                           viewportCount_          = {},
99787                                                                             const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes_   = {},
99788                                                                             const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
99789       : pNext{ pNext_ }
99790       , shadingRateImageEnable{ shadingRateImageEnable_ }
99791       , viewportCount{ viewportCount_ }
99792       , pShadingRatePalettes{ pShadingRatePalettes_ }
99793     {
99794     }
99795 
99796     VULKAN_HPP_CONSTEXPR
99797       PipelineViewportShadingRateImageStateCreateInfoNV( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99798 
PipelineViewportShadingRateImageStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99799     PipelineViewportShadingRateImageStateCreateInfoNV( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
99800       : PipelineViewportShadingRateImageStateCreateInfoNV( *reinterpret_cast<PipelineViewportShadingRateImageStateCreateInfoNV const *>( &rhs ) )
99801     {
99802     }
99803 
99804 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportShadingRateImageStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99805     PipelineViewportShadingRateImageStateCreateInfoNV(
99806       VULKAN_HPP_NAMESPACE::Bool32                                                                            shadingRateImageEnable_,
99807       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes_,
99808       const void *                                                                                            pNext_ = nullptr )
99809       : pNext( pNext_ )
99810       , shadingRateImageEnable( shadingRateImageEnable_ )
99811       , viewportCount( static_cast<uint32_t>( shadingRatePalettes_.size() ) )
99812       , pShadingRatePalettes( shadingRatePalettes_.data() )
99813     {
99814     }
99815 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99816 
99817     PipelineViewportShadingRateImageStateCreateInfoNV &
99818       operator=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99819 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99820 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99821     PipelineViewportShadingRateImageStateCreateInfoNV & operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
99822     {
99823       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV const *>( &rhs );
99824       return *this;
99825     }
99826 
99827 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99828     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99829     {
99830       pNext = pNext_;
99831       return *this;
99832     }
99833 
99834     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV &
setShadingRateImageEnableVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99835       setShadingRateImageEnable( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_ ) VULKAN_HPP_NOEXCEPT
99836     {
99837       shadingRateImageEnable = shadingRateImageEnable_;
99838       return *this;
99839     }
99840 
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99841     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
99842     {
99843       viewportCount = viewportCount_;
99844       return *this;
99845     }
99846 
99847     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV &
setPShadingRatePalettesVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99848       setPShadingRatePalettes( const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT
99849     {
99850       pShadingRatePalettes = pShadingRatePalettes_;
99851       return *this;
99852     }
99853 
99854 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setShadingRatePalettesVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99855     PipelineViewportShadingRateImageStateCreateInfoNV & setShadingRatePalettes(
99856       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT
99857     {
99858       viewportCount        = static_cast<uint32_t>( shadingRatePalettes_.size() );
99859       pShadingRatePalettes = shadingRatePalettes_.data();
99860       return *this;
99861     }
99862 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99863 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99864 
operator VkPipelineViewportShadingRateImageStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99865     operator VkPipelineViewportShadingRateImageStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
99866     {
99867       return *reinterpret_cast<const VkPipelineViewportShadingRateImageStateCreateInfoNV *>( this );
99868     }
99869 
operator VkPipelineViewportShadingRateImageStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99870     operator VkPipelineViewportShadingRateImageStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
99871     {
99872       return *reinterpret_cast<VkPipelineViewportShadingRateImageStateCreateInfoNV *>( this );
99873     }
99874 
99875 #if defined( VULKAN_HPP_USE_REFLECT )
99876 #  if 14 <= VULKAN_HPP_CPP_VERSION
99877     auto
99878 #  else
99879     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
99880                const void * const &,
99881                VULKAN_HPP_NAMESPACE::Bool32 const &,
99882                uint32_t const &,
99883                const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * const &>
99884 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99885       reflect() const VULKAN_HPP_NOEXCEPT
99886     {
99887       return std::tie( sType, pNext, shadingRateImageEnable, viewportCount, pShadingRatePalettes );
99888     }
99889 #endif
99890 
99891 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99892     auto operator<=>( PipelineViewportShadingRateImageStateCreateInfoNV const & ) const = default;
99893 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99894     bool operator==( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
99895     {
99896 #  if defined( VULKAN_HPP_USE_REFLECT )
99897       return this->reflect() == rhs.reflect();
99898 #  else
99899       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateImageEnable == rhs.shadingRateImageEnable ) &&
99900              ( viewportCount == rhs.viewportCount ) && ( pShadingRatePalettes == rhs.pShadingRatePalettes );
99901 #  endif
99902     }
99903 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV99904     bool operator!=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
99905     {
99906       return !operator==( rhs );
99907     }
99908 #endif
99909 
99910   public:
99911     VULKAN_HPP_NAMESPACE::StructureType                sType                  = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV;
99912     const void *                                       pNext                  = {};
99913     VULKAN_HPP_NAMESPACE::Bool32                       shadingRateImageEnable = {};
99914     uint32_t                                           viewportCount          = {};
99915     const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes   = {};
99916   };
99917 
99918   template <>
99919   struct CppType<StructureType, StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV>
99920   {
99921     using Type = PipelineViewportShadingRateImageStateCreateInfoNV;
99922   };
99923 
99924   struct ViewportSwizzleNV
99925   {
99926     using NativeType = VkViewportSwizzleNV;
99927 
99928 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ViewportSwizzleNVVULKAN_HPP_NAMESPACE::ViewportSwizzleNV99929     VULKAN_HPP_CONSTEXPR ViewportSwizzleNV(
99930       VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX,
99931       VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX,
99932       VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX,
99933       VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX ) VULKAN_HPP_NOEXCEPT
99934       : x{ x_ }
99935       , y{ y_ }
99936       , z{ z_ }
99937       , w{ w_ }
99938     {
99939     }
99940 
99941     VULKAN_HPP_CONSTEXPR ViewportSwizzleNV( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99942 
ViewportSwizzleNVVULKAN_HPP_NAMESPACE::ViewportSwizzleNV99943     ViewportSwizzleNV( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT : ViewportSwizzleNV( *reinterpret_cast<ViewportSwizzleNV const *>( &rhs ) ) {}
99944 
99945     ViewportSwizzleNV & operator=( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99946 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99947 
operator =VULKAN_HPP_NAMESPACE::ViewportSwizzleNV99948     ViewportSwizzleNV & operator=( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT
99949     {
99950       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViewportSwizzleNV const *>( &rhs );
99951       return *this;
99952     }
99953 
99954 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::ViewportSwizzleNV99955     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setX( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ ) VULKAN_HPP_NOEXCEPT
99956     {
99957       x = x_;
99958       return *this;
99959     }
99960 
setYVULKAN_HPP_NAMESPACE::ViewportSwizzleNV99961     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setY( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y_ ) VULKAN_HPP_NOEXCEPT
99962     {
99963       y = y_;
99964       return *this;
99965     }
99966 
setZVULKAN_HPP_NAMESPACE::ViewportSwizzleNV99967     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setZ( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z_ ) VULKAN_HPP_NOEXCEPT
99968     {
99969       z = z_;
99970       return *this;
99971     }
99972 
setWVULKAN_HPP_NAMESPACE::ViewportSwizzleNV99973     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setW( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w_ ) VULKAN_HPP_NOEXCEPT
99974     {
99975       w = w_;
99976       return *this;
99977     }
99978 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99979 
operator VkViewportSwizzleNV const&VULKAN_HPP_NAMESPACE::ViewportSwizzleNV99980     operator VkViewportSwizzleNV const &() const VULKAN_HPP_NOEXCEPT
99981     {
99982       return *reinterpret_cast<const VkViewportSwizzleNV *>( this );
99983     }
99984 
operator VkViewportSwizzleNV&VULKAN_HPP_NAMESPACE::ViewportSwizzleNV99985     operator VkViewportSwizzleNV &() VULKAN_HPP_NOEXCEPT
99986     {
99987       return *reinterpret_cast<VkViewportSwizzleNV *>( this );
99988     }
99989 
99990 #if defined( VULKAN_HPP_USE_REFLECT )
99991 #  if 14 <= VULKAN_HPP_CPP_VERSION
99992     auto
99993 #  else
99994     std::tuple<VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &,
99995                VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &,
99996                VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &,
99997                VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &>
99998 #  endif
reflectVULKAN_HPP_NAMESPACE::ViewportSwizzleNV99999       reflect() const VULKAN_HPP_NOEXCEPT
100000     {
100001       return std::tie( x, y, z, w );
100002     }
100003 #endif
100004 
100005 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100006     auto operator<=>( ViewportSwizzleNV const & ) const = default;
100007 #else
operator ==VULKAN_HPP_NAMESPACE::ViewportSwizzleNV100008     bool operator==( ViewportSwizzleNV const & rhs ) const VULKAN_HPP_NOEXCEPT
100009     {
100010 #  if defined( VULKAN_HPP_USE_REFLECT )
100011       return this->reflect() == rhs.reflect();
100012 #  else
100013       return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z ) && ( w == rhs.w );
100014 #  endif
100015     }
100016 
operator !=VULKAN_HPP_NAMESPACE::ViewportSwizzleNV100017     bool operator!=( ViewportSwizzleNV const & rhs ) const VULKAN_HPP_NOEXCEPT
100018     {
100019       return !operator==( rhs );
100020     }
100021 #endif
100022 
100023   public:
100024     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
100025     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
100026     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
100027     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
100028   };
100029 
100030   struct PipelineViewportSwizzleStateCreateInfoNV
100031   {
100032     using NativeType = VkPipelineViewportSwizzleStateCreateInfoNV;
100033 
100034     static const bool                                  allowDuplicate = false;
100035     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
100036 
100037 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportSwizzleStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100038     VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_             = {},
100039                                                                    uint32_t                                                        viewportCount_     = {},
100040                                                                    const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV *                 pViewportSwizzles_ = {},
100041                                                                    const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
100042       : pNext{ pNext_ }
100043       , flags{ flags_ }
100044       , viewportCount{ viewportCount_ }
100045       , pViewportSwizzles{ pViewportSwizzles_ }
100046     {
100047     }
100048 
100049     VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100050 
PipelineViewportSwizzleStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100051     PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
100052       : PipelineViewportSwizzleStateCreateInfoNV( *reinterpret_cast<PipelineViewportSwizzleStateCreateInfoNV const *>( &rhs ) )
100053     {
100054     }
100055 
100056 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportSwizzleStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100057     PipelineViewportSwizzleStateCreateInfoNV(
100058       VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV                                      flags_,
100059       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV> const & viewportSwizzles_,
100060       const void *                                                                                         pNext_ = nullptr )
100061       : pNext( pNext_ ), flags( flags_ ), viewportCount( static_cast<uint32_t>( viewportSwizzles_.size() ) ), pViewportSwizzles( viewportSwizzles_.data() )
100062     {
100063     }
100064 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100065 
100066     PipelineViewportSwizzleStateCreateInfoNV & operator=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100067 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100068 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100069     PipelineViewportSwizzleStateCreateInfoNV & operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
100070     {
100071       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV const *>( &rhs );
100072       return *this;
100073     }
100074 
100075 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100076     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
100077     {
100078       pNext = pNext_;
100079       return *this;
100080     }
100081 
100082     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100083       setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
100084     {
100085       flags = flags_;
100086       return *this;
100087     }
100088 
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100089     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
100090     {
100091       viewportCount = viewportCount_;
100092       return *this;
100093     }
100094 
100095     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV &
setPViewportSwizzlesVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100096       setPViewportSwizzles( const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV * pViewportSwizzles_ ) VULKAN_HPP_NOEXCEPT
100097     {
100098       pViewportSwizzles = pViewportSwizzles_;
100099       return *this;
100100     }
100101 
100102 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewportSwizzlesVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100103     PipelineViewportSwizzleStateCreateInfoNV & setViewportSwizzles(
100104       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV> const & viewportSwizzles_ ) VULKAN_HPP_NOEXCEPT
100105     {
100106       viewportCount     = static_cast<uint32_t>( viewportSwizzles_.size() );
100107       pViewportSwizzles = viewportSwizzles_.data();
100108       return *this;
100109     }
100110 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100111 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100112 
operator VkPipelineViewportSwizzleStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100113     operator VkPipelineViewportSwizzleStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
100114     {
100115       return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV *>( this );
100116     }
100117 
operator VkPipelineViewportSwizzleStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100118     operator VkPipelineViewportSwizzleStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
100119     {
100120       return *reinterpret_cast<VkPipelineViewportSwizzleStateCreateInfoNV *>( this );
100121     }
100122 
100123 #if defined( VULKAN_HPP_USE_REFLECT )
100124 #  if 14 <= VULKAN_HPP_CPP_VERSION
100125     auto
100126 #  else
100127     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
100128                const void * const &,
100129                VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV const &,
100130                uint32_t const &,
100131                const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV * const &>
100132 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100133       reflect() const VULKAN_HPP_NOEXCEPT
100134     {
100135       return std::tie( sType, pNext, flags, viewportCount, pViewportSwizzles );
100136     }
100137 #endif
100138 
100139 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100140     auto operator<=>( PipelineViewportSwizzleStateCreateInfoNV const & ) const = default;
100141 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100142     bool operator==( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
100143     {
100144 #  if defined( VULKAN_HPP_USE_REFLECT )
100145       return this->reflect() == rhs.reflect();
100146 #  else
100147       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( viewportCount == rhs.viewportCount ) &&
100148              ( pViewportSwizzles == rhs.pViewportSwizzles );
100149 #  endif
100150     }
100151 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV100152     bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
100153     {
100154       return !operator==( rhs );
100155     }
100156 #endif
100157 
100158   public:
100159     VULKAN_HPP_NAMESPACE::StructureType                             sType             = StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
100160     const void *                                                    pNext             = {};
100161     VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags             = {};
100162     uint32_t                                                        viewportCount     = {};
100163     const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV *                 pViewportSwizzles = {};
100164   };
100165 
100166   template <>
100167   struct CppType<StructureType, StructureType::ePipelineViewportSwizzleStateCreateInfoNV>
100168   {
100169     using Type = PipelineViewportSwizzleStateCreateInfoNV;
100170   };
100171 
100172   struct ViewportWScalingNV
100173   {
100174     using NativeType = VkViewportWScalingNV;
100175 
100176 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ViewportWScalingNVVULKAN_HPP_NAMESPACE::ViewportWScalingNV100177     VULKAN_HPP_CONSTEXPR ViewportWScalingNV( float xcoeff_ = {}, float ycoeff_ = {} ) VULKAN_HPP_NOEXCEPT
100178       : xcoeff{ xcoeff_ }
100179       , ycoeff{ ycoeff_ }
100180     {
100181     }
100182 
100183     VULKAN_HPP_CONSTEXPR ViewportWScalingNV( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100184 
ViewportWScalingNVVULKAN_HPP_NAMESPACE::ViewportWScalingNV100185     ViewportWScalingNV( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT : ViewportWScalingNV( *reinterpret_cast<ViewportWScalingNV const *>( &rhs ) ) {}
100186 
100187     ViewportWScalingNV & operator=( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100188 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100189 
operator =VULKAN_HPP_NAMESPACE::ViewportWScalingNV100190     ViewportWScalingNV & operator=( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT
100191     {
100192       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViewportWScalingNV const *>( &rhs );
100193       return *this;
100194     }
100195 
100196 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXcoeffVULKAN_HPP_NAMESPACE::ViewportWScalingNV100197     VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & setXcoeff( float xcoeff_ ) VULKAN_HPP_NOEXCEPT
100198     {
100199       xcoeff = xcoeff_;
100200       return *this;
100201     }
100202 
setYcoeffVULKAN_HPP_NAMESPACE::ViewportWScalingNV100203     VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & setYcoeff( float ycoeff_ ) VULKAN_HPP_NOEXCEPT
100204     {
100205       ycoeff = ycoeff_;
100206       return *this;
100207     }
100208 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100209 
operator VkViewportWScalingNV const&VULKAN_HPP_NAMESPACE::ViewportWScalingNV100210     operator VkViewportWScalingNV const &() const VULKAN_HPP_NOEXCEPT
100211     {
100212       return *reinterpret_cast<const VkViewportWScalingNV *>( this );
100213     }
100214 
operator VkViewportWScalingNV&VULKAN_HPP_NAMESPACE::ViewportWScalingNV100215     operator VkViewportWScalingNV &() VULKAN_HPP_NOEXCEPT
100216     {
100217       return *reinterpret_cast<VkViewportWScalingNV *>( this );
100218     }
100219 
100220 #if defined( VULKAN_HPP_USE_REFLECT )
100221 #  if 14 <= VULKAN_HPP_CPP_VERSION
100222     auto
100223 #  else
100224     std::tuple<float const &, float const &>
100225 #  endif
reflectVULKAN_HPP_NAMESPACE::ViewportWScalingNV100226       reflect() const VULKAN_HPP_NOEXCEPT
100227     {
100228       return std::tie( xcoeff, ycoeff );
100229     }
100230 #endif
100231 
100232 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100233     auto operator<=>( ViewportWScalingNV const & ) const = default;
100234 #else
operator ==VULKAN_HPP_NAMESPACE::ViewportWScalingNV100235     bool operator==( ViewportWScalingNV const & rhs ) const VULKAN_HPP_NOEXCEPT
100236     {
100237 #  if defined( VULKAN_HPP_USE_REFLECT )
100238       return this->reflect() == rhs.reflect();
100239 #  else
100240       return ( xcoeff == rhs.xcoeff ) && ( ycoeff == rhs.ycoeff );
100241 #  endif
100242     }
100243 
operator !=VULKAN_HPP_NAMESPACE::ViewportWScalingNV100244     bool operator!=( ViewportWScalingNV const & rhs ) const VULKAN_HPP_NOEXCEPT
100245     {
100246       return !operator==( rhs );
100247     }
100248 #endif
100249 
100250   public:
100251     float xcoeff = {};
100252     float ycoeff = {};
100253   };
100254 
100255   struct PipelineViewportWScalingStateCreateInfoNV
100256   {
100257     using NativeType = VkPipelineViewportWScalingStateCreateInfoNV;
100258 
100259     static const bool                                  allowDuplicate = false;
100260     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportWScalingStateCreateInfoNV;
100261 
100262 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportWScalingStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100263     VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32                     viewportWScalingEnable_ = {},
100264                                                                     uint32_t                                         viewportCount_          = {},
100265                                                                     const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings_     = {},
100266                                                                     const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
100267       : pNext{ pNext_ }
100268       , viewportWScalingEnable{ viewportWScalingEnable_ }
100269       , viewportCount{ viewportCount_ }
100270       , pViewportWScalings{ pViewportWScalings_ }
100271     {
100272     }
100273 
100274     VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100275 
PipelineViewportWScalingStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100276     PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
100277       : PipelineViewportWScalingStateCreateInfoNV( *reinterpret_cast<PipelineViewportWScalingStateCreateInfoNV const *>( &rhs ) )
100278     {
100279     }
100280 
100281 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportWScalingStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100282     PipelineViewportWScalingStateCreateInfoNV(
100283       VULKAN_HPP_NAMESPACE::Bool32                                                                          viewportWScalingEnable_,
100284       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings_,
100285       const void *                                                                                          pNext_ = nullptr )
100286       : pNext( pNext_ )
100287       , viewportWScalingEnable( viewportWScalingEnable_ )
100288       , viewportCount( static_cast<uint32_t>( viewportWScalings_.size() ) )
100289       , pViewportWScalings( viewportWScalings_.data() )
100290     {
100291     }
100292 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100293 
100294     PipelineViewportWScalingStateCreateInfoNV & operator=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100295 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100296 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100297     PipelineViewportWScalingStateCreateInfoNV & operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
100298     {
100299       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV const *>( &rhs );
100300       return *this;
100301     }
100302 
100303 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100304     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
100305     {
100306       pNext = pNext_;
100307       return *this;
100308     }
100309 
100310     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV &
setViewportWScalingEnableVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100311       setViewportWScalingEnable( VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_ ) VULKAN_HPP_NOEXCEPT
100312     {
100313       viewportWScalingEnable = viewportWScalingEnable_;
100314       return *this;
100315     }
100316 
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100317     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
100318     {
100319       viewportCount = viewportCount_;
100320       return *this;
100321     }
100322 
100323     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV &
setPViewportWScalingsVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100324       setPViewportWScalings( const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings_ ) VULKAN_HPP_NOEXCEPT
100325     {
100326       pViewportWScalings = pViewportWScalings_;
100327       return *this;
100328     }
100329 
100330 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewportWScalingsVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100331     PipelineViewportWScalingStateCreateInfoNV & setViewportWScalings(
100332       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings_ ) VULKAN_HPP_NOEXCEPT
100333     {
100334       viewportCount      = static_cast<uint32_t>( viewportWScalings_.size() );
100335       pViewportWScalings = viewportWScalings_.data();
100336       return *this;
100337     }
100338 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100339 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100340 
operator VkPipelineViewportWScalingStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100341     operator VkPipelineViewportWScalingStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
100342     {
100343       return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV *>( this );
100344     }
100345 
operator VkPipelineViewportWScalingStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100346     operator VkPipelineViewportWScalingStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
100347     {
100348       return *reinterpret_cast<VkPipelineViewportWScalingStateCreateInfoNV *>( this );
100349     }
100350 
100351 #if defined( VULKAN_HPP_USE_REFLECT )
100352 #  if 14 <= VULKAN_HPP_CPP_VERSION
100353     auto
100354 #  else
100355     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
100356                const void * const &,
100357                VULKAN_HPP_NAMESPACE::Bool32 const &,
100358                uint32_t const &,
100359                const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * const &>
100360 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100361       reflect() const VULKAN_HPP_NOEXCEPT
100362     {
100363       return std::tie( sType, pNext, viewportWScalingEnable, viewportCount, pViewportWScalings );
100364     }
100365 #endif
100366 
100367 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100368     auto operator<=>( PipelineViewportWScalingStateCreateInfoNV const & ) const = default;
100369 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100370     bool operator==( PipelineViewportWScalingStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
100371     {
100372 #  if defined( VULKAN_HPP_USE_REFLECT )
100373       return this->reflect() == rhs.reflect();
100374 #  else
100375       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewportWScalingEnable == rhs.viewportWScalingEnable ) &&
100376              ( viewportCount == rhs.viewportCount ) && ( pViewportWScalings == rhs.pViewportWScalings );
100377 #  endif
100378     }
100379 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV100380     bool operator!=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
100381     {
100382       return !operator==( rhs );
100383     }
100384 #endif
100385 
100386   public:
100387     VULKAN_HPP_NAMESPACE::StructureType              sType                  = StructureType::ePipelineViewportWScalingStateCreateInfoNV;
100388     const void *                                     pNext                  = {};
100389     VULKAN_HPP_NAMESPACE::Bool32                     viewportWScalingEnable = {};
100390     uint32_t                                         viewportCount          = {};
100391     const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings     = {};
100392   };
100393 
100394   template <>
100395   struct CppType<StructureType, StructureType::ePipelineViewportWScalingStateCreateInfoNV>
100396   {
100397     using Type = PipelineViewportWScalingStateCreateInfoNV;
100398   };
100399 
100400 #if defined( VK_USE_PLATFORM_GGP )
100401   struct PresentFrameTokenGGP
100402   {
100403     using NativeType = VkPresentFrameTokenGGP;
100404 
100405     static const bool                                  allowDuplicate = false;
100406     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentFrameTokenGGP;
100407 
100408 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentFrameTokenGGPVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100409     VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( GgpFrameToken frameToken_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
100410       : pNext{ pNext_ }
100411       , frameToken{ frameToken_ }
100412     {
100413     }
100414 
100415     VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100416 
PresentFrameTokenGGPVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100417     PresentFrameTokenGGP( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT
100418       : PresentFrameTokenGGP( *reinterpret_cast<PresentFrameTokenGGP const *>( &rhs ) )
100419     {
100420     }
100421 
100422     PresentFrameTokenGGP & operator=( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100423 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100424 
operator =VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100425     PresentFrameTokenGGP & operator=( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT
100426     {
100427       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP const *>( &rhs );
100428       return *this;
100429     }
100430 
100431 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100432     VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
100433     {
100434       pNext = pNext_;
100435       return *this;
100436     }
100437 
setFrameTokenVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100438     VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & setFrameToken( GgpFrameToken frameToken_ ) VULKAN_HPP_NOEXCEPT
100439     {
100440       frameToken = frameToken_;
100441       return *this;
100442     }
100443 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100444 
operator VkPresentFrameTokenGGP const&VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100445     operator VkPresentFrameTokenGGP const &() const VULKAN_HPP_NOEXCEPT
100446     {
100447       return *reinterpret_cast<const VkPresentFrameTokenGGP *>( this );
100448     }
100449 
operator VkPresentFrameTokenGGP&VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100450     operator VkPresentFrameTokenGGP &() VULKAN_HPP_NOEXCEPT
100451     {
100452       return *reinterpret_cast<VkPresentFrameTokenGGP *>( this );
100453     }
100454 
100455 #  if defined( VULKAN_HPP_USE_REFLECT )
100456 #    if 14 <= VULKAN_HPP_CPP_VERSION
100457     auto
100458 #    else
100459     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, GgpFrameToken const &>
100460 #    endif
reflectVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100461       reflect() const VULKAN_HPP_NOEXCEPT
100462     {
100463       return std::tie( sType, pNext, frameToken );
100464     }
100465 #  endif
100466 
100467 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100468     std::strong_ordering operator<=>( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
100469     {
100470       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
100471         return cmp;
100472       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
100473         return cmp;
100474       if ( auto cmp = memcmp( &frameToken, &rhs.frameToken, sizeof( GgpFrameToken ) ); cmp != 0 )
100475         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
100476 
100477       return std::strong_ordering::equivalent;
100478     }
100479 #  endif
100480 
operator ==VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100481     bool operator==( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
100482     {
100483       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &frameToken, &rhs.frameToken, sizeof( GgpFrameToken ) ) == 0 );
100484     }
100485 
operator !=VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP100486     bool operator!=( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
100487     {
100488       return !operator==( rhs );
100489     }
100490 
100491   public:
100492     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::ePresentFrameTokenGGP;
100493     const void *                        pNext      = {};
100494     GgpFrameToken                       frameToken = {};
100495   };
100496 
100497   template <>
100498   struct CppType<StructureType, StructureType::ePresentFrameTokenGGP>
100499   {
100500     using Type = PresentFrameTokenGGP;
100501   };
100502 #endif /*VK_USE_PLATFORM_GGP*/
100503 
100504   struct PresentIdKHR
100505   {
100506     using NativeType = VkPresentIdKHR;
100507 
100508     static const bool                                  allowDuplicate = false;
100509     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentIdKHR;
100510 
100511 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentIdKHRVULKAN_HPP_NAMESPACE::PresentIdKHR100512     VULKAN_HPP_CONSTEXPR PresentIdKHR( uint32_t swapchainCount_ = {}, const uint64_t * pPresentIds_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
100513       : pNext{ pNext_ }
100514       , swapchainCount{ swapchainCount_ }
100515       , pPresentIds{ pPresentIds_ }
100516     {
100517     }
100518 
100519     VULKAN_HPP_CONSTEXPR PresentIdKHR( PresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100520 
PresentIdKHRVULKAN_HPP_NAMESPACE::PresentIdKHR100521     PresentIdKHR( VkPresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentIdKHR( *reinterpret_cast<PresentIdKHR const *>( &rhs ) ) {}
100522 
100523 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentIdKHRVULKAN_HPP_NAMESPACE::PresentIdKHR100524     PresentIdKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & presentIds_, const void * pNext_ = nullptr )
100525       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( presentIds_.size() ) ), pPresentIds( presentIds_.data() )
100526     {
100527     }
100528 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100529 
100530     PresentIdKHR & operator=( PresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100531 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100532 
operator =VULKAN_HPP_NAMESPACE::PresentIdKHR100533     PresentIdKHR & operator=( VkPresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100534     {
100535       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentIdKHR const *>( &rhs );
100536       return *this;
100537     }
100538 
100539 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentIdKHR100540     VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
100541     {
100542       pNext = pNext_;
100543       return *this;
100544     }
100545 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentIdKHR100546     VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
100547     {
100548       swapchainCount = swapchainCount_;
100549       return *this;
100550     }
100551 
setPPresentIdsVULKAN_HPP_NAMESPACE::PresentIdKHR100552     VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setPPresentIds( const uint64_t * pPresentIds_ ) VULKAN_HPP_NOEXCEPT
100553     {
100554       pPresentIds = pPresentIds_;
100555       return *this;
100556     }
100557 
100558 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPresentIdsVULKAN_HPP_NAMESPACE::PresentIdKHR100559     PresentIdKHR & setPresentIds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & presentIds_ ) VULKAN_HPP_NOEXCEPT
100560     {
100561       swapchainCount = static_cast<uint32_t>( presentIds_.size() );
100562       pPresentIds    = presentIds_.data();
100563       return *this;
100564     }
100565 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100566 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100567 
operator VkPresentIdKHR const&VULKAN_HPP_NAMESPACE::PresentIdKHR100568     operator VkPresentIdKHR const &() const VULKAN_HPP_NOEXCEPT
100569     {
100570       return *reinterpret_cast<const VkPresentIdKHR *>( this );
100571     }
100572 
operator VkPresentIdKHR&VULKAN_HPP_NAMESPACE::PresentIdKHR100573     operator VkPresentIdKHR &() VULKAN_HPP_NOEXCEPT
100574     {
100575       return *reinterpret_cast<VkPresentIdKHR *>( this );
100576     }
100577 
100578 #if defined( VULKAN_HPP_USE_REFLECT )
100579 #  if 14 <= VULKAN_HPP_CPP_VERSION
100580     auto
100581 #  else
100582     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint64_t * const &>
100583 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentIdKHR100584       reflect() const VULKAN_HPP_NOEXCEPT
100585     {
100586       return std::tie( sType, pNext, swapchainCount, pPresentIds );
100587     }
100588 #endif
100589 
100590 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100591     auto operator<=>( PresentIdKHR const & ) const = default;
100592 #else
operator ==VULKAN_HPP_NAMESPACE::PresentIdKHR100593     bool operator==( PresentIdKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100594     {
100595 #  if defined( VULKAN_HPP_USE_REFLECT )
100596       return this->reflect() == rhs.reflect();
100597 #  else
100598       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pPresentIds == rhs.pPresentIds );
100599 #  endif
100600     }
100601 
operator !=VULKAN_HPP_NAMESPACE::PresentIdKHR100602     bool operator!=( PresentIdKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100603     {
100604       return !operator==( rhs );
100605     }
100606 #endif
100607 
100608   public:
100609     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePresentIdKHR;
100610     const void *                        pNext          = {};
100611     uint32_t                            swapchainCount = {};
100612     const uint64_t *                    pPresentIds    = {};
100613   };
100614 
100615   template <>
100616   struct CppType<StructureType, StructureType::ePresentIdKHR>
100617   {
100618     using Type = PresentIdKHR;
100619   };
100620 
100621   struct PresentInfoKHR
100622   {
100623     using NativeType = VkPresentInfoKHR;
100624 
100625     static const bool                                  allowDuplicate = false;
100626     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentInfoKHR;
100627 
100628 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR100629     VULKAN_HPP_CONSTEXPR PresentInfoKHR( uint32_t                                   waitSemaphoreCount_ = {},
100630                                          const VULKAN_HPP_NAMESPACE::Semaphore *    pWaitSemaphores_    = {},
100631                                          uint32_t                                   swapchainCount_     = {},
100632                                          const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains_        = {},
100633                                          const uint32_t *                           pImageIndices_      = {},
100634                                          VULKAN_HPP_NAMESPACE::Result *             pResults_           = {},
100635                                          const void *                               pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
100636       : pNext{ pNext_ }
100637       , waitSemaphoreCount{ waitSemaphoreCount_ }
100638       , pWaitSemaphores{ pWaitSemaphores_ }
100639       , swapchainCount{ swapchainCount_ }
100640       , pSwapchains{ pSwapchains_ }
100641       , pImageIndices{ pImageIndices_ }
100642       , pResults{ pResults_ }
100643     {
100644     }
100645 
100646     VULKAN_HPP_CONSTEXPR PresentInfoKHR( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100647 
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR100648     PresentInfoKHR( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentInfoKHR( *reinterpret_cast<PresentInfoKHR const *>( &rhs ) ) {}
100649 
100650 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR100651     PresentInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &    waitSemaphores_,
100652                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains_   = {},
100653                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                           imageIndices_ = {},
100654                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::Result> const &             results_      = {},
100655                     const void *                                                                                    pNext_        = nullptr )
100656       : pNext( pNext_ )
100657       , waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) )
100658       , pWaitSemaphores( waitSemaphores_.data() )
100659       , swapchainCount( static_cast<uint32_t>( swapchains_.size() ) )
100660       , pSwapchains( swapchains_.data() )
100661       , pImageIndices( imageIndices_.data() )
100662       , pResults( results_.data() )
100663     {
100664 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
100665       VULKAN_HPP_ASSERT( swapchains_.size() == imageIndices_.size() );
100666       VULKAN_HPP_ASSERT( results_.empty() || ( swapchains_.size() == results_.size() ) );
100667       VULKAN_HPP_ASSERT( results_.empty() || ( imageIndices_.size() == results_.size() ) );
100668 #    else
100669       if ( swapchains_.size() != imageIndices_.size() )
100670       {
100671         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::PresentInfoKHR::PresentInfoKHR: swapchains_.size() != imageIndices_.size()" );
100672       }
100673       if ( !results_.empty() && ( swapchains_.size() != results_.size() ) )
100674       {
100675         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( swapchains_.size() != results_.size() )" );
100676       }
100677       if ( !results_.empty() && ( imageIndices_.size() != results_.size() ) )
100678       {
100679         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( imageIndices_.size() != results_.size() )" );
100680       }
100681 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
100682     }
100683 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100684 
100685     PresentInfoKHR & operator=( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100686 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100687 
operator =VULKAN_HPP_NAMESPACE::PresentInfoKHR100688     PresentInfoKHR & operator=( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100689     {
100690       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentInfoKHR const *>( &rhs );
100691       return *this;
100692     }
100693 
100694 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentInfoKHR100695     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
100696     {
100697       pNext = pNext_;
100698       return *this;
100699     }
100700 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::PresentInfoKHR100701     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
100702     {
100703       waitSemaphoreCount = waitSemaphoreCount_;
100704       return *this;
100705     }
100706 
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::PresentInfoKHR100707     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
100708     {
100709       pWaitSemaphores = pWaitSemaphores_;
100710       return *this;
100711     }
100712 
100713 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
100714     PresentInfoKHR &
setWaitSemaphoresVULKAN_HPP_NAMESPACE::PresentInfoKHR100715       setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT
100716     {
100717       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
100718       pWaitSemaphores    = waitSemaphores_.data();
100719       return *this;
100720     }
100721 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100722 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentInfoKHR100723     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
100724     {
100725       swapchainCount = swapchainCount_;
100726       return *this;
100727     }
100728 
setPSwapchainsVULKAN_HPP_NAMESPACE::PresentInfoKHR100729     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPSwapchains( const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains_ ) VULKAN_HPP_NOEXCEPT
100730     {
100731       pSwapchains = pSwapchains_;
100732       return *this;
100733     }
100734 
100735 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
100736     PresentInfoKHR &
setSwapchainsVULKAN_HPP_NAMESPACE::PresentInfoKHR100737       setSwapchains( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains_ ) VULKAN_HPP_NOEXCEPT
100738     {
100739       swapchainCount = static_cast<uint32_t>( swapchains_.size() );
100740       pSwapchains    = swapchains_.data();
100741       return *this;
100742     }
100743 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100744 
setPImageIndicesVULKAN_HPP_NAMESPACE::PresentInfoKHR100745     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPImageIndices( const uint32_t * pImageIndices_ ) VULKAN_HPP_NOEXCEPT
100746     {
100747       pImageIndices = pImageIndices_;
100748       return *this;
100749     }
100750 
100751 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageIndicesVULKAN_HPP_NAMESPACE::PresentInfoKHR100752     PresentInfoKHR & setImageIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & imageIndices_ ) VULKAN_HPP_NOEXCEPT
100753     {
100754       swapchainCount = static_cast<uint32_t>( imageIndices_.size() );
100755       pImageIndices  = imageIndices_.data();
100756       return *this;
100757     }
100758 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100759 
setPResultsVULKAN_HPP_NAMESPACE::PresentInfoKHR100760     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPResults( VULKAN_HPP_NAMESPACE::Result * pResults_ ) VULKAN_HPP_NOEXCEPT
100761     {
100762       pResults = pResults_;
100763       return *this;
100764     }
100765 
100766 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResultsVULKAN_HPP_NAMESPACE::PresentInfoKHR100767     PresentInfoKHR & setResults( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::Result> const & results_ ) VULKAN_HPP_NOEXCEPT
100768     {
100769       swapchainCount = static_cast<uint32_t>( results_.size() );
100770       pResults       = results_.data();
100771       return *this;
100772     }
100773 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100774 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100775 
operator VkPresentInfoKHR const&VULKAN_HPP_NAMESPACE::PresentInfoKHR100776     operator VkPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
100777     {
100778       return *reinterpret_cast<const VkPresentInfoKHR *>( this );
100779     }
100780 
operator VkPresentInfoKHR&VULKAN_HPP_NAMESPACE::PresentInfoKHR100781     operator VkPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
100782     {
100783       return *reinterpret_cast<VkPresentInfoKHR *>( this );
100784     }
100785 
100786 #if defined( VULKAN_HPP_USE_REFLECT )
100787 #  if 14 <= VULKAN_HPP_CPP_VERSION
100788     auto
100789 #  else
100790     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
100791                const void * const &,
100792                uint32_t const &,
100793                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
100794                uint32_t const &,
100795                const VULKAN_HPP_NAMESPACE::SwapchainKHR * const &,
100796                const uint32_t * const &,
100797                VULKAN_HPP_NAMESPACE::Result * const &>
100798 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentInfoKHR100799       reflect() const VULKAN_HPP_NOEXCEPT
100800     {
100801       return std::tie( sType, pNext, waitSemaphoreCount, pWaitSemaphores, swapchainCount, pSwapchains, pImageIndices, pResults );
100802     }
100803 #endif
100804 
100805 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100806     auto operator<=>( PresentInfoKHR const & ) const = default;
100807 #else
operator ==VULKAN_HPP_NAMESPACE::PresentInfoKHR100808     bool operator==( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100809     {
100810 #  if defined( VULKAN_HPP_USE_REFLECT )
100811       return this->reflect() == rhs.reflect();
100812 #  else
100813       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) &&
100814              ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( swapchainCount == rhs.swapchainCount ) && ( pSwapchains == rhs.pSwapchains ) &&
100815              ( pImageIndices == rhs.pImageIndices ) && ( pResults == rhs.pResults );
100816 #  endif
100817     }
100818 
operator !=VULKAN_HPP_NAMESPACE::PresentInfoKHR100819     bool operator!=( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100820     {
100821       return !operator==( rhs );
100822     }
100823 #endif
100824 
100825   public:
100826     VULKAN_HPP_NAMESPACE::StructureType        sType              = StructureType::ePresentInfoKHR;
100827     const void *                               pNext              = {};
100828     uint32_t                                   waitSemaphoreCount = {};
100829     const VULKAN_HPP_NAMESPACE::Semaphore *    pWaitSemaphores    = {};
100830     uint32_t                                   swapchainCount     = {};
100831     const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains        = {};
100832     const uint32_t *                           pImageIndices      = {};
100833     VULKAN_HPP_NAMESPACE::Result *             pResults           = {};
100834   };
100835 
100836   template <>
100837   struct CppType<StructureType, StructureType::ePresentInfoKHR>
100838   {
100839     using Type = PresentInfoKHR;
100840   };
100841 
100842   struct RectLayerKHR
100843   {
100844     using NativeType = VkRectLayerKHR;
100845 
100846 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
100847     VULKAN_HPP_CONSTEXPR
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR100848       RectLayerKHR( VULKAN_HPP_NAMESPACE::Offset2D offset_ = {}, VULKAN_HPP_NAMESPACE::Extent2D extent_ = {}, uint32_t layer_ = {} ) VULKAN_HPP_NOEXCEPT
100849       : offset{ offset_ }
100850       , extent{ extent_ }
100851       , layer{ layer_ }
100852     {
100853     }
100854 
100855     VULKAN_HPP_CONSTEXPR RectLayerKHR( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100856 
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR100857     RectLayerKHR( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT : RectLayerKHR( *reinterpret_cast<RectLayerKHR const *>( &rhs ) ) {}
100858 
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR100859     explicit RectLayerKHR( Rect2D const & rect2D, uint32_t layer_ = {} ) : offset( rect2D.offset ), extent( rect2D.extent ), layer( layer_ ) {}
100860 
100861     RectLayerKHR & operator=( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100862 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100863 
operator =VULKAN_HPP_NAMESPACE::RectLayerKHR100864     RectLayerKHR & operator=( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100865     {
100866       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RectLayerKHR const *>( &rhs );
100867       return *this;
100868     }
100869 
100870 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setOffsetVULKAN_HPP_NAMESPACE::RectLayerKHR100871     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT
100872     {
100873       offset = offset_;
100874       return *this;
100875     }
100876 
setExtentVULKAN_HPP_NAMESPACE::RectLayerKHR100877     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT
100878     {
100879       extent = extent_;
100880       return *this;
100881     }
100882 
setLayerVULKAN_HPP_NAMESPACE::RectLayerKHR100883     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setLayer( uint32_t layer_ ) VULKAN_HPP_NOEXCEPT
100884     {
100885       layer = layer_;
100886       return *this;
100887     }
100888 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100889 
operator VkRectLayerKHR const&VULKAN_HPP_NAMESPACE::RectLayerKHR100890     operator VkRectLayerKHR const &() const VULKAN_HPP_NOEXCEPT
100891     {
100892       return *reinterpret_cast<const VkRectLayerKHR *>( this );
100893     }
100894 
operator VkRectLayerKHR&VULKAN_HPP_NAMESPACE::RectLayerKHR100895     operator VkRectLayerKHR &() VULKAN_HPP_NOEXCEPT
100896     {
100897       return *reinterpret_cast<VkRectLayerKHR *>( this );
100898     }
100899 
100900 #if defined( VULKAN_HPP_USE_REFLECT )
100901 #  if 14 <= VULKAN_HPP_CPP_VERSION
100902     auto
100903 #  else
100904     std::tuple<VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
100905 #  endif
reflectVULKAN_HPP_NAMESPACE::RectLayerKHR100906       reflect() const VULKAN_HPP_NOEXCEPT
100907     {
100908       return std::tie( offset, extent, layer );
100909     }
100910 #endif
100911 
100912 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100913     auto operator<=>( RectLayerKHR const & ) const = default;
100914 #else
operator ==VULKAN_HPP_NAMESPACE::RectLayerKHR100915     bool operator==( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100916     {
100917 #  if defined( VULKAN_HPP_USE_REFLECT )
100918       return this->reflect() == rhs.reflect();
100919 #  else
100920       return ( offset == rhs.offset ) && ( extent == rhs.extent ) && ( layer == rhs.layer );
100921 #  endif
100922     }
100923 
operator !=VULKAN_HPP_NAMESPACE::RectLayerKHR100924     bool operator!=( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100925     {
100926       return !operator==( rhs );
100927     }
100928 #endif
100929 
100930   public:
100931     VULKAN_HPP_NAMESPACE::Offset2D offset = {};
100932     VULKAN_HPP_NAMESPACE::Extent2D extent = {};
100933     uint32_t                       layer  = {};
100934   };
100935 
100936   struct PresentRegionKHR
100937   {
100938     using NativeType = VkPresentRegionKHR;
100939 
100940 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR100941     VULKAN_HPP_CONSTEXPR PresentRegionKHR( uint32_t rectangleCount_ = {}, const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles_ = {} ) VULKAN_HPP_NOEXCEPT
100942       : rectangleCount{ rectangleCount_ }
100943       , pRectangles{ pRectangles_ }
100944     {
100945     }
100946 
100947     VULKAN_HPP_CONSTEXPR PresentRegionKHR( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100948 
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR100949     PresentRegionKHR( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentRegionKHR( *reinterpret_cast<PresentRegionKHR const *>( &rhs ) ) {}
100950 
100951 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR100952     PresentRegionKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RectLayerKHR> const & rectangles_ )
100953       : rectangleCount( static_cast<uint32_t>( rectangles_.size() ) ), pRectangles( rectangles_.data() )
100954     {
100955     }
100956 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100957 
100958     PresentRegionKHR & operator=( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100959 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100960 
operator =VULKAN_HPP_NAMESPACE::PresentRegionKHR100961     PresentRegionKHR & operator=( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100962     {
100963       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentRegionKHR const *>( &rhs );
100964       return *this;
100965     }
100966 
100967 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRectangleCountVULKAN_HPP_NAMESPACE::PresentRegionKHR100968     VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & setRectangleCount( uint32_t rectangleCount_ ) VULKAN_HPP_NOEXCEPT
100969     {
100970       rectangleCount = rectangleCount_;
100971       return *this;
100972     }
100973 
setPRectanglesVULKAN_HPP_NAMESPACE::PresentRegionKHR100974     VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & setPRectangles( const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles_ ) VULKAN_HPP_NOEXCEPT
100975     {
100976       pRectangles = pRectangles_;
100977       return *this;
100978     }
100979 
100980 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
100981     PresentRegionKHR &
setRectanglesVULKAN_HPP_NAMESPACE::PresentRegionKHR100982       setRectangles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RectLayerKHR> const & rectangles_ ) VULKAN_HPP_NOEXCEPT
100983     {
100984       rectangleCount = static_cast<uint32_t>( rectangles_.size() );
100985       pRectangles    = rectangles_.data();
100986       return *this;
100987     }
100988 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100989 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100990 
operator VkPresentRegionKHR const&VULKAN_HPP_NAMESPACE::PresentRegionKHR100991     operator VkPresentRegionKHR const &() const VULKAN_HPP_NOEXCEPT
100992     {
100993       return *reinterpret_cast<const VkPresentRegionKHR *>( this );
100994     }
100995 
operator VkPresentRegionKHR&VULKAN_HPP_NAMESPACE::PresentRegionKHR100996     operator VkPresentRegionKHR &() VULKAN_HPP_NOEXCEPT
100997     {
100998       return *reinterpret_cast<VkPresentRegionKHR *>( this );
100999     }
101000 
101001 #if defined( VULKAN_HPP_USE_REFLECT )
101002 #  if 14 <= VULKAN_HPP_CPP_VERSION
101003     auto
101004 #  else
101005     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::RectLayerKHR * const &>
101006 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentRegionKHR101007       reflect() const VULKAN_HPP_NOEXCEPT
101008     {
101009       return std::tie( rectangleCount, pRectangles );
101010     }
101011 #endif
101012 
101013 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101014     auto operator<=>( PresentRegionKHR const & ) const = default;
101015 #else
operator ==VULKAN_HPP_NAMESPACE::PresentRegionKHR101016     bool operator==( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
101017     {
101018 #  if defined( VULKAN_HPP_USE_REFLECT )
101019       return this->reflect() == rhs.reflect();
101020 #  else
101021       return ( rectangleCount == rhs.rectangleCount ) && ( pRectangles == rhs.pRectangles );
101022 #  endif
101023     }
101024 
operator !=VULKAN_HPP_NAMESPACE::PresentRegionKHR101025     bool operator!=( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
101026     {
101027       return !operator==( rhs );
101028     }
101029 #endif
101030 
101031   public:
101032     uint32_t                                   rectangleCount = {};
101033     const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles    = {};
101034   };
101035 
101036   struct PresentRegionsKHR
101037   {
101038     using NativeType = VkPresentRegionsKHR;
101039 
101040     static const bool                                  allowDuplicate = false;
101041     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentRegionsKHR;
101042 
101043 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR101044     VULKAN_HPP_CONSTEXPR PresentRegionsKHR( uint32_t                                       swapchainCount_ = {},
101045                                             const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions_       = {},
101046                                             const void *                                   pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
101047       : pNext{ pNext_ }
101048       , swapchainCount{ swapchainCount_ }
101049       , pRegions{ pRegions_ }
101050     {
101051     }
101052 
101053     VULKAN_HPP_CONSTEXPR PresentRegionsKHR( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101054 
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR101055     PresentRegionsKHR( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentRegionsKHR( *reinterpret_cast<PresentRegionsKHR const *>( &rhs ) ) {}
101056 
101057 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR101058     PresentRegionsKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentRegionKHR> const & regions_,
101059                        const void *                                                                                        pNext_ = nullptr )
101060       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
101061     {
101062     }
101063 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101064 
101065     PresentRegionsKHR & operator=( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101066 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101067 
operator =VULKAN_HPP_NAMESPACE::PresentRegionsKHR101068     PresentRegionsKHR & operator=( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
101069     {
101070       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentRegionsKHR const *>( &rhs );
101071       return *this;
101072     }
101073 
101074 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentRegionsKHR101075     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101076     {
101077       pNext = pNext_;
101078       return *this;
101079     }
101080 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentRegionsKHR101081     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
101082     {
101083       swapchainCount = swapchainCount_;
101084       return *this;
101085     }
101086 
setPRegionsVULKAN_HPP_NAMESPACE::PresentRegionsKHR101087     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setPRegions( const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions_ ) VULKAN_HPP_NOEXCEPT
101088     {
101089       pRegions = pRegions_;
101090       return *this;
101091     }
101092 
101093 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
101094     PresentRegionsKHR &
setRegionsVULKAN_HPP_NAMESPACE::PresentRegionsKHR101095       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentRegionKHR> const & regions_ ) VULKAN_HPP_NOEXCEPT
101096     {
101097       swapchainCount = static_cast<uint32_t>( regions_.size() );
101098       pRegions       = regions_.data();
101099       return *this;
101100     }
101101 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101102 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101103 
operator VkPresentRegionsKHR const&VULKAN_HPP_NAMESPACE::PresentRegionsKHR101104     operator VkPresentRegionsKHR const &() const VULKAN_HPP_NOEXCEPT
101105     {
101106       return *reinterpret_cast<const VkPresentRegionsKHR *>( this );
101107     }
101108 
operator VkPresentRegionsKHR&VULKAN_HPP_NAMESPACE::PresentRegionsKHR101109     operator VkPresentRegionsKHR &() VULKAN_HPP_NOEXCEPT
101110     {
101111       return *reinterpret_cast<VkPresentRegionsKHR *>( this );
101112     }
101113 
101114 #if defined( VULKAN_HPP_USE_REFLECT )
101115 #  if 14 <= VULKAN_HPP_CPP_VERSION
101116     auto
101117 #  else
101118     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PresentRegionKHR * const &>
101119 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentRegionsKHR101120       reflect() const VULKAN_HPP_NOEXCEPT
101121     {
101122       return std::tie( sType, pNext, swapchainCount, pRegions );
101123     }
101124 #endif
101125 
101126 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101127     auto operator<=>( PresentRegionsKHR const & ) const = default;
101128 #else
operator ==VULKAN_HPP_NAMESPACE::PresentRegionsKHR101129     bool operator==( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
101130     {
101131 #  if defined( VULKAN_HPP_USE_REFLECT )
101132       return this->reflect() == rhs.reflect();
101133 #  else
101134       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pRegions == rhs.pRegions );
101135 #  endif
101136     }
101137 
operator !=VULKAN_HPP_NAMESPACE::PresentRegionsKHR101138     bool operator!=( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
101139     {
101140       return !operator==( rhs );
101141     }
101142 #endif
101143 
101144   public:
101145     VULKAN_HPP_NAMESPACE::StructureType            sType          = StructureType::ePresentRegionsKHR;
101146     const void *                                   pNext          = {};
101147     uint32_t                                       swapchainCount = {};
101148     const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions       = {};
101149   };
101150 
101151   template <>
101152   struct CppType<StructureType, StructureType::ePresentRegionsKHR>
101153   {
101154     using Type = PresentRegionsKHR;
101155   };
101156 
101157   struct PresentTimeGOOGLE
101158   {
101159     using NativeType = VkPresentTimeGOOGLE;
101160 
101161 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentTimeGOOGLEVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE101162     VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( uint32_t presentID_ = {}, uint64_t desiredPresentTime_ = {} ) VULKAN_HPP_NOEXCEPT
101163       : presentID{ presentID_ }
101164       , desiredPresentTime{ desiredPresentTime_ }
101165     {
101166     }
101167 
101168     VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101169 
PresentTimeGOOGLEVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE101170     PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT : PresentTimeGOOGLE( *reinterpret_cast<PresentTimeGOOGLE const *>( &rhs ) ) {}
101171 
101172     PresentTimeGOOGLE & operator=( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101173 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101174 
operator =VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE101175     PresentTimeGOOGLE & operator=( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
101176     {
101177       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE const *>( &rhs );
101178       return *this;
101179     }
101180 
101181 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPresentIDVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE101182     VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & setPresentID( uint32_t presentID_ ) VULKAN_HPP_NOEXCEPT
101183     {
101184       presentID = presentID_;
101185       return *this;
101186     }
101187 
setDesiredPresentTimeVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE101188     VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & setDesiredPresentTime( uint64_t desiredPresentTime_ ) VULKAN_HPP_NOEXCEPT
101189     {
101190       desiredPresentTime = desiredPresentTime_;
101191       return *this;
101192     }
101193 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101194 
operator VkPresentTimeGOOGLE const&VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE101195     operator VkPresentTimeGOOGLE const &() const VULKAN_HPP_NOEXCEPT
101196     {
101197       return *reinterpret_cast<const VkPresentTimeGOOGLE *>( this );
101198     }
101199 
operator VkPresentTimeGOOGLE&VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE101200     operator VkPresentTimeGOOGLE &() VULKAN_HPP_NOEXCEPT
101201     {
101202       return *reinterpret_cast<VkPresentTimeGOOGLE *>( this );
101203     }
101204 
101205 #if defined( VULKAN_HPP_USE_REFLECT )
101206 #  if 14 <= VULKAN_HPP_CPP_VERSION
101207     auto
101208 #  else
101209     std::tuple<uint32_t const &, uint64_t const &>
101210 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE101211       reflect() const VULKAN_HPP_NOEXCEPT
101212     {
101213       return std::tie( presentID, desiredPresentTime );
101214     }
101215 #endif
101216 
101217 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101218     auto operator<=>( PresentTimeGOOGLE const & ) const = default;
101219 #else
operator ==VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE101220     bool operator==( PresentTimeGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
101221     {
101222 #  if defined( VULKAN_HPP_USE_REFLECT )
101223       return this->reflect() == rhs.reflect();
101224 #  else
101225       return ( presentID == rhs.presentID ) && ( desiredPresentTime == rhs.desiredPresentTime );
101226 #  endif
101227     }
101228 
operator !=VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE101229     bool operator!=( PresentTimeGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
101230     {
101231       return !operator==( rhs );
101232     }
101233 #endif
101234 
101235   public:
101236     uint32_t presentID          = {};
101237     uint64_t desiredPresentTime = {};
101238   };
101239 
101240   struct PresentTimesInfoGOOGLE
101241   {
101242     using NativeType = VkPresentTimesInfoGOOGLE;
101243 
101244     static const bool                                  allowDuplicate = false;
101245     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentTimesInfoGOOGLE;
101246 
101247 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentTimesInfoGOOGLEVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101248     VULKAN_HPP_CONSTEXPR PresentTimesInfoGOOGLE( uint32_t                                        swapchainCount_ = {},
101249                                                  const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes_         = {},
101250                                                  const void *                                    pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
101251       : pNext{ pNext_ }
101252       , swapchainCount{ swapchainCount_ }
101253       , pTimes{ pTimes_ }
101254     {
101255     }
101256 
101257     VULKAN_HPP_CONSTEXPR PresentTimesInfoGOOGLE( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101258 
PresentTimesInfoGOOGLEVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101259     PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
101260       : PresentTimesInfoGOOGLE( *reinterpret_cast<PresentTimesInfoGOOGLE const *>( &rhs ) )
101261     {
101262     }
101263 
101264 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentTimesInfoGOOGLEVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101265     PresentTimesInfoGOOGLE( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE> const & times_,
101266                             const void *                                                                                         pNext_ = nullptr )
101267       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( times_.size() ) ), pTimes( times_.data() )
101268     {
101269     }
101270 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101271 
101272     PresentTimesInfoGOOGLE & operator=( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101273 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101274 
operator =VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101275     PresentTimesInfoGOOGLE & operator=( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
101276     {
101277       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE const *>( &rhs );
101278       return *this;
101279     }
101280 
101281 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101282     VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101283     {
101284       pNext = pNext_;
101285       return *this;
101286     }
101287 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101288     VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
101289     {
101290       swapchainCount = swapchainCount_;
101291       return *this;
101292     }
101293 
setPTimesVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101294     VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setPTimes( const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes_ ) VULKAN_HPP_NOEXCEPT
101295     {
101296       pTimes = pTimes_;
101297       return *this;
101298     }
101299 
101300 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
101301     PresentTimesInfoGOOGLE &
setTimesVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101302       setTimes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE> const & times_ ) VULKAN_HPP_NOEXCEPT
101303     {
101304       swapchainCount = static_cast<uint32_t>( times_.size() );
101305       pTimes         = times_.data();
101306       return *this;
101307     }
101308 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101309 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101310 
operator VkPresentTimesInfoGOOGLE const&VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101311     operator VkPresentTimesInfoGOOGLE const &() const VULKAN_HPP_NOEXCEPT
101312     {
101313       return *reinterpret_cast<const VkPresentTimesInfoGOOGLE *>( this );
101314     }
101315 
operator VkPresentTimesInfoGOOGLE&VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101316     operator VkPresentTimesInfoGOOGLE &() VULKAN_HPP_NOEXCEPT
101317     {
101318       return *reinterpret_cast<VkPresentTimesInfoGOOGLE *>( this );
101319     }
101320 
101321 #if defined( VULKAN_HPP_USE_REFLECT )
101322 #  if 14 <= VULKAN_HPP_CPP_VERSION
101323     auto
101324 #  else
101325     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * const &>
101326 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101327       reflect() const VULKAN_HPP_NOEXCEPT
101328     {
101329       return std::tie( sType, pNext, swapchainCount, pTimes );
101330     }
101331 #endif
101332 
101333 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101334     auto operator<=>( PresentTimesInfoGOOGLE const & ) const = default;
101335 #else
operator ==VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101336     bool operator==( PresentTimesInfoGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
101337     {
101338 #  if defined( VULKAN_HPP_USE_REFLECT )
101339       return this->reflect() == rhs.reflect();
101340 #  else
101341       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pTimes == rhs.pTimes );
101342 #  endif
101343     }
101344 
operator !=VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE101345     bool operator!=( PresentTimesInfoGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
101346     {
101347       return !operator==( rhs );
101348     }
101349 #endif
101350 
101351   public:
101352     VULKAN_HPP_NAMESPACE::StructureType             sType          = StructureType::ePresentTimesInfoGOOGLE;
101353     const void *                                    pNext          = {};
101354     uint32_t                                        swapchainCount = {};
101355     const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes         = {};
101356   };
101357 
101358   template <>
101359   struct CppType<StructureType, StructureType::ePresentTimesInfoGOOGLE>
101360   {
101361     using Type = PresentTimesInfoGOOGLE;
101362   };
101363 
101364   struct PrivateDataSlotCreateInfo
101365   {
101366     using NativeType = VkPrivateDataSlotCreateInfo;
101367 
101368     static const bool                                  allowDuplicate = false;
101369     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePrivateDataSlotCreateInfo;
101370 
101371 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PrivateDataSlotCreateInfoVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo101372     VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfo( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags_ = {},
101373                                                     const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
101374       : pNext{ pNext_ }
101375       , flags{ flags_ }
101376     {
101377     }
101378 
101379     VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfo( PrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101380 
PrivateDataSlotCreateInfoVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo101381     PrivateDataSlotCreateInfo( VkPrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
101382       : PrivateDataSlotCreateInfo( *reinterpret_cast<PrivateDataSlotCreateInfo const *>( &rhs ) )
101383     {
101384     }
101385 
101386     PrivateDataSlotCreateInfo & operator=( PrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101387 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101388 
operator =VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo101389     PrivateDataSlotCreateInfo & operator=( VkPrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
101390     {
101391       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const *>( &rhs );
101392       return *this;
101393     }
101394 
101395 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo101396     VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101397     {
101398       pNext = pNext_;
101399       return *this;
101400     }
101401 
setFlagsVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo101402     VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
101403     {
101404       flags = flags_;
101405       return *this;
101406     }
101407 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101408 
operator VkPrivateDataSlotCreateInfo const&VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo101409     operator VkPrivateDataSlotCreateInfo const &() const VULKAN_HPP_NOEXCEPT
101410     {
101411       return *reinterpret_cast<const VkPrivateDataSlotCreateInfo *>( this );
101412     }
101413 
operator VkPrivateDataSlotCreateInfo&VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo101414     operator VkPrivateDataSlotCreateInfo &() VULKAN_HPP_NOEXCEPT
101415     {
101416       return *reinterpret_cast<VkPrivateDataSlotCreateInfo *>( this );
101417     }
101418 
101419 #if defined( VULKAN_HPP_USE_REFLECT )
101420 #  if 14 <= VULKAN_HPP_CPP_VERSION
101421     auto
101422 #  else
101423     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags const &>
101424 #  endif
reflectVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo101425       reflect() const VULKAN_HPP_NOEXCEPT
101426     {
101427       return std::tie( sType, pNext, flags );
101428     }
101429 #endif
101430 
101431 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101432     auto operator<=>( PrivateDataSlotCreateInfo const & ) const = default;
101433 #else
operator ==VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo101434     bool operator==( PrivateDataSlotCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
101435     {
101436 #  if defined( VULKAN_HPP_USE_REFLECT )
101437       return this->reflect() == rhs.reflect();
101438 #  else
101439       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
101440 #  endif
101441     }
101442 
operator !=VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo101443     bool operator!=( PrivateDataSlotCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
101444     {
101445       return !operator==( rhs );
101446     }
101447 #endif
101448 
101449   public:
101450     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::ePrivateDataSlotCreateInfo;
101451     const void *                                     pNext = {};
101452     VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags = {};
101453   };
101454 
101455   template <>
101456   struct CppType<StructureType, StructureType::ePrivateDataSlotCreateInfo>
101457   {
101458     using Type = PrivateDataSlotCreateInfo;
101459   };
101460 
101461   using PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo;
101462 
101463   struct ProtectedSubmitInfo
101464   {
101465     using NativeType = VkProtectedSubmitInfo;
101466 
101467     static const bool                                  allowDuplicate = false;
101468     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eProtectedSubmitInfo;
101469 
101470 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ProtectedSubmitInfoVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo101471     VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
101472       : pNext{ pNext_ }
101473       , protectedSubmit{ protectedSubmit_ }
101474     {
101475     }
101476 
101477     VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101478 
ProtectedSubmitInfoVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo101479     ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ProtectedSubmitInfo( *reinterpret_cast<ProtectedSubmitInfo const *>( &rhs ) )
101480     {
101481     }
101482 
101483     ProtectedSubmitInfo & operator=( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101484 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101485 
operator =VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo101486     ProtectedSubmitInfo & operator=( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
101487     {
101488       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo const *>( &rhs );
101489       return *this;
101490     }
101491 
101492 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo101493     VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101494     {
101495       pNext = pNext_;
101496       return *this;
101497     }
101498 
setProtectedSubmitVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo101499     VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & setProtectedSubmit( VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ ) VULKAN_HPP_NOEXCEPT
101500     {
101501       protectedSubmit = protectedSubmit_;
101502       return *this;
101503     }
101504 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101505 
operator VkProtectedSubmitInfo const&VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo101506     operator VkProtectedSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
101507     {
101508       return *reinterpret_cast<const VkProtectedSubmitInfo *>( this );
101509     }
101510 
operator VkProtectedSubmitInfo&VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo101511     operator VkProtectedSubmitInfo &() VULKAN_HPP_NOEXCEPT
101512     {
101513       return *reinterpret_cast<VkProtectedSubmitInfo *>( this );
101514     }
101515 
101516 #if defined( VULKAN_HPP_USE_REFLECT )
101517 #  if 14 <= VULKAN_HPP_CPP_VERSION
101518     auto
101519 #  else
101520     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
101521 #  endif
reflectVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo101522       reflect() const VULKAN_HPP_NOEXCEPT
101523     {
101524       return std::tie( sType, pNext, protectedSubmit );
101525     }
101526 #endif
101527 
101528 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101529     auto operator<=>( ProtectedSubmitInfo const & ) const = default;
101530 #else
operator ==VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo101531     bool operator==( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
101532     {
101533 #  if defined( VULKAN_HPP_USE_REFLECT )
101534       return this->reflect() == rhs.reflect();
101535 #  else
101536       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedSubmit == rhs.protectedSubmit );
101537 #  endif
101538     }
101539 
operator !=VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo101540     bool operator!=( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
101541     {
101542       return !operator==( rhs );
101543     }
101544 #endif
101545 
101546   public:
101547     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eProtectedSubmitInfo;
101548     const void *                        pNext           = {};
101549     VULKAN_HPP_NAMESPACE::Bool32        protectedSubmit = {};
101550   };
101551 
101552   template <>
101553   struct CppType<StructureType, StructureType::eProtectedSubmitInfo>
101554   {
101555     using Type = ProtectedSubmitInfo;
101556   };
101557 
101558   struct PushConstantsInfo
101559   {
101560     using NativeType = VkPushConstantsInfo;
101561 
101562     static const bool                                  allowDuplicate = false;
101563     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePushConstantsInfo;
101564 
101565 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PushConstantsInfoVULKAN_HPP_NAMESPACE::PushConstantsInfo101566     VULKAN_HPP_CONSTEXPR PushConstantsInfo( VULKAN_HPP_NAMESPACE::PipelineLayout   layout_     = {},
101567                                             VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {},
101568                                             uint32_t                               offset_     = {},
101569                                             uint32_t                               size_       = {},
101570                                             const void *                           pValues_    = {},
101571                                             const void *                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
101572       : pNext{ pNext_ }
101573       , layout{ layout_ }
101574       , stageFlags{ stageFlags_ }
101575       , offset{ offset_ }
101576       , size{ size_ }
101577       , pValues{ pValues_ }
101578     {
101579     }
101580 
101581     VULKAN_HPP_CONSTEXPR PushConstantsInfo( PushConstantsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101582 
PushConstantsInfoVULKAN_HPP_NAMESPACE::PushConstantsInfo101583     PushConstantsInfo( VkPushConstantsInfo const & rhs ) VULKAN_HPP_NOEXCEPT : PushConstantsInfo( *reinterpret_cast<PushConstantsInfo const *>( &rhs ) ) {}
101584 
101585 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
101586     template <typename T>
PushConstantsInfoVULKAN_HPP_NAMESPACE::PushConstantsInfo101587     PushConstantsInfo( VULKAN_HPP_NAMESPACE::PipelineLayout                           layout_,
101588                        VULKAN_HPP_NAMESPACE::ShaderStageFlags                         stageFlags_,
101589                        uint32_t                                                       offset_,
101590                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & values_,
101591                        const void *                                                   pNext_ = nullptr )
101592       : pNext( pNext_ )
101593       , layout( layout_ )
101594       , stageFlags( stageFlags_ )
101595       , offset( offset_ )
101596       , size( static_cast<uint32_t>( values_.size() * sizeof( T ) ) )
101597       , pValues( values_.data() )
101598     {
101599     }
101600 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101601 
101602     PushConstantsInfo & operator=( PushConstantsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101603 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101604 
operator =VULKAN_HPP_NAMESPACE::PushConstantsInfo101605     PushConstantsInfo & operator=( VkPushConstantsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
101606     {
101607       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushConstantsInfo const *>( &rhs );
101608       return *this;
101609     }
101610 
101611 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PushConstantsInfo101612     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101613     {
101614       pNext = pNext_;
101615       return *this;
101616     }
101617 
setLayoutVULKAN_HPP_NAMESPACE::PushConstantsInfo101618     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
101619     {
101620       layout = layout_;
101621       return *this;
101622     }
101623 
setStageFlagsVULKAN_HPP_NAMESPACE::PushConstantsInfo101624     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
101625     {
101626       stageFlags = stageFlags_;
101627       return *this;
101628     }
101629 
setOffsetVULKAN_HPP_NAMESPACE::PushConstantsInfo101630     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
101631     {
101632       offset = offset_;
101633       return *this;
101634     }
101635 
setSizeVULKAN_HPP_NAMESPACE::PushConstantsInfo101636     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
101637     {
101638       size = size_;
101639       return *this;
101640     }
101641 
setPValuesVULKAN_HPP_NAMESPACE::PushConstantsInfo101642     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setPValues( const void * pValues_ ) VULKAN_HPP_NOEXCEPT
101643     {
101644       pValues = pValues_;
101645       return *this;
101646     }
101647 
101648 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
101649     template <typename T>
setValuesVULKAN_HPP_NAMESPACE::PushConstantsInfo101650     PushConstantsInfo & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & values_ ) VULKAN_HPP_NOEXCEPT
101651     {
101652       size    = static_cast<uint32_t>( values_.size() * sizeof( T ) );
101653       pValues = values_.data();
101654       return *this;
101655     }
101656 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101657 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101658 
operator VkPushConstantsInfo const&VULKAN_HPP_NAMESPACE::PushConstantsInfo101659     operator VkPushConstantsInfo const &() const VULKAN_HPP_NOEXCEPT
101660     {
101661       return *reinterpret_cast<const VkPushConstantsInfo *>( this );
101662     }
101663 
operator VkPushConstantsInfo&VULKAN_HPP_NAMESPACE::PushConstantsInfo101664     operator VkPushConstantsInfo &() VULKAN_HPP_NOEXCEPT
101665     {
101666       return *reinterpret_cast<VkPushConstantsInfo *>( this );
101667     }
101668 
101669 #if defined( VULKAN_HPP_USE_REFLECT )
101670 #  if 14 <= VULKAN_HPP_CPP_VERSION
101671     auto
101672 #  else
101673     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
101674                const void * const &,
101675                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
101676                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
101677                uint32_t const &,
101678                uint32_t const &,
101679                const void * const &>
101680 #  endif
reflectVULKAN_HPP_NAMESPACE::PushConstantsInfo101681       reflect() const VULKAN_HPP_NOEXCEPT
101682     {
101683       return std::tie( sType, pNext, layout, stageFlags, offset, size, pValues );
101684     }
101685 #endif
101686 
101687 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101688     auto operator<=>( PushConstantsInfo const & ) const = default;
101689 #else
operator ==VULKAN_HPP_NAMESPACE::PushConstantsInfo101690     bool operator==( PushConstantsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
101691     {
101692 #  if defined( VULKAN_HPP_USE_REFLECT )
101693       return this->reflect() == rhs.reflect();
101694 #  else
101695       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( layout == rhs.layout ) && ( stageFlags == rhs.stageFlags ) && ( offset == rhs.offset ) &&
101696              ( size == rhs.size ) && ( pValues == rhs.pValues );
101697 #  endif
101698     }
101699 
operator !=VULKAN_HPP_NAMESPACE::PushConstantsInfo101700     bool operator!=( PushConstantsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
101701     {
101702       return !operator==( rhs );
101703     }
101704 #endif
101705 
101706   public:
101707     VULKAN_HPP_NAMESPACE::StructureType    sType      = StructureType::ePushConstantsInfo;
101708     const void *                           pNext      = {};
101709     VULKAN_HPP_NAMESPACE::PipelineLayout   layout     = {};
101710     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {};
101711     uint32_t                               offset     = {};
101712     uint32_t                               size       = {};
101713     const void *                           pValues    = {};
101714   };
101715 
101716   template <>
101717   struct CppType<StructureType, StructureType::ePushConstantsInfo>
101718   {
101719     using Type = PushConstantsInfo;
101720   };
101721 
101722   using PushConstantsInfoKHR = PushConstantsInfo;
101723 
101724   struct WriteDescriptorSet
101725   {
101726     using NativeType = VkWriteDescriptorSet;
101727 
101728     static const bool                                  allowDuplicate = false;
101729     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWriteDescriptorSet;
101730 
101731 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet101732     VULKAN_HPP_CONSTEXPR WriteDescriptorSet( VULKAN_HPP_NAMESPACE::DescriptorSet               dstSet_          = {},
101733                                              uint32_t                                          dstBinding_      = {},
101734                                              uint32_t                                          dstArrayElement_ = {},
101735                                              uint32_t                                          descriptorCount_ = {},
101736                                              VULKAN_HPP_NAMESPACE::DescriptorType              descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
101737                                              const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo_     = {},
101738                                              const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo_   = {},
101739                                              const VULKAN_HPP_NAMESPACE::BufferView *           pTexelBufferView_ = {},
101740                                              const void *                                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
101741       : pNext{ pNext_ }
101742       , dstSet{ dstSet_ }
101743       , dstBinding{ dstBinding_ }
101744       , dstArrayElement{ dstArrayElement_ }
101745       , descriptorCount{ descriptorCount_ }
101746       , descriptorType{ descriptorType_ }
101747       , pImageInfo{ pImageInfo_ }
101748       , pBufferInfo{ pBufferInfo_ }
101749       , pTexelBufferView{ pTexelBufferView_ }
101750     {
101751     }
101752 
101753     VULKAN_HPP_CONSTEXPR WriteDescriptorSet( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101754 
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet101755     WriteDescriptorSet( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT : WriteDescriptorSet( *reinterpret_cast<WriteDescriptorSet const *>( &rhs ) ) {}
101756 
101757 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet101758     WriteDescriptorSet( VULKAN_HPP_NAMESPACE::DescriptorSet                                                                     dstSet_,
101759                         uint32_t                                                                                                dstBinding_,
101760                         uint32_t                                                                                                dstArrayElement_,
101761                         VULKAN_HPP_NAMESPACE::DescriptorType                                                                    descriptorType_,
101762                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorImageInfo> const &  imageInfo_,
101763                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo> const & bufferInfo_      = {},
101764                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferView> const &           texelBufferView_ = {},
101765                         const void *                                                                                            pNext_           = nullptr )
101766       : pNext( pNext_ )
101767       , dstSet( dstSet_ )
101768       , dstBinding( dstBinding_ )
101769       , dstArrayElement( dstArrayElement_ )
101770       , descriptorCount( static_cast<uint32_t>( !imageInfo_.empty()    ? imageInfo_.size()
101771                                                 : !bufferInfo_.empty() ? bufferInfo_.size()
101772                                                                        : texelBufferView_.size() ) )
101773       , descriptorType( descriptorType_ )
101774       , pImageInfo( imageInfo_.data() )
101775       , pBufferInfo( bufferInfo_.data() )
101776       , pTexelBufferView( texelBufferView_.data() )
101777     {
101778 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
101779       VULKAN_HPP_ASSERT( ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) <= 1 );
101780 #    else
101781       if ( 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) )
101782       {
101783         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
101784                           "::WriteDescriptorSet::WriteDescriptorSet: 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() )" );
101785       }
101786 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
101787     }
101788 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101789 
101790     WriteDescriptorSet & operator=( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101791 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101792 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSet101793     WriteDescriptorSet & operator=( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
101794     {
101795       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSet const *>( &rhs );
101796       return *this;
101797     }
101798 
101799 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSet101800     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101801     {
101802       pNext = pNext_;
101803       return *this;
101804     }
101805 
setDstSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet101806     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT
101807     {
101808       dstSet = dstSet_;
101809       return *this;
101810     }
101811 
setDstBindingVULKAN_HPP_NAMESPACE::WriteDescriptorSet101812     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
101813     {
101814       dstBinding = dstBinding_;
101815       return *this;
101816     }
101817 
setDstArrayElementVULKAN_HPP_NAMESPACE::WriteDescriptorSet101818     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
101819     {
101820       dstArrayElement = dstArrayElement_;
101821       return *this;
101822     }
101823 
setDescriptorCountVULKAN_HPP_NAMESPACE::WriteDescriptorSet101824     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
101825     {
101826       descriptorCount = descriptorCount_;
101827       return *this;
101828     }
101829 
setDescriptorTypeVULKAN_HPP_NAMESPACE::WriteDescriptorSet101830     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
101831     {
101832       descriptorType = descriptorType_;
101833       return *this;
101834     }
101835 
setPImageInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet101836     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPImageInfo( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo_ ) VULKAN_HPP_NOEXCEPT
101837     {
101838       pImageInfo = pImageInfo_;
101839       return *this;
101840     }
101841 
101842 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
101843     WriteDescriptorSet &
setImageInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet101844       setImageInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorImageInfo> const & imageInfo_ ) VULKAN_HPP_NOEXCEPT
101845     {
101846       descriptorCount = static_cast<uint32_t>( imageInfo_.size() );
101847       pImageInfo      = imageInfo_.data();
101848       return *this;
101849     }
101850 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101851 
setPBufferInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet101852     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPBufferInfo( const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo_ ) VULKAN_HPP_NOEXCEPT
101853     {
101854       pBufferInfo = pBufferInfo_;
101855       return *this;
101856     }
101857 
101858 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
101859     WriteDescriptorSet &
setBufferInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet101860       setBufferInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo> const & bufferInfo_ ) VULKAN_HPP_NOEXCEPT
101861     {
101862       descriptorCount = static_cast<uint32_t>( bufferInfo_.size() );
101863       pBufferInfo     = bufferInfo_.data();
101864       return *this;
101865     }
101866 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101867 
setPTexelBufferViewVULKAN_HPP_NAMESPACE::WriteDescriptorSet101868     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPTexelBufferView( const VULKAN_HPP_NAMESPACE::BufferView * pTexelBufferView_ ) VULKAN_HPP_NOEXCEPT
101869     {
101870       pTexelBufferView = pTexelBufferView_;
101871       return *this;
101872     }
101873 
101874 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
101875     WriteDescriptorSet &
setTexelBufferViewVULKAN_HPP_NAMESPACE::WriteDescriptorSet101876       setTexelBufferView( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferView> const & texelBufferView_ ) VULKAN_HPP_NOEXCEPT
101877     {
101878       descriptorCount  = static_cast<uint32_t>( texelBufferView_.size() );
101879       pTexelBufferView = texelBufferView_.data();
101880       return *this;
101881     }
101882 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101883 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101884 
operator VkWriteDescriptorSet const&VULKAN_HPP_NAMESPACE::WriteDescriptorSet101885     operator VkWriteDescriptorSet const &() const VULKAN_HPP_NOEXCEPT
101886     {
101887       return *reinterpret_cast<const VkWriteDescriptorSet *>( this );
101888     }
101889 
operator VkWriteDescriptorSet&VULKAN_HPP_NAMESPACE::WriteDescriptorSet101890     operator VkWriteDescriptorSet &() VULKAN_HPP_NOEXCEPT
101891     {
101892       return *reinterpret_cast<VkWriteDescriptorSet *>( this );
101893     }
101894 
101895 #if defined( VULKAN_HPP_USE_REFLECT )
101896 #  if 14 <= VULKAN_HPP_CPP_VERSION
101897     auto
101898 #  else
101899     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
101900                const void * const &,
101901                VULKAN_HPP_NAMESPACE::DescriptorSet const &,
101902                uint32_t const &,
101903                uint32_t const &,
101904                uint32_t const &,
101905                VULKAN_HPP_NAMESPACE::DescriptorType const &,
101906                const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * const &,
101907                const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * const &,
101908                const VULKAN_HPP_NAMESPACE::BufferView * const &>
101909 #  endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSet101910       reflect() const VULKAN_HPP_NOEXCEPT
101911     {
101912       return std::tie( sType, pNext, dstSet, dstBinding, dstArrayElement, descriptorCount, descriptorType, pImageInfo, pBufferInfo, pTexelBufferView );
101913     }
101914 #endif
101915 
101916 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101917     auto operator<=>( WriteDescriptorSet const & ) const = default;
101918 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSet101919     bool operator==( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
101920     {
101921 #  if defined( VULKAN_HPP_USE_REFLECT )
101922       return this->reflect() == rhs.reflect();
101923 #  else
101924       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dstSet == rhs.dstSet ) && ( dstBinding == rhs.dstBinding ) &&
101925              ( dstArrayElement == rhs.dstArrayElement ) && ( descriptorCount == rhs.descriptorCount ) && ( descriptorType == rhs.descriptorType ) &&
101926              ( pImageInfo == rhs.pImageInfo ) && ( pBufferInfo == rhs.pBufferInfo ) && ( pTexelBufferView == rhs.pTexelBufferView );
101927 #  endif
101928     }
101929 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSet101930     bool operator!=( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
101931     {
101932       return !operator==( rhs );
101933     }
101934 #endif
101935 
101936   public:
101937     VULKAN_HPP_NAMESPACE::StructureType                sType            = StructureType::eWriteDescriptorSet;
101938     const void *                                       pNext            = {};
101939     VULKAN_HPP_NAMESPACE::DescriptorSet                dstSet           = {};
101940     uint32_t                                           dstBinding       = {};
101941     uint32_t                                           dstArrayElement  = {};
101942     uint32_t                                           descriptorCount  = {};
101943     VULKAN_HPP_NAMESPACE::DescriptorType               descriptorType   = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
101944     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *  pImageInfo       = {};
101945     const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo      = {};
101946     const VULKAN_HPP_NAMESPACE::BufferView *           pTexelBufferView = {};
101947   };
101948 
101949   template <>
101950   struct CppType<StructureType, StructureType::eWriteDescriptorSet>
101951   {
101952     using Type = WriteDescriptorSet;
101953   };
101954 
101955   struct PushDescriptorSetInfo
101956   {
101957     using NativeType = VkPushDescriptorSetInfo;
101958 
101959     static const bool                                  allowDuplicate = false;
101960     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePushDescriptorSetInfo;
101961 
101962 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PushDescriptorSetInfoVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo101963     VULKAN_HPP_CONSTEXPR PushDescriptorSetInfo( VULKAN_HPP_NAMESPACE::ShaderStageFlags           stageFlags_           = {},
101964                                                 VULKAN_HPP_NAMESPACE::PipelineLayout             layout_               = {},
101965                                                 uint32_t                                         set_                  = {},
101966                                                 uint32_t                                         descriptorWriteCount_ = {},
101967                                                 const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * pDescriptorWrites_    = {},
101968                                                 const void *                                     pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
101969       : pNext{ pNext_ }
101970       , stageFlags{ stageFlags_ }
101971       , layout{ layout_ }
101972       , set{ set_ }
101973       , descriptorWriteCount{ descriptorWriteCount_ }
101974       , pDescriptorWrites{ pDescriptorWrites_ }
101975     {
101976     }
101977 
101978     VULKAN_HPP_CONSTEXPR PushDescriptorSetInfo( PushDescriptorSetInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101979 
PushDescriptorSetInfoVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo101980     PushDescriptorSetInfo( VkPushDescriptorSetInfo const & rhs ) VULKAN_HPP_NOEXCEPT
101981       : PushDescriptorSetInfo( *reinterpret_cast<PushDescriptorSetInfo const *>( &rhs ) )
101982     {
101983     }
101984 
101985 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PushDescriptorSetInfoVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo101986     PushDescriptorSetInfo( VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                                stageFlags_,
101987                            VULKAN_HPP_NAMESPACE::PipelineLayout                                                                  layout_,
101988                            uint32_t                                                                                              set_,
101989                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites_,
101990                            const void *                                                                                          pNext_ = nullptr )
101991       : pNext( pNext_ )
101992       , stageFlags( stageFlags_ )
101993       , layout( layout_ )
101994       , set( set_ )
101995       , descriptorWriteCount( static_cast<uint32_t>( descriptorWrites_.size() ) )
101996       , pDescriptorWrites( descriptorWrites_.data() )
101997     {
101998     }
101999 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102000 
102001     PushDescriptorSetInfo & operator=( PushDescriptorSetInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102002 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102003 
operator =VULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102004     PushDescriptorSetInfo & operator=( VkPushDescriptorSetInfo const & rhs ) VULKAN_HPP_NOEXCEPT
102005     {
102006       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushDescriptorSetInfo const *>( &rhs );
102007       return *this;
102008     }
102009 
102010 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102011     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
102012     {
102013       pNext = pNext_;
102014       return *this;
102015     }
102016 
setStageFlagsVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102017     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
102018     {
102019       stageFlags = stageFlags_;
102020       return *this;
102021     }
102022 
setLayoutVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102023     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
102024     {
102025       layout = layout_;
102026       return *this;
102027     }
102028 
setSetVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102029     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT
102030     {
102031       set = set_;
102032       return *this;
102033     }
102034 
setDescriptorWriteCountVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102035     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setDescriptorWriteCount( uint32_t descriptorWriteCount_ ) VULKAN_HPP_NOEXCEPT
102036     {
102037       descriptorWriteCount = descriptorWriteCount_;
102038       return *this;
102039     }
102040 
102041     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo &
setPDescriptorWritesVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102042       setPDescriptorWrites( const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * pDescriptorWrites_ ) VULKAN_HPP_NOEXCEPT
102043     {
102044       pDescriptorWrites = pDescriptorWrites_;
102045       return *this;
102046     }
102047 
102048 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptorWritesVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102049     PushDescriptorSetInfo & setDescriptorWrites(
102050       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites_ ) VULKAN_HPP_NOEXCEPT
102051     {
102052       descriptorWriteCount = static_cast<uint32_t>( descriptorWrites_.size() );
102053       pDescriptorWrites    = descriptorWrites_.data();
102054       return *this;
102055     }
102056 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102057 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102058 
operator VkPushDescriptorSetInfo const&VULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102059     operator VkPushDescriptorSetInfo const &() const VULKAN_HPP_NOEXCEPT
102060     {
102061       return *reinterpret_cast<const VkPushDescriptorSetInfo *>( this );
102062     }
102063 
operator VkPushDescriptorSetInfo&VULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102064     operator VkPushDescriptorSetInfo &() VULKAN_HPP_NOEXCEPT
102065     {
102066       return *reinterpret_cast<VkPushDescriptorSetInfo *>( this );
102067     }
102068 
102069 #if defined( VULKAN_HPP_USE_REFLECT )
102070 #  if 14 <= VULKAN_HPP_CPP_VERSION
102071     auto
102072 #  else
102073     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
102074                const void * const &,
102075                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
102076                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
102077                uint32_t const &,
102078                uint32_t const &,
102079                const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * const &>
102080 #  endif
reflectVULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102081       reflect() const VULKAN_HPP_NOEXCEPT
102082     {
102083       return std::tie( sType, pNext, stageFlags, layout, set, descriptorWriteCount, pDescriptorWrites );
102084     }
102085 #endif
102086 
102087 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102088     auto operator<=>( PushDescriptorSetInfo const & ) const = default;
102089 #else
operator ==VULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102090     bool operator==( PushDescriptorSetInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102091     {
102092 #  if defined( VULKAN_HPP_USE_REFLECT )
102093       return this->reflect() == rhs.reflect();
102094 #  else
102095       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( set == rhs.set ) &&
102096              ( descriptorWriteCount == rhs.descriptorWriteCount ) && ( pDescriptorWrites == rhs.pDescriptorWrites );
102097 #  endif
102098     }
102099 
operator !=VULKAN_HPP_NAMESPACE::PushDescriptorSetInfo102100     bool operator!=( PushDescriptorSetInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102101     {
102102       return !operator==( rhs );
102103     }
102104 #endif
102105 
102106   public:
102107     VULKAN_HPP_NAMESPACE::StructureType              sType                = StructureType::ePushDescriptorSetInfo;
102108     const void *                                     pNext                = {};
102109     VULKAN_HPP_NAMESPACE::ShaderStageFlags           stageFlags           = {};
102110     VULKAN_HPP_NAMESPACE::PipelineLayout             layout               = {};
102111     uint32_t                                         set                  = {};
102112     uint32_t                                         descriptorWriteCount = {};
102113     const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * pDescriptorWrites    = {};
102114   };
102115 
102116   template <>
102117   struct CppType<StructureType, StructureType::ePushDescriptorSetInfo>
102118   {
102119     using Type = PushDescriptorSetInfo;
102120   };
102121 
102122   using PushDescriptorSetInfoKHR = PushDescriptorSetInfo;
102123 
102124   struct PushDescriptorSetWithTemplateInfo
102125   {
102126     using NativeType = VkPushDescriptorSetWithTemplateInfo;
102127 
102128     static const bool                                  allowDuplicate = false;
102129     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePushDescriptorSetWithTemplateInfo;
102130 
102131 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PushDescriptorSetWithTemplateInfoVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102132     VULKAN_HPP_CONSTEXPR PushDescriptorSetWithTemplateInfo( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate_ = {},
102133                                                             VULKAN_HPP_NAMESPACE::PipelineLayout           layout_                   = {},
102134                                                             uint32_t                                       set_                      = {},
102135                                                             const void *                                   pData_                    = {},
102136                                                             const void *                                   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
102137       : pNext{ pNext_ }
102138       , descriptorUpdateTemplate{ descriptorUpdateTemplate_ }
102139       , layout{ layout_ }
102140       , set{ set_ }
102141       , pData{ pData_ }
102142     {
102143     }
102144 
102145     VULKAN_HPP_CONSTEXPR PushDescriptorSetWithTemplateInfo( PushDescriptorSetWithTemplateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102146 
PushDescriptorSetWithTemplateInfoVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102147     PushDescriptorSetWithTemplateInfo( VkPushDescriptorSetWithTemplateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
102148       : PushDescriptorSetWithTemplateInfo( *reinterpret_cast<PushDescriptorSetWithTemplateInfo const *>( &rhs ) )
102149     {
102150     }
102151 
102152     PushDescriptorSetWithTemplateInfo & operator=( PushDescriptorSetWithTemplateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102153 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102154 
operator =VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102155     PushDescriptorSetWithTemplateInfo & operator=( VkPushDescriptorSetWithTemplateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
102156     {
102157       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo const *>( &rhs );
102158       return *this;
102159     }
102160 
102161 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102162     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
102163     {
102164       pNext = pNext_;
102165       return *this;
102166     }
102167 
102168     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo &
setDescriptorUpdateTemplateVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102169       setDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate_ ) VULKAN_HPP_NOEXCEPT
102170     {
102171       descriptorUpdateTemplate = descriptorUpdateTemplate_;
102172       return *this;
102173     }
102174 
setLayoutVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102175     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
102176     {
102177       layout = layout_;
102178       return *this;
102179     }
102180 
setSetVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102181     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT
102182     {
102183       set = set_;
102184       return *this;
102185     }
102186 
setPDataVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102187     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
102188     {
102189       pData = pData_;
102190       return *this;
102191     }
102192 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102193 
operator VkPushDescriptorSetWithTemplateInfo const&VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102194     operator VkPushDescriptorSetWithTemplateInfo const &() const VULKAN_HPP_NOEXCEPT
102195     {
102196       return *reinterpret_cast<const VkPushDescriptorSetWithTemplateInfo *>( this );
102197     }
102198 
operator VkPushDescriptorSetWithTemplateInfo&VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102199     operator VkPushDescriptorSetWithTemplateInfo &() VULKAN_HPP_NOEXCEPT
102200     {
102201       return *reinterpret_cast<VkPushDescriptorSetWithTemplateInfo *>( this );
102202     }
102203 
102204 #if defined( VULKAN_HPP_USE_REFLECT )
102205 #  if 14 <= VULKAN_HPP_CPP_VERSION
102206     auto
102207 #  else
102208     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
102209                const void * const &,
102210                VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const &,
102211                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
102212                uint32_t const &,
102213                const void * const &>
102214 #  endif
reflectVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102215       reflect() const VULKAN_HPP_NOEXCEPT
102216     {
102217       return std::tie( sType, pNext, descriptorUpdateTemplate, layout, set, pData );
102218     }
102219 #endif
102220 
102221 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102222     auto operator<=>( PushDescriptorSetWithTemplateInfo const & ) const = default;
102223 #else
operator ==VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102224     bool operator==( PushDescriptorSetWithTemplateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102225     {
102226 #  if defined( VULKAN_HPP_USE_REFLECT )
102227       return this->reflect() == rhs.reflect();
102228 #  else
102229       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorUpdateTemplate == rhs.descriptorUpdateTemplate ) && ( layout == rhs.layout ) &&
102230              ( set == rhs.set ) && ( pData == rhs.pData );
102231 #  endif
102232     }
102233 
operator !=VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo102234     bool operator!=( PushDescriptorSetWithTemplateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102235     {
102236       return !operator==( rhs );
102237     }
102238 #endif
102239 
102240   public:
102241     VULKAN_HPP_NAMESPACE::StructureType            sType                    = StructureType::ePushDescriptorSetWithTemplateInfo;
102242     const void *                                   pNext                    = {};
102243     VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate = {};
102244     VULKAN_HPP_NAMESPACE::PipelineLayout           layout                   = {};
102245     uint32_t                                       set                      = {};
102246     const void *                                   pData                    = {};
102247   };
102248 
102249   template <>
102250   struct CppType<StructureType, StructureType::ePushDescriptorSetWithTemplateInfo>
102251   {
102252     using Type = PushDescriptorSetWithTemplateInfo;
102253   };
102254 
102255   using PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo;
102256 
102257   struct QueryLowLatencySupportNV
102258   {
102259     using NativeType = VkQueryLowLatencySupportNV;
102260 
102261     static const bool                                  allowDuplicate = false;
102262     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryLowLatencySupportNV;
102263 
102264 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryLowLatencySupportNVVULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV102265     VULKAN_HPP_CONSTEXPR QueryLowLatencySupportNV( void * pQueriedLowLatencyData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
102266       : pNext{ pNext_ }
102267       , pQueriedLowLatencyData{ pQueriedLowLatencyData_ }
102268     {
102269     }
102270 
102271     VULKAN_HPP_CONSTEXPR QueryLowLatencySupportNV( QueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102272 
QueryLowLatencySupportNVVULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV102273     QueryLowLatencySupportNV( VkQueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT
102274       : QueryLowLatencySupportNV( *reinterpret_cast<QueryLowLatencySupportNV const *>( &rhs ) )
102275     {
102276     }
102277 
102278     QueryLowLatencySupportNV & operator=( QueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102279 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102280 
operator =VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV102281     QueryLowLatencySupportNV & operator=( VkQueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT
102282     {
102283       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV const *>( &rhs );
102284       return *this;
102285     }
102286 
102287 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV102288     VULKAN_HPP_CONSTEXPR_14 QueryLowLatencySupportNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
102289     {
102290       pNext = pNext_;
102291       return *this;
102292     }
102293 
setPQueriedLowLatencyDataVULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV102294     VULKAN_HPP_CONSTEXPR_14 QueryLowLatencySupportNV & setPQueriedLowLatencyData( void * pQueriedLowLatencyData_ ) VULKAN_HPP_NOEXCEPT
102295     {
102296       pQueriedLowLatencyData = pQueriedLowLatencyData_;
102297       return *this;
102298     }
102299 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102300 
operator VkQueryLowLatencySupportNV const&VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV102301     operator VkQueryLowLatencySupportNV const &() const VULKAN_HPP_NOEXCEPT
102302     {
102303       return *reinterpret_cast<const VkQueryLowLatencySupportNV *>( this );
102304     }
102305 
operator VkQueryLowLatencySupportNV&VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV102306     operator VkQueryLowLatencySupportNV &() VULKAN_HPP_NOEXCEPT
102307     {
102308       return *reinterpret_cast<VkQueryLowLatencySupportNV *>( this );
102309     }
102310 
102311 #if defined( VULKAN_HPP_USE_REFLECT )
102312 #  if 14 <= VULKAN_HPP_CPP_VERSION
102313     auto
102314 #  else
102315     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, void * const &>
102316 #  endif
reflectVULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV102317       reflect() const VULKAN_HPP_NOEXCEPT
102318     {
102319       return std::tie( sType, pNext, pQueriedLowLatencyData );
102320     }
102321 #endif
102322 
102323 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102324     auto operator<=>( QueryLowLatencySupportNV const & ) const = default;
102325 #else
operator ==VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV102326     bool operator==( QueryLowLatencySupportNV const & rhs ) const VULKAN_HPP_NOEXCEPT
102327     {
102328 #  if defined( VULKAN_HPP_USE_REFLECT )
102329       return this->reflect() == rhs.reflect();
102330 #  else
102331       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pQueriedLowLatencyData == rhs.pQueriedLowLatencyData );
102332 #  endif
102333     }
102334 
operator !=VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV102335     bool operator!=( QueryLowLatencySupportNV const & rhs ) const VULKAN_HPP_NOEXCEPT
102336     {
102337       return !operator==( rhs );
102338     }
102339 #endif
102340 
102341   public:
102342     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::eQueryLowLatencySupportNV;
102343     const void *                        pNext                  = {};
102344     void *                              pQueriedLowLatencyData = {};
102345   };
102346 
102347   template <>
102348   struct CppType<StructureType, StructureType::eQueryLowLatencySupportNV>
102349   {
102350     using Type = QueryLowLatencySupportNV;
102351   };
102352 
102353   struct QueryPoolCreateInfo
102354   {
102355     using NativeType = VkQueryPoolCreateInfo;
102356 
102357     static const bool                                  allowDuplicate = false;
102358     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryPoolCreateInfo;
102359 
102360 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolCreateInfoVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102361     VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags        flags_      = {},
102362                                               VULKAN_HPP_NAMESPACE::QueryType                   queryType_  = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion,
102363                                               uint32_t                                          queryCount_ = {},
102364                                               VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ = {},
102365                                               const void *                                      pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
102366       : pNext{ pNext_ }
102367       , flags{ flags_ }
102368       , queryType{ queryType_ }
102369       , queryCount{ queryCount_ }
102370       , pipelineStatistics{ pipelineStatistics_ }
102371     {
102372     }
102373 
102374     VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102375 
QueryPoolCreateInfoVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102376     QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : QueryPoolCreateInfo( *reinterpret_cast<QueryPoolCreateInfo const *>( &rhs ) )
102377     {
102378     }
102379 
102380     QueryPoolCreateInfo & operator=( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102381 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102382 
operator =VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102383     QueryPoolCreateInfo & operator=( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
102384     {
102385       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const *>( &rhs );
102386       return *this;
102387     }
102388 
102389 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102390     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
102391     {
102392       pNext = pNext_;
102393       return *this;
102394     }
102395 
setFlagsVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102396     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
102397     {
102398       flags = flags_;
102399       return *this;
102400     }
102401 
setQueryTypeVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102402     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setQueryType( VULKAN_HPP_NAMESPACE::QueryType queryType_ ) VULKAN_HPP_NOEXCEPT
102403     {
102404       queryType = queryType_;
102405       return *this;
102406     }
102407 
setQueryCountVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102408     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setQueryCount( uint32_t queryCount_ ) VULKAN_HPP_NOEXCEPT
102409     {
102410       queryCount = queryCount_;
102411       return *this;
102412     }
102413 
102414     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo &
setPipelineStatisticsVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102415       setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT
102416     {
102417       pipelineStatistics = pipelineStatistics_;
102418       return *this;
102419     }
102420 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102421 
operator VkQueryPoolCreateInfo const&VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102422     operator VkQueryPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
102423     {
102424       return *reinterpret_cast<const VkQueryPoolCreateInfo *>( this );
102425     }
102426 
operator VkQueryPoolCreateInfo&VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102427     operator VkQueryPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
102428     {
102429       return *reinterpret_cast<VkQueryPoolCreateInfo *>( this );
102430     }
102431 
102432 #if defined( VULKAN_HPP_USE_REFLECT )
102433 #  if 14 <= VULKAN_HPP_CPP_VERSION
102434     auto
102435 #  else
102436     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
102437                const void * const &,
102438                VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags const &,
102439                VULKAN_HPP_NAMESPACE::QueryType const &,
102440                uint32_t const &,
102441                VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags const &>
102442 #  endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102443       reflect() const VULKAN_HPP_NOEXCEPT
102444     {
102445       return std::tie( sType, pNext, flags, queryType, queryCount, pipelineStatistics );
102446     }
102447 #endif
102448 
102449 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102450     auto operator<=>( QueryPoolCreateInfo const & ) const = default;
102451 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102452     bool operator==( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102453     {
102454 #  if defined( VULKAN_HPP_USE_REFLECT )
102455       return this->reflect() == rhs.reflect();
102456 #  else
102457       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queryType == rhs.queryType ) && ( queryCount == rhs.queryCount ) &&
102458              ( pipelineStatistics == rhs.pipelineStatistics );
102459 #  endif
102460     }
102461 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo102462     bool operator!=( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102463     {
102464       return !operator==( rhs );
102465     }
102466 #endif
102467 
102468   public:
102469     VULKAN_HPP_NAMESPACE::StructureType               sType              = StructureType::eQueryPoolCreateInfo;
102470     const void *                                      pNext              = {};
102471     VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags        flags              = {};
102472     VULKAN_HPP_NAMESPACE::QueryType                   queryType          = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion;
102473     uint32_t                                          queryCount         = {};
102474     VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics = {};
102475   };
102476 
102477   template <>
102478   struct CppType<StructureType, StructureType::eQueryPoolCreateInfo>
102479   {
102480     using Type = QueryPoolCreateInfo;
102481   };
102482 
102483   struct QueryPoolPerformanceCreateInfoKHR
102484   {
102485     using NativeType = VkQueryPoolPerformanceCreateInfoKHR;
102486 
102487     static const bool                                  allowDuplicate = false;
102488     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryPoolPerformanceCreateInfoKHR;
102489 
102490 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102491     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR( uint32_t         queueFamilyIndex_  = {},
102492                                                             uint32_t         counterIndexCount_ = {},
102493                                                             const uint32_t * pCounterIndices_   = {},
102494                                                             const void *     pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
102495       : pNext{ pNext_ }
102496       , queueFamilyIndex{ queueFamilyIndex_ }
102497       , counterIndexCount{ counterIndexCount_ }
102498       , pCounterIndices{ pCounterIndices_ }
102499     {
102500     }
102501 
102502     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102503 
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102504     QueryPoolPerformanceCreateInfoKHR( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
102505       : QueryPoolPerformanceCreateInfoKHR( *reinterpret_cast<QueryPoolPerformanceCreateInfoKHR const *>( &rhs ) )
102506     {
102507     }
102508 
102509 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102510     QueryPoolPerformanceCreateInfoKHR( uint32_t                                                              queueFamilyIndex_,
102511                                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & counterIndices_,
102512                                        const void *                                                          pNext_ = nullptr )
102513       : pNext( pNext_ )
102514       , queueFamilyIndex( queueFamilyIndex_ )
102515       , counterIndexCount( static_cast<uint32_t>( counterIndices_.size() ) )
102516       , pCounterIndices( counterIndices_.data() )
102517     {
102518     }
102519 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102520 
102521     QueryPoolPerformanceCreateInfoKHR & operator=( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102522 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102523 
operator =VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102524     QueryPoolPerformanceCreateInfoKHR & operator=( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
102525     {
102526       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR const *>( &rhs );
102527       return *this;
102528     }
102529 
102530 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102531     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
102532     {
102533       pNext = pNext_;
102534       return *this;
102535     }
102536 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102537     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
102538     {
102539       queueFamilyIndex = queueFamilyIndex_;
102540       return *this;
102541     }
102542 
setCounterIndexCountVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102543     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setCounterIndexCount( uint32_t counterIndexCount_ ) VULKAN_HPP_NOEXCEPT
102544     {
102545       counterIndexCount = counterIndexCount_;
102546       return *this;
102547     }
102548 
setPCounterIndicesVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102549     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setPCounterIndices( const uint32_t * pCounterIndices_ ) VULKAN_HPP_NOEXCEPT
102550     {
102551       pCounterIndices = pCounterIndices_;
102552       return *this;
102553     }
102554 
102555 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
102556     QueryPoolPerformanceCreateInfoKHR &
setCounterIndicesVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102557       setCounterIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & counterIndices_ ) VULKAN_HPP_NOEXCEPT
102558     {
102559       counterIndexCount = static_cast<uint32_t>( counterIndices_.size() );
102560       pCounterIndices   = counterIndices_.data();
102561       return *this;
102562     }
102563 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102564 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102565 
operator VkQueryPoolPerformanceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102566     operator VkQueryPoolPerformanceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
102567     {
102568       return *reinterpret_cast<const VkQueryPoolPerformanceCreateInfoKHR *>( this );
102569     }
102570 
operator VkQueryPoolPerformanceCreateInfoKHR&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102571     operator VkQueryPoolPerformanceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
102572     {
102573       return *reinterpret_cast<VkQueryPoolPerformanceCreateInfoKHR *>( this );
102574     }
102575 
102576 #if defined( VULKAN_HPP_USE_REFLECT )
102577 #  if 14 <= VULKAN_HPP_CPP_VERSION
102578     auto
102579 #  else
102580     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &, const uint32_t * const &>
102581 #  endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102582       reflect() const VULKAN_HPP_NOEXCEPT
102583     {
102584       return std::tie( sType, pNext, queueFamilyIndex, counterIndexCount, pCounterIndices );
102585     }
102586 #endif
102587 
102588 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102589     auto operator<=>( QueryPoolPerformanceCreateInfoKHR const & ) const = default;
102590 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102591     bool operator==( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
102592     {
102593 #  if defined( VULKAN_HPP_USE_REFLECT )
102594       return this->reflect() == rhs.reflect();
102595 #  else
102596       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) &&
102597              ( counterIndexCount == rhs.counterIndexCount ) && ( pCounterIndices == rhs.pCounterIndices );
102598 #  endif
102599     }
102600 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR102601     bool operator!=( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
102602     {
102603       return !operator==( rhs );
102604     }
102605 #endif
102606 
102607   public:
102608     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eQueryPoolPerformanceCreateInfoKHR;
102609     const void *                        pNext             = {};
102610     uint32_t                            queueFamilyIndex  = {};
102611     uint32_t                            counterIndexCount = {};
102612     const uint32_t *                    pCounterIndices   = {};
102613   };
102614 
102615   template <>
102616   struct CppType<StructureType, StructureType::eQueryPoolPerformanceCreateInfoKHR>
102617   {
102618     using Type = QueryPoolPerformanceCreateInfoKHR;
102619   };
102620 
102621   struct QueryPoolPerformanceQueryCreateInfoINTEL
102622   {
102623     using NativeType = VkQueryPoolPerformanceQueryCreateInfoINTEL;
102624 
102625     static const bool                                  allowDuplicate = false;
102626     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL;
102627 
102628 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolPerformanceQueryCreateInfoINTELVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL102629     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL(
102630       VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling_ = VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual,
102631       const void *                                     pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
102632       : pNext{ pNext_ }
102633       , performanceCountersSampling{ performanceCountersSampling_ }
102634     {
102635     }
102636 
102637     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102638 
QueryPoolPerformanceQueryCreateInfoINTELVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL102639     QueryPoolPerformanceQueryCreateInfoINTEL( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
102640       : QueryPoolPerformanceQueryCreateInfoINTEL( *reinterpret_cast<QueryPoolPerformanceQueryCreateInfoINTEL const *>( &rhs ) )
102641     {
102642     }
102643 
102644     QueryPoolPerformanceQueryCreateInfoINTEL & operator=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102645 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102646 
operator =VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL102647     QueryPoolPerformanceQueryCreateInfoINTEL & operator=( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
102648     {
102649       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL const *>( &rhs );
102650       return *this;
102651     }
102652 
102653 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL102654     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
102655     {
102656       pNext = pNext_;
102657       return *this;
102658     }
102659 
102660     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL &
setPerformanceCountersSamplingVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL102661       setPerformanceCountersSampling( VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling_ ) VULKAN_HPP_NOEXCEPT
102662     {
102663       performanceCountersSampling = performanceCountersSampling_;
102664       return *this;
102665     }
102666 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102667 
operator VkQueryPoolPerformanceQueryCreateInfoINTEL const&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL102668     operator VkQueryPoolPerformanceQueryCreateInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
102669     {
102670       return *reinterpret_cast<const VkQueryPoolPerformanceQueryCreateInfoINTEL *>( this );
102671     }
102672 
operator VkQueryPoolPerformanceQueryCreateInfoINTEL&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL102673     operator VkQueryPoolPerformanceQueryCreateInfoINTEL &() VULKAN_HPP_NOEXCEPT
102674     {
102675       return *reinterpret_cast<VkQueryPoolPerformanceQueryCreateInfoINTEL *>( this );
102676     }
102677 
102678 #if defined( VULKAN_HPP_USE_REFLECT )
102679 #  if 14 <= VULKAN_HPP_CPP_VERSION
102680     auto
102681 #  else
102682     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL const &>
102683 #  endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL102684       reflect() const VULKAN_HPP_NOEXCEPT
102685     {
102686       return std::tie( sType, pNext, performanceCountersSampling );
102687     }
102688 #endif
102689 
102690 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102691     auto operator<=>( QueryPoolPerformanceQueryCreateInfoINTEL const & ) const = default;
102692 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL102693     bool operator==( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
102694     {
102695 #  if defined( VULKAN_HPP_USE_REFLECT )
102696       return this->reflect() == rhs.reflect();
102697 #  else
102698       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( performanceCountersSampling == rhs.performanceCountersSampling );
102699 #  endif
102700     }
102701 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL102702     bool operator!=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
102703     {
102704       return !operator==( rhs );
102705     }
102706 #endif
102707 
102708   public:
102709     VULKAN_HPP_NAMESPACE::StructureType              sType                       = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL;
102710     const void *                                     pNext                       = {};
102711     VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling = VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual;
102712   };
102713 
102714   template <>
102715   struct CppType<StructureType, StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL>
102716   {
102717     using Type = QueryPoolPerformanceQueryCreateInfoINTEL;
102718   };
102719 
102720   using QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL;
102721 
102722   struct QueryPoolVideoEncodeFeedbackCreateInfoKHR
102723   {
102724     using NativeType = VkQueryPoolVideoEncodeFeedbackCreateInfoKHR;
102725 
102726     static const bool                                  allowDuplicate = false;
102727     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryPoolVideoEncodeFeedbackCreateInfoKHR;
102728 
102729 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolVideoEncodeFeedbackCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR102730     VULKAN_HPP_CONSTEXPR QueryPoolVideoEncodeFeedbackCreateInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR encodeFeedbackFlags_ = {},
102731                                                                     const void *                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
102732       : pNext{ pNext_ }
102733       , encodeFeedbackFlags{ encodeFeedbackFlags_ }
102734     {
102735     }
102736 
102737     VULKAN_HPP_CONSTEXPR QueryPoolVideoEncodeFeedbackCreateInfoKHR( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102738 
QueryPoolVideoEncodeFeedbackCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR102739     QueryPoolVideoEncodeFeedbackCreateInfoKHR( VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
102740       : QueryPoolVideoEncodeFeedbackCreateInfoKHR( *reinterpret_cast<QueryPoolVideoEncodeFeedbackCreateInfoKHR const *>( &rhs ) )
102741     {
102742     }
102743 
102744     QueryPoolVideoEncodeFeedbackCreateInfoKHR & operator=( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102745 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102746 
operator =VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR102747     QueryPoolVideoEncodeFeedbackCreateInfoKHR & operator=( VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
102748     {
102749       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR const *>( &rhs );
102750       return *this;
102751     }
102752 
102753 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR102754     VULKAN_HPP_CONSTEXPR_14 QueryPoolVideoEncodeFeedbackCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
102755     {
102756       pNext = pNext_;
102757       return *this;
102758     }
102759 
102760     VULKAN_HPP_CONSTEXPR_14 QueryPoolVideoEncodeFeedbackCreateInfoKHR &
setEncodeFeedbackFlagsVULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR102761       setEncodeFeedbackFlags( VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR encodeFeedbackFlags_ ) VULKAN_HPP_NOEXCEPT
102762     {
102763       encodeFeedbackFlags = encodeFeedbackFlags_;
102764       return *this;
102765     }
102766 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102767 
operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const&VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR102768     operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
102769     {
102770       return *reinterpret_cast<const VkQueryPoolVideoEncodeFeedbackCreateInfoKHR *>( this );
102771     }
102772 
operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR&VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR102773     operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
102774     {
102775       return *reinterpret_cast<VkQueryPoolVideoEncodeFeedbackCreateInfoKHR *>( this );
102776     }
102777 
102778 #if defined( VULKAN_HPP_USE_REFLECT )
102779 #  if 14 <= VULKAN_HPP_CPP_VERSION
102780     auto
102781 #  else
102782     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR const &>
102783 #  endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR102784       reflect() const VULKAN_HPP_NOEXCEPT
102785     {
102786       return std::tie( sType, pNext, encodeFeedbackFlags );
102787     }
102788 #endif
102789 
102790 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102791     auto operator<=>( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & ) const = default;
102792 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR102793     bool operator==( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
102794     {
102795 #  if defined( VULKAN_HPP_USE_REFLECT )
102796       return this->reflect() == rhs.reflect();
102797 #  else
102798       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( encodeFeedbackFlags == rhs.encodeFeedbackFlags );
102799 #  endif
102800     }
102801 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR102802     bool operator!=( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
102803     {
102804       return !operator==( rhs );
102805     }
102806 #endif
102807 
102808   public:
102809     VULKAN_HPP_NAMESPACE::StructureType               sType               = StructureType::eQueryPoolVideoEncodeFeedbackCreateInfoKHR;
102810     const void *                                      pNext               = {};
102811     VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR encodeFeedbackFlags = {};
102812   };
102813 
102814   template <>
102815   struct CppType<StructureType, StructureType::eQueryPoolVideoEncodeFeedbackCreateInfoKHR>
102816   {
102817     using Type = QueryPoolVideoEncodeFeedbackCreateInfoKHR;
102818   };
102819 
102820   struct QueueFamilyCheckpointProperties2NV
102821   {
102822     using NativeType = VkQueueFamilyCheckpointProperties2NV;
102823 
102824     static const bool                                  allowDuplicate = false;
102825     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyCheckpointProperties2NV;
102826 
102827 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyCheckpointProperties2NVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV102828     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 checkpointExecutionStageMask_ = {},
102829                                                              void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
102830       : pNext{ pNext_ }
102831       , checkpointExecutionStageMask{ checkpointExecutionStageMask_ }
102832     {
102833     }
102834 
102835     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102836 
QueueFamilyCheckpointProperties2NVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV102837     QueueFamilyCheckpointProperties2NV( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT
102838       : QueueFamilyCheckpointProperties2NV( *reinterpret_cast<QueueFamilyCheckpointProperties2NV const *>( &rhs ) )
102839     {
102840     }
102841 
102842     QueueFamilyCheckpointProperties2NV & operator=( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102843 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102844 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV102845     QueueFamilyCheckpointProperties2NV & operator=( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT
102846     {
102847       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV const *>( &rhs );
102848       return *this;
102849     }
102850 
operator VkQueueFamilyCheckpointProperties2NV const&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV102851     operator VkQueueFamilyCheckpointProperties2NV const &() const VULKAN_HPP_NOEXCEPT
102852     {
102853       return *reinterpret_cast<const VkQueueFamilyCheckpointProperties2NV *>( this );
102854     }
102855 
operator VkQueueFamilyCheckpointProperties2NV&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV102856     operator VkQueueFamilyCheckpointProperties2NV &() VULKAN_HPP_NOEXCEPT
102857     {
102858       return *reinterpret_cast<VkQueueFamilyCheckpointProperties2NV *>( this );
102859     }
102860 
102861 #if defined( VULKAN_HPP_USE_REFLECT )
102862 #  if 14 <= VULKAN_HPP_CPP_VERSION
102863     auto
102864 #  else
102865     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &>
102866 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV102867       reflect() const VULKAN_HPP_NOEXCEPT
102868     {
102869       return std::tie( sType, pNext, checkpointExecutionStageMask );
102870     }
102871 #endif
102872 
102873 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102874     auto operator<=>( QueueFamilyCheckpointProperties2NV const & ) const = default;
102875 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV102876     bool operator==( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
102877     {
102878 #  if defined( VULKAN_HPP_USE_REFLECT )
102879       return this->reflect() == rhs.reflect();
102880 #  else
102881       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask );
102882 #  endif
102883     }
102884 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV102885     bool operator!=( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
102886     {
102887       return !operator==( rhs );
102888     }
102889 #endif
102890 
102891   public:
102892     VULKAN_HPP_NAMESPACE::StructureType       sType                        = StructureType::eQueueFamilyCheckpointProperties2NV;
102893     void *                                    pNext                        = {};
102894     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 checkpointExecutionStageMask = {};
102895   };
102896 
102897   template <>
102898   struct CppType<StructureType, StructureType::eQueueFamilyCheckpointProperties2NV>
102899   {
102900     using Type = QueueFamilyCheckpointProperties2NV;
102901   };
102902 
102903   struct QueueFamilyCheckpointPropertiesNV
102904   {
102905     using NativeType = VkQueueFamilyCheckpointPropertiesNV;
102906 
102907     static const bool                                  allowDuplicate = false;
102908     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyCheckpointPropertiesNV;
102909 
102910 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyCheckpointPropertiesNVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV102911     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV( VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask_ = {},
102912                                                             void *                                   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
102913       : pNext{ pNext_ }
102914       , checkpointExecutionStageMask{ checkpointExecutionStageMask_ }
102915     {
102916     }
102917 
102918     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102919 
QueueFamilyCheckpointPropertiesNVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV102920     QueueFamilyCheckpointPropertiesNV( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
102921       : QueueFamilyCheckpointPropertiesNV( *reinterpret_cast<QueueFamilyCheckpointPropertiesNV const *>( &rhs ) )
102922     {
102923     }
102924 
102925     QueueFamilyCheckpointPropertiesNV & operator=( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102926 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102927 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV102928     QueueFamilyCheckpointPropertiesNV & operator=( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
102929     {
102930       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV const *>( &rhs );
102931       return *this;
102932     }
102933 
operator VkQueueFamilyCheckpointPropertiesNV const&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV102934     operator VkQueueFamilyCheckpointPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
102935     {
102936       return *reinterpret_cast<const VkQueueFamilyCheckpointPropertiesNV *>( this );
102937     }
102938 
operator VkQueueFamilyCheckpointPropertiesNV&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV102939     operator VkQueueFamilyCheckpointPropertiesNV &() VULKAN_HPP_NOEXCEPT
102940     {
102941       return *reinterpret_cast<VkQueueFamilyCheckpointPropertiesNV *>( this );
102942     }
102943 
102944 #if defined( VULKAN_HPP_USE_REFLECT )
102945 #  if 14 <= VULKAN_HPP_CPP_VERSION
102946     auto
102947 #  else
102948     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags const &>
102949 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV102950       reflect() const VULKAN_HPP_NOEXCEPT
102951     {
102952       return std::tie( sType, pNext, checkpointExecutionStageMask );
102953     }
102954 #endif
102955 
102956 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102957     auto operator<=>( QueueFamilyCheckpointPropertiesNV const & ) const = default;
102958 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV102959     bool operator==( QueueFamilyCheckpointPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
102960     {
102961 #  if defined( VULKAN_HPP_USE_REFLECT )
102962       return this->reflect() == rhs.reflect();
102963 #  else
102964       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask );
102965 #  endif
102966     }
102967 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV102968     bool operator!=( QueueFamilyCheckpointPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
102969     {
102970       return !operator==( rhs );
102971     }
102972 #endif
102973 
102974   public:
102975     VULKAN_HPP_NAMESPACE::StructureType      sType                        = StructureType::eQueueFamilyCheckpointPropertiesNV;
102976     void *                                   pNext                        = {};
102977     VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask = {};
102978   };
102979 
102980   template <>
102981   struct CppType<StructureType, StructureType::eQueueFamilyCheckpointPropertiesNV>
102982   {
102983     using Type = QueueFamilyCheckpointPropertiesNV;
102984   };
102985 
102986   struct QueueFamilyGlobalPriorityProperties
102987   {
102988     using NativeType = VkQueueFamilyGlobalPriorityProperties;
102989 
102990     static const bool                                  allowDuplicate = false;
102991     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyGlobalPriorityProperties;
102992 
102993 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyGlobalPriorityPropertiesVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties102994     VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityProperties( uint32_t priorityCount_ = {},
102995                                                                  std::array<VULKAN_HPP_NAMESPACE::QueueGlobalPriority, VK_MAX_GLOBAL_PRIORITY_SIZE> const &
102996                                                                         priorities_ = { { VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
102997                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
102998                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
102999                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103000                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103001                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103002                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103003                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103004                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103005                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103006                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103007                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103008                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103009                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103010                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow,
103011                                                                                           VULKAN_HPP_NAMESPACE::QueueGlobalPriority::eLow } },
103012                                                                  void * pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
103013       : pNext{ pNext_ }
103014       , priorityCount{ priorityCount_ }
103015       , priorities{ priorities_ }
103016     {
103017     }
103018 
103019     VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityProperties( QueueFamilyGlobalPriorityProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103020 
QueueFamilyGlobalPriorityPropertiesVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties103021     QueueFamilyGlobalPriorityProperties( VkQueueFamilyGlobalPriorityProperties const & rhs ) VULKAN_HPP_NOEXCEPT
103022       : QueueFamilyGlobalPriorityProperties( *reinterpret_cast<QueueFamilyGlobalPriorityProperties const *>( &rhs ) )
103023     {
103024     }
103025 
103026     QueueFamilyGlobalPriorityProperties & operator=( QueueFamilyGlobalPriorityProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103027 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103028 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties103029     QueueFamilyGlobalPriorityProperties & operator=( VkQueueFamilyGlobalPriorityProperties const & rhs ) VULKAN_HPP_NOEXCEPT
103030     {
103031       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties const *>( &rhs );
103032       return *this;
103033     }
103034 
operator VkQueueFamilyGlobalPriorityProperties const&VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties103035     operator VkQueueFamilyGlobalPriorityProperties const &() const VULKAN_HPP_NOEXCEPT
103036     {
103037       return *reinterpret_cast<const VkQueueFamilyGlobalPriorityProperties *>( this );
103038     }
103039 
operator VkQueueFamilyGlobalPriorityProperties&VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties103040     operator VkQueueFamilyGlobalPriorityProperties &() VULKAN_HPP_NOEXCEPT
103041     {
103042       return *reinterpret_cast<VkQueueFamilyGlobalPriorityProperties *>( this );
103043     }
103044 
103045 #if defined( VULKAN_HPP_USE_REFLECT )
103046 #  if 14 <= VULKAN_HPP_CPP_VERSION
103047     auto
103048 #  else
103049     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
103050                void * const &,
103051                uint32_t const &,
103052                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::QueueGlobalPriority, VK_MAX_GLOBAL_PRIORITY_SIZE> const &>
103053 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties103054       reflect() const VULKAN_HPP_NOEXCEPT
103055     {
103056       return std::tie( sType, pNext, priorityCount, priorities );
103057     }
103058 #endif
103059 
103060 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties103061     std::strong_ordering operator<=>( QueueFamilyGlobalPriorityProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
103062     {
103063       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
103064         return cmp;
103065       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
103066         return cmp;
103067       if ( auto cmp = priorityCount <=> rhs.priorityCount; cmp != 0 )
103068         return cmp;
103069       for ( size_t i = 0; i < priorityCount; ++i )
103070       {
103071         if ( auto cmp = priorities[i] <=> rhs.priorities[i]; cmp != 0 )
103072           return cmp;
103073       }
103074 
103075       return std::strong_ordering::equivalent;
103076     }
103077 #endif
103078 
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties103079     bool operator==( QueueFamilyGlobalPriorityProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
103080     {
103081       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( priorityCount == rhs.priorityCount ) &&
103082              ( memcmp( priorities, rhs.priorities, priorityCount * sizeof( VULKAN_HPP_NAMESPACE::QueueGlobalPriority ) ) == 0 );
103083     }
103084 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties103085     bool operator!=( QueueFamilyGlobalPriorityProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
103086     {
103087       return !operator==( rhs );
103088     }
103089 
103090   public:
103091     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eQueueFamilyGlobalPriorityProperties;
103092     void *                              pNext         = {};
103093     uint32_t                            priorityCount = {};
103094     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::QueueGlobalPriority, VK_MAX_GLOBAL_PRIORITY_SIZE> priorities = {};
103095   };
103096 
103097   template <>
103098   struct CppType<StructureType, StructureType::eQueueFamilyGlobalPriorityProperties>
103099   {
103100     using Type = QueueFamilyGlobalPriorityProperties;
103101   };
103102 
103103   using QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties;
103104   using QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties;
103105 
103106   struct QueueFamilyProperties
103107   {
103108     using NativeType = VkQueueFamilyProperties;
103109 
103110 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyPropertiesVULKAN_HPP_NAMESPACE::QueueFamilyProperties103111     VULKAN_HPP_CONSTEXPR QueueFamilyProperties( VULKAN_HPP_NAMESPACE::QueueFlags queueFlags_                  = {},
103112                                                 uint32_t                         queueCount_                  = {},
103113                                                 uint32_t                         timestampValidBits_          = {},
103114                                                 VULKAN_HPP_NAMESPACE::Extent3D   minImageTransferGranularity_ = {} ) VULKAN_HPP_NOEXCEPT
103115       : queueFlags{ queueFlags_ }
103116       , queueCount{ queueCount_ }
103117       , timestampValidBits{ timestampValidBits_ }
103118       , minImageTransferGranularity{ minImageTransferGranularity_ }
103119     {
103120     }
103121 
103122     VULKAN_HPP_CONSTEXPR QueueFamilyProperties( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103123 
QueueFamilyPropertiesVULKAN_HPP_NAMESPACE::QueueFamilyProperties103124     QueueFamilyProperties( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
103125       : QueueFamilyProperties( *reinterpret_cast<QueueFamilyProperties const *>( &rhs ) )
103126     {
103127     }
103128 
103129     QueueFamilyProperties & operator=( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103130 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103131 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyProperties103132     QueueFamilyProperties & operator=( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
103133     {
103134       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyProperties const *>( &rhs );
103135       return *this;
103136     }
103137 
operator VkQueueFamilyProperties const&VULKAN_HPP_NAMESPACE::QueueFamilyProperties103138     operator VkQueueFamilyProperties const &() const VULKAN_HPP_NOEXCEPT
103139     {
103140       return *reinterpret_cast<const VkQueueFamilyProperties *>( this );
103141     }
103142 
operator VkQueueFamilyProperties&VULKAN_HPP_NAMESPACE::QueueFamilyProperties103143     operator VkQueueFamilyProperties &() VULKAN_HPP_NOEXCEPT
103144     {
103145       return *reinterpret_cast<VkQueueFamilyProperties *>( this );
103146     }
103147 
103148 #if defined( VULKAN_HPP_USE_REFLECT )
103149 #  if 14 <= VULKAN_HPP_CPP_VERSION
103150     auto
103151 #  else
103152     std::tuple<VULKAN_HPP_NAMESPACE::QueueFlags const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Extent3D const &>
103153 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyProperties103154       reflect() const VULKAN_HPP_NOEXCEPT
103155     {
103156       return std::tie( queueFlags, queueCount, timestampValidBits, minImageTransferGranularity );
103157     }
103158 #endif
103159 
103160 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103161     auto operator<=>( QueueFamilyProperties const & ) const = default;
103162 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyProperties103163     bool operator==( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
103164     {
103165 #  if defined( VULKAN_HPP_USE_REFLECT )
103166       return this->reflect() == rhs.reflect();
103167 #  else
103168       return ( queueFlags == rhs.queueFlags ) && ( queueCount == rhs.queueCount ) && ( timestampValidBits == rhs.timestampValidBits ) &&
103169              ( minImageTransferGranularity == rhs.minImageTransferGranularity );
103170 #  endif
103171     }
103172 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyProperties103173     bool operator!=( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
103174     {
103175       return !operator==( rhs );
103176     }
103177 #endif
103178 
103179   public:
103180     VULKAN_HPP_NAMESPACE::QueueFlags queueFlags                  = {};
103181     uint32_t                         queueCount                  = {};
103182     uint32_t                         timestampValidBits          = {};
103183     VULKAN_HPP_NAMESPACE::Extent3D   minImageTransferGranularity = {};
103184   };
103185 
103186   struct QueueFamilyProperties2
103187   {
103188     using NativeType = VkQueueFamilyProperties2;
103189 
103190     static const bool                                  allowDuplicate = false;
103191     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyProperties2;
103192 
103193 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyProperties2VULKAN_HPP_NAMESPACE::QueueFamilyProperties2103194     VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties_ = {},
103195                                                  void *                                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
103196       : pNext{ pNext_ }
103197       , queueFamilyProperties{ queueFamilyProperties_ }
103198     {
103199     }
103200 
103201     VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103202 
QueueFamilyProperties2VULKAN_HPP_NAMESPACE::QueueFamilyProperties2103203     QueueFamilyProperties2( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
103204       : QueueFamilyProperties2( *reinterpret_cast<QueueFamilyProperties2 const *>( &rhs ) )
103205     {
103206     }
103207 
103208     QueueFamilyProperties2 & operator=( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103209 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103210 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyProperties2103211     QueueFamilyProperties2 & operator=( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
103212     {
103213       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 const *>( &rhs );
103214       return *this;
103215     }
103216 
operator VkQueueFamilyProperties2 const&VULKAN_HPP_NAMESPACE::QueueFamilyProperties2103217     operator VkQueueFamilyProperties2 const &() const VULKAN_HPP_NOEXCEPT
103218     {
103219       return *reinterpret_cast<const VkQueueFamilyProperties2 *>( this );
103220     }
103221 
operator VkQueueFamilyProperties2&VULKAN_HPP_NAMESPACE::QueueFamilyProperties2103222     operator VkQueueFamilyProperties2 &() VULKAN_HPP_NOEXCEPT
103223     {
103224       return *reinterpret_cast<VkQueueFamilyProperties2 *>( this );
103225     }
103226 
103227 #if defined( VULKAN_HPP_USE_REFLECT )
103228 #  if 14 <= VULKAN_HPP_CPP_VERSION
103229     auto
103230 #  else
103231     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::QueueFamilyProperties const &>
103232 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyProperties2103233       reflect() const VULKAN_HPP_NOEXCEPT
103234     {
103235       return std::tie( sType, pNext, queueFamilyProperties );
103236     }
103237 #endif
103238 
103239 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103240     auto operator<=>( QueueFamilyProperties2 const & ) const = default;
103241 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyProperties2103242     bool operator==( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
103243     {
103244 #  if defined( VULKAN_HPP_USE_REFLECT )
103245       return this->reflect() == rhs.reflect();
103246 #  else
103247       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyProperties == rhs.queueFamilyProperties );
103248 #  endif
103249     }
103250 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyProperties2103251     bool operator!=( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
103252     {
103253       return !operator==( rhs );
103254     }
103255 #endif
103256 
103257   public:
103258     VULKAN_HPP_NAMESPACE::StructureType         sType                 = StructureType::eQueueFamilyProperties2;
103259     void *                                      pNext                 = {};
103260     VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties = {};
103261   };
103262 
103263   template <>
103264   struct CppType<StructureType, StructureType::eQueueFamilyProperties2>
103265   {
103266     using Type = QueueFamilyProperties2;
103267   };
103268 
103269   using QueueFamilyProperties2KHR = QueueFamilyProperties2;
103270 
103271   struct QueueFamilyQueryResultStatusPropertiesKHR
103272   {
103273     using NativeType = VkQueueFamilyQueryResultStatusPropertiesKHR;
103274 
103275     static const bool                                  allowDuplicate = false;
103276     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyQueryResultStatusPropertiesKHR;
103277 
103278 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyQueryResultStatusPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR103279     VULKAN_HPP_CONSTEXPR QueueFamilyQueryResultStatusPropertiesKHR( VULKAN_HPP_NAMESPACE::Bool32 queryResultStatusSupport_ = {},
103280                                                                     void *                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
103281       : pNext{ pNext_ }
103282       , queryResultStatusSupport{ queryResultStatusSupport_ }
103283     {
103284     }
103285 
103286     VULKAN_HPP_CONSTEXPR QueueFamilyQueryResultStatusPropertiesKHR( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103287 
QueueFamilyQueryResultStatusPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR103288     QueueFamilyQueryResultStatusPropertiesKHR( VkQueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
103289       : QueueFamilyQueryResultStatusPropertiesKHR( *reinterpret_cast<QueueFamilyQueryResultStatusPropertiesKHR const *>( &rhs ) )
103290     {
103291     }
103292 
103293     QueueFamilyQueryResultStatusPropertiesKHR & operator=( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103294 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103295 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR103296     QueueFamilyQueryResultStatusPropertiesKHR & operator=( VkQueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
103297     {
103298       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR const *>( &rhs );
103299       return *this;
103300     }
103301 
operator VkQueueFamilyQueryResultStatusPropertiesKHR const&VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR103302     operator VkQueueFamilyQueryResultStatusPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
103303     {
103304       return *reinterpret_cast<const VkQueueFamilyQueryResultStatusPropertiesKHR *>( this );
103305     }
103306 
operator VkQueueFamilyQueryResultStatusPropertiesKHR&VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR103307     operator VkQueueFamilyQueryResultStatusPropertiesKHR &() VULKAN_HPP_NOEXCEPT
103308     {
103309       return *reinterpret_cast<VkQueueFamilyQueryResultStatusPropertiesKHR *>( this );
103310     }
103311 
103312 #if defined( VULKAN_HPP_USE_REFLECT )
103313 #  if 14 <= VULKAN_HPP_CPP_VERSION
103314     auto
103315 #  else
103316     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
103317 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR103318       reflect() const VULKAN_HPP_NOEXCEPT
103319     {
103320       return std::tie( sType, pNext, queryResultStatusSupport );
103321     }
103322 #endif
103323 
103324 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103325     auto operator<=>( QueueFamilyQueryResultStatusPropertiesKHR const & ) const = default;
103326 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR103327     bool operator==( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
103328     {
103329 #  if defined( VULKAN_HPP_USE_REFLECT )
103330       return this->reflect() == rhs.reflect();
103331 #  else
103332       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queryResultStatusSupport == rhs.queryResultStatusSupport );
103333 #  endif
103334     }
103335 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR103336     bool operator!=( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
103337     {
103338       return !operator==( rhs );
103339     }
103340 #endif
103341 
103342   public:
103343     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::eQueueFamilyQueryResultStatusPropertiesKHR;
103344     void *                              pNext                    = {};
103345     VULKAN_HPP_NAMESPACE::Bool32        queryResultStatusSupport = {};
103346   };
103347 
103348   template <>
103349   struct CppType<StructureType, StructureType::eQueueFamilyQueryResultStatusPropertiesKHR>
103350   {
103351     using Type = QueueFamilyQueryResultStatusPropertiesKHR;
103352   };
103353 
103354   struct QueueFamilyVideoPropertiesKHR
103355   {
103356     using NativeType = VkQueueFamilyVideoPropertiesKHR;
103357 
103358     static const bool                                  allowDuplicate = false;
103359     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyVideoPropertiesKHR;
103360 
103361 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyVideoPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR103362     VULKAN_HPP_CONSTEXPR QueueFamilyVideoPropertiesKHR( VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR videoCodecOperations_ = {},
103363                                                         void *                                            pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
103364       : pNext{ pNext_ }
103365       , videoCodecOperations{ videoCodecOperations_ }
103366     {
103367     }
103368 
103369     VULKAN_HPP_CONSTEXPR QueueFamilyVideoPropertiesKHR( QueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103370 
QueueFamilyVideoPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR103371     QueueFamilyVideoPropertiesKHR( VkQueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
103372       : QueueFamilyVideoPropertiesKHR( *reinterpret_cast<QueueFamilyVideoPropertiesKHR const *>( &rhs ) )
103373     {
103374     }
103375 
103376     QueueFamilyVideoPropertiesKHR & operator=( QueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103377 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103378 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR103379     QueueFamilyVideoPropertiesKHR & operator=( VkQueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
103380     {
103381       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR const *>( &rhs );
103382       return *this;
103383     }
103384 
operator VkQueueFamilyVideoPropertiesKHR const&VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR103385     operator VkQueueFamilyVideoPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
103386     {
103387       return *reinterpret_cast<const VkQueueFamilyVideoPropertiesKHR *>( this );
103388     }
103389 
operator VkQueueFamilyVideoPropertiesKHR&VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR103390     operator VkQueueFamilyVideoPropertiesKHR &() VULKAN_HPP_NOEXCEPT
103391     {
103392       return *reinterpret_cast<VkQueueFamilyVideoPropertiesKHR *>( this );
103393     }
103394 
103395 #if defined( VULKAN_HPP_USE_REFLECT )
103396 #  if 14 <= VULKAN_HPP_CPP_VERSION
103397     auto
103398 #  else
103399     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR const &>
103400 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR103401       reflect() const VULKAN_HPP_NOEXCEPT
103402     {
103403       return std::tie( sType, pNext, videoCodecOperations );
103404     }
103405 #endif
103406 
103407 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103408     auto operator<=>( QueueFamilyVideoPropertiesKHR const & ) const = default;
103409 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR103410     bool operator==( QueueFamilyVideoPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
103411     {
103412 #  if defined( VULKAN_HPP_USE_REFLECT )
103413       return this->reflect() == rhs.reflect();
103414 #  else
103415       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoCodecOperations == rhs.videoCodecOperations );
103416 #  endif
103417     }
103418 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR103419     bool operator!=( QueueFamilyVideoPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
103420     {
103421       return !operator==( rhs );
103422     }
103423 #endif
103424 
103425   public:
103426     VULKAN_HPP_NAMESPACE::StructureType               sType                = StructureType::eQueueFamilyVideoPropertiesKHR;
103427     void *                                            pNext                = {};
103428     VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR videoCodecOperations = {};
103429   };
103430 
103431   template <>
103432   struct CppType<StructureType, StructureType::eQueueFamilyVideoPropertiesKHR>
103433   {
103434     using Type = QueueFamilyVideoPropertiesKHR;
103435   };
103436 
103437   struct RayTracingShaderGroupCreateInfoKHR
103438   {
103439     using NativeType = VkRayTracingShaderGroupCreateInfoKHR;
103440 
103441     static const bool                                  allowDuplicate = false;
103442     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingShaderGroupCreateInfoKHR;
103443 
103444 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingShaderGroupCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103445     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoKHR(
103446       VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_                            = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral,
103447       uint32_t                                           generalShader_                   = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR,
103448       uint32_t                                           closestHitShader_                = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR,
103449       uint32_t                                           anyHitShader_                    = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR,
103450       uint32_t                                           intersectionShader_              = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR,
103451       const void *                                       pShaderGroupCaptureReplayHandle_ = {},
103452       const void *                                       pNext_                           = nullptr ) VULKAN_HPP_NOEXCEPT
103453       : pNext{ pNext_ }
103454       , type{ type_ }
103455       , generalShader{ generalShader_ }
103456       , closestHitShader{ closestHitShader_ }
103457       , anyHitShader{ anyHitShader_ }
103458       , intersectionShader{ intersectionShader_ }
103459       , pShaderGroupCaptureReplayHandle{ pShaderGroupCaptureReplayHandle_ }
103460     {
103461     }
103462 
103463     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoKHR( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103464 
RayTracingShaderGroupCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103465     RayTracingShaderGroupCreateInfoKHR( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
103466       : RayTracingShaderGroupCreateInfoKHR( *reinterpret_cast<RayTracingShaderGroupCreateInfoKHR const *>( &rhs ) )
103467     {
103468     }
103469 
103470     RayTracingShaderGroupCreateInfoKHR & operator=( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103471 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103472 
operator =VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103473     RayTracingShaderGroupCreateInfoKHR & operator=( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
103474     {
103475       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR const *>( &rhs );
103476       return *this;
103477     }
103478 
103479 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103480     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
103481     {
103482       pNext = pNext_;
103483       return *this;
103484     }
103485 
setTypeVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103486     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setType( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
103487     {
103488       type = type_;
103489       return *this;
103490     }
103491 
setGeneralShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103492     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setGeneralShader( uint32_t generalShader_ ) VULKAN_HPP_NOEXCEPT
103493     {
103494       generalShader = generalShader_;
103495       return *this;
103496     }
103497 
setClosestHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103498     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setClosestHitShader( uint32_t closestHitShader_ ) VULKAN_HPP_NOEXCEPT
103499     {
103500       closestHitShader = closestHitShader_;
103501       return *this;
103502     }
103503 
setAnyHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103504     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setAnyHitShader( uint32_t anyHitShader_ ) VULKAN_HPP_NOEXCEPT
103505     {
103506       anyHitShader = anyHitShader_;
103507       return *this;
103508     }
103509 
setIntersectionShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103510     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setIntersectionShader( uint32_t intersectionShader_ ) VULKAN_HPP_NOEXCEPT
103511     {
103512       intersectionShader = intersectionShader_;
103513       return *this;
103514     }
103515 
103516     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR &
setPShaderGroupCaptureReplayHandleVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103517       setPShaderGroupCaptureReplayHandle( const void * pShaderGroupCaptureReplayHandle_ ) VULKAN_HPP_NOEXCEPT
103518     {
103519       pShaderGroupCaptureReplayHandle = pShaderGroupCaptureReplayHandle_;
103520       return *this;
103521     }
103522 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
103523 
operator VkRayTracingShaderGroupCreateInfoKHR const&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103524     operator VkRayTracingShaderGroupCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
103525     {
103526       return *reinterpret_cast<const VkRayTracingShaderGroupCreateInfoKHR *>( this );
103527     }
103528 
operator VkRayTracingShaderGroupCreateInfoKHR&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103529     operator VkRayTracingShaderGroupCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
103530     {
103531       return *reinterpret_cast<VkRayTracingShaderGroupCreateInfoKHR *>( this );
103532     }
103533 
103534 #if defined( VULKAN_HPP_USE_REFLECT )
103535 #  if 14 <= VULKAN_HPP_CPP_VERSION
103536     auto
103537 #  else
103538     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
103539                const void * const &,
103540                VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR const &,
103541                uint32_t const &,
103542                uint32_t const &,
103543                uint32_t const &,
103544                uint32_t const &,
103545                const void * const &>
103546 #  endif
reflectVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103547       reflect() const VULKAN_HPP_NOEXCEPT
103548     {
103549       return std::tie( sType, pNext, type, generalShader, closestHitShader, anyHitShader, intersectionShader, pShaderGroupCaptureReplayHandle );
103550     }
103551 #endif
103552 
103553 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103554     auto operator<=>( RayTracingShaderGroupCreateInfoKHR const & ) const = default;
103555 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103556     bool operator==( RayTracingShaderGroupCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
103557     {
103558 #  if defined( VULKAN_HPP_USE_REFLECT )
103559       return this->reflect() == rhs.reflect();
103560 #  else
103561       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( generalShader == rhs.generalShader ) &&
103562              ( closestHitShader == rhs.closestHitShader ) && ( anyHitShader == rhs.anyHitShader ) && ( intersectionShader == rhs.intersectionShader ) &&
103563              ( pShaderGroupCaptureReplayHandle == rhs.pShaderGroupCaptureReplayHandle );
103564 #  endif
103565     }
103566 
operator !=VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR103567     bool operator!=( RayTracingShaderGroupCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
103568     {
103569       return !operator==( rhs );
103570     }
103571 #endif
103572 
103573   public:
103574     VULKAN_HPP_NAMESPACE::StructureType                sType                           = StructureType::eRayTracingShaderGroupCreateInfoKHR;
103575     const void *                                       pNext                           = {};
103576     VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type                            = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral;
103577     uint32_t                                           generalShader                   = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR;
103578     uint32_t                                           closestHitShader                = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR;
103579     uint32_t                                           anyHitShader                    = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR;
103580     uint32_t                                           intersectionShader              = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR;
103581     const void *                                       pShaderGroupCaptureReplayHandle = {};
103582   };
103583 
103584   template <>
103585   struct CppType<StructureType, StructureType::eRayTracingShaderGroupCreateInfoKHR>
103586   {
103587     using Type = RayTracingShaderGroupCreateInfoKHR;
103588   };
103589 
103590   struct RayTracingPipelineInterfaceCreateInfoKHR
103591   {
103592     using NativeType = VkRayTracingPipelineInterfaceCreateInfoKHR;
103593 
103594     static const bool                                  allowDuplicate = false;
103595     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR;
103596 
103597 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingPipelineInterfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103598     VULKAN_HPP_CONSTEXPR RayTracingPipelineInterfaceCreateInfoKHR( uint32_t     maxPipelineRayPayloadSize_      = {},
103599                                                                    uint32_t     maxPipelineRayHitAttributeSize_ = {},
103600                                                                    const void * pNext_                          = nullptr ) VULKAN_HPP_NOEXCEPT
103601       : pNext{ pNext_ }
103602       , maxPipelineRayPayloadSize{ maxPipelineRayPayloadSize_ }
103603       , maxPipelineRayHitAttributeSize{ maxPipelineRayHitAttributeSize_ }
103604     {
103605     }
103606 
103607     VULKAN_HPP_CONSTEXPR RayTracingPipelineInterfaceCreateInfoKHR( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103608 
RayTracingPipelineInterfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103609     RayTracingPipelineInterfaceCreateInfoKHR( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
103610       : RayTracingPipelineInterfaceCreateInfoKHR( *reinterpret_cast<RayTracingPipelineInterfaceCreateInfoKHR const *>( &rhs ) )
103611     {
103612     }
103613 
103614     RayTracingPipelineInterfaceCreateInfoKHR & operator=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103615 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103616 
operator =VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103617     RayTracingPipelineInterfaceCreateInfoKHR & operator=( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
103618     {
103619       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR const *>( &rhs );
103620       return *this;
103621     }
103622 
103623 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103624     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
103625     {
103626       pNext = pNext_;
103627       return *this;
103628     }
103629 
setMaxPipelineRayPayloadSizeVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103630     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & setMaxPipelineRayPayloadSize( uint32_t maxPipelineRayPayloadSize_ ) VULKAN_HPP_NOEXCEPT
103631     {
103632       maxPipelineRayPayloadSize = maxPipelineRayPayloadSize_;
103633       return *this;
103634     }
103635 
103636     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR &
setMaxPipelineRayHitAttributeSizeVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103637       setMaxPipelineRayHitAttributeSize( uint32_t maxPipelineRayHitAttributeSize_ ) VULKAN_HPP_NOEXCEPT
103638     {
103639       maxPipelineRayHitAttributeSize = maxPipelineRayHitAttributeSize_;
103640       return *this;
103641     }
103642 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
103643 
operator VkRayTracingPipelineInterfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103644     operator VkRayTracingPipelineInterfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
103645     {
103646       return *reinterpret_cast<const VkRayTracingPipelineInterfaceCreateInfoKHR *>( this );
103647     }
103648 
operator VkRayTracingPipelineInterfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103649     operator VkRayTracingPipelineInterfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
103650     {
103651       return *reinterpret_cast<VkRayTracingPipelineInterfaceCreateInfoKHR *>( this );
103652     }
103653 
103654 #if defined( VULKAN_HPP_USE_REFLECT )
103655 #  if 14 <= VULKAN_HPP_CPP_VERSION
103656     auto
103657 #  else
103658     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &>
103659 #  endif
reflectVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103660       reflect() const VULKAN_HPP_NOEXCEPT
103661     {
103662       return std::tie( sType, pNext, maxPipelineRayPayloadSize, maxPipelineRayHitAttributeSize );
103663     }
103664 #endif
103665 
103666 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103667     auto operator<=>( RayTracingPipelineInterfaceCreateInfoKHR const & ) const = default;
103668 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103669     bool operator==( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
103670     {
103671 #  if defined( VULKAN_HPP_USE_REFLECT )
103672       return this->reflect() == rhs.reflect();
103673 #  else
103674       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPipelineRayPayloadSize == rhs.maxPipelineRayPayloadSize ) &&
103675              ( maxPipelineRayHitAttributeSize == rhs.maxPipelineRayHitAttributeSize );
103676 #  endif
103677     }
103678 
operator !=VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR103679     bool operator!=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
103680     {
103681       return !operator==( rhs );
103682     }
103683 #endif
103684 
103685   public:
103686     VULKAN_HPP_NAMESPACE::StructureType sType                          = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR;
103687     const void *                        pNext                          = {};
103688     uint32_t                            maxPipelineRayPayloadSize      = {};
103689     uint32_t                            maxPipelineRayHitAttributeSize = {};
103690   };
103691 
103692   template <>
103693   struct CppType<StructureType, StructureType::eRayTracingPipelineInterfaceCreateInfoKHR>
103694   {
103695     using Type = RayTracingPipelineInterfaceCreateInfoKHR;
103696   };
103697 
103698   struct RayTracingPipelineCreateInfoKHR
103699   {
103700     using NativeType = VkRayTracingPipelineCreateInfoKHR;
103701 
103702     static const bool                                  allowDuplicate = false;
103703     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingPipelineCreateInfoKHR;
103704 
103705 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingPipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103706     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoKHR( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                        flags_                        = {},
103707                                                           uint32_t                                                         stageCount_                   = {},
103708                                                           const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *      pStages_                      = {},
103709                                                           uint32_t                                                         groupCount_                   = {},
103710                                                           const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * pGroups_                      = {},
103711                                                           uint32_t                                                         maxPipelineRayRecursionDepth_ = {},
103712                                                           const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *       pLibraryInfo_                 = {},
103713                                                           const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface_      = {},
103714                                                           const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *           pDynamicState_          = {},
103715                                                           VULKAN_HPP_NAMESPACE::PipelineLayout                                   layout_                 = {},
103716                                                           VULKAN_HPP_NAMESPACE::Pipeline                                         basePipelineHandle_     = {},
103717                                                           int32_t                                                                basePipelineIndex_      = {},
103718                                                           const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
103719       : pNext{ pNext_ }
103720       , flags{ flags_ }
103721       , stageCount{ stageCount_ }
103722       , pStages{ pStages_ }
103723       , groupCount{ groupCount_ }
103724       , pGroups{ pGroups_ }
103725       , maxPipelineRayRecursionDepth{ maxPipelineRayRecursionDepth_ }
103726       , pLibraryInfo{ pLibraryInfo_ }
103727       , pLibraryInterface{ pLibraryInterface_ }
103728       , pDynamicState{ pDynamicState_ }
103729       , layout{ layout_ }
103730       , basePipelineHandle{ basePipelineHandle_ }
103731       , basePipelineIndex{ basePipelineIndex_ }
103732     {
103733     }
103734 
103735     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoKHR( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103736 
RayTracingPipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103737     RayTracingPipelineCreateInfoKHR( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
103738       : RayTracingPipelineCreateInfoKHR( *reinterpret_cast<RayTracingPipelineCreateInfoKHR const *>( &rhs ) )
103739     {
103740     }
103741 
103742 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RayTracingPipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103743     RayTracingPipelineCreateInfoKHR(
103744       VULKAN_HPP_NAMESPACE::PipelineCreateFlags                                                                             flags_,
103745       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &      stages_,
103746       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR> const & groups_                       = {},
103747       uint32_t                                                                                                              maxPipelineRayRecursionDepth_ = {},
103748       const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *                                                            pLibraryInfo_                 = {},
103749       const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR *                                                pLibraryInterface_            = {},
103750       const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *                                                          pDynamicState_                = {},
103751       VULKAN_HPP_NAMESPACE::PipelineLayout                                                                                  layout_                       = {},
103752       VULKAN_HPP_NAMESPACE::Pipeline                                                                                        basePipelineHandle_           = {},
103753       int32_t                                                                                                               basePipelineIndex_            = {},
103754       const void *                                                                                                          pNext_ = nullptr )
103755       : pNext( pNext_ )
103756       , flags( flags_ )
103757       , stageCount( static_cast<uint32_t>( stages_.size() ) )
103758       , pStages( stages_.data() )
103759       , groupCount( static_cast<uint32_t>( groups_.size() ) )
103760       , pGroups( groups_.data() )
103761       , maxPipelineRayRecursionDepth( maxPipelineRayRecursionDepth_ )
103762       , pLibraryInfo( pLibraryInfo_ )
103763       , pLibraryInterface( pLibraryInterface_ )
103764       , pDynamicState( pDynamicState_ )
103765       , layout( layout_ )
103766       , basePipelineHandle( basePipelineHandle_ )
103767       , basePipelineIndex( basePipelineIndex_ )
103768     {
103769     }
103770 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103771 
103772     RayTracingPipelineCreateInfoKHR & operator=( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103773 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103774 
operator =VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103775     RayTracingPipelineCreateInfoKHR & operator=( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
103776     {
103777       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const *>( &rhs );
103778       return *this;
103779     }
103780 
103781 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103782     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
103783     {
103784       pNext = pNext_;
103785       return *this;
103786     }
103787 
setFlagsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103788     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
103789     {
103790       flags = flags_;
103791       return *this;
103792     }
103793 
setStageCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103794     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
103795     {
103796       stageCount = stageCount_;
103797       return *this;
103798     }
103799 
103800     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103801       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
103802     {
103803       pStages = pStages_;
103804       return *this;
103805     }
103806 
103807 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
103808     RayTracingPipelineCreateInfoKHR &
setStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103809       setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
103810     {
103811       stageCount = static_cast<uint32_t>( stages_.size() );
103812       pStages    = stages_.data();
103813       return *this;
103814     }
103815 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103816 
setGroupCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103817     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT
103818     {
103819       groupCount = groupCount_;
103820       return *this;
103821     }
103822 
103823     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103824       setPGroups( const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * pGroups_ ) VULKAN_HPP_NOEXCEPT
103825     {
103826       pGroups = pGroups_;
103827       return *this;
103828     }
103829 
103830 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103831     RayTracingPipelineCreateInfoKHR & setGroups(
103832       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR> const & groups_ ) VULKAN_HPP_NOEXCEPT
103833     {
103834       groupCount = static_cast<uint32_t>( groups_.size() );
103835       pGroups    = groups_.data();
103836       return *this;
103837     }
103838 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103839 
setMaxPipelineRayRecursionDepthVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103840     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setMaxPipelineRayRecursionDepth( uint32_t maxPipelineRayRecursionDepth_ ) VULKAN_HPP_NOEXCEPT
103841     {
103842       maxPipelineRayRecursionDepth = maxPipelineRayRecursionDepth_;
103843       return *this;
103844     }
103845 
103846     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPLibraryInfoVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103847       setPLibraryInfo( const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * pLibraryInfo_ ) VULKAN_HPP_NOEXCEPT
103848     {
103849       pLibraryInfo = pLibraryInfo_;
103850       return *this;
103851     }
103852 
103853     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPLibraryInterfaceVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103854       setPLibraryInterface( const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface_ ) VULKAN_HPP_NOEXCEPT
103855     {
103856       pLibraryInterface = pLibraryInterface_;
103857       return *this;
103858     }
103859 
103860     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPDynamicStateVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103861       setPDynamicState( const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ ) VULKAN_HPP_NOEXCEPT
103862     {
103863       pDynamicState = pDynamicState_;
103864       return *this;
103865     }
103866 
setLayoutVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103867     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
103868     {
103869       layout = layout_;
103870       return *this;
103871     }
103872 
setBasePipelineHandleVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103873     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
103874     {
103875       basePipelineHandle = basePipelineHandle_;
103876       return *this;
103877     }
103878 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103879     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
103880     {
103881       basePipelineIndex = basePipelineIndex_;
103882       return *this;
103883     }
103884 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
103885 
operator VkRayTracingPipelineCreateInfoKHR const&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103886     operator VkRayTracingPipelineCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
103887     {
103888       return *reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( this );
103889     }
103890 
operator VkRayTracingPipelineCreateInfoKHR&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103891     operator VkRayTracingPipelineCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
103892     {
103893       return *reinterpret_cast<VkRayTracingPipelineCreateInfoKHR *>( this );
103894     }
103895 
103896 #if defined( VULKAN_HPP_USE_REFLECT )
103897 #  if 14 <= VULKAN_HPP_CPP_VERSION
103898     auto
103899 #  else
103900     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
103901                const void * const &,
103902                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
103903                uint32_t const &,
103904                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
103905                uint32_t const &,
103906                const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * const &,
103907                uint32_t const &,
103908                const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * const &,
103909                const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * const &,
103910                const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * const &,
103911                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
103912                VULKAN_HPP_NAMESPACE::Pipeline const &,
103913                int32_t const &>
103914 #  endif
reflectVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103915       reflect() const VULKAN_HPP_NOEXCEPT
103916     {
103917       return std::tie( sType,
103918                        pNext,
103919                        flags,
103920                        stageCount,
103921                        pStages,
103922                        groupCount,
103923                        pGroups,
103924                        maxPipelineRayRecursionDepth,
103925                        pLibraryInfo,
103926                        pLibraryInterface,
103927                        pDynamicState,
103928                        layout,
103929                        basePipelineHandle,
103930                        basePipelineIndex );
103931     }
103932 #endif
103933 
103934 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103935     auto operator<=>( RayTracingPipelineCreateInfoKHR const & ) const = default;
103936 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103937     bool operator==( RayTracingPipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
103938     {
103939 #  if defined( VULKAN_HPP_USE_REFLECT )
103940       return this->reflect() == rhs.reflect();
103941 #  else
103942       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) &&
103943              ( groupCount == rhs.groupCount ) && ( pGroups == rhs.pGroups ) && ( maxPipelineRayRecursionDepth == rhs.maxPipelineRayRecursionDepth ) &&
103944              ( pLibraryInfo == rhs.pLibraryInfo ) && ( pLibraryInterface == rhs.pLibraryInterface ) && ( pDynamicState == rhs.pDynamicState ) &&
103945              ( layout == rhs.layout ) && ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex );
103946 #  endif
103947     }
103948 
operator !=VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR103949     bool operator!=( RayTracingPipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
103950     {
103951       return !operator==( rhs );
103952     }
103953 #endif
103954 
103955   public:
103956     VULKAN_HPP_NAMESPACE::StructureType                                    sType                        = StructureType::eRayTracingPipelineCreateInfoKHR;
103957     const void *                                                           pNext                        = {};
103958     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                              flags                        = {};
103959     uint32_t                                                               stageCount                   = {};
103960     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *            pStages                      = {};
103961     uint32_t                                                               groupCount                   = {};
103962     const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR *       pGroups                      = {};
103963     uint32_t                                                               maxPipelineRayRecursionDepth = {};
103964     const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *             pLibraryInfo                 = {};
103965     const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface            = {};
103966     const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *           pDynamicState                = {};
103967     VULKAN_HPP_NAMESPACE::PipelineLayout                                   layout                       = {};
103968     VULKAN_HPP_NAMESPACE::Pipeline                                         basePipelineHandle           = {};
103969     int32_t                                                                basePipelineIndex            = {};
103970   };
103971 
103972   template <>
103973   struct CppType<StructureType, StructureType::eRayTracingPipelineCreateInfoKHR>
103974   {
103975     using Type = RayTracingPipelineCreateInfoKHR;
103976   };
103977 
103978   struct RayTracingShaderGroupCreateInfoNV
103979   {
103980     using NativeType = VkRayTracingShaderGroupCreateInfoNV;
103981 
103982     static const bool                                  allowDuplicate = false;
103983     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingShaderGroupCreateInfoNV;
103984 
103985 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV103986     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoNV(
103987       VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_               = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral,
103988       uint32_t                                           generalShader_      = VULKAN_HPP_NAMESPACE::ShaderUnusedNV,
103989       uint32_t                                           closestHitShader_   = VULKAN_HPP_NAMESPACE::ShaderUnusedNV,
103990       uint32_t                                           anyHitShader_       = VULKAN_HPP_NAMESPACE::ShaderUnusedNV,
103991       uint32_t                                           intersectionShader_ = VULKAN_HPP_NAMESPACE::ShaderUnusedNV,
103992       const void *                                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
103993       : pNext{ pNext_ }
103994       , type{ type_ }
103995       , generalShader{ generalShader_ }
103996       , closestHitShader{ closestHitShader_ }
103997       , anyHitShader{ anyHitShader_ }
103998       , intersectionShader{ intersectionShader_ }
103999     {
104000     }
104001 
104002     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoNV( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104003 
RayTracingShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104004     RayTracingShaderGroupCreateInfoNV( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
104005       : RayTracingShaderGroupCreateInfoNV( *reinterpret_cast<RayTracingShaderGroupCreateInfoNV const *>( &rhs ) )
104006     {
104007     }
104008 
104009     RayTracingShaderGroupCreateInfoNV & operator=( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104010 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104011 
operator =VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104012     RayTracingShaderGroupCreateInfoNV & operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
104013     {
104014       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV const *>( &rhs );
104015       return *this;
104016     }
104017 
104018 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104019     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104020     {
104021       pNext = pNext_;
104022       return *this;
104023     }
104024 
setTypeVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104025     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setType( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
104026     {
104027       type = type_;
104028       return *this;
104029     }
104030 
setGeneralShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104031     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setGeneralShader( uint32_t generalShader_ ) VULKAN_HPP_NOEXCEPT
104032     {
104033       generalShader = generalShader_;
104034       return *this;
104035     }
104036 
setClosestHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104037     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setClosestHitShader( uint32_t closestHitShader_ ) VULKAN_HPP_NOEXCEPT
104038     {
104039       closestHitShader = closestHitShader_;
104040       return *this;
104041     }
104042 
setAnyHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104043     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setAnyHitShader( uint32_t anyHitShader_ ) VULKAN_HPP_NOEXCEPT
104044     {
104045       anyHitShader = anyHitShader_;
104046       return *this;
104047     }
104048 
setIntersectionShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104049     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setIntersectionShader( uint32_t intersectionShader_ ) VULKAN_HPP_NOEXCEPT
104050     {
104051       intersectionShader = intersectionShader_;
104052       return *this;
104053     }
104054 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104055 
operator VkRayTracingShaderGroupCreateInfoNV const&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104056     operator VkRayTracingShaderGroupCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
104057     {
104058       return *reinterpret_cast<const VkRayTracingShaderGroupCreateInfoNV *>( this );
104059     }
104060 
operator VkRayTracingShaderGroupCreateInfoNV&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104061     operator VkRayTracingShaderGroupCreateInfoNV &() VULKAN_HPP_NOEXCEPT
104062     {
104063       return *reinterpret_cast<VkRayTracingShaderGroupCreateInfoNV *>( this );
104064     }
104065 
104066 #if defined( VULKAN_HPP_USE_REFLECT )
104067 #  if 14 <= VULKAN_HPP_CPP_VERSION
104068     auto
104069 #  else
104070     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
104071                const void * const &,
104072                VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR const &,
104073                uint32_t const &,
104074                uint32_t const &,
104075                uint32_t const &,
104076                uint32_t const &>
104077 #  endif
reflectVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104078       reflect() const VULKAN_HPP_NOEXCEPT
104079     {
104080       return std::tie( sType, pNext, type, generalShader, closestHitShader, anyHitShader, intersectionShader );
104081     }
104082 #endif
104083 
104084 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104085     auto operator<=>( RayTracingShaderGroupCreateInfoNV const & ) const = default;
104086 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104087     bool operator==( RayTracingShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
104088     {
104089 #  if defined( VULKAN_HPP_USE_REFLECT )
104090       return this->reflect() == rhs.reflect();
104091 #  else
104092       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( generalShader == rhs.generalShader ) &&
104093              ( closestHitShader == rhs.closestHitShader ) && ( anyHitShader == rhs.anyHitShader ) && ( intersectionShader == rhs.intersectionShader );
104094 #  endif
104095     }
104096 
operator !=VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV104097     bool operator!=( RayTracingShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
104098     {
104099       return !operator==( rhs );
104100     }
104101 #endif
104102 
104103   public:
104104     VULKAN_HPP_NAMESPACE::StructureType                sType              = StructureType::eRayTracingShaderGroupCreateInfoNV;
104105     const void *                                       pNext              = {};
104106     VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type               = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral;
104107     uint32_t                                           generalShader      = VULKAN_HPP_NAMESPACE::ShaderUnusedNV;
104108     uint32_t                                           closestHitShader   = VULKAN_HPP_NAMESPACE::ShaderUnusedNV;
104109     uint32_t                                           anyHitShader       = VULKAN_HPP_NAMESPACE::ShaderUnusedNV;
104110     uint32_t                                           intersectionShader = VULKAN_HPP_NAMESPACE::ShaderUnusedNV;
104111   };
104112 
104113   template <>
104114   struct CppType<StructureType, StructureType::eRayTracingShaderGroupCreateInfoNV>
104115   {
104116     using Type = RayTracingShaderGroupCreateInfoNV;
104117   };
104118 
104119   struct RayTracingPipelineCreateInfoNV
104120   {
104121     using NativeType = VkRayTracingPipelineCreateInfoNV;
104122 
104123     static const bool                                  allowDuplicate = false;
104124     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingPipelineCreateInfoNV;
104125 
104126 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingPipelineCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104127     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                       flags_              = {},
104128                                                          uint32_t                                                        stageCount_         = {},
104129                                                          const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *     pStages_            = {},
104130                                                          uint32_t                                                        groupCount_         = {},
104131                                                          const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups_            = {},
104132                                                          uint32_t                                                        maxRecursionDepth_  = {},
104133                                                          VULKAN_HPP_NAMESPACE::PipelineLayout                            layout_             = {},
104134                                                          VULKAN_HPP_NAMESPACE::Pipeline                                  basePipelineHandle_ = {},
104135                                                          int32_t                                                         basePipelineIndex_  = {},
104136                                                          const void *                                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
104137       : pNext{ pNext_ }
104138       , flags{ flags_ }
104139       , stageCount{ stageCount_ }
104140       , pStages{ pStages_ }
104141       , groupCount{ groupCount_ }
104142       , pGroups{ pGroups_ }
104143       , maxRecursionDepth{ maxRecursionDepth_ }
104144       , layout{ layout_ }
104145       , basePipelineHandle{ basePipelineHandle_ }
104146       , basePipelineIndex{ basePipelineIndex_ }
104147     {
104148     }
104149 
104150     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoNV( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104151 
RayTracingPipelineCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104152     RayTracingPipelineCreateInfoNV( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
104153       : RayTracingPipelineCreateInfoNV( *reinterpret_cast<RayTracingPipelineCreateInfoNV const *>( &rhs ) )
104154     {
104155     }
104156 
104157 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RayTracingPipelineCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104158     RayTracingPipelineCreateInfoNV(
104159       VULKAN_HPP_NAMESPACE::PipelineCreateFlags                                                                            flags_,
104160       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &     stages_,
104161       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV> const & groups_             = {},
104162       uint32_t                                                                                                             maxRecursionDepth_  = {},
104163       VULKAN_HPP_NAMESPACE::PipelineLayout                                                                                 layout_             = {},
104164       VULKAN_HPP_NAMESPACE::Pipeline                                                                                       basePipelineHandle_ = {},
104165       int32_t                                                                                                              basePipelineIndex_  = {},
104166       const void *                                                                                                         pNext_              = nullptr )
104167       : pNext( pNext_ )
104168       , flags( flags_ )
104169       , stageCount( static_cast<uint32_t>( stages_.size() ) )
104170       , pStages( stages_.data() )
104171       , groupCount( static_cast<uint32_t>( groups_.size() ) )
104172       , pGroups( groups_.data() )
104173       , maxRecursionDepth( maxRecursionDepth_ )
104174       , layout( layout_ )
104175       , basePipelineHandle( basePipelineHandle_ )
104176       , basePipelineIndex( basePipelineIndex_ )
104177     {
104178     }
104179 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104180 
104181     RayTracingPipelineCreateInfoNV & operator=( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104182 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104183 
operator =VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104184     RayTracingPipelineCreateInfoNV & operator=( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
104185     {
104186       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const *>( &rhs );
104187       return *this;
104188     }
104189 
104190 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104191     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104192     {
104193       pNext = pNext_;
104194       return *this;
104195     }
104196 
setFlagsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104197     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
104198     {
104199       flags = flags_;
104200       return *this;
104201     }
104202 
setStageCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104203     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
104204     {
104205       stageCount = stageCount_;
104206       return *this;
104207     }
104208 
104209     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setPStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104210       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
104211     {
104212       pStages = pStages_;
104213       return *this;
104214     }
104215 
104216 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
104217     RayTracingPipelineCreateInfoNV &
setStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104218       setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
104219     {
104220       stageCount = static_cast<uint32_t>( stages_.size() );
104221       pStages    = stages_.data();
104222       return *this;
104223     }
104224 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104225 
setGroupCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104226     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT
104227     {
104228       groupCount = groupCount_;
104229       return *this;
104230     }
104231 
104232     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setPGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104233       setPGroups( const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups_ ) VULKAN_HPP_NOEXCEPT
104234     {
104235       pGroups = pGroups_;
104236       return *this;
104237     }
104238 
104239 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104240     RayTracingPipelineCreateInfoNV & setGroups(
104241       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV> const & groups_ ) VULKAN_HPP_NOEXCEPT
104242     {
104243       groupCount = static_cast<uint32_t>( groups_.size() );
104244       pGroups    = groups_.data();
104245       return *this;
104246     }
104247 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104248 
setMaxRecursionDepthVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104249     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setMaxRecursionDepth( uint32_t maxRecursionDepth_ ) VULKAN_HPP_NOEXCEPT
104250     {
104251       maxRecursionDepth = maxRecursionDepth_;
104252       return *this;
104253     }
104254 
setLayoutVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104255     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
104256     {
104257       layout = layout_;
104258       return *this;
104259     }
104260 
setBasePipelineHandleVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104261     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
104262     {
104263       basePipelineHandle = basePipelineHandle_;
104264       return *this;
104265     }
104266 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104267     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
104268     {
104269       basePipelineIndex = basePipelineIndex_;
104270       return *this;
104271     }
104272 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104273 
operator VkRayTracingPipelineCreateInfoNV const&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104274     operator VkRayTracingPipelineCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
104275     {
104276       return *reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( this );
104277     }
104278 
operator VkRayTracingPipelineCreateInfoNV&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104279     operator VkRayTracingPipelineCreateInfoNV &() VULKAN_HPP_NOEXCEPT
104280     {
104281       return *reinterpret_cast<VkRayTracingPipelineCreateInfoNV *>( this );
104282     }
104283 
104284 #if defined( VULKAN_HPP_USE_REFLECT )
104285 #  if 14 <= VULKAN_HPP_CPP_VERSION
104286     auto
104287 #  else
104288     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
104289                const void * const &,
104290                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
104291                uint32_t const &,
104292                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
104293                uint32_t const &,
104294                const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * const &,
104295                uint32_t const &,
104296                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
104297                VULKAN_HPP_NAMESPACE::Pipeline const &,
104298                int32_t const &>
104299 #  endif
reflectVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104300       reflect() const VULKAN_HPP_NOEXCEPT
104301     {
104302       return std::tie( sType, pNext, flags, stageCount, pStages, groupCount, pGroups, maxRecursionDepth, layout, basePipelineHandle, basePipelineIndex );
104303     }
104304 #endif
104305 
104306 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104307     auto operator<=>( RayTracingPipelineCreateInfoNV const & ) const = default;
104308 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104309     bool operator==( RayTracingPipelineCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
104310     {
104311 #  if defined( VULKAN_HPP_USE_REFLECT )
104312       return this->reflect() == rhs.reflect();
104313 #  else
104314       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) &&
104315              ( groupCount == rhs.groupCount ) && ( pGroups == rhs.pGroups ) && ( maxRecursionDepth == rhs.maxRecursionDepth ) && ( layout == rhs.layout ) &&
104316              ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex );
104317 #  endif
104318     }
104319 
operator !=VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV104320     bool operator!=( RayTracingPipelineCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
104321     {
104322       return !operator==( rhs );
104323     }
104324 #endif
104325 
104326   public:
104327     VULKAN_HPP_NAMESPACE::StructureType                             sType              = StructureType::eRayTracingPipelineCreateInfoNV;
104328     const void *                                                    pNext              = {};
104329     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                       flags              = {};
104330     uint32_t                                                        stageCount         = {};
104331     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *     pStages            = {};
104332     uint32_t                                                        groupCount         = {};
104333     const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups            = {};
104334     uint32_t                                                        maxRecursionDepth  = {};
104335     VULKAN_HPP_NAMESPACE::PipelineLayout                            layout             = {};
104336     VULKAN_HPP_NAMESPACE::Pipeline                                  basePipelineHandle = {};
104337     int32_t                                                         basePipelineIndex  = {};
104338   };
104339 
104340   template <>
104341   struct CppType<StructureType, StructureType::eRayTracingPipelineCreateInfoNV>
104342   {
104343     using Type = RayTracingPipelineCreateInfoNV;
104344   };
104345 
104346   struct RefreshCycleDurationGOOGLE
104347   {
104348     using NativeType = VkRefreshCycleDurationGOOGLE;
104349 
104350 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RefreshCycleDurationGOOGLEVULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE104351     VULKAN_HPP_CONSTEXPR RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = {} ) VULKAN_HPP_NOEXCEPT : refreshDuration{ refreshDuration_ } {}
104352 
104353     VULKAN_HPP_CONSTEXPR RefreshCycleDurationGOOGLE( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104354 
RefreshCycleDurationGOOGLEVULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE104355     RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
104356       : RefreshCycleDurationGOOGLE( *reinterpret_cast<RefreshCycleDurationGOOGLE const *>( &rhs ) )
104357     {
104358     }
104359 
104360     RefreshCycleDurationGOOGLE & operator=( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104361 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104362 
operator =VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE104363     RefreshCycleDurationGOOGLE & operator=( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
104364     {
104365       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE const *>( &rhs );
104366       return *this;
104367     }
104368 
operator VkRefreshCycleDurationGOOGLE const&VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE104369     operator VkRefreshCycleDurationGOOGLE const &() const VULKAN_HPP_NOEXCEPT
104370     {
104371       return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE *>( this );
104372     }
104373 
operator VkRefreshCycleDurationGOOGLE&VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE104374     operator VkRefreshCycleDurationGOOGLE &() VULKAN_HPP_NOEXCEPT
104375     {
104376       return *reinterpret_cast<VkRefreshCycleDurationGOOGLE *>( this );
104377     }
104378 
104379 #if defined( VULKAN_HPP_USE_REFLECT )
104380 #  if 14 <= VULKAN_HPP_CPP_VERSION
104381     auto
104382 #  else
104383     std::tuple<uint64_t const &>
104384 #  endif
reflectVULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE104385       reflect() const VULKAN_HPP_NOEXCEPT
104386     {
104387       return std::tie( refreshDuration );
104388     }
104389 #endif
104390 
104391 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104392     auto operator<=>( RefreshCycleDurationGOOGLE const & ) const = default;
104393 #else
operator ==VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE104394     bool operator==( RefreshCycleDurationGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
104395     {
104396 #  if defined( VULKAN_HPP_USE_REFLECT )
104397       return this->reflect() == rhs.reflect();
104398 #  else
104399       return ( refreshDuration == rhs.refreshDuration );
104400 #  endif
104401     }
104402 
operator !=VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE104403     bool operator!=( RefreshCycleDurationGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
104404     {
104405       return !operator==( rhs );
104406     }
104407 #endif
104408 
104409   public:
104410     uint64_t refreshDuration = {};
104411   };
104412 
104413   struct ReleaseCapturedPipelineDataInfoKHR
104414   {
104415     using NativeType = VkReleaseCapturedPipelineDataInfoKHR;
104416 
104417     static const bool                                  allowDuplicate = false;
104418     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eReleaseCapturedPipelineDataInfoKHR;
104419 
104420 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ReleaseCapturedPipelineDataInfoKHRVULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR104421     VULKAN_HPP_CONSTEXPR ReleaseCapturedPipelineDataInfoKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
104422       : pNext{ pNext_ }
104423       , pipeline{ pipeline_ }
104424     {
104425     }
104426 
104427     VULKAN_HPP_CONSTEXPR ReleaseCapturedPipelineDataInfoKHR( ReleaseCapturedPipelineDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104428 
ReleaseCapturedPipelineDataInfoKHRVULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR104429     ReleaseCapturedPipelineDataInfoKHR( VkReleaseCapturedPipelineDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
104430       : ReleaseCapturedPipelineDataInfoKHR( *reinterpret_cast<ReleaseCapturedPipelineDataInfoKHR const *>( &rhs ) )
104431     {
104432     }
104433 
104434     ReleaseCapturedPipelineDataInfoKHR & operator=( ReleaseCapturedPipelineDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104435 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104436 
operator =VULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR104437     ReleaseCapturedPipelineDataInfoKHR & operator=( VkReleaseCapturedPipelineDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
104438     {
104439       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR const *>( &rhs );
104440       return *this;
104441     }
104442 
104443 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR104444     VULKAN_HPP_CONSTEXPR_14 ReleaseCapturedPipelineDataInfoKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
104445     {
104446       pNext = pNext_;
104447       return *this;
104448     }
104449 
setPipelineVULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR104450     VULKAN_HPP_CONSTEXPR_14 ReleaseCapturedPipelineDataInfoKHR & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
104451     {
104452       pipeline = pipeline_;
104453       return *this;
104454     }
104455 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104456 
operator VkReleaseCapturedPipelineDataInfoKHR const&VULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR104457     operator VkReleaseCapturedPipelineDataInfoKHR const &() const VULKAN_HPP_NOEXCEPT
104458     {
104459       return *reinterpret_cast<const VkReleaseCapturedPipelineDataInfoKHR *>( this );
104460     }
104461 
operator VkReleaseCapturedPipelineDataInfoKHR&VULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR104462     operator VkReleaseCapturedPipelineDataInfoKHR &() VULKAN_HPP_NOEXCEPT
104463     {
104464       return *reinterpret_cast<VkReleaseCapturedPipelineDataInfoKHR *>( this );
104465     }
104466 
104467 #if defined( VULKAN_HPP_USE_REFLECT )
104468 #  if 14 <= VULKAN_HPP_CPP_VERSION
104469     auto
104470 #  else
104471     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Pipeline const &>
104472 #  endif
reflectVULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR104473       reflect() const VULKAN_HPP_NOEXCEPT
104474     {
104475       return std::tie( sType, pNext, pipeline );
104476     }
104477 #endif
104478 
104479 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104480     auto operator<=>( ReleaseCapturedPipelineDataInfoKHR const & ) const = default;
104481 #else
operator ==VULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR104482     bool operator==( ReleaseCapturedPipelineDataInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
104483     {
104484 #  if defined( VULKAN_HPP_USE_REFLECT )
104485       return this->reflect() == rhs.reflect();
104486 #  else
104487       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline );
104488 #  endif
104489     }
104490 
operator !=VULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR104491     bool operator!=( ReleaseCapturedPipelineDataInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
104492     {
104493       return !operator==( rhs );
104494     }
104495 #endif
104496 
104497   public:
104498     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eReleaseCapturedPipelineDataInfoKHR;
104499     void *                              pNext    = {};
104500     VULKAN_HPP_NAMESPACE::Pipeline      pipeline = {};
104501   };
104502 
104503   template <>
104504   struct CppType<StructureType, StructureType::eReleaseCapturedPipelineDataInfoKHR>
104505   {
104506     using Type = ReleaseCapturedPipelineDataInfoKHR;
104507   };
104508 
104509   struct ReleaseSwapchainImagesInfoEXT
104510   {
104511     using NativeType = VkReleaseSwapchainImagesInfoEXT;
104512 
104513     static const bool                                  allowDuplicate = false;
104514     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eReleaseSwapchainImagesInfoEXT;
104515 
104516 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ReleaseSwapchainImagesInfoEXTVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104517     VULKAN_HPP_CONSTEXPR ReleaseSwapchainImagesInfoEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_       = {},
104518                                                         uint32_t                           imageIndexCount_ = {},
104519                                                         const uint32_t *                   pImageIndices_   = {},
104520                                                         const void *                       pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
104521       : pNext{ pNext_ }
104522       , swapchain{ swapchain_ }
104523       , imageIndexCount{ imageIndexCount_ }
104524       , pImageIndices{ pImageIndices_ }
104525     {
104526     }
104527 
104528     VULKAN_HPP_CONSTEXPR ReleaseSwapchainImagesInfoEXT( ReleaseSwapchainImagesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104529 
ReleaseSwapchainImagesInfoEXTVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104530     ReleaseSwapchainImagesInfoEXT( VkReleaseSwapchainImagesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
104531       : ReleaseSwapchainImagesInfoEXT( *reinterpret_cast<ReleaseSwapchainImagesInfoEXT const *>( &rhs ) )
104532     {
104533     }
104534 
104535 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ReleaseSwapchainImagesInfoEXTVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104536     ReleaseSwapchainImagesInfoEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR                                    swapchain_,
104537                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & imageIndices_,
104538                                    const void *                                                          pNext_ = nullptr )
104539       : pNext( pNext_ ), swapchain( swapchain_ ), imageIndexCount( static_cast<uint32_t>( imageIndices_.size() ) ), pImageIndices( imageIndices_.data() )
104540     {
104541     }
104542 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104543 
104544     ReleaseSwapchainImagesInfoEXT & operator=( ReleaseSwapchainImagesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104545 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104546 
operator =VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104547     ReleaseSwapchainImagesInfoEXT & operator=( VkReleaseSwapchainImagesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
104548     {
104549       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT const *>( &rhs );
104550       return *this;
104551     }
104552 
104553 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104554     VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104555     {
104556       pNext = pNext_;
104557       return *this;
104558     }
104559 
setSwapchainVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104560     VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoEXT & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
104561     {
104562       swapchain = swapchain_;
104563       return *this;
104564     }
104565 
setImageIndexCountVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104566     VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoEXT & setImageIndexCount( uint32_t imageIndexCount_ ) VULKAN_HPP_NOEXCEPT
104567     {
104568       imageIndexCount = imageIndexCount_;
104569       return *this;
104570     }
104571 
setPImageIndicesVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104572     VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoEXT & setPImageIndices( const uint32_t * pImageIndices_ ) VULKAN_HPP_NOEXCEPT
104573     {
104574       pImageIndices = pImageIndices_;
104575       return *this;
104576     }
104577 
104578 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageIndicesVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104579     ReleaseSwapchainImagesInfoEXT & setImageIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & imageIndices_ ) VULKAN_HPP_NOEXCEPT
104580     {
104581       imageIndexCount = static_cast<uint32_t>( imageIndices_.size() );
104582       pImageIndices   = imageIndices_.data();
104583       return *this;
104584     }
104585 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104586 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104587 
operator VkReleaseSwapchainImagesInfoEXT const&VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104588     operator VkReleaseSwapchainImagesInfoEXT const &() const VULKAN_HPP_NOEXCEPT
104589     {
104590       return *reinterpret_cast<const VkReleaseSwapchainImagesInfoEXT *>( this );
104591     }
104592 
operator VkReleaseSwapchainImagesInfoEXT&VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104593     operator VkReleaseSwapchainImagesInfoEXT &() VULKAN_HPP_NOEXCEPT
104594     {
104595       return *reinterpret_cast<VkReleaseSwapchainImagesInfoEXT *>( this );
104596     }
104597 
104598 #if defined( VULKAN_HPP_USE_REFLECT )
104599 #  if 14 <= VULKAN_HPP_CPP_VERSION
104600     auto
104601 #  else
104602     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
104603                const void * const &,
104604                VULKAN_HPP_NAMESPACE::SwapchainKHR const &,
104605                uint32_t const &,
104606                const uint32_t * const &>
104607 #  endif
reflectVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104608       reflect() const VULKAN_HPP_NOEXCEPT
104609     {
104610       return std::tie( sType, pNext, swapchain, imageIndexCount, pImageIndices );
104611     }
104612 #endif
104613 
104614 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104615     auto operator<=>( ReleaseSwapchainImagesInfoEXT const & ) const = default;
104616 #else
operator ==VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104617     bool operator==( ReleaseSwapchainImagesInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
104618     {
104619 #  if defined( VULKAN_HPP_USE_REFLECT )
104620       return this->reflect() == rhs.reflect();
104621 #  else
104622       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && ( imageIndexCount == rhs.imageIndexCount ) &&
104623              ( pImageIndices == rhs.pImageIndices );
104624 #  endif
104625     }
104626 
operator !=VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT104627     bool operator!=( ReleaseSwapchainImagesInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
104628     {
104629       return !operator==( rhs );
104630     }
104631 #endif
104632 
104633   public:
104634     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eReleaseSwapchainImagesInfoEXT;
104635     const void *                        pNext           = {};
104636     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain       = {};
104637     uint32_t                            imageIndexCount = {};
104638     const uint32_t *                    pImageIndices   = {};
104639   };
104640 
104641   template <>
104642   struct CppType<StructureType, StructureType::eReleaseSwapchainImagesInfoEXT>
104643   {
104644     using Type = ReleaseSwapchainImagesInfoEXT;
104645   };
104646 
104647   struct RenderPassAttachmentBeginInfo
104648   {
104649     using NativeType = VkRenderPassAttachmentBeginInfo;
104650 
104651     static const bool                                  allowDuplicate = false;
104652     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassAttachmentBeginInfo;
104653 
104654 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104655     VULKAN_HPP_CONSTEXPR RenderPassAttachmentBeginInfo( uint32_t                                attachmentCount_ = {},
104656                                                         const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_    = {},
104657                                                         const void *                            pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
104658       : pNext{ pNext_ }
104659       , attachmentCount{ attachmentCount_ }
104660       , pAttachments{ pAttachments_ }
104661     {
104662     }
104663 
104664     VULKAN_HPP_CONSTEXPR RenderPassAttachmentBeginInfo( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104665 
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104666     RenderPassAttachmentBeginInfo( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
104667       : RenderPassAttachmentBeginInfo( *reinterpret_cast<RenderPassAttachmentBeginInfo const *>( &rhs ) )
104668     {
104669     }
104670 
104671 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104672     RenderPassAttachmentBeginInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_,
104673                                    const void *                                                                                 pNext_ = nullptr )
104674       : pNext( pNext_ ), attachmentCount( static_cast<uint32_t>( attachments_.size() ) ), pAttachments( attachments_.data() )
104675     {
104676     }
104677 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104678 
104679     RenderPassAttachmentBeginInfo & operator=( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104680 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104681 
operator =VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104682     RenderPassAttachmentBeginInfo & operator=( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
104683     {
104684       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo const *>( &rhs );
104685       return *this;
104686     }
104687 
104688 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104689     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104690     {
104691       pNext = pNext_;
104692       return *this;
104693     }
104694 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104695     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
104696     {
104697       attachmentCount = attachmentCount_;
104698       return *this;
104699     }
104700 
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104701     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ ) VULKAN_HPP_NOEXCEPT
104702     {
104703       pAttachments = pAttachments_;
104704       return *this;
104705     }
104706 
104707 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
104708     RenderPassAttachmentBeginInfo &
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104709       setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_ ) VULKAN_HPP_NOEXCEPT
104710     {
104711       attachmentCount = static_cast<uint32_t>( attachments_.size() );
104712       pAttachments    = attachments_.data();
104713       return *this;
104714     }
104715 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104716 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104717 
operator VkRenderPassAttachmentBeginInfo const&VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104718     operator VkRenderPassAttachmentBeginInfo const &() const VULKAN_HPP_NOEXCEPT
104719     {
104720       return *reinterpret_cast<const VkRenderPassAttachmentBeginInfo *>( this );
104721     }
104722 
operator VkRenderPassAttachmentBeginInfo&VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104723     operator VkRenderPassAttachmentBeginInfo &() VULKAN_HPP_NOEXCEPT
104724     {
104725       return *reinterpret_cast<VkRenderPassAttachmentBeginInfo *>( this );
104726     }
104727 
104728 #if defined( VULKAN_HPP_USE_REFLECT )
104729 #  if 14 <= VULKAN_HPP_CPP_VERSION
104730     auto
104731 #  else
104732     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ImageView * const &>
104733 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104734       reflect() const VULKAN_HPP_NOEXCEPT
104735     {
104736       return std::tie( sType, pNext, attachmentCount, pAttachments );
104737     }
104738 #endif
104739 
104740 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104741     auto operator<=>( RenderPassAttachmentBeginInfo const & ) const = default;
104742 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104743     bool operator==( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
104744     {
104745 #  if defined( VULKAN_HPP_USE_REFLECT )
104746       return this->reflect() == rhs.reflect();
104747 #  else
104748       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments );
104749 #  endif
104750     }
104751 
operator !=VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo104752     bool operator!=( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
104753     {
104754       return !operator==( rhs );
104755     }
104756 #endif
104757 
104758   public:
104759     VULKAN_HPP_NAMESPACE::StructureType     sType           = StructureType::eRenderPassAttachmentBeginInfo;
104760     const void *                            pNext           = {};
104761     uint32_t                                attachmentCount = {};
104762     const VULKAN_HPP_NAMESPACE::ImageView * pAttachments    = {};
104763   };
104764 
104765   template <>
104766   struct CppType<StructureType, StructureType::eRenderPassAttachmentBeginInfo>
104767   {
104768     using Type = RenderPassAttachmentBeginInfo;
104769   };
104770 
104771   using RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
104772 
104773   struct RenderPassBeginInfo
104774   {
104775     using NativeType = VkRenderPassBeginInfo;
104776 
104777     static const bool                                  allowDuplicate = false;
104778     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassBeginInfo;
104779 
104780 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104781     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo( VULKAN_HPP_NAMESPACE::RenderPass         renderPass_      = {},
104782                                                  VULKAN_HPP_NAMESPACE::Framebuffer        framebuffer_     = {},
104783                                                  VULKAN_HPP_NAMESPACE::Rect2D             renderArea_      = {},
104784                                                  uint32_t                                 clearValueCount_ = {},
104785                                                  const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues_    = {},
104786                                                  const void *                             pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
104787       : pNext{ pNext_ }
104788       , renderPass{ renderPass_ }
104789       , framebuffer{ framebuffer_ }
104790       , renderArea{ renderArea_ }
104791       , clearValueCount{ clearValueCount_ }
104792       , pClearValues{ pClearValues_ }
104793     {
104794     }
104795 
104796     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104797 
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104798     RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT : RenderPassBeginInfo( *reinterpret_cast<RenderPassBeginInfo const *>( &rhs ) )
104799     {
104800     }
104801 
104802 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104803     RenderPassBeginInfo( VULKAN_HPP_NAMESPACE::RenderPass                                                              renderPass_,
104804                          VULKAN_HPP_NAMESPACE::Framebuffer                                                             framebuffer_,
104805                          VULKAN_HPP_NAMESPACE::Rect2D                                                                  renderArea_,
104806                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ClearValue> const & clearValues_,
104807                          const void *                                                                                  pNext_ = nullptr )
104808       : pNext( pNext_ )
104809       , renderPass( renderPass_ )
104810       , framebuffer( framebuffer_ )
104811       , renderArea( renderArea_ )
104812       , clearValueCount( static_cast<uint32_t>( clearValues_.size() ) )
104813       , pClearValues( clearValues_.data() )
104814     {
104815     }
104816 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104817 
104818     RenderPassBeginInfo & operator=( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104819 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104820 
operator =VULKAN_HPP_NAMESPACE::RenderPassBeginInfo104821     RenderPassBeginInfo & operator=( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
104822     {
104823       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassBeginInfo const *>( &rhs );
104824       return *this;
104825     }
104826 
104827 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104828     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104829     {
104830       pNext = pNext_;
104831       return *this;
104832     }
104833 
setRenderPassVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104834     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
104835     {
104836       renderPass = renderPass_;
104837       return *this;
104838     }
104839 
setFramebufferVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104840     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT
104841     {
104842       framebuffer = framebuffer_;
104843       return *this;
104844     }
104845 
setRenderAreaVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104846     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
104847     {
104848       renderArea = renderArea_;
104849       return *this;
104850     }
104851 
setClearValueCountVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104852     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setClearValueCount( uint32_t clearValueCount_ ) VULKAN_HPP_NOEXCEPT
104853     {
104854       clearValueCount = clearValueCount_;
104855       return *this;
104856     }
104857 
setPClearValuesVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104858     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setPClearValues( const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues_ ) VULKAN_HPP_NOEXCEPT
104859     {
104860       pClearValues = pClearValues_;
104861       return *this;
104862     }
104863 
104864 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
104865     RenderPassBeginInfo &
setClearValuesVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104866       setClearValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ClearValue> const & clearValues_ ) VULKAN_HPP_NOEXCEPT
104867     {
104868       clearValueCount = static_cast<uint32_t>( clearValues_.size() );
104869       pClearValues    = clearValues_.data();
104870       return *this;
104871     }
104872 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104873 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104874 
operator VkRenderPassBeginInfo const&VULKAN_HPP_NAMESPACE::RenderPassBeginInfo104875     operator VkRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
104876     {
104877       return *reinterpret_cast<const VkRenderPassBeginInfo *>( this );
104878     }
104879 
operator VkRenderPassBeginInfo&VULKAN_HPP_NAMESPACE::RenderPassBeginInfo104880     operator VkRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT
104881     {
104882       return *reinterpret_cast<VkRenderPassBeginInfo *>( this );
104883     }
104884 
104885 #if defined( VULKAN_HPP_USE_REFLECT )
104886 #  if 14 <= VULKAN_HPP_CPP_VERSION
104887     auto
104888 #  else
104889     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
104890                const void * const &,
104891                VULKAN_HPP_NAMESPACE::RenderPass const &,
104892                VULKAN_HPP_NAMESPACE::Framebuffer const &,
104893                VULKAN_HPP_NAMESPACE::Rect2D const &,
104894                uint32_t const &,
104895                const VULKAN_HPP_NAMESPACE::ClearValue * const &>
104896 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassBeginInfo104897       reflect() const VULKAN_HPP_NOEXCEPT
104898     {
104899       return std::tie( sType, pNext, renderPass, framebuffer, renderArea, clearValueCount, pClearValues );
104900     }
104901 #endif
104902 
104903 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104904     auto operator<=>( RenderPassBeginInfo const & ) const = default;
104905 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassBeginInfo104906     bool operator==( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
104907     {
104908 #  if defined( VULKAN_HPP_USE_REFLECT )
104909       return this->reflect() == rhs.reflect();
104910 #  else
104911       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && ( framebuffer == rhs.framebuffer ) &&
104912              ( renderArea == rhs.renderArea ) && ( clearValueCount == rhs.clearValueCount ) && ( pClearValues == rhs.pClearValues );
104913 #  endif
104914     }
104915 
operator !=VULKAN_HPP_NAMESPACE::RenderPassBeginInfo104916     bool operator!=( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
104917     {
104918       return !operator==( rhs );
104919     }
104920 #endif
104921 
104922   public:
104923     VULKAN_HPP_NAMESPACE::StructureType      sType           = StructureType::eRenderPassBeginInfo;
104924     const void *                             pNext           = {};
104925     VULKAN_HPP_NAMESPACE::RenderPass         renderPass      = {};
104926     VULKAN_HPP_NAMESPACE::Framebuffer        framebuffer     = {};
104927     VULKAN_HPP_NAMESPACE::Rect2D             renderArea      = {};
104928     uint32_t                                 clearValueCount = {};
104929     const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues    = {};
104930   };
104931 
104932   template <>
104933   struct CppType<StructureType, StructureType::eRenderPassBeginInfo>
104934   {
104935     using Type = RenderPassBeginInfo;
104936   };
104937 
104938   struct SubpassDescription
104939   {
104940     using NativeType = VkSubpassDescription;
104941 
104942 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription104943     VULKAN_HPP_CONSTEXPR SubpassDescription( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_          = {},
104944                                              VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_    = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
104945                                              uint32_t                                inputAttachmentCount_ = {},
104946                                              const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments_       = {},
104947                                              uint32_t                                          colorAttachmentCount_    = {},
104948                                              const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments_       = {},
104949                                              const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments_     = {},
104950                                              const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ = {},
104951                                              uint32_t                                          preserveAttachmentCount_ = {},
104952                                              const uint32_t *                                  pPreserveAttachments_    = {} ) VULKAN_HPP_NOEXCEPT
104953       : flags{ flags_ }
104954       , pipelineBindPoint{ pipelineBindPoint_ }
104955       , inputAttachmentCount{ inputAttachmentCount_ }
104956       , pInputAttachments{ pInputAttachments_ }
104957       , colorAttachmentCount{ colorAttachmentCount_ }
104958       , pColorAttachments{ pColorAttachments_ }
104959       , pResolveAttachments{ pResolveAttachments_ }
104960       , pDepthStencilAttachment{ pDepthStencilAttachment_ }
104961       , preserveAttachmentCount{ preserveAttachmentCount_ }
104962       , pPreserveAttachments{ pPreserveAttachments_ }
104963     {
104964     }
104965 
104966     VULKAN_HPP_CONSTEXPR SubpassDescription( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104967 
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription104968     SubpassDescription( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDescription( *reinterpret_cast<SubpassDescription const *>( &rhs ) ) {}
104969 
104970 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription104971     SubpassDescription( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags                                                          flags_,
104972                         VULKAN_HPP_NAMESPACE::PipelineBindPoint                                                                pipelineBindPoint_,
104973                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & inputAttachments_,
104974                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & colorAttachments_        = {},
104975                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & resolveAttachments_      = {},
104976                         const VULKAN_HPP_NAMESPACE::AttachmentReference *                                                      pDepthStencilAttachment_ = {},
104977                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                                  preserveAttachments_     = {} )
104978       : flags( flags_ )
104979       , pipelineBindPoint( pipelineBindPoint_ )
104980       , inputAttachmentCount( static_cast<uint32_t>( inputAttachments_.size() ) )
104981       , pInputAttachments( inputAttachments_.data() )
104982       , colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) )
104983       , pColorAttachments( colorAttachments_.data() )
104984       , pResolveAttachments( resolveAttachments_.data() )
104985       , pDepthStencilAttachment( pDepthStencilAttachment_ )
104986       , preserveAttachmentCount( static_cast<uint32_t>( preserveAttachments_.size() ) )
104987       , pPreserveAttachments( preserveAttachments_.data() )
104988     {
104989 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
104990       VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) );
104991 #    else
104992       if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) )
104993       {
104994         throw LogicError(
104995           VULKAN_HPP_NAMESPACE_STRING
104996           "::SubpassDescription::SubpassDescription: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" );
104997       }
104998 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
104999     }
105000 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105001 
105002     SubpassDescription & operator=( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105003 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105004 
operator =VULKAN_HPP_NAMESPACE::SubpassDescription105005     SubpassDescription & operator=( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT
105006     {
105007       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescription const *>( &rhs );
105008       return *this;
105009     }
105010 
105011 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFlagsVULKAN_HPP_NAMESPACE::SubpassDescription105012     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
105013     {
105014       flags = flags_;
105015       return *this;
105016     }
105017 
setPipelineBindPointVULKAN_HPP_NAMESPACE::SubpassDescription105018     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
105019     {
105020       pipelineBindPoint = pipelineBindPoint_;
105021       return *this;
105022     }
105023 
setInputAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription105024     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
105025     {
105026       inputAttachmentCount = inputAttachmentCount_;
105027       return *this;
105028     }
105029 
105030     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription105031       setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments_ ) VULKAN_HPP_NOEXCEPT
105032     {
105033       pInputAttachments = pInputAttachments_;
105034       return *this;
105035     }
105036 
105037 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription105038     SubpassDescription & setInputAttachments(
105039       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & inputAttachments_ ) VULKAN_HPP_NOEXCEPT
105040     {
105041       inputAttachmentCount = static_cast<uint32_t>( inputAttachments_.size() );
105042       pInputAttachments    = inputAttachments_.data();
105043       return *this;
105044     }
105045 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105046 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription105047     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
105048     {
105049       colorAttachmentCount = colorAttachmentCount_;
105050       return *this;
105051     }
105052 
105053     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription105054       setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
105055     {
105056       pColorAttachments = pColorAttachments_;
105057       return *this;
105058     }
105059 
105060 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription105061     SubpassDescription & setColorAttachments(
105062       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT
105063     {
105064       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
105065       pColorAttachments    = colorAttachments_.data();
105066       return *this;
105067     }
105068 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105069 
105070     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription105071       setPResolveAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT
105072     {
105073       pResolveAttachments = pResolveAttachments_;
105074       return *this;
105075     }
105076 
105077 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription105078     SubpassDescription & setResolveAttachments(
105079       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & resolveAttachments_ ) VULKAN_HPP_NOEXCEPT
105080     {
105081       colorAttachmentCount = static_cast<uint32_t>( resolveAttachments_.size() );
105082       pResolveAttachments  = resolveAttachments_.data();
105083       return *this;
105084     }
105085 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105086 
105087     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPDepthStencilAttachmentVULKAN_HPP_NAMESPACE::SubpassDescription105088       setPDepthStencilAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
105089     {
105090       pDepthStencilAttachment = pDepthStencilAttachment_;
105091       return *this;
105092     }
105093 
setPreserveAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription105094     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
105095     {
105096       preserveAttachmentCount = preserveAttachmentCount_;
105097       return *this;
105098     }
105099 
setPPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription105100     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPPreserveAttachments( const uint32_t * pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT
105101     {
105102       pPreserveAttachments = pPreserveAttachments_;
105103       return *this;
105104     }
105105 
105106 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
105107     SubpassDescription &
setPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription105108       setPreserveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT
105109     {
105110       preserveAttachmentCount = static_cast<uint32_t>( preserveAttachments_.size() );
105111       pPreserveAttachments    = preserveAttachments_.data();
105112       return *this;
105113     }
105114 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105115 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105116 
operator VkSubpassDescription const&VULKAN_HPP_NAMESPACE::SubpassDescription105117     operator VkSubpassDescription const &() const VULKAN_HPP_NOEXCEPT
105118     {
105119       return *reinterpret_cast<const VkSubpassDescription *>( this );
105120     }
105121 
operator VkSubpassDescription&VULKAN_HPP_NAMESPACE::SubpassDescription105122     operator VkSubpassDescription &() VULKAN_HPP_NOEXCEPT
105123     {
105124       return *reinterpret_cast<VkSubpassDescription *>( this );
105125     }
105126 
105127 #if defined( VULKAN_HPP_USE_REFLECT )
105128 #  if 14 <= VULKAN_HPP_CPP_VERSION
105129     auto
105130 #  else
105131     std::tuple<VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags const &,
105132                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
105133                uint32_t const &,
105134                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
105135                uint32_t const &,
105136                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
105137                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
105138                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
105139                uint32_t const &,
105140                const uint32_t * const &>
105141 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescription105142       reflect() const VULKAN_HPP_NOEXCEPT
105143     {
105144       return std::tie( flags,
105145                        pipelineBindPoint,
105146                        inputAttachmentCount,
105147                        pInputAttachments,
105148                        colorAttachmentCount,
105149                        pColorAttachments,
105150                        pResolveAttachments,
105151                        pDepthStencilAttachment,
105152                        preserveAttachmentCount,
105153                        pPreserveAttachments );
105154     }
105155 #endif
105156 
105157 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105158     auto operator<=>( SubpassDescription const & ) const = default;
105159 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescription105160     bool operator==( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
105161     {
105162 #  if defined( VULKAN_HPP_USE_REFLECT )
105163       return this->reflect() == rhs.reflect();
105164 #  else
105165       return ( flags == rhs.flags ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( inputAttachmentCount == rhs.inputAttachmentCount ) &&
105166              ( pInputAttachments == rhs.pInputAttachments ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
105167              ( pColorAttachments == rhs.pColorAttachments ) && ( pResolveAttachments == rhs.pResolveAttachments ) &&
105168              ( pDepthStencilAttachment == rhs.pDepthStencilAttachment ) && ( preserveAttachmentCount == rhs.preserveAttachmentCount ) &&
105169              ( pPreserveAttachments == rhs.pPreserveAttachments );
105170 #  endif
105171     }
105172 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescription105173     bool operator!=( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
105174     {
105175       return !operator==( rhs );
105176     }
105177 #endif
105178 
105179   public:
105180     VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags     flags                   = {};
105181     VULKAN_HPP_NAMESPACE::PipelineBindPoint           pipelineBindPoint       = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
105182     uint32_t                                          inputAttachmentCount    = {};
105183     const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments       = {};
105184     uint32_t                                          colorAttachmentCount    = {};
105185     const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments       = {};
105186     const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments     = {};
105187     const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment = {};
105188     uint32_t                                          preserveAttachmentCount = {};
105189     const uint32_t *                                  pPreserveAttachments    = {};
105190   };
105191 
105192   struct SubpassDependency
105193   {
105194     using NativeType = VkSubpassDependency;
105195 
105196 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDependencyVULKAN_HPP_NAMESPACE::SubpassDependency105197     VULKAN_HPP_CONSTEXPR SubpassDependency( uint32_t                                 srcSubpass_      = {},
105198                                             uint32_t                                 dstSubpass_      = {},
105199                                             VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_    = {},
105200                                             VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_    = {},
105201                                             VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask_   = {},
105202                                             VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask_   = {},
105203                                             VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags_ = {} ) VULKAN_HPP_NOEXCEPT
105204       : srcSubpass{ srcSubpass_ }
105205       , dstSubpass{ dstSubpass_ }
105206       , srcStageMask{ srcStageMask_ }
105207       , dstStageMask{ dstStageMask_ }
105208       , srcAccessMask{ srcAccessMask_ }
105209       , dstAccessMask{ dstAccessMask_ }
105210       , dependencyFlags{ dependencyFlags_ }
105211     {
105212     }
105213 
105214     VULKAN_HPP_CONSTEXPR SubpassDependency( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105215 
SubpassDependencyVULKAN_HPP_NAMESPACE::SubpassDependency105216     SubpassDependency( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDependency( *reinterpret_cast<SubpassDependency const *>( &rhs ) ) {}
105217 
105218     SubpassDependency & operator=( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105219 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105220 
operator =VULKAN_HPP_NAMESPACE::SubpassDependency105221     SubpassDependency & operator=( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT
105222     {
105223       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDependency const *>( &rhs );
105224       return *this;
105225     }
105226 
105227 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubpassVULKAN_HPP_NAMESPACE::SubpassDependency105228     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT
105229     {
105230       srcSubpass = srcSubpass_;
105231       return *this;
105232     }
105233 
setDstSubpassVULKAN_HPP_NAMESPACE::SubpassDependency105234     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT
105235     {
105236       dstSubpass = dstSubpass_;
105237       return *this;
105238     }
105239 
setSrcStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency105240     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT
105241     {
105242       srcStageMask = srcStageMask_;
105243       return *this;
105244     }
105245 
setDstStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency105246     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT
105247     {
105248       dstStageMask = dstStageMask_;
105249       return *this;
105250     }
105251 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency105252     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
105253     {
105254       srcAccessMask = srcAccessMask_;
105255       return *this;
105256     }
105257 
setDstAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency105258     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
105259     {
105260       dstAccessMask = dstAccessMask_;
105261       return *this;
105262     }
105263 
setDependencyFlagsVULKAN_HPP_NAMESPACE::SubpassDependency105264     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
105265     {
105266       dependencyFlags = dependencyFlags_;
105267       return *this;
105268     }
105269 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105270 
operator VkSubpassDependency const&VULKAN_HPP_NAMESPACE::SubpassDependency105271     operator VkSubpassDependency const &() const VULKAN_HPP_NOEXCEPT
105272     {
105273       return *reinterpret_cast<const VkSubpassDependency *>( this );
105274     }
105275 
operator VkSubpassDependency&VULKAN_HPP_NAMESPACE::SubpassDependency105276     operator VkSubpassDependency &() VULKAN_HPP_NOEXCEPT
105277     {
105278       return *reinterpret_cast<VkSubpassDependency *>( this );
105279     }
105280 
105281 #if defined( VULKAN_HPP_USE_REFLECT )
105282 #  if 14 <= VULKAN_HPP_CPP_VERSION
105283     auto
105284 #  else
105285     std::tuple<uint32_t const &,
105286                uint32_t const &,
105287                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
105288                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
105289                VULKAN_HPP_NAMESPACE::AccessFlags const &,
105290                VULKAN_HPP_NAMESPACE::AccessFlags const &,
105291                VULKAN_HPP_NAMESPACE::DependencyFlags const &>
105292 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassDependency105293       reflect() const VULKAN_HPP_NOEXCEPT
105294     {
105295       return std::tie( srcSubpass, dstSubpass, srcStageMask, dstStageMask, srcAccessMask, dstAccessMask, dependencyFlags );
105296     }
105297 #endif
105298 
105299 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105300     auto operator<=>( SubpassDependency const & ) const = default;
105301 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDependency105302     bool operator==( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT
105303     {
105304 #  if defined( VULKAN_HPP_USE_REFLECT )
105305       return this->reflect() == rhs.reflect();
105306 #  else
105307       return ( srcSubpass == rhs.srcSubpass ) && ( dstSubpass == rhs.dstSubpass ) && ( srcStageMask == rhs.srcStageMask ) &&
105308              ( dstStageMask == rhs.dstStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ) &&
105309              ( dependencyFlags == rhs.dependencyFlags );
105310 #  endif
105311     }
105312 
operator !=VULKAN_HPP_NAMESPACE::SubpassDependency105313     bool operator!=( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT
105314     {
105315       return !operator==( rhs );
105316     }
105317 #endif
105318 
105319   public:
105320     uint32_t                                 srcSubpass      = {};
105321     uint32_t                                 dstSubpass      = {};
105322     VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask    = {};
105323     VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask    = {};
105324     VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask   = {};
105325     VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask   = {};
105326     VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags = {};
105327   };
105328 
105329   struct RenderPassCreateInfo
105330   {
105331     using NativeType = VkRenderPassCreateInfo;
105332 
105333     static const bool                                  allowDuplicate = false;
105334     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassCreateInfo;
105335 
105336 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105337     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags         flags_           = {},
105338                                                uint32_t                                            attachmentCount_ = {},
105339                                                const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments_    = {},
105340                                                uint32_t                                            subpassCount_    = {},
105341                                                const VULKAN_HPP_NAMESPACE::SubpassDescription *    pSubpasses_      = {},
105342                                                uint32_t                                            dependencyCount_ = {},
105343                                                const VULKAN_HPP_NAMESPACE::SubpassDependency *     pDependencies_   = {},
105344                                                const void *                                        pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
105345       : pNext{ pNext_ }
105346       , flags{ flags_ }
105347       , attachmentCount{ attachmentCount_ }
105348       , pAttachments{ pAttachments_ }
105349       , subpassCount{ subpassCount_ }
105350       , pSubpasses{ pSubpasses_ }
105351       , dependencyCount{ dependencyCount_ }
105352       , pDependencies{ pDependencies_ }
105353     {
105354     }
105355 
105356     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105357 
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105358     RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
105359       : RenderPassCreateInfo( *reinterpret_cast<RenderPassCreateInfo const *>( &rhs ) )
105360     {
105361     }
105362 
105363 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105364     RenderPassCreateInfo( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags                                                              flags_,
105365                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription> const & attachments_,
105366                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription> const &    subpasses_    = {},
105367                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency> const &     dependencies_ = {},
105368                           const void *                                                                                             pNext_        = nullptr )
105369       : pNext( pNext_ )
105370       , flags( flags_ )
105371       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
105372       , pAttachments( attachments_.data() )
105373       , subpassCount( static_cast<uint32_t>( subpasses_.size() ) )
105374       , pSubpasses( subpasses_.data() )
105375       , dependencyCount( static_cast<uint32_t>( dependencies_.size() ) )
105376       , pDependencies( dependencies_.data() )
105377     {
105378     }
105379 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105380 
105381     RenderPassCreateInfo & operator=( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105382 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105383 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreateInfo105384     RenderPassCreateInfo & operator=( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
105385     {
105386       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const *>( &rhs );
105387       return *this;
105388     }
105389 
105390 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105391     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
105392     {
105393       pNext = pNext_;
105394       return *this;
105395     }
105396 
setFlagsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105397     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
105398     {
105399       flags = flags_;
105400       return *this;
105401     }
105402 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105403     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
105404     {
105405       attachmentCount = attachmentCount_;
105406       return *this;
105407     }
105408 
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105409     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments_ ) VULKAN_HPP_NOEXCEPT
105410     {
105411       pAttachments = pAttachments_;
105412       return *this;
105413     }
105414 
105415 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105416     RenderPassCreateInfo & setAttachments(
105417       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription> const & attachments_ ) VULKAN_HPP_NOEXCEPT
105418     {
105419       attachmentCount = static_cast<uint32_t>( attachments_.size() );
105420       pAttachments    = attachments_.data();
105421       return *this;
105422     }
105423 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105424 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105425     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
105426     {
105427       subpassCount = subpassCount_;
105428       return *this;
105429     }
105430 
setPSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105431     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription * pSubpasses_ ) VULKAN_HPP_NOEXCEPT
105432     {
105433       pSubpasses = pSubpasses_;
105434       return *this;
105435     }
105436 
105437 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
105438     RenderPassCreateInfo &
setSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105439       setSubpasses( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription> const & subpasses_ ) VULKAN_HPP_NOEXCEPT
105440     {
105441       subpassCount = static_cast<uint32_t>( subpasses_.size() );
105442       pSubpasses   = subpasses_.data();
105443       return *this;
105444     }
105445 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105446 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105447     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
105448     {
105449       dependencyCount = dependencyCount_;
105450       return *this;
105451     }
105452 
setPDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105453     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency * pDependencies_ ) VULKAN_HPP_NOEXCEPT
105454     {
105455       pDependencies = pDependencies_;
105456       return *this;
105457     }
105458 
105459 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
105460     RenderPassCreateInfo &
setDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105461       setDependencies( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency> const & dependencies_ ) VULKAN_HPP_NOEXCEPT
105462     {
105463       dependencyCount = static_cast<uint32_t>( dependencies_.size() );
105464       pDependencies   = dependencies_.data();
105465       return *this;
105466     }
105467 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105468 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105469 
operator VkRenderPassCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo105470     operator VkRenderPassCreateInfo const &() const VULKAN_HPP_NOEXCEPT
105471     {
105472       return *reinterpret_cast<const VkRenderPassCreateInfo *>( this );
105473     }
105474 
operator VkRenderPassCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo105475     operator VkRenderPassCreateInfo &() VULKAN_HPP_NOEXCEPT
105476     {
105477       return *reinterpret_cast<VkRenderPassCreateInfo *>( this );
105478     }
105479 
105480 #if defined( VULKAN_HPP_USE_REFLECT )
105481 #  if 14 <= VULKAN_HPP_CPP_VERSION
105482     auto
105483 #  else
105484     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
105485                const void * const &,
105486                VULKAN_HPP_NAMESPACE::RenderPassCreateFlags const &,
105487                uint32_t const &,
105488                const VULKAN_HPP_NAMESPACE::AttachmentDescription * const &,
105489                uint32_t const &,
105490                const VULKAN_HPP_NAMESPACE::SubpassDescription * const &,
105491                uint32_t const &,
105492                const VULKAN_HPP_NAMESPACE::SubpassDependency * const &>
105493 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreateInfo105494       reflect() const VULKAN_HPP_NOEXCEPT
105495     {
105496       return std::tie( sType, pNext, flags, attachmentCount, pAttachments, subpassCount, pSubpasses, dependencyCount, pDependencies );
105497     }
105498 #endif
105499 
105500 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105501     auto operator<=>( RenderPassCreateInfo const & ) const = default;
105502 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreateInfo105503     bool operator==( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
105504     {
105505 #  if defined( VULKAN_HPP_USE_REFLECT )
105506       return this->reflect() == rhs.reflect();
105507 #  else
105508       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( attachmentCount == rhs.attachmentCount ) &&
105509              ( pAttachments == rhs.pAttachments ) && ( subpassCount == rhs.subpassCount ) && ( pSubpasses == rhs.pSubpasses ) &&
105510              ( dependencyCount == rhs.dependencyCount ) && ( pDependencies == rhs.pDependencies );
105511 #  endif
105512     }
105513 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreateInfo105514     bool operator!=( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
105515     {
105516       return !operator==( rhs );
105517     }
105518 #endif
105519 
105520   public:
105521     VULKAN_HPP_NAMESPACE::StructureType                 sType           = StructureType::eRenderPassCreateInfo;
105522     const void *                                        pNext           = {};
105523     VULKAN_HPP_NAMESPACE::RenderPassCreateFlags         flags           = {};
105524     uint32_t                                            attachmentCount = {};
105525     const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments    = {};
105526     uint32_t                                            subpassCount    = {};
105527     const VULKAN_HPP_NAMESPACE::SubpassDescription *    pSubpasses      = {};
105528     uint32_t                                            dependencyCount = {};
105529     const VULKAN_HPP_NAMESPACE::SubpassDependency *     pDependencies   = {};
105530   };
105531 
105532   template <>
105533   struct CppType<StructureType, StructureType::eRenderPassCreateInfo>
105534   {
105535     using Type = RenderPassCreateInfo;
105536   };
105537 
105538   struct SubpassDescription2
105539   {
105540     using NativeType = VkSubpassDescription2;
105541 
105542     static const bool                                  allowDuplicate = false;
105543     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassDescription2;
105544 
105545 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription2105546     VULKAN_HPP_CONSTEXPR SubpassDescription2( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_       = {},
105547                                               VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
105548                                               uint32_t                                viewMask_          = {},
105549                                               uint32_t                                inputAttachmentCount_               = {},
105550                                               const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments_       = {},
105551                                               uint32_t                                           colorAttachmentCount_    = {},
105552                                               const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments_       = {},
105553                                               const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments_     = {},
105554                                               const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ = {},
105555                                               uint32_t                                           preserveAttachmentCount_ = {},
105556                                               const uint32_t *                                   pPreserveAttachments_    = {},
105557                                               const void *                                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
105558       : pNext{ pNext_ }
105559       , flags{ flags_ }
105560       , pipelineBindPoint{ pipelineBindPoint_ }
105561       , viewMask{ viewMask_ }
105562       , inputAttachmentCount{ inputAttachmentCount_ }
105563       , pInputAttachments{ pInputAttachments_ }
105564       , colorAttachmentCount{ colorAttachmentCount_ }
105565       , pColorAttachments{ pColorAttachments_ }
105566       , pResolveAttachments{ pResolveAttachments_ }
105567       , pDepthStencilAttachment{ pDepthStencilAttachment_ }
105568       , preserveAttachmentCount{ preserveAttachmentCount_ }
105569       , pPreserveAttachments{ pPreserveAttachments_ }
105570     {
105571     }
105572 
105573     VULKAN_HPP_CONSTEXPR SubpassDescription2( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105574 
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription2105575     SubpassDescription2( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDescription2( *reinterpret_cast<SubpassDescription2 const *>( &rhs ) )
105576     {
105577     }
105578 
105579 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription2105580     SubpassDescription2( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags                                                           flags_,
105581                          VULKAN_HPP_NAMESPACE::PipelineBindPoint                                                                 pipelineBindPoint_,
105582                          uint32_t                                                                                                viewMask_,
105583                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & inputAttachments_,
105584                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & colorAttachments_        = {},
105585                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & resolveAttachments_      = {},
105586                          const VULKAN_HPP_NAMESPACE::AttachmentReference2 *                                                      pDepthStencilAttachment_ = {},
105587                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                                   preserveAttachments_     = {},
105588                          const void *                                                                                            pNext_ = nullptr )
105589       : pNext( pNext_ )
105590       , flags( flags_ )
105591       , pipelineBindPoint( pipelineBindPoint_ )
105592       , viewMask( viewMask_ )
105593       , inputAttachmentCount( static_cast<uint32_t>( inputAttachments_.size() ) )
105594       , pInputAttachments( inputAttachments_.data() )
105595       , colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) )
105596       , pColorAttachments( colorAttachments_.data() )
105597       , pResolveAttachments( resolveAttachments_.data() )
105598       , pDepthStencilAttachment( pDepthStencilAttachment_ )
105599       , preserveAttachmentCount( static_cast<uint32_t>( preserveAttachments_.size() ) )
105600       , pPreserveAttachments( preserveAttachments_.data() )
105601     {
105602 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
105603       VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) );
105604 #    else
105605       if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) )
105606       {
105607         throw LogicError(
105608           VULKAN_HPP_NAMESPACE_STRING
105609           "::SubpassDescription2::SubpassDescription2: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" );
105610       }
105611 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
105612     }
105613 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105614 
105615     SubpassDescription2 & operator=( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105616 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105617 
operator =VULKAN_HPP_NAMESPACE::SubpassDescription2105618     SubpassDescription2 & operator=( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
105619     {
105620       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescription2 const *>( &rhs );
105621       return *this;
105622     }
105623 
105624 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDescription2105625     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
105626     {
105627       pNext = pNext_;
105628       return *this;
105629     }
105630 
setFlagsVULKAN_HPP_NAMESPACE::SubpassDescription2105631     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
105632     {
105633       flags = flags_;
105634       return *this;
105635     }
105636 
setPipelineBindPointVULKAN_HPP_NAMESPACE::SubpassDescription2105637     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
105638     {
105639       pipelineBindPoint = pipelineBindPoint_;
105640       return *this;
105641     }
105642 
setViewMaskVULKAN_HPP_NAMESPACE::SubpassDescription2105643     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
105644     {
105645       viewMask = viewMask_;
105646       return *this;
105647     }
105648 
setInputAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription2105649     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
105650     {
105651       inputAttachmentCount = inputAttachmentCount_;
105652       return *this;
105653     }
105654 
105655     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2105656       setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments_ ) VULKAN_HPP_NOEXCEPT
105657     {
105658       pInputAttachments = pInputAttachments_;
105659       return *this;
105660     }
105661 
105662 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2105663     SubpassDescription2 & setInputAttachments(
105664       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & inputAttachments_ ) VULKAN_HPP_NOEXCEPT
105665     {
105666       inputAttachmentCount = static_cast<uint32_t>( inputAttachments_.size() );
105667       pInputAttachments    = inputAttachments_.data();
105668       return *this;
105669     }
105670 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105671 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription2105672     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
105673     {
105674       colorAttachmentCount = colorAttachmentCount_;
105675       return *this;
105676     }
105677 
105678     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2105679       setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
105680     {
105681       pColorAttachments = pColorAttachments_;
105682       return *this;
105683     }
105684 
105685 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2105686     SubpassDescription2 & setColorAttachments(
105687       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT
105688     {
105689       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
105690       pColorAttachments    = colorAttachments_.data();
105691       return *this;
105692     }
105693 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105694 
105695     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2105696       setPResolveAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT
105697     {
105698       pResolveAttachments = pResolveAttachments_;
105699       return *this;
105700     }
105701 
105702 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2105703     SubpassDescription2 & setResolveAttachments(
105704       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & resolveAttachments_ ) VULKAN_HPP_NOEXCEPT
105705     {
105706       colorAttachmentCount = static_cast<uint32_t>( resolveAttachments_.size() );
105707       pResolveAttachments  = resolveAttachments_.data();
105708       return *this;
105709     }
105710 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105711 
105712     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPDepthStencilAttachmentVULKAN_HPP_NAMESPACE::SubpassDescription2105713       setPDepthStencilAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
105714     {
105715       pDepthStencilAttachment = pDepthStencilAttachment_;
105716       return *this;
105717     }
105718 
setPreserveAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription2105719     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
105720     {
105721       preserveAttachmentCount = preserveAttachmentCount_;
105722       return *this;
105723     }
105724 
setPPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2105725     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPPreserveAttachments( const uint32_t * pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT
105726     {
105727       pPreserveAttachments = pPreserveAttachments_;
105728       return *this;
105729     }
105730 
105731 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
105732     SubpassDescription2 &
setPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2105733       setPreserveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT
105734     {
105735       preserveAttachmentCount = static_cast<uint32_t>( preserveAttachments_.size() );
105736       pPreserveAttachments    = preserveAttachments_.data();
105737       return *this;
105738     }
105739 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105740 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105741 
operator VkSubpassDescription2 const&VULKAN_HPP_NAMESPACE::SubpassDescription2105742     operator VkSubpassDescription2 const &() const VULKAN_HPP_NOEXCEPT
105743     {
105744       return *reinterpret_cast<const VkSubpassDescription2 *>( this );
105745     }
105746 
operator VkSubpassDescription2&VULKAN_HPP_NAMESPACE::SubpassDescription2105747     operator VkSubpassDescription2 &() VULKAN_HPP_NOEXCEPT
105748     {
105749       return *reinterpret_cast<VkSubpassDescription2 *>( this );
105750     }
105751 
105752 #if defined( VULKAN_HPP_USE_REFLECT )
105753 #  if 14 <= VULKAN_HPP_CPP_VERSION
105754     auto
105755 #  else
105756     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
105757                const void * const &,
105758                VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags const &,
105759                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
105760                uint32_t const &,
105761                uint32_t const &,
105762                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
105763                uint32_t const &,
105764                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
105765                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
105766                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
105767                uint32_t const &,
105768                const uint32_t * const &>
105769 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescription2105770       reflect() const VULKAN_HPP_NOEXCEPT
105771     {
105772       return std::tie( sType,
105773                        pNext,
105774                        flags,
105775                        pipelineBindPoint,
105776                        viewMask,
105777                        inputAttachmentCount,
105778                        pInputAttachments,
105779                        colorAttachmentCount,
105780                        pColorAttachments,
105781                        pResolveAttachments,
105782                        pDepthStencilAttachment,
105783                        preserveAttachmentCount,
105784                        pPreserveAttachments );
105785     }
105786 #endif
105787 
105788 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105789     auto operator<=>( SubpassDescription2 const & ) const = default;
105790 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescription2105791     bool operator==( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
105792     {
105793 #  if defined( VULKAN_HPP_USE_REFLECT )
105794       return this->reflect() == rhs.reflect();
105795 #  else
105796       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) &&
105797              ( viewMask == rhs.viewMask ) && ( inputAttachmentCount == rhs.inputAttachmentCount ) && ( pInputAttachments == rhs.pInputAttachments ) &&
105798              ( colorAttachmentCount == rhs.colorAttachmentCount ) && ( pColorAttachments == rhs.pColorAttachments ) &&
105799              ( pResolveAttachments == rhs.pResolveAttachments ) && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment ) &&
105800              ( preserveAttachmentCount == rhs.preserveAttachmentCount ) && ( pPreserveAttachments == rhs.pPreserveAttachments );
105801 #  endif
105802     }
105803 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescription2105804     bool operator!=( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
105805     {
105806       return !operator==( rhs );
105807     }
105808 #endif
105809 
105810   public:
105811     VULKAN_HPP_NAMESPACE::StructureType                sType                   = StructureType::eSubpassDescription2;
105812     const void *                                       pNext                   = {};
105813     VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags      flags                   = {};
105814     VULKAN_HPP_NAMESPACE::PipelineBindPoint            pipelineBindPoint       = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
105815     uint32_t                                           viewMask                = {};
105816     uint32_t                                           inputAttachmentCount    = {};
105817     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments       = {};
105818     uint32_t                                           colorAttachmentCount    = {};
105819     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments       = {};
105820     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments     = {};
105821     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment = {};
105822     uint32_t                                           preserveAttachmentCount = {};
105823     const uint32_t *                                   pPreserveAttachments    = {};
105824   };
105825 
105826   template <>
105827   struct CppType<StructureType, StructureType::eSubpassDescription2>
105828   {
105829     using Type = SubpassDescription2;
105830   };
105831 
105832   using SubpassDescription2KHR = SubpassDescription2;
105833 
105834   struct SubpassDependency2
105835   {
105836     using NativeType = VkSubpassDependency2;
105837 
105838     static const bool                                  allowDuplicate = false;
105839     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassDependency2;
105840 
105841 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDependency2VULKAN_HPP_NAMESPACE::SubpassDependency2105842     VULKAN_HPP_CONSTEXPR SubpassDependency2( uint32_t                                 srcSubpass_      = {},
105843                                              uint32_t                                 dstSubpass_      = {},
105844                                              VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_    = {},
105845                                              VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_    = {},
105846                                              VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask_   = {},
105847                                              VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask_   = {},
105848                                              VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags_ = {},
105849                                              int32_t                                  viewOffset_      = {},
105850                                              const void *                             pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
105851       : pNext{ pNext_ }
105852       , srcSubpass{ srcSubpass_ }
105853       , dstSubpass{ dstSubpass_ }
105854       , srcStageMask{ srcStageMask_ }
105855       , dstStageMask{ dstStageMask_ }
105856       , srcAccessMask{ srcAccessMask_ }
105857       , dstAccessMask{ dstAccessMask_ }
105858       , dependencyFlags{ dependencyFlags_ }
105859       , viewOffset{ viewOffset_ }
105860     {
105861     }
105862 
105863     VULKAN_HPP_CONSTEXPR SubpassDependency2( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105864 
SubpassDependency2VULKAN_HPP_NAMESPACE::SubpassDependency2105865     SubpassDependency2( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDependency2( *reinterpret_cast<SubpassDependency2 const *>( &rhs ) ) {}
105866 
105867     SubpassDependency2 & operator=( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105868 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105869 
operator =VULKAN_HPP_NAMESPACE::SubpassDependency2105870     SubpassDependency2 & operator=( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT
105871     {
105872       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDependency2 const *>( &rhs );
105873       return *this;
105874     }
105875 
105876 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDependency2105877     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
105878     {
105879       pNext = pNext_;
105880       return *this;
105881     }
105882 
setSrcSubpassVULKAN_HPP_NAMESPACE::SubpassDependency2105883     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT
105884     {
105885       srcSubpass = srcSubpass_;
105886       return *this;
105887     }
105888 
setDstSubpassVULKAN_HPP_NAMESPACE::SubpassDependency2105889     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT
105890     {
105891       dstSubpass = dstSubpass_;
105892       return *this;
105893     }
105894 
setSrcStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency2105895     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT
105896     {
105897       srcStageMask = srcStageMask_;
105898       return *this;
105899     }
105900 
setDstStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency2105901     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT
105902     {
105903       dstStageMask = dstStageMask_;
105904       return *this;
105905     }
105906 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency2105907     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
105908     {
105909       srcAccessMask = srcAccessMask_;
105910       return *this;
105911     }
105912 
setDstAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency2105913     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
105914     {
105915       dstAccessMask = dstAccessMask_;
105916       return *this;
105917     }
105918 
setDependencyFlagsVULKAN_HPP_NAMESPACE::SubpassDependency2105919     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
105920     {
105921       dependencyFlags = dependencyFlags_;
105922       return *this;
105923     }
105924 
setViewOffsetVULKAN_HPP_NAMESPACE::SubpassDependency2105925     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setViewOffset( int32_t viewOffset_ ) VULKAN_HPP_NOEXCEPT
105926     {
105927       viewOffset = viewOffset_;
105928       return *this;
105929     }
105930 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105931 
operator VkSubpassDependency2 const&VULKAN_HPP_NAMESPACE::SubpassDependency2105932     operator VkSubpassDependency2 const &() const VULKAN_HPP_NOEXCEPT
105933     {
105934       return *reinterpret_cast<const VkSubpassDependency2 *>( this );
105935     }
105936 
operator VkSubpassDependency2&VULKAN_HPP_NAMESPACE::SubpassDependency2105937     operator VkSubpassDependency2 &() VULKAN_HPP_NOEXCEPT
105938     {
105939       return *reinterpret_cast<VkSubpassDependency2 *>( this );
105940     }
105941 
105942 #if defined( VULKAN_HPP_USE_REFLECT )
105943 #  if 14 <= VULKAN_HPP_CPP_VERSION
105944     auto
105945 #  else
105946     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
105947                const void * const &,
105948                uint32_t const &,
105949                uint32_t const &,
105950                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
105951                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
105952                VULKAN_HPP_NAMESPACE::AccessFlags const &,
105953                VULKAN_HPP_NAMESPACE::AccessFlags const &,
105954                VULKAN_HPP_NAMESPACE::DependencyFlags const &,
105955                int32_t const &>
105956 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassDependency2105957       reflect() const VULKAN_HPP_NOEXCEPT
105958     {
105959       return std::tie( sType, pNext, srcSubpass, dstSubpass, srcStageMask, dstStageMask, srcAccessMask, dstAccessMask, dependencyFlags, viewOffset );
105960     }
105961 #endif
105962 
105963 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105964     auto operator<=>( SubpassDependency2 const & ) const = default;
105965 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDependency2105966     bool operator==( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT
105967     {
105968 #  if defined( VULKAN_HPP_USE_REFLECT )
105969       return this->reflect() == rhs.reflect();
105970 #  else
105971       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubpass == rhs.srcSubpass ) && ( dstSubpass == rhs.dstSubpass ) &&
105972              ( srcStageMask == rhs.srcStageMask ) && ( dstStageMask == rhs.dstStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) &&
105973              ( dstAccessMask == rhs.dstAccessMask ) && ( dependencyFlags == rhs.dependencyFlags ) && ( viewOffset == rhs.viewOffset );
105974 #  endif
105975     }
105976 
operator !=VULKAN_HPP_NAMESPACE::SubpassDependency2105977     bool operator!=( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT
105978     {
105979       return !operator==( rhs );
105980     }
105981 #endif
105982 
105983   public:
105984     VULKAN_HPP_NAMESPACE::StructureType      sType           = StructureType::eSubpassDependency2;
105985     const void *                             pNext           = {};
105986     uint32_t                                 srcSubpass      = {};
105987     uint32_t                                 dstSubpass      = {};
105988     VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask    = {};
105989     VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask    = {};
105990     VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask   = {};
105991     VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask   = {};
105992     VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags = {};
105993     int32_t                                  viewOffset      = {};
105994   };
105995 
105996   template <>
105997   struct CppType<StructureType, StructureType::eSubpassDependency2>
105998   {
105999     using Type = SubpassDependency2;
106000   };
106001 
106002   using SubpassDependency2KHR = SubpassDependency2;
106003 
106004   struct RenderPassCreateInfo2
106005   {
106006     using NativeType = VkRenderPassCreateInfo2;
106007 
106008     static const bool                                  allowDuplicate = false;
106009     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassCreateInfo2;
106010 
106011 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106012     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags          flags_                   = {},
106013                                                 uint32_t                                             attachmentCount_         = {},
106014                                                 const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments_            = {},
106015                                                 uint32_t                                             subpassCount_            = {},
106016                                                 const VULKAN_HPP_NAMESPACE::SubpassDescription2 *    pSubpasses_              = {},
106017                                                 uint32_t                                             dependencyCount_         = {},
106018                                                 const VULKAN_HPP_NAMESPACE::SubpassDependency2 *     pDependencies_           = {},
106019                                                 uint32_t                                             correlatedViewMaskCount_ = {},
106020                                                 const uint32_t *                                     pCorrelatedViewMasks_    = {},
106021                                                 const void *                                         pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
106022       : pNext{ pNext_ }
106023       , flags{ flags_ }
106024       , attachmentCount{ attachmentCount_ }
106025       , pAttachments{ pAttachments_ }
106026       , subpassCount{ subpassCount_ }
106027       , pSubpasses{ pSubpasses_ }
106028       , dependencyCount{ dependencyCount_ }
106029       , pDependencies{ pDependencies_ }
106030       , correlatedViewMaskCount{ correlatedViewMaskCount_ }
106031       , pCorrelatedViewMasks{ pCorrelatedViewMasks_ }
106032     {
106033     }
106034 
106035     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106036 
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106037     RenderPassCreateInfo2( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
106038       : RenderPassCreateInfo2( *reinterpret_cast<RenderPassCreateInfo2 const *>( &rhs ) )
106039     {
106040     }
106041 
106042 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106043     RenderPassCreateInfo2( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags                                                               flags_,
106044                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription2> const & attachments_,
106045                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription2> const &    subpasses_           = {},
106046                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency2> const &     dependencies_        = {},
106047                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                                     correlatedViewMasks_ = {},
106048                            const void *                                                                                              pNext_ = nullptr )
106049       : pNext( pNext_ )
106050       , flags( flags_ )
106051       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
106052       , pAttachments( attachments_.data() )
106053       , subpassCount( static_cast<uint32_t>( subpasses_.size() ) )
106054       , pSubpasses( subpasses_.data() )
106055       , dependencyCount( static_cast<uint32_t>( dependencies_.size() ) )
106056       , pDependencies( dependencies_.data() )
106057       , correlatedViewMaskCount( static_cast<uint32_t>( correlatedViewMasks_.size() ) )
106058       , pCorrelatedViewMasks( correlatedViewMasks_.data() )
106059     {
106060     }
106061 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106062 
106063     RenderPassCreateInfo2 & operator=( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106064 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106065 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106066     RenderPassCreateInfo2 & operator=( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
106067     {
106068       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const *>( &rhs );
106069       return *this;
106070     }
106071 
106072 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106073     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106074     {
106075       pNext = pNext_;
106076       return *this;
106077     }
106078 
setFlagsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106079     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
106080     {
106081       flags = flags_;
106082       return *this;
106083     }
106084 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106085     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
106086     {
106087       attachmentCount = attachmentCount_;
106088       return *this;
106089     }
106090 
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106091     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments_ ) VULKAN_HPP_NOEXCEPT
106092     {
106093       pAttachments = pAttachments_;
106094       return *this;
106095     }
106096 
106097 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106098     RenderPassCreateInfo2 & setAttachments(
106099       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription2> const & attachments_ ) VULKAN_HPP_NOEXCEPT
106100     {
106101       attachmentCount = static_cast<uint32_t>( attachments_.size() );
106102       pAttachments    = attachments_.data();
106103       return *this;
106104     }
106105 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106106 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106107     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
106108     {
106109       subpassCount = subpassCount_;
106110       return *this;
106111     }
106112 
setPSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106113     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription2 * pSubpasses_ ) VULKAN_HPP_NOEXCEPT
106114     {
106115       pSubpasses = pSubpasses_;
106116       return *this;
106117     }
106118 
106119 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
106120     RenderPassCreateInfo2 &
setSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106121       setSubpasses( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription2> const & subpasses_ ) VULKAN_HPP_NOEXCEPT
106122     {
106123       subpassCount = static_cast<uint32_t>( subpasses_.size() );
106124       pSubpasses   = subpasses_.data();
106125       return *this;
106126     }
106127 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106128 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106129     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
106130     {
106131       dependencyCount = dependencyCount_;
106132       return *this;
106133     }
106134 
setPDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106135     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency2 * pDependencies_ ) VULKAN_HPP_NOEXCEPT
106136     {
106137       pDependencies = pDependencies_;
106138       return *this;
106139     }
106140 
106141 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
106142     RenderPassCreateInfo2 &
setDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106143       setDependencies( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency2> const & dependencies_ ) VULKAN_HPP_NOEXCEPT
106144     {
106145       dependencyCount = static_cast<uint32_t>( dependencies_.size() );
106146       pDependencies   = dependencies_.data();
106147       return *this;
106148     }
106149 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106150 
setCorrelatedViewMaskCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106151     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ ) VULKAN_HPP_NOEXCEPT
106152     {
106153       correlatedViewMaskCount = correlatedViewMaskCount_;
106154       return *this;
106155     }
106156 
setPCorrelatedViewMasksVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106157     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPCorrelatedViewMasks( const uint32_t * pCorrelatedViewMasks_ ) VULKAN_HPP_NOEXCEPT
106158     {
106159       pCorrelatedViewMasks = pCorrelatedViewMasks_;
106160       return *this;
106161     }
106162 
106163 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
106164     RenderPassCreateInfo2 &
setCorrelatedViewMasksVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106165       setCorrelatedViewMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlatedViewMasks_ ) VULKAN_HPP_NOEXCEPT
106166     {
106167       correlatedViewMaskCount = static_cast<uint32_t>( correlatedViewMasks_.size() );
106168       pCorrelatedViewMasks    = correlatedViewMasks_.data();
106169       return *this;
106170     }
106171 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106172 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106173 
operator VkRenderPassCreateInfo2 const&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106174     operator VkRenderPassCreateInfo2 const &() const VULKAN_HPP_NOEXCEPT
106175     {
106176       return *reinterpret_cast<const VkRenderPassCreateInfo2 *>( this );
106177     }
106178 
operator VkRenderPassCreateInfo2&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106179     operator VkRenderPassCreateInfo2 &() VULKAN_HPP_NOEXCEPT
106180     {
106181       return *reinterpret_cast<VkRenderPassCreateInfo2 *>( this );
106182     }
106183 
106184 #if defined( VULKAN_HPP_USE_REFLECT )
106185 #  if 14 <= VULKAN_HPP_CPP_VERSION
106186     auto
106187 #  else
106188     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
106189                const void * const &,
106190                VULKAN_HPP_NAMESPACE::RenderPassCreateFlags const &,
106191                uint32_t const &,
106192                const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * const &,
106193                uint32_t const &,
106194                const VULKAN_HPP_NAMESPACE::SubpassDescription2 * const &,
106195                uint32_t const &,
106196                const VULKAN_HPP_NAMESPACE::SubpassDependency2 * const &,
106197                uint32_t const &,
106198                const uint32_t * const &>
106199 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106200       reflect() const VULKAN_HPP_NOEXCEPT
106201     {
106202       return std::tie( sType,
106203                        pNext,
106204                        flags,
106205                        attachmentCount,
106206                        pAttachments,
106207                        subpassCount,
106208                        pSubpasses,
106209                        dependencyCount,
106210                        pDependencies,
106211                        correlatedViewMaskCount,
106212                        pCorrelatedViewMasks );
106213     }
106214 #endif
106215 
106216 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106217     auto operator<=>( RenderPassCreateInfo2 const & ) const = default;
106218 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106219     bool operator==( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
106220     {
106221 #  if defined( VULKAN_HPP_USE_REFLECT )
106222       return this->reflect() == rhs.reflect();
106223 #  else
106224       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( attachmentCount == rhs.attachmentCount ) &&
106225              ( pAttachments == rhs.pAttachments ) && ( subpassCount == rhs.subpassCount ) && ( pSubpasses == rhs.pSubpasses ) &&
106226              ( dependencyCount == rhs.dependencyCount ) && ( pDependencies == rhs.pDependencies ) &&
106227              ( correlatedViewMaskCount == rhs.correlatedViewMaskCount ) && ( pCorrelatedViewMasks == rhs.pCorrelatedViewMasks );
106228 #  endif
106229     }
106230 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2106231     bool operator!=( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
106232     {
106233       return !operator==( rhs );
106234     }
106235 #endif
106236 
106237   public:
106238     VULKAN_HPP_NAMESPACE::StructureType                  sType                   = StructureType::eRenderPassCreateInfo2;
106239     const void *                                         pNext                   = {};
106240     VULKAN_HPP_NAMESPACE::RenderPassCreateFlags          flags                   = {};
106241     uint32_t                                             attachmentCount         = {};
106242     const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments            = {};
106243     uint32_t                                             subpassCount            = {};
106244     const VULKAN_HPP_NAMESPACE::SubpassDescription2 *    pSubpasses              = {};
106245     uint32_t                                             dependencyCount         = {};
106246     const VULKAN_HPP_NAMESPACE::SubpassDependency2 *     pDependencies           = {};
106247     uint32_t                                             correlatedViewMaskCount = {};
106248     const uint32_t *                                     pCorrelatedViewMasks    = {};
106249   };
106250 
106251   template <>
106252   struct CppType<StructureType, StructureType::eRenderPassCreateInfo2>
106253   {
106254     using Type = RenderPassCreateInfo2;
106255   };
106256 
106257   using RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
106258 
106259   struct RenderPassCreationControlEXT
106260   {
106261     using NativeType = VkRenderPassCreationControlEXT;
106262 
106263     static const bool                                  allowDuplicate = false;
106264     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassCreationControlEXT;
106265 
106266 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreationControlEXTVULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT106267     VULKAN_HPP_CONSTEXPR RenderPassCreationControlEXT( VULKAN_HPP_NAMESPACE::Bool32 disallowMerging_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
106268       : pNext{ pNext_ }
106269       , disallowMerging{ disallowMerging_ }
106270     {
106271     }
106272 
106273     VULKAN_HPP_CONSTEXPR RenderPassCreationControlEXT( RenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106274 
RenderPassCreationControlEXTVULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT106275     RenderPassCreationControlEXT( VkRenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106276       : RenderPassCreationControlEXT( *reinterpret_cast<RenderPassCreationControlEXT const *>( &rhs ) )
106277     {
106278     }
106279 
106280     RenderPassCreationControlEXT & operator=( RenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106281 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106282 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT106283     RenderPassCreationControlEXT & operator=( VkRenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106284     {
106285       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT const *>( &rhs );
106286       return *this;
106287     }
106288 
106289 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT106290     VULKAN_HPP_CONSTEXPR_14 RenderPassCreationControlEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106291     {
106292       pNext = pNext_;
106293       return *this;
106294     }
106295 
setDisallowMergingVULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT106296     VULKAN_HPP_CONSTEXPR_14 RenderPassCreationControlEXT & setDisallowMerging( VULKAN_HPP_NAMESPACE::Bool32 disallowMerging_ ) VULKAN_HPP_NOEXCEPT
106297     {
106298       disallowMerging = disallowMerging_;
106299       return *this;
106300     }
106301 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106302 
operator VkRenderPassCreationControlEXT const&VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT106303     operator VkRenderPassCreationControlEXT const &() const VULKAN_HPP_NOEXCEPT
106304     {
106305       return *reinterpret_cast<const VkRenderPassCreationControlEXT *>( this );
106306     }
106307 
operator VkRenderPassCreationControlEXT&VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT106308     operator VkRenderPassCreationControlEXT &() VULKAN_HPP_NOEXCEPT
106309     {
106310       return *reinterpret_cast<VkRenderPassCreationControlEXT *>( this );
106311     }
106312 
106313 #if defined( VULKAN_HPP_USE_REFLECT )
106314 #  if 14 <= VULKAN_HPP_CPP_VERSION
106315     auto
106316 #  else
106317     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
106318 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT106319       reflect() const VULKAN_HPP_NOEXCEPT
106320     {
106321       return std::tie( sType, pNext, disallowMerging );
106322     }
106323 #endif
106324 
106325 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106326     auto operator<=>( RenderPassCreationControlEXT const & ) const = default;
106327 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT106328     bool operator==( RenderPassCreationControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106329     {
106330 #  if defined( VULKAN_HPP_USE_REFLECT )
106331       return this->reflect() == rhs.reflect();
106332 #  else
106333       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( disallowMerging == rhs.disallowMerging );
106334 #  endif
106335     }
106336 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT106337     bool operator!=( RenderPassCreationControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106338     {
106339       return !operator==( rhs );
106340     }
106341 #endif
106342 
106343   public:
106344     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eRenderPassCreationControlEXT;
106345     const void *                        pNext           = {};
106346     VULKAN_HPP_NAMESPACE::Bool32        disallowMerging = {};
106347   };
106348 
106349   template <>
106350   struct CppType<StructureType, StructureType::eRenderPassCreationControlEXT>
106351   {
106352     using Type = RenderPassCreationControlEXT;
106353   };
106354 
106355   struct RenderPassCreationFeedbackInfoEXT
106356   {
106357     using NativeType = VkRenderPassCreationFeedbackInfoEXT;
106358 
106359 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreationFeedbackInfoEXTVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT106360     VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackInfoEXT( uint32_t postMergeSubpassCount_ = {} ) VULKAN_HPP_NOEXCEPT
106361       : postMergeSubpassCount{ postMergeSubpassCount_ }
106362     {
106363     }
106364 
106365     VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackInfoEXT( RenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106366 
RenderPassCreationFeedbackInfoEXTVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT106367     RenderPassCreationFeedbackInfoEXT( VkRenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106368       : RenderPassCreationFeedbackInfoEXT( *reinterpret_cast<RenderPassCreationFeedbackInfoEXT const *>( &rhs ) )
106369     {
106370     }
106371 
106372     RenderPassCreationFeedbackInfoEXT & operator=( RenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106373 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106374 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT106375     RenderPassCreationFeedbackInfoEXT & operator=( VkRenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106376     {
106377       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT const *>( &rhs );
106378       return *this;
106379     }
106380 
operator VkRenderPassCreationFeedbackInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT106381     operator VkRenderPassCreationFeedbackInfoEXT const &() const VULKAN_HPP_NOEXCEPT
106382     {
106383       return *reinterpret_cast<const VkRenderPassCreationFeedbackInfoEXT *>( this );
106384     }
106385 
operator VkRenderPassCreationFeedbackInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT106386     operator VkRenderPassCreationFeedbackInfoEXT &() VULKAN_HPP_NOEXCEPT
106387     {
106388       return *reinterpret_cast<VkRenderPassCreationFeedbackInfoEXT *>( this );
106389     }
106390 
106391 #if defined( VULKAN_HPP_USE_REFLECT )
106392 #  if 14 <= VULKAN_HPP_CPP_VERSION
106393     auto
106394 #  else
106395     std::tuple<uint32_t const &>
106396 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT106397       reflect() const VULKAN_HPP_NOEXCEPT
106398     {
106399       return std::tie( postMergeSubpassCount );
106400     }
106401 #endif
106402 
106403 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106404     auto operator<=>( RenderPassCreationFeedbackInfoEXT const & ) const = default;
106405 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT106406     bool operator==( RenderPassCreationFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106407     {
106408 #  if defined( VULKAN_HPP_USE_REFLECT )
106409       return this->reflect() == rhs.reflect();
106410 #  else
106411       return ( postMergeSubpassCount == rhs.postMergeSubpassCount );
106412 #  endif
106413     }
106414 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT106415     bool operator!=( RenderPassCreationFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106416     {
106417       return !operator==( rhs );
106418     }
106419 #endif
106420 
106421   public:
106422     uint32_t postMergeSubpassCount = {};
106423   };
106424 
106425   struct RenderPassCreationFeedbackCreateInfoEXT
106426   {
106427     using NativeType = VkRenderPassCreationFeedbackCreateInfoEXT;
106428 
106429     static const bool                                  allowDuplicate = false;
106430     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassCreationFeedbackCreateInfoEXT;
106431 
106432 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreationFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT106433     VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackCreateInfoEXT( VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT * pRenderPassFeedback_ = {},
106434                                                                   const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
106435       : pNext{ pNext_ }
106436       , pRenderPassFeedback{ pRenderPassFeedback_ }
106437     {
106438     }
106439 
106440     VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackCreateInfoEXT( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106441 
RenderPassCreationFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT106442     RenderPassCreationFeedbackCreateInfoEXT( VkRenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106443       : RenderPassCreationFeedbackCreateInfoEXT( *reinterpret_cast<RenderPassCreationFeedbackCreateInfoEXT const *>( &rhs ) )
106444     {
106445     }
106446 
106447     RenderPassCreationFeedbackCreateInfoEXT & operator=( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106448 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106449 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT106450     RenderPassCreationFeedbackCreateInfoEXT & operator=( VkRenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106451     {
106452       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT const *>( &rhs );
106453       return *this;
106454     }
106455 
106456 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT106457     VULKAN_HPP_CONSTEXPR_14 RenderPassCreationFeedbackCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106458     {
106459       pNext = pNext_;
106460       return *this;
106461     }
106462 
106463     VULKAN_HPP_CONSTEXPR_14 RenderPassCreationFeedbackCreateInfoEXT &
setPRenderPassFeedbackVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT106464       setPRenderPassFeedback( VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT * pRenderPassFeedback_ ) VULKAN_HPP_NOEXCEPT
106465     {
106466       pRenderPassFeedback = pRenderPassFeedback_;
106467       return *this;
106468     }
106469 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106470 
operator VkRenderPassCreationFeedbackCreateInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT106471     operator VkRenderPassCreationFeedbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
106472     {
106473       return *reinterpret_cast<const VkRenderPassCreationFeedbackCreateInfoEXT *>( this );
106474     }
106475 
operator VkRenderPassCreationFeedbackCreateInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT106476     operator VkRenderPassCreationFeedbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
106477     {
106478       return *reinterpret_cast<VkRenderPassCreationFeedbackCreateInfoEXT *>( this );
106479     }
106480 
106481 #if defined( VULKAN_HPP_USE_REFLECT )
106482 #  if 14 <= VULKAN_HPP_CPP_VERSION
106483     auto
106484 #  else
106485     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT * const &>
106486 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT106487       reflect() const VULKAN_HPP_NOEXCEPT
106488     {
106489       return std::tie( sType, pNext, pRenderPassFeedback );
106490     }
106491 #endif
106492 
106493 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106494     auto operator<=>( RenderPassCreationFeedbackCreateInfoEXT const & ) const = default;
106495 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT106496     bool operator==( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106497     {
106498 #  if defined( VULKAN_HPP_USE_REFLECT )
106499       return this->reflect() == rhs.reflect();
106500 #  else
106501       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pRenderPassFeedback == rhs.pRenderPassFeedback );
106502 #  endif
106503     }
106504 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT106505     bool operator!=( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106506     {
106507       return !operator==( rhs );
106508     }
106509 #endif
106510 
106511   public:
106512     VULKAN_HPP_NAMESPACE::StructureType                       sType               = StructureType::eRenderPassCreationFeedbackCreateInfoEXT;
106513     const void *                                              pNext               = {};
106514     VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT * pRenderPassFeedback = {};
106515   };
106516 
106517   template <>
106518   struct CppType<StructureType, StructureType::eRenderPassCreationFeedbackCreateInfoEXT>
106519   {
106520     using Type = RenderPassCreationFeedbackCreateInfoEXT;
106521   };
106522 
106523   struct RenderPassFragmentDensityMapCreateInfoEXT
106524   {
106525     using NativeType = VkRenderPassFragmentDensityMapCreateInfoEXT;
106526 
106527     static const bool                                  allowDuplicate = false;
106528     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT;
106529 
106530 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassFragmentDensityMapCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT106531     VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT( VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment_ = {},
106532                                                                     const void *                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
106533       : pNext{ pNext_ }
106534       , fragmentDensityMapAttachment{ fragmentDensityMapAttachment_ }
106535     {
106536     }
106537 
106538     VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106539 
RenderPassFragmentDensityMapCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT106540     RenderPassFragmentDensityMapCreateInfoEXT( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106541       : RenderPassFragmentDensityMapCreateInfoEXT( *reinterpret_cast<RenderPassFragmentDensityMapCreateInfoEXT const *>( &rhs ) )
106542     {
106543     }
106544 
106545     RenderPassFragmentDensityMapCreateInfoEXT & operator=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106546 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106547 
operator =VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT106548     RenderPassFragmentDensityMapCreateInfoEXT & operator=( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106549     {
106550       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT const *>( &rhs );
106551       return *this;
106552     }
106553 
106554 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT106555     VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106556     {
106557       pNext = pNext_;
106558       return *this;
106559     }
106560 
106561     VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT &
setFragmentDensityMapAttachmentVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT106562       setFragmentDensityMapAttachment( VULKAN_HPP_NAMESPACE::AttachmentReference const & fragmentDensityMapAttachment_ ) VULKAN_HPP_NOEXCEPT
106563     {
106564       fragmentDensityMapAttachment = fragmentDensityMapAttachment_;
106565       return *this;
106566     }
106567 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106568 
operator VkRenderPassFragmentDensityMapCreateInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT106569     operator VkRenderPassFragmentDensityMapCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
106570     {
106571       return *reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT *>( this );
106572     }
106573 
operator VkRenderPassFragmentDensityMapCreateInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT106574     operator VkRenderPassFragmentDensityMapCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
106575     {
106576       return *reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT *>( this );
106577     }
106578 
106579 #if defined( VULKAN_HPP_USE_REFLECT )
106580 #  if 14 <= VULKAN_HPP_CPP_VERSION
106581     auto
106582 #  else
106583     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AttachmentReference const &>
106584 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT106585       reflect() const VULKAN_HPP_NOEXCEPT
106586     {
106587       return std::tie( sType, pNext, fragmentDensityMapAttachment );
106588     }
106589 #endif
106590 
106591 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106592     auto operator<=>( RenderPassFragmentDensityMapCreateInfoEXT const & ) const = default;
106593 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT106594     bool operator==( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106595     {
106596 #  if defined( VULKAN_HPP_USE_REFLECT )
106597       return this->reflect() == rhs.reflect();
106598 #  else
106599       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMapAttachment == rhs.fragmentDensityMapAttachment );
106600 #  endif
106601     }
106602 
operator !=VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT106603     bool operator!=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106604     {
106605       return !operator==( rhs );
106606     }
106607 #endif
106608 
106609   public:
106610     VULKAN_HPP_NAMESPACE::StructureType       sType                        = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT;
106611     const void *                              pNext                        = {};
106612     VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment = {};
106613   };
106614 
106615   template <>
106616   struct CppType<StructureType, StructureType::eRenderPassFragmentDensityMapCreateInfoEXT>
106617   {
106618     using Type = RenderPassFragmentDensityMapCreateInfoEXT;
106619   };
106620 
106621   struct RenderPassInputAttachmentAspectCreateInfo
106622   {
106623     using NativeType = VkRenderPassInputAttachmentAspectCreateInfo;
106624 
106625     static const bool                                  allowDuplicate = false;
106626     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
106627 
106628 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106629     VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo( uint32_t                                                     aspectReferenceCount_ = {},
106630                                                                     const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences_    = {},
106631                                                                     const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
106632       : pNext{ pNext_ }
106633       , aspectReferenceCount{ aspectReferenceCount_ }
106634       , pAspectReferences{ pAspectReferences_ }
106635     {
106636     }
106637 
106638     VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106639 
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106640     RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
106641       : RenderPassInputAttachmentAspectCreateInfo( *reinterpret_cast<RenderPassInputAttachmentAspectCreateInfo const *>( &rhs ) )
106642     {
106643     }
106644 
106645 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106646     RenderPassInputAttachmentAspectCreateInfo(
106647       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference> const & aspectReferences_,
106648       const void *                                                                                                      pNext_ = nullptr )
106649       : pNext( pNext_ ), aspectReferenceCount( static_cast<uint32_t>( aspectReferences_.size() ) ), pAspectReferences( aspectReferences_.data() )
106650     {
106651     }
106652 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106653 
106654     RenderPassInputAttachmentAspectCreateInfo & operator=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106655 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106656 
operator =VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106657     RenderPassInputAttachmentAspectCreateInfo & operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
106658     {
106659       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo const *>( &rhs );
106660       return *this;
106661     }
106662 
106663 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106664     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106665     {
106666       pNext = pNext_;
106667       return *this;
106668     }
106669 
setAspectReferenceCountVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106670     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setAspectReferenceCount( uint32_t aspectReferenceCount_ ) VULKAN_HPP_NOEXCEPT
106671     {
106672       aspectReferenceCount = aspectReferenceCount_;
106673       return *this;
106674     }
106675 
106676     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo &
setPAspectReferencesVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106677       setPAspectReferences( const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences_ ) VULKAN_HPP_NOEXCEPT
106678     {
106679       pAspectReferences = pAspectReferences_;
106680       return *this;
106681     }
106682 
106683 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAspectReferencesVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106684     RenderPassInputAttachmentAspectCreateInfo & setAspectReferences(
106685       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference> const & aspectReferences_ ) VULKAN_HPP_NOEXCEPT
106686     {
106687       aspectReferenceCount = static_cast<uint32_t>( aspectReferences_.size() );
106688       pAspectReferences    = aspectReferences_.data();
106689       return *this;
106690     }
106691 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106692 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106693 
operator VkRenderPassInputAttachmentAspectCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106694     operator VkRenderPassInputAttachmentAspectCreateInfo const &() const VULKAN_HPP_NOEXCEPT
106695     {
106696       return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo *>( this );
106697     }
106698 
operator VkRenderPassInputAttachmentAspectCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106699     operator VkRenderPassInputAttachmentAspectCreateInfo &() VULKAN_HPP_NOEXCEPT
106700     {
106701       return *reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo *>( this );
106702     }
106703 
106704 #if defined( VULKAN_HPP_USE_REFLECT )
106705 #  if 14 <= VULKAN_HPP_CPP_VERSION
106706     auto
106707 #  else
106708     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
106709                const void * const &,
106710                uint32_t const &,
106711                const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * const &>
106712 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106713       reflect() const VULKAN_HPP_NOEXCEPT
106714     {
106715       return std::tie( sType, pNext, aspectReferenceCount, pAspectReferences );
106716     }
106717 #endif
106718 
106719 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106720     auto operator<=>( RenderPassInputAttachmentAspectCreateInfo const & ) const = default;
106721 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106722     bool operator==( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
106723     {
106724 #  if defined( VULKAN_HPP_USE_REFLECT )
106725       return this->reflect() == rhs.reflect();
106726 #  else
106727       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( aspectReferenceCount == rhs.aspectReferenceCount ) &&
106728              ( pAspectReferences == rhs.pAspectReferences );
106729 #  endif
106730     }
106731 
operator !=VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo106732     bool operator!=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
106733     {
106734       return !operator==( rhs );
106735     }
106736 #endif
106737 
106738   public:
106739     VULKAN_HPP_NAMESPACE::StructureType                          sType                = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
106740     const void *                                                 pNext                = {};
106741     uint32_t                                                     aspectReferenceCount = {};
106742     const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences    = {};
106743   };
106744 
106745   template <>
106746   struct CppType<StructureType, StructureType::eRenderPassInputAttachmentAspectCreateInfo>
106747   {
106748     using Type = RenderPassInputAttachmentAspectCreateInfo;
106749   };
106750 
106751   using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
106752 
106753   struct RenderPassMultiviewCreateInfo
106754   {
106755     using NativeType = VkRenderPassMultiviewCreateInfo;
106756 
106757     static const bool                                  allowDuplicate = false;
106758     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassMultiviewCreateInfo;
106759 
106760 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106761     VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo( uint32_t         subpassCount_         = {},
106762                                                         const uint32_t * pViewMasks_           = {},
106763                                                         uint32_t         dependencyCount_      = {},
106764                                                         const int32_t *  pViewOffsets_         = {},
106765                                                         uint32_t         correlationMaskCount_ = {},
106766                                                         const uint32_t * pCorrelationMasks_    = {},
106767                                                         const void *     pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
106768       : pNext{ pNext_ }
106769       , subpassCount{ subpassCount_ }
106770       , pViewMasks{ pViewMasks_ }
106771       , dependencyCount{ dependencyCount_ }
106772       , pViewOffsets{ pViewOffsets_ }
106773       , correlationMaskCount{ correlationMaskCount_ }
106774       , pCorrelationMasks{ pCorrelationMasks_ }
106775     {
106776     }
106777 
106778     VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106779 
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106780     RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
106781       : RenderPassMultiviewCreateInfo( *reinterpret_cast<RenderPassMultiviewCreateInfo const *>( &rhs ) )
106782     {
106783     }
106784 
106785 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106786     RenderPassMultiviewCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & viewMasks_,
106787                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int32_t> const &  viewOffsets_      = {},
106788                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlationMasks_ = {},
106789                                    const void *                                                          pNext_            = nullptr )
106790       : pNext( pNext_ )
106791       , subpassCount( static_cast<uint32_t>( viewMasks_.size() ) )
106792       , pViewMasks( viewMasks_.data() )
106793       , dependencyCount( static_cast<uint32_t>( viewOffsets_.size() ) )
106794       , pViewOffsets( viewOffsets_.data() )
106795       , correlationMaskCount( static_cast<uint32_t>( correlationMasks_.size() ) )
106796       , pCorrelationMasks( correlationMasks_.data() )
106797     {
106798     }
106799 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106800 
106801     RenderPassMultiviewCreateInfo & operator=( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106802 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106803 
operator =VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106804     RenderPassMultiviewCreateInfo & operator=( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
106805     {
106806       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo const *>( &rhs );
106807       return *this;
106808     }
106809 
106810 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106811     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106812     {
106813       pNext = pNext_;
106814       return *this;
106815     }
106816 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106817     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
106818     {
106819       subpassCount = subpassCount_;
106820       return *this;
106821     }
106822 
setPViewMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106823     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPViewMasks( const uint32_t * pViewMasks_ ) VULKAN_HPP_NOEXCEPT
106824     {
106825       pViewMasks = pViewMasks_;
106826       return *this;
106827     }
106828 
106829 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106830     RenderPassMultiviewCreateInfo & setViewMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & viewMasks_ ) VULKAN_HPP_NOEXCEPT
106831     {
106832       subpassCount = static_cast<uint32_t>( viewMasks_.size() );
106833       pViewMasks   = viewMasks_.data();
106834       return *this;
106835     }
106836 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106837 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106838     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
106839     {
106840       dependencyCount = dependencyCount_;
106841       return *this;
106842     }
106843 
setPViewOffsetsVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106844     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPViewOffsets( const int32_t * pViewOffsets_ ) VULKAN_HPP_NOEXCEPT
106845     {
106846       pViewOffsets = pViewOffsets_;
106847       return *this;
106848     }
106849 
106850 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewOffsetsVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106851     RenderPassMultiviewCreateInfo & setViewOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int32_t> const & viewOffsets_ ) VULKAN_HPP_NOEXCEPT
106852     {
106853       dependencyCount = static_cast<uint32_t>( viewOffsets_.size() );
106854       pViewOffsets    = viewOffsets_.data();
106855       return *this;
106856     }
106857 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106858 
setCorrelationMaskCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106859     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setCorrelationMaskCount( uint32_t correlationMaskCount_ ) VULKAN_HPP_NOEXCEPT
106860     {
106861       correlationMaskCount = correlationMaskCount_;
106862       return *this;
106863     }
106864 
setPCorrelationMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106865     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPCorrelationMasks( const uint32_t * pCorrelationMasks_ ) VULKAN_HPP_NOEXCEPT
106866     {
106867       pCorrelationMasks = pCorrelationMasks_;
106868       return *this;
106869     }
106870 
106871 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
106872     RenderPassMultiviewCreateInfo &
setCorrelationMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106873       setCorrelationMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlationMasks_ ) VULKAN_HPP_NOEXCEPT
106874     {
106875       correlationMaskCount = static_cast<uint32_t>( correlationMasks_.size() );
106876       pCorrelationMasks    = correlationMasks_.data();
106877       return *this;
106878     }
106879 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106880 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106881 
operator VkRenderPassMultiviewCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106882     operator VkRenderPassMultiviewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
106883     {
106884       return *reinterpret_cast<const VkRenderPassMultiviewCreateInfo *>( this );
106885     }
106886 
operator VkRenderPassMultiviewCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106887     operator VkRenderPassMultiviewCreateInfo &() VULKAN_HPP_NOEXCEPT
106888     {
106889       return *reinterpret_cast<VkRenderPassMultiviewCreateInfo *>( this );
106890     }
106891 
106892 #if defined( VULKAN_HPP_USE_REFLECT )
106893 #  if 14 <= VULKAN_HPP_CPP_VERSION
106894     auto
106895 #  else
106896     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
106897                const void * const &,
106898                uint32_t const &,
106899                const uint32_t * const &,
106900                uint32_t const &,
106901                const int32_t * const &,
106902                uint32_t const &,
106903                const uint32_t * const &>
106904 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106905       reflect() const VULKAN_HPP_NOEXCEPT
106906     {
106907       return std::tie( sType, pNext, subpassCount, pViewMasks, dependencyCount, pViewOffsets, correlationMaskCount, pCorrelationMasks );
106908     }
106909 #endif
106910 
106911 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106912     auto operator<=>( RenderPassMultiviewCreateInfo const & ) const = default;
106913 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106914     bool operator==( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
106915     {
106916 #  if defined( VULKAN_HPP_USE_REFLECT )
106917       return this->reflect() == rhs.reflect();
106918 #  else
106919       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassCount == rhs.subpassCount ) && ( pViewMasks == rhs.pViewMasks ) &&
106920              ( dependencyCount == rhs.dependencyCount ) && ( pViewOffsets == rhs.pViewOffsets ) && ( correlationMaskCount == rhs.correlationMaskCount ) &&
106921              ( pCorrelationMasks == rhs.pCorrelationMasks );
106922 #  endif
106923     }
106924 
operator !=VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo106925     bool operator!=( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
106926     {
106927       return !operator==( rhs );
106928     }
106929 #endif
106930 
106931   public:
106932     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eRenderPassMultiviewCreateInfo;
106933     const void *                        pNext                = {};
106934     uint32_t                            subpassCount         = {};
106935     const uint32_t *                    pViewMasks           = {};
106936     uint32_t                            dependencyCount      = {};
106937     const int32_t *                     pViewOffsets         = {};
106938     uint32_t                            correlationMaskCount = {};
106939     const uint32_t *                    pCorrelationMasks    = {};
106940   };
106941 
106942   template <>
106943   struct CppType<StructureType, StructureType::eRenderPassMultiviewCreateInfo>
106944   {
106945     using Type = RenderPassMultiviewCreateInfo;
106946   };
106947 
106948   using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
106949 
106950   struct SubpassSampleLocationsEXT
106951   {
106952     using NativeType = VkSubpassSampleLocationsEXT;
106953 
106954 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassSampleLocationsEXTVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT106955     VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT( uint32_t                                     subpassIndex_        = {},
106956                                                     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT
106957       : subpassIndex{ subpassIndex_ }
106958       , sampleLocationsInfo{ sampleLocationsInfo_ }
106959     {
106960     }
106961 
106962     VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106963 
SubpassSampleLocationsEXTVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT106964     SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106965       : SubpassSampleLocationsEXT( *reinterpret_cast<SubpassSampleLocationsEXT const *>( &rhs ) )
106966     {
106967     }
106968 
106969     SubpassSampleLocationsEXT & operator=( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106970 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106971 
operator =VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT106972     SubpassSampleLocationsEXT & operator=( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106973     {
106974       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT const *>( &rhs );
106975       return *this;
106976     }
106977 
106978 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSubpassIndexVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT106979     VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & setSubpassIndex( uint32_t subpassIndex_ ) VULKAN_HPP_NOEXCEPT
106980     {
106981       subpassIndex = subpassIndex_;
106982       return *this;
106983     }
106984 
106985     VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT &
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT106986       setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
106987     {
106988       sampleLocationsInfo = sampleLocationsInfo_;
106989       return *this;
106990     }
106991 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106992 
operator VkSubpassSampleLocationsEXT const&VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT106993     operator VkSubpassSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT
106994     {
106995       return *reinterpret_cast<const VkSubpassSampleLocationsEXT *>( this );
106996     }
106997 
operator VkSubpassSampleLocationsEXT&VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT106998     operator VkSubpassSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT
106999     {
107000       return *reinterpret_cast<VkSubpassSampleLocationsEXT *>( this );
107001     }
107002 
107003 #if defined( VULKAN_HPP_USE_REFLECT )
107004 #  if 14 <= VULKAN_HPP_CPP_VERSION
107005     auto
107006 #  else
107007     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
107008 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT107009       reflect() const VULKAN_HPP_NOEXCEPT
107010     {
107011       return std::tie( subpassIndex, sampleLocationsInfo );
107012     }
107013 #endif
107014 
107015 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107016     auto operator<=>( SubpassSampleLocationsEXT const & ) const = default;
107017 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT107018     bool operator==( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
107019     {
107020 #  if defined( VULKAN_HPP_USE_REFLECT )
107021       return this->reflect() == rhs.reflect();
107022 #  else
107023       return ( subpassIndex == rhs.subpassIndex ) && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
107024 #  endif
107025     }
107026 
operator !=VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT107027     bool operator!=( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
107028     {
107029       return !operator==( rhs );
107030     }
107031 #endif
107032 
107033   public:
107034     uint32_t                                     subpassIndex        = {};
107035     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {};
107036   };
107037 
107038   struct RenderPassSampleLocationsBeginInfoEXT
107039   {
107040     using NativeType = VkRenderPassSampleLocationsBeginInfoEXT;
107041 
107042     static const bool                                  allowDuplicate = false;
107043     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
107044 
107045 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
107046     VULKAN_HPP_CONSTEXPR
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107047       RenderPassSampleLocationsBeginInfoEXT( uint32_t                                                   attachmentInitialSampleLocationsCount_ = {},
107048                                              const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations_     = {},
107049                                              uint32_t                                                   postSubpassSampleLocationsCount_       = {},
107050                                              const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT *    pPostSubpassSampleLocations_           = {},
107051                                              const void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
107052       : pNext{ pNext_ }
107053       , attachmentInitialSampleLocationsCount{ attachmentInitialSampleLocationsCount_ }
107054       , pAttachmentInitialSampleLocations{ pAttachmentInitialSampleLocations_ }
107055       , postSubpassSampleLocationsCount{ postSubpassSampleLocationsCount_ }
107056       , pPostSubpassSampleLocations{ pPostSubpassSampleLocations_ }
107057     {
107058     }
107059 
107060     VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107061 
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107062     RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
107063       : RenderPassSampleLocationsBeginInfoEXT( *reinterpret_cast<RenderPassSampleLocationsBeginInfoEXT const *>( &rhs ) )
107064     {
107065     }
107066 
107067 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107068     RenderPassSampleLocationsBeginInfoEXT(
107069       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT> const & attachmentInitialSampleLocations_,
107070       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT> const &    postSubpassSampleLocations_ = {},
107071       const void *                                                                                                    pNext_                      = nullptr )
107072       : pNext( pNext_ )
107073       , attachmentInitialSampleLocationsCount( static_cast<uint32_t>( attachmentInitialSampleLocations_.size() ) )
107074       , pAttachmentInitialSampleLocations( attachmentInitialSampleLocations_.data() )
107075       , postSubpassSampleLocationsCount( static_cast<uint32_t>( postSubpassSampleLocations_.size() ) )
107076       , pPostSubpassSampleLocations( postSubpassSampleLocations_.data() )
107077     {
107078     }
107079 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
107080 
107081     RenderPassSampleLocationsBeginInfoEXT & operator=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107082 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107083 
operator =VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107084     RenderPassSampleLocationsBeginInfoEXT & operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
107085     {
107086       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT const *>( &rhs );
107087       return *this;
107088     }
107089 
107090 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107091     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107092     {
107093       pNext = pNext_;
107094       return *this;
107095     }
107096 
107097     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT &
setAttachmentInitialSampleLocationsCountVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107098       setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
107099     {
107100       attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
107101       return *this;
107102     }
107103 
107104     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT &
setPAttachmentInitialSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107105       setPAttachmentInitialSampleLocations( const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations_ ) VULKAN_HPP_NOEXCEPT
107106     {
107107       pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
107108       return *this;
107109     }
107110 
107111 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentInitialSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107112     RenderPassSampleLocationsBeginInfoEXT & setAttachmentInitialSampleLocations(
107113       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT> const & attachmentInitialSampleLocations_ )
107114       VULKAN_HPP_NOEXCEPT
107115     {
107116       attachmentInitialSampleLocationsCount = static_cast<uint32_t>( attachmentInitialSampleLocations_.size() );
107117       pAttachmentInitialSampleLocations     = attachmentInitialSampleLocations_.data();
107118       return *this;
107119     }
107120 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
107121 
107122     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT &
setPostSubpassSampleLocationsCountVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107123       setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
107124     {
107125       postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
107126       return *this;
107127     }
107128 
107129     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT &
setPPostSubpassSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107130       setPPostSubpassSampleLocations( const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * pPostSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT
107131     {
107132       pPostSubpassSampleLocations = pPostSubpassSampleLocations_;
107133       return *this;
107134     }
107135 
107136 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPostSubpassSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107137     RenderPassSampleLocationsBeginInfoEXT & setPostSubpassSampleLocations(
107138       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT> const & postSubpassSampleLocations_ )
107139       VULKAN_HPP_NOEXCEPT
107140     {
107141       postSubpassSampleLocationsCount = static_cast<uint32_t>( postSubpassSampleLocations_.size() );
107142       pPostSubpassSampleLocations     = postSubpassSampleLocations_.data();
107143       return *this;
107144     }
107145 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
107146 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107147 
operator VkRenderPassSampleLocationsBeginInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107148     operator VkRenderPassSampleLocationsBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT
107149     {
107150       return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT *>( this );
107151     }
107152 
operator VkRenderPassSampleLocationsBeginInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107153     operator VkRenderPassSampleLocationsBeginInfoEXT &() VULKAN_HPP_NOEXCEPT
107154     {
107155       return *reinterpret_cast<VkRenderPassSampleLocationsBeginInfoEXT *>( this );
107156     }
107157 
107158 #if defined( VULKAN_HPP_USE_REFLECT )
107159 #  if 14 <= VULKAN_HPP_CPP_VERSION
107160     auto
107161 #  else
107162     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
107163                const void * const &,
107164                uint32_t const &,
107165                const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * const &,
107166                uint32_t const &,
107167                const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * const &>
107168 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107169       reflect() const VULKAN_HPP_NOEXCEPT
107170     {
107171       return std::tie(
107172         sType, pNext, attachmentInitialSampleLocationsCount, pAttachmentInitialSampleLocations, postSubpassSampleLocationsCount, pPostSubpassSampleLocations );
107173     }
107174 #endif
107175 
107176 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107177     auto operator<=>( RenderPassSampleLocationsBeginInfoEXT const & ) const = default;
107178 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107179     bool operator==( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
107180     {
107181 #  if defined( VULKAN_HPP_USE_REFLECT )
107182       return this->reflect() == rhs.reflect();
107183 #  else
107184       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount ) &&
107185              ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations ) &&
107186              ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount ) && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations );
107187 #  endif
107188     }
107189 
operator !=VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT107190     bool operator!=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
107191     {
107192       return !operator==( rhs );
107193     }
107194 #endif
107195 
107196   public:
107197     VULKAN_HPP_NAMESPACE::StructureType                        sType                                 = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
107198     const void *                                               pNext                                 = {};
107199     uint32_t                                                   attachmentInitialSampleLocationsCount = {};
107200     const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations     = {};
107201     uint32_t                                                   postSubpassSampleLocationsCount       = {};
107202     const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT *    pPostSubpassSampleLocations           = {};
107203   };
107204 
107205   template <>
107206   struct CppType<StructureType, StructureType::eRenderPassSampleLocationsBeginInfoEXT>
107207   {
107208     using Type = RenderPassSampleLocationsBeginInfoEXT;
107209   };
107210 
107211   struct RenderPassStripeInfoARM
107212   {
107213     using NativeType = VkRenderPassStripeInfoARM;
107214 
107215     static const bool                                  allowDuplicate = false;
107216     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassStripeInfoARM;
107217 
107218 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassStripeInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM107219     VULKAN_HPP_CONSTEXPR RenderPassStripeInfoARM( VULKAN_HPP_NAMESPACE::Rect2D stripeArea_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
107220       : pNext{ pNext_ }
107221       , stripeArea{ stripeArea_ }
107222     {
107223     }
107224 
107225     VULKAN_HPP_CONSTEXPR RenderPassStripeInfoARM( RenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107226 
RenderPassStripeInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM107227     RenderPassStripeInfoARM( VkRenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
107228       : RenderPassStripeInfoARM( *reinterpret_cast<RenderPassStripeInfoARM const *>( &rhs ) )
107229     {
107230     }
107231 
107232     RenderPassStripeInfoARM & operator=( RenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107233 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107234 
operator =VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM107235     RenderPassStripeInfoARM & operator=( VkRenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
107236     {
107237       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM const *>( &rhs );
107238       return *this;
107239     }
107240 
107241 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM107242     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeInfoARM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107243     {
107244       pNext = pNext_;
107245       return *this;
107246     }
107247 
setStripeAreaVULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM107248     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeInfoARM & setStripeArea( VULKAN_HPP_NAMESPACE::Rect2D const & stripeArea_ ) VULKAN_HPP_NOEXCEPT
107249     {
107250       stripeArea = stripeArea_;
107251       return *this;
107252     }
107253 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107254 
operator VkRenderPassStripeInfoARM const&VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM107255     operator VkRenderPassStripeInfoARM const &() const VULKAN_HPP_NOEXCEPT
107256     {
107257       return *reinterpret_cast<const VkRenderPassStripeInfoARM *>( this );
107258     }
107259 
operator VkRenderPassStripeInfoARM&VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM107260     operator VkRenderPassStripeInfoARM &() VULKAN_HPP_NOEXCEPT
107261     {
107262       return *reinterpret_cast<VkRenderPassStripeInfoARM *>( this );
107263     }
107264 
107265 #if defined( VULKAN_HPP_USE_REFLECT )
107266 #  if 14 <= VULKAN_HPP_CPP_VERSION
107267     auto
107268 #  else
107269     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Rect2D const &>
107270 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM107271       reflect() const VULKAN_HPP_NOEXCEPT
107272     {
107273       return std::tie( sType, pNext, stripeArea );
107274     }
107275 #endif
107276 
107277 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107278     auto operator<=>( RenderPassStripeInfoARM const & ) const = default;
107279 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM107280     bool operator==( RenderPassStripeInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
107281     {
107282 #  if defined( VULKAN_HPP_USE_REFLECT )
107283       return this->reflect() == rhs.reflect();
107284 #  else
107285       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeArea == rhs.stripeArea );
107286 #  endif
107287     }
107288 
operator !=VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM107289     bool operator!=( RenderPassStripeInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
107290     {
107291       return !operator==( rhs );
107292     }
107293 #endif
107294 
107295   public:
107296     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eRenderPassStripeInfoARM;
107297     const void *                        pNext      = {};
107298     VULKAN_HPP_NAMESPACE::Rect2D        stripeArea = {};
107299   };
107300 
107301   template <>
107302   struct CppType<StructureType, StructureType::eRenderPassStripeInfoARM>
107303   {
107304     using Type = RenderPassStripeInfoARM;
107305   };
107306 
107307   struct RenderPassStripeBeginInfoARM
107308   {
107309     using NativeType = VkRenderPassStripeBeginInfoARM;
107310 
107311     static const bool                                  allowDuplicate = false;
107312     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassStripeBeginInfoARM;
107313 
107314 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassStripeBeginInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107315     VULKAN_HPP_CONSTEXPR RenderPassStripeBeginInfoARM( uint32_t                                              stripeInfoCount_ = {},
107316                                                        const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * pStripeInfos_    = {},
107317                                                        const void *                                          pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
107318       : pNext{ pNext_ }
107319       , stripeInfoCount{ stripeInfoCount_ }
107320       , pStripeInfos{ pStripeInfos_ }
107321     {
107322     }
107323 
107324     VULKAN_HPP_CONSTEXPR RenderPassStripeBeginInfoARM( RenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107325 
RenderPassStripeBeginInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107326     RenderPassStripeBeginInfoARM( VkRenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
107327       : RenderPassStripeBeginInfoARM( *reinterpret_cast<RenderPassStripeBeginInfoARM const *>( &rhs ) )
107328     {
107329     }
107330 
107331 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassStripeBeginInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107332     RenderPassStripeBeginInfoARM( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM> const & stripeInfos_,
107333                                   const void *                                                                                               pNext_ = nullptr )
107334       : pNext( pNext_ ), stripeInfoCount( static_cast<uint32_t>( stripeInfos_.size() ) ), pStripeInfos( stripeInfos_.data() )
107335     {
107336     }
107337 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
107338 
107339     RenderPassStripeBeginInfoARM & operator=( RenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107340 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107341 
operator =VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107342     RenderPassStripeBeginInfoARM & operator=( VkRenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
107343     {
107344       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM const *>( &rhs );
107345       return *this;
107346     }
107347 
107348 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107349     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107350     {
107351       pNext = pNext_;
107352       return *this;
107353     }
107354 
setStripeInfoCountVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107355     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM & setStripeInfoCount( uint32_t stripeInfoCount_ ) VULKAN_HPP_NOEXCEPT
107356     {
107357       stripeInfoCount = stripeInfoCount_;
107358       return *this;
107359     }
107360 
107361     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM &
setPStripeInfosVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107362       setPStripeInfos( const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * pStripeInfos_ ) VULKAN_HPP_NOEXCEPT
107363     {
107364       pStripeInfos = pStripeInfos_;
107365       return *this;
107366     }
107367 
107368 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStripeInfosVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107369     RenderPassStripeBeginInfoARM & setStripeInfos(
107370       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM> const & stripeInfos_ ) VULKAN_HPP_NOEXCEPT
107371     {
107372       stripeInfoCount = static_cast<uint32_t>( stripeInfos_.size() );
107373       pStripeInfos    = stripeInfos_.data();
107374       return *this;
107375     }
107376 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
107377 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107378 
operator VkRenderPassStripeBeginInfoARM const&VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107379     operator VkRenderPassStripeBeginInfoARM const &() const VULKAN_HPP_NOEXCEPT
107380     {
107381       return *reinterpret_cast<const VkRenderPassStripeBeginInfoARM *>( this );
107382     }
107383 
operator VkRenderPassStripeBeginInfoARM&VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107384     operator VkRenderPassStripeBeginInfoARM &() VULKAN_HPP_NOEXCEPT
107385     {
107386       return *reinterpret_cast<VkRenderPassStripeBeginInfoARM *>( this );
107387     }
107388 
107389 #if defined( VULKAN_HPP_USE_REFLECT )
107390 #  if 14 <= VULKAN_HPP_CPP_VERSION
107391     auto
107392 #  else
107393     std::
107394       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * const &>
107395 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107396       reflect() const VULKAN_HPP_NOEXCEPT
107397     {
107398       return std::tie( sType, pNext, stripeInfoCount, pStripeInfos );
107399     }
107400 #endif
107401 
107402 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107403     auto operator<=>( RenderPassStripeBeginInfoARM const & ) const = default;
107404 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107405     bool operator==( RenderPassStripeBeginInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
107406     {
107407 #  if defined( VULKAN_HPP_USE_REFLECT )
107408       return this->reflect() == rhs.reflect();
107409 #  else
107410       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeInfoCount == rhs.stripeInfoCount ) && ( pStripeInfos == rhs.pStripeInfos );
107411 #  endif
107412     }
107413 
operator !=VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM107414     bool operator!=( RenderPassStripeBeginInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
107415     {
107416       return !operator==( rhs );
107417     }
107418 #endif
107419 
107420   public:
107421     VULKAN_HPP_NAMESPACE::StructureType                   sType           = StructureType::eRenderPassStripeBeginInfoARM;
107422     const void *                                          pNext           = {};
107423     uint32_t                                              stripeInfoCount = {};
107424     const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * pStripeInfos    = {};
107425   };
107426 
107427   template <>
107428   struct CppType<StructureType, StructureType::eRenderPassStripeBeginInfoARM>
107429   {
107430     using Type = RenderPassStripeBeginInfoARM;
107431   };
107432 
107433   struct SemaphoreSubmitInfo
107434   {
107435     using NativeType = VkSemaphoreSubmitInfo;
107436 
107437     static const bool                                  allowDuplicate = false;
107438     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreSubmitInfo;
107439 
107440 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107441     VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( VULKAN_HPP_NAMESPACE::Semaphore           semaphore_   = {},
107442                                               uint64_t                                  value_       = {},
107443                                               VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_   = {},
107444                                               uint32_t                                  deviceIndex_ = {},
107445                                               const void *                              pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
107446       : pNext{ pNext_ }
107447       , semaphore{ semaphore_ }
107448       , value{ value_ }
107449       , stageMask{ stageMask_ }
107450       , deviceIndex{ deviceIndex_ }
107451     {
107452     }
107453 
107454     VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107455 
SemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107456     SemaphoreSubmitInfo( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreSubmitInfo( *reinterpret_cast<SemaphoreSubmitInfo const *>( &rhs ) )
107457     {
107458     }
107459 
107460     SemaphoreSubmitInfo & operator=( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107461 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107462 
operator =VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107463     SemaphoreSubmitInfo & operator=( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
107464     {
107465       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo const *>( &rhs );
107466       return *this;
107467     }
107468 
107469 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107470     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107471     {
107472       pNext = pNext_;
107473       return *this;
107474     }
107475 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107476     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
107477     {
107478       semaphore = semaphore_;
107479       return *this;
107480     }
107481 
setValueVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107482     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
107483     {
107484       value = value_;
107485       return *this;
107486     }
107487 
setStageMaskVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107488     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_ ) VULKAN_HPP_NOEXCEPT
107489     {
107490       stageMask = stageMask_;
107491       return *this;
107492     }
107493 
setDeviceIndexVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107494     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setDeviceIndex( uint32_t deviceIndex_ ) VULKAN_HPP_NOEXCEPT
107495     {
107496       deviceIndex = deviceIndex_;
107497       return *this;
107498     }
107499 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107500 
operator VkSemaphoreSubmitInfo const&VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107501     operator VkSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
107502     {
107503       return *reinterpret_cast<const VkSemaphoreSubmitInfo *>( this );
107504     }
107505 
operator VkSemaphoreSubmitInfo&VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107506     operator VkSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT
107507     {
107508       return *reinterpret_cast<VkSemaphoreSubmitInfo *>( this );
107509     }
107510 
107511 #if defined( VULKAN_HPP_USE_REFLECT )
107512 #  if 14 <= VULKAN_HPP_CPP_VERSION
107513     auto
107514 #  else
107515     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
107516                const void * const &,
107517                VULKAN_HPP_NAMESPACE::Semaphore const &,
107518                uint64_t const &,
107519                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
107520                uint32_t const &>
107521 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107522       reflect() const VULKAN_HPP_NOEXCEPT
107523     {
107524       return std::tie( sType, pNext, semaphore, value, stageMask, deviceIndex );
107525     }
107526 #endif
107527 
107528 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107529     auto operator<=>( SemaphoreSubmitInfo const & ) const = default;
107530 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107531     bool operator==( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
107532     {
107533 #  if defined( VULKAN_HPP_USE_REFLECT )
107534       return this->reflect() == rhs.reflect();
107535 #  else
107536       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( value == rhs.value ) && ( stageMask == rhs.stageMask ) &&
107537              ( deviceIndex == rhs.deviceIndex );
107538 #  endif
107539     }
107540 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo107541     bool operator!=( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
107542     {
107543       return !operator==( rhs );
107544     }
107545 #endif
107546 
107547   public:
107548     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eSemaphoreSubmitInfo;
107549     const void *                              pNext       = {};
107550     VULKAN_HPP_NAMESPACE::Semaphore           semaphore   = {};
107551     uint64_t                                  value       = {};
107552     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask   = {};
107553     uint32_t                                  deviceIndex = {};
107554   };
107555 
107556   template <>
107557   struct CppType<StructureType, StructureType::eSemaphoreSubmitInfo>
107558   {
107559     using Type = SemaphoreSubmitInfo;
107560   };
107561 
107562   using SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
107563 
107564   struct RenderPassStripeSubmitInfoARM
107565   {
107566     using NativeType = VkRenderPassStripeSubmitInfoARM;
107567 
107568     static const bool                                  allowDuplicate = false;
107569     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassStripeSubmitInfoARM;
107570 
107571 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassStripeSubmitInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107572     VULKAN_HPP_CONSTEXPR RenderPassStripeSubmitInfoARM( uint32_t                                          stripeSemaphoreInfoCount_ = {},
107573                                                         const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pStripeSemaphoreInfos_    = {},
107574                                                         const void *                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
107575       : pNext{ pNext_ }
107576       , stripeSemaphoreInfoCount{ stripeSemaphoreInfoCount_ }
107577       , pStripeSemaphoreInfos{ pStripeSemaphoreInfos_ }
107578     {
107579     }
107580 
107581     VULKAN_HPP_CONSTEXPR RenderPassStripeSubmitInfoARM( RenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107582 
RenderPassStripeSubmitInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107583     RenderPassStripeSubmitInfoARM( VkRenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
107584       : RenderPassStripeSubmitInfoARM( *reinterpret_cast<RenderPassStripeSubmitInfoARM const *>( &rhs ) )
107585     {
107586     }
107587 
107588 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassStripeSubmitInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107589     RenderPassStripeSubmitInfoARM( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & stripeSemaphoreInfos_,
107590                                    const void *                                                                                           pNext_ = nullptr )
107591       : pNext( pNext_ )
107592       , stripeSemaphoreInfoCount( static_cast<uint32_t>( stripeSemaphoreInfos_.size() ) )
107593       , pStripeSemaphoreInfos( stripeSemaphoreInfos_.data() )
107594     {
107595     }
107596 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
107597 
107598     RenderPassStripeSubmitInfoARM & operator=( RenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107599 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107600 
operator =VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107601     RenderPassStripeSubmitInfoARM & operator=( VkRenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
107602     {
107603       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM const *>( &rhs );
107604       return *this;
107605     }
107606 
107607 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107608     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107609     {
107610       pNext = pNext_;
107611       return *this;
107612     }
107613 
setStripeSemaphoreInfoCountVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107614     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM & setStripeSemaphoreInfoCount( uint32_t stripeSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
107615     {
107616       stripeSemaphoreInfoCount = stripeSemaphoreInfoCount_;
107617       return *this;
107618     }
107619 
107620     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM &
setPStripeSemaphoreInfosVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107621       setPStripeSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pStripeSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
107622     {
107623       pStripeSemaphoreInfos = pStripeSemaphoreInfos_;
107624       return *this;
107625     }
107626 
107627 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStripeSemaphoreInfosVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107628     RenderPassStripeSubmitInfoARM & setStripeSemaphoreInfos(
107629       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & stripeSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
107630     {
107631       stripeSemaphoreInfoCount = static_cast<uint32_t>( stripeSemaphoreInfos_.size() );
107632       pStripeSemaphoreInfos    = stripeSemaphoreInfos_.data();
107633       return *this;
107634     }
107635 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
107636 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107637 
operator VkRenderPassStripeSubmitInfoARM const&VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107638     operator VkRenderPassStripeSubmitInfoARM const &() const VULKAN_HPP_NOEXCEPT
107639     {
107640       return *reinterpret_cast<const VkRenderPassStripeSubmitInfoARM *>( this );
107641     }
107642 
operator VkRenderPassStripeSubmitInfoARM&VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107643     operator VkRenderPassStripeSubmitInfoARM &() VULKAN_HPP_NOEXCEPT
107644     {
107645       return *reinterpret_cast<VkRenderPassStripeSubmitInfoARM *>( this );
107646     }
107647 
107648 #if defined( VULKAN_HPP_USE_REFLECT )
107649 #  if 14 <= VULKAN_HPP_CPP_VERSION
107650     auto
107651 #  else
107652     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * const &>
107653 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107654       reflect() const VULKAN_HPP_NOEXCEPT
107655     {
107656       return std::tie( sType, pNext, stripeSemaphoreInfoCount, pStripeSemaphoreInfos );
107657     }
107658 #endif
107659 
107660 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107661     auto operator<=>( RenderPassStripeSubmitInfoARM const & ) const = default;
107662 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107663     bool operator==( RenderPassStripeSubmitInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
107664     {
107665 #  if defined( VULKAN_HPP_USE_REFLECT )
107666       return this->reflect() == rhs.reflect();
107667 #  else
107668       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeSemaphoreInfoCount == rhs.stripeSemaphoreInfoCount ) &&
107669              ( pStripeSemaphoreInfos == rhs.pStripeSemaphoreInfos );
107670 #  endif
107671     }
107672 
operator !=VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM107673     bool operator!=( RenderPassStripeSubmitInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
107674     {
107675       return !operator==( rhs );
107676     }
107677 #endif
107678 
107679   public:
107680     VULKAN_HPP_NAMESPACE::StructureType               sType                    = StructureType::eRenderPassStripeSubmitInfoARM;
107681     const void *                                      pNext                    = {};
107682     uint32_t                                          stripeSemaphoreInfoCount = {};
107683     const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pStripeSemaphoreInfos    = {};
107684   };
107685 
107686   template <>
107687   struct CppType<StructureType, StructureType::eRenderPassStripeSubmitInfoARM>
107688   {
107689     using Type = RenderPassStripeSubmitInfoARM;
107690   };
107691 
107692   struct RenderPassSubpassFeedbackInfoEXT
107693   {
107694     using NativeType = VkRenderPassSubpassFeedbackInfoEXT;
107695 
107696 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
107697     VULKAN_HPP_CONSTEXPR_14
RenderPassSubpassFeedbackInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT107698       RenderPassSubpassFeedbackInfoEXT( VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT subpassMergeStatus_ = VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT::eMerged,
107699                                         std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_  = {},
107700                                         uint32_t                                          postMergeIndex_ = {} ) VULKAN_HPP_NOEXCEPT
107701       : subpassMergeStatus{ subpassMergeStatus_ }
107702       , description{ description_ }
107703       , postMergeIndex{ postMergeIndex_ }
107704     {
107705     }
107706 
107707     VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackInfoEXT( RenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107708 
RenderPassSubpassFeedbackInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT107709     RenderPassSubpassFeedbackInfoEXT( VkRenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
107710       : RenderPassSubpassFeedbackInfoEXT( *reinterpret_cast<RenderPassSubpassFeedbackInfoEXT const *>( &rhs ) )
107711     {
107712     }
107713 
107714     RenderPassSubpassFeedbackInfoEXT & operator=( RenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107715 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107716 
operator =VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT107717     RenderPassSubpassFeedbackInfoEXT & operator=( VkRenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
107718     {
107719       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT const *>( &rhs );
107720       return *this;
107721     }
107722 
operator VkRenderPassSubpassFeedbackInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT107723     operator VkRenderPassSubpassFeedbackInfoEXT const &() const VULKAN_HPP_NOEXCEPT
107724     {
107725       return *reinterpret_cast<const VkRenderPassSubpassFeedbackInfoEXT *>( this );
107726     }
107727 
operator VkRenderPassSubpassFeedbackInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT107728     operator VkRenderPassSubpassFeedbackInfoEXT &() VULKAN_HPP_NOEXCEPT
107729     {
107730       return *reinterpret_cast<VkRenderPassSubpassFeedbackInfoEXT *>( this );
107731     }
107732 
107733 #if defined( VULKAN_HPP_USE_REFLECT )
107734 #  if 14 <= VULKAN_HPP_CPP_VERSION
107735     auto
107736 #  else
107737     std::
107738       tuple<VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &, uint32_t const &>
107739 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT107740       reflect() const VULKAN_HPP_NOEXCEPT
107741     {
107742       return std::tie( subpassMergeStatus, description, postMergeIndex );
107743     }
107744 #endif
107745 
107746 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT107747     std::strong_ordering operator<=>( RenderPassSubpassFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
107748     {
107749       if ( auto cmp = subpassMergeStatus <=> rhs.subpassMergeStatus; cmp != 0 )
107750         return cmp;
107751       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
107752         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
107753       if ( auto cmp = postMergeIndex <=> rhs.postMergeIndex; cmp != 0 )
107754         return cmp;
107755 
107756       return std::strong_ordering::equivalent;
107757     }
107758 #endif
107759 
operator ==VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT107760     bool operator==( RenderPassSubpassFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
107761     {
107762       return ( subpassMergeStatus == rhs.subpassMergeStatus ) && ( strcmp( description, rhs.description ) == 0 ) && ( postMergeIndex == rhs.postMergeIndex );
107763     }
107764 
operator !=VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT107765     bool operator!=( RenderPassSubpassFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
107766     {
107767       return !operator==( rhs );
107768     }
107769 
107770   public:
107771     VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT                         subpassMergeStatus = VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT::eMerged;
107772     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description        = {};
107773     uint32_t                                                            postMergeIndex     = {};
107774   };
107775 
107776   struct RenderPassSubpassFeedbackCreateInfoEXT
107777   {
107778     using NativeType = VkRenderPassSubpassFeedbackCreateInfoEXT;
107779 
107780     static const bool                                  allowDuplicate = false;
107781     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassSubpassFeedbackCreateInfoEXT;
107782 
107783 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassSubpassFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT107784     VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT( VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT * pSubpassFeedback_ = {},
107785                                                                     const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
107786       : pNext{ pNext_ }
107787       , pSubpassFeedback{ pSubpassFeedback_ }
107788     {
107789     }
107790 
107791     VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107792 
RenderPassSubpassFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT107793     RenderPassSubpassFeedbackCreateInfoEXT( VkRenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
107794       : RenderPassSubpassFeedbackCreateInfoEXT( *reinterpret_cast<RenderPassSubpassFeedbackCreateInfoEXT const *>( &rhs ) )
107795     {
107796     }
107797 
107798     RenderPassSubpassFeedbackCreateInfoEXT & operator=( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107799 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107800 
operator =VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT107801     RenderPassSubpassFeedbackCreateInfoEXT & operator=( VkRenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
107802     {
107803       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT const *>( &rhs );
107804       return *this;
107805     }
107806 
107807 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT107808     VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107809     {
107810       pNext = pNext_;
107811       return *this;
107812     }
107813 
107814     VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT &
setPSubpassFeedbackVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT107815       setPSubpassFeedback( VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT * pSubpassFeedback_ ) VULKAN_HPP_NOEXCEPT
107816     {
107817       pSubpassFeedback = pSubpassFeedback_;
107818       return *this;
107819     }
107820 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107821 
operator VkRenderPassSubpassFeedbackCreateInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT107822     operator VkRenderPassSubpassFeedbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
107823     {
107824       return *reinterpret_cast<const VkRenderPassSubpassFeedbackCreateInfoEXT *>( this );
107825     }
107826 
operator VkRenderPassSubpassFeedbackCreateInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT107827     operator VkRenderPassSubpassFeedbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
107828     {
107829       return *reinterpret_cast<VkRenderPassSubpassFeedbackCreateInfoEXT *>( this );
107830     }
107831 
107832 #if defined( VULKAN_HPP_USE_REFLECT )
107833 #  if 14 <= VULKAN_HPP_CPP_VERSION
107834     auto
107835 #  else
107836     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT * const &>
107837 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT107838       reflect() const VULKAN_HPP_NOEXCEPT
107839     {
107840       return std::tie( sType, pNext, pSubpassFeedback );
107841     }
107842 #endif
107843 
107844 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107845     auto operator<=>( RenderPassSubpassFeedbackCreateInfoEXT const & ) const = default;
107846 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT107847     bool operator==( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
107848     {
107849 #  if defined( VULKAN_HPP_USE_REFLECT )
107850       return this->reflect() == rhs.reflect();
107851 #  else
107852       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pSubpassFeedback == rhs.pSubpassFeedback );
107853 #  endif
107854     }
107855 
operator !=VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT107856     bool operator!=( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
107857     {
107858       return !operator==( rhs );
107859     }
107860 #endif
107861 
107862   public:
107863     VULKAN_HPP_NAMESPACE::StructureType                      sType            = StructureType::eRenderPassSubpassFeedbackCreateInfoEXT;
107864     const void *                                             pNext            = {};
107865     VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT * pSubpassFeedback = {};
107866   };
107867 
107868   template <>
107869   struct CppType<StructureType, StructureType::eRenderPassSubpassFeedbackCreateInfoEXT>
107870   {
107871     using Type = RenderPassSubpassFeedbackCreateInfoEXT;
107872   };
107873 
107874   struct RenderPassTransformBeginInfoQCOM
107875   {
107876     using NativeType = VkRenderPassTransformBeginInfoQCOM;
107877 
107878     static const bool                                  allowDuplicate = false;
107879     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassTransformBeginInfoQCOM;
107880 
107881 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassTransformBeginInfoQCOMVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM107882     VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM(
107883       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
107884       void *                                            pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
107885       : pNext{ pNext_ }
107886       , transform{ transform_ }
107887     {
107888     }
107889 
107890     VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107891 
RenderPassTransformBeginInfoQCOMVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM107892     RenderPassTransformBeginInfoQCOM( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
107893       : RenderPassTransformBeginInfoQCOM( *reinterpret_cast<RenderPassTransformBeginInfoQCOM const *>( &rhs ) )
107894     {
107895     }
107896 
107897     RenderPassTransformBeginInfoQCOM & operator=( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107898 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107899 
operator =VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM107900     RenderPassTransformBeginInfoQCOM & operator=( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
107901     {
107902       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM const *>( &rhs );
107903       return *this;
107904     }
107905 
107906 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM107907     VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
107908     {
107909       pNext = pNext_;
107910       return *this;
107911     }
107912 
setTransformVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM107913     VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
107914     {
107915       transform = transform_;
107916       return *this;
107917     }
107918 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107919 
operator VkRenderPassTransformBeginInfoQCOM const&VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM107920     operator VkRenderPassTransformBeginInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
107921     {
107922       return *reinterpret_cast<const VkRenderPassTransformBeginInfoQCOM *>( this );
107923     }
107924 
operator VkRenderPassTransformBeginInfoQCOM&VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM107925     operator VkRenderPassTransformBeginInfoQCOM &() VULKAN_HPP_NOEXCEPT
107926     {
107927       return *reinterpret_cast<VkRenderPassTransformBeginInfoQCOM *>( this );
107928     }
107929 
107930 #if defined( VULKAN_HPP_USE_REFLECT )
107931 #  if 14 <= VULKAN_HPP_CPP_VERSION
107932     auto
107933 #  else
107934     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &>
107935 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM107936       reflect() const VULKAN_HPP_NOEXCEPT
107937     {
107938       return std::tie( sType, pNext, transform );
107939     }
107940 #endif
107941 
107942 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107943     auto operator<=>( RenderPassTransformBeginInfoQCOM const & ) const = default;
107944 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM107945     bool operator==( RenderPassTransformBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
107946     {
107947 #  if defined( VULKAN_HPP_USE_REFLECT )
107948       return this->reflect() == rhs.reflect();
107949 #  else
107950       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform );
107951 #  endif
107952     }
107953 
operator !=VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM107954     bool operator!=( RenderPassTransformBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
107955     {
107956       return !operator==( rhs );
107957     }
107958 #endif
107959 
107960   public:
107961     VULKAN_HPP_NAMESPACE::StructureType               sType     = StructureType::eRenderPassTransformBeginInfoQCOM;
107962     void *                                            pNext     = {};
107963     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
107964   };
107965 
107966   template <>
107967   struct CppType<StructureType, StructureType::eRenderPassTransformBeginInfoQCOM>
107968   {
107969     using Type = RenderPassTransformBeginInfoQCOM;
107970   };
107971 
107972   struct RenderingAreaInfo
107973   {
107974     using NativeType = VkRenderingAreaInfo;
107975 
107976     static const bool                                  allowDuplicate = false;
107977     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingAreaInfo;
107978 
107979 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingAreaInfoVULKAN_HPP_NAMESPACE::RenderingAreaInfo107980     VULKAN_HPP_CONSTEXPR RenderingAreaInfo( uint32_t                             viewMask_                = {},
107981                                             uint32_t                             colorAttachmentCount_    = {},
107982                                             const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ = {},
107983                                             VULKAN_HPP_NAMESPACE::Format         depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
107984                                             VULKAN_HPP_NAMESPACE::Format         stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
107985                                             const void *                         pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
107986       : pNext{ pNext_ }
107987       , viewMask{ viewMask_ }
107988       , colorAttachmentCount{ colorAttachmentCount_ }
107989       , pColorAttachmentFormats{ pColorAttachmentFormats_ }
107990       , depthAttachmentFormat{ depthAttachmentFormat_ }
107991       , stencilAttachmentFormat{ stencilAttachmentFormat_ }
107992     {
107993     }
107994 
107995     VULKAN_HPP_CONSTEXPR RenderingAreaInfo( RenderingAreaInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107996 
RenderingAreaInfoVULKAN_HPP_NAMESPACE::RenderingAreaInfo107997     RenderingAreaInfo( VkRenderingAreaInfo const & rhs ) VULKAN_HPP_NOEXCEPT : RenderingAreaInfo( *reinterpret_cast<RenderingAreaInfo const *>( &rhs ) ) {}
107998 
107999 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderingAreaInfoVULKAN_HPP_NAMESPACE::RenderingAreaInfo108000     RenderingAreaInfo( uint32_t                                                                                  viewMask_,
108001                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_,
108002                        VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
108003                        VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
108004                        const void *                 pNext_                   = nullptr )
108005       : pNext( pNext_ )
108006       , viewMask( viewMask_ )
108007       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentFormats_.size() ) )
108008       , pColorAttachmentFormats( colorAttachmentFormats_.data() )
108009       , depthAttachmentFormat( depthAttachmentFormat_ )
108010       , stencilAttachmentFormat( stencilAttachmentFormat_ )
108011     {
108012     }
108013 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108014 
108015     RenderingAreaInfo & operator=( RenderingAreaInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108016 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108017 
operator =VULKAN_HPP_NAMESPACE::RenderingAreaInfo108018     RenderingAreaInfo & operator=( VkRenderingAreaInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108019     {
108020       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingAreaInfo const *>( &rhs );
108021       return *this;
108022     }
108023 
108024 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingAreaInfo108025     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108026     {
108027       pNext = pNext_;
108028       return *this;
108029     }
108030 
setViewMaskVULKAN_HPP_NAMESPACE::RenderingAreaInfo108031     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
108032     {
108033       viewMask = viewMask_;
108034       return *this;
108035     }
108036 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::RenderingAreaInfo108037     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
108038     {
108039       colorAttachmentCount = colorAttachmentCount_;
108040       return *this;
108041     }
108042 
setPColorAttachmentFormatsVULKAN_HPP_NAMESPACE::RenderingAreaInfo108043     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
108044     {
108045       pColorAttachmentFormats = pColorAttachmentFormats_;
108046       return *this;
108047     }
108048 
108049 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentFormatsVULKAN_HPP_NAMESPACE::RenderingAreaInfo108050     RenderingAreaInfo & setColorAttachmentFormats(
108051       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
108052     {
108053       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentFormats_.size() );
108054       pColorAttachmentFormats = colorAttachmentFormats_.data();
108055       return *this;
108056     }
108057 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108058 
setDepthAttachmentFormatVULKAN_HPP_NAMESPACE::RenderingAreaInfo108059     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
108060     {
108061       depthAttachmentFormat = depthAttachmentFormat_;
108062       return *this;
108063     }
108064 
setStencilAttachmentFormatVULKAN_HPP_NAMESPACE::RenderingAreaInfo108065     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
108066     {
108067       stencilAttachmentFormat = stencilAttachmentFormat_;
108068       return *this;
108069     }
108070 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108071 
operator VkRenderingAreaInfo const&VULKAN_HPP_NAMESPACE::RenderingAreaInfo108072     operator VkRenderingAreaInfo const &() const VULKAN_HPP_NOEXCEPT
108073     {
108074       return *reinterpret_cast<const VkRenderingAreaInfo *>( this );
108075     }
108076 
operator VkRenderingAreaInfo&VULKAN_HPP_NAMESPACE::RenderingAreaInfo108077     operator VkRenderingAreaInfo &() VULKAN_HPP_NOEXCEPT
108078     {
108079       return *reinterpret_cast<VkRenderingAreaInfo *>( this );
108080     }
108081 
108082 #if defined( VULKAN_HPP_USE_REFLECT )
108083 #  if 14 <= VULKAN_HPP_CPP_VERSION
108084     auto
108085 #  else
108086     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108087                const void * const &,
108088                uint32_t const &,
108089                uint32_t const &,
108090                const VULKAN_HPP_NAMESPACE::Format * const &,
108091                VULKAN_HPP_NAMESPACE::Format const &,
108092                VULKAN_HPP_NAMESPACE::Format const &>
108093 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingAreaInfo108094       reflect() const VULKAN_HPP_NOEXCEPT
108095     {
108096       return std::tie( sType, pNext, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat );
108097     }
108098 #endif
108099 
108100 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108101     auto operator<=>( RenderingAreaInfo const & ) const = default;
108102 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingAreaInfo108103     bool operator==( RenderingAreaInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108104     {
108105 #  if defined( VULKAN_HPP_USE_REFLECT )
108106       return this->reflect() == rhs.reflect();
108107 #  else
108108       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewMask == rhs.viewMask ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
108109              ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) && ( depthAttachmentFormat == rhs.depthAttachmentFormat ) &&
108110              ( stencilAttachmentFormat == rhs.stencilAttachmentFormat );
108111 #  endif
108112     }
108113 
operator !=VULKAN_HPP_NAMESPACE::RenderingAreaInfo108114     bool operator!=( RenderingAreaInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108115     {
108116       return !operator==( rhs );
108117     }
108118 #endif
108119 
108120   public:
108121     VULKAN_HPP_NAMESPACE::StructureType  sType                   = StructureType::eRenderingAreaInfo;
108122     const void *                         pNext                   = {};
108123     uint32_t                             viewMask                = {};
108124     uint32_t                             colorAttachmentCount    = {};
108125     const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats = {};
108126     VULKAN_HPP_NAMESPACE::Format         depthAttachmentFormat   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
108127     VULKAN_HPP_NAMESPACE::Format         stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
108128   };
108129 
108130   template <>
108131   struct CppType<StructureType, StructureType::eRenderingAreaInfo>
108132   {
108133     using Type = RenderingAreaInfo;
108134   };
108135 
108136   using RenderingAreaInfoKHR = RenderingAreaInfo;
108137 
108138   struct RenderingAttachmentInfo
108139   {
108140     using NativeType = VkRenderingAttachmentInfo;
108141 
108142     static const bool                                  allowDuplicate = false;
108143     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingAttachmentInfo;
108144 
108145 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingAttachmentInfoVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108146     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo( VULKAN_HPP_NAMESPACE::ImageView           imageView_   = {},
108147                                                      VULKAN_HPP_NAMESPACE::ImageLayout         imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
108148                                                      VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone,
108149                                                      VULKAN_HPP_NAMESPACE::ImageView           resolveImageView_ = {},
108150                                                      VULKAN_HPP_NAMESPACE::ImageLayout      resolveImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
108151                                                      VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_             = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
108152                                                      VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_    = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
108153                                                      VULKAN_HPP_NAMESPACE::ClearValue        clearValue_ = {},
108154                                                      const void *                            pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
108155       : pNext{ pNext_ }
108156       , imageView{ imageView_ }
108157       , imageLayout{ imageLayout_ }
108158       , resolveMode{ resolveMode_ }
108159       , resolveImageView{ resolveImageView_ }
108160       , resolveImageLayout{ resolveImageLayout_ }
108161       , loadOp{ loadOp_ }
108162       , storeOp{ storeOp_ }
108163       , clearValue{ clearValue_ }
108164     {
108165     }
108166 
108167     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo( RenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108168 
RenderingAttachmentInfoVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108169     RenderingAttachmentInfo( VkRenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108170       : RenderingAttachmentInfo( *reinterpret_cast<RenderingAttachmentInfo const *>( &rhs ) )
108171     {
108172     }
108173 
108174     RenderingAttachmentInfo & operator=( RenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108175 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108176 
operator =VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108177     RenderingAttachmentInfo & operator=( VkRenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108178     {
108179       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo const *>( &rhs );
108180       return *this;
108181     }
108182 
108183 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108184     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108185     {
108186       pNext = pNext_;
108187       return *this;
108188     }
108189 
setImageViewVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108190     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
108191     {
108192       imageView = imageView_;
108193       return *this;
108194     }
108195 
setImageLayoutVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108196     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
108197     {
108198       imageLayout = imageLayout_;
108199       return *this;
108200     }
108201 
setResolveModeVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108202     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode_ ) VULKAN_HPP_NOEXCEPT
108203     {
108204       resolveMode = resolveMode_;
108205       return *this;
108206     }
108207 
setResolveImageViewVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108208     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveImageView( VULKAN_HPP_NAMESPACE::ImageView resolveImageView_ ) VULKAN_HPP_NOEXCEPT
108209     {
108210       resolveImageView = resolveImageView_;
108211       return *this;
108212     }
108213 
setResolveImageLayoutVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108214     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout resolveImageLayout_ ) VULKAN_HPP_NOEXCEPT
108215     {
108216       resolveImageLayout = resolveImageLayout_;
108217       return *this;
108218     }
108219 
setLoadOpVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108220     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
108221     {
108222       loadOp = loadOp_;
108223       return *this;
108224     }
108225 
setStoreOpVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108226     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
108227     {
108228       storeOp = storeOp_;
108229       return *this;
108230     }
108231 
setClearValueVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108232     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT
108233     {
108234       clearValue = clearValue_;
108235       return *this;
108236     }
108237 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108238 
operator VkRenderingAttachmentInfo const&VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108239     operator VkRenderingAttachmentInfo const &() const VULKAN_HPP_NOEXCEPT
108240     {
108241       return *reinterpret_cast<const VkRenderingAttachmentInfo *>( this );
108242     }
108243 
operator VkRenderingAttachmentInfo&VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108244     operator VkRenderingAttachmentInfo &() VULKAN_HPP_NOEXCEPT
108245     {
108246       return *reinterpret_cast<VkRenderingAttachmentInfo *>( this );
108247     }
108248 
108249 #if defined( VULKAN_HPP_USE_REFLECT )
108250 #  if 14 <= VULKAN_HPP_CPP_VERSION
108251     auto
108252 #  else
108253     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108254                const void * const &,
108255                VULKAN_HPP_NAMESPACE::ImageView const &,
108256                VULKAN_HPP_NAMESPACE::ImageLayout const &,
108257                VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &,
108258                VULKAN_HPP_NAMESPACE::ImageView const &,
108259                VULKAN_HPP_NAMESPACE::ImageLayout const &,
108260                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
108261                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
108262                VULKAN_HPP_NAMESPACE::ClearValue const &>
108263 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo108264       reflect() const VULKAN_HPP_NOEXCEPT
108265     {
108266       return std::tie( sType, pNext, imageView, imageLayout, resolveMode, resolveImageView, resolveImageLayout, loadOp, storeOp, clearValue );
108267     }
108268 #endif
108269 
108270   public:
108271     VULKAN_HPP_NAMESPACE::StructureType       sType              = StructureType::eRenderingAttachmentInfo;
108272     const void *                              pNext              = {};
108273     VULKAN_HPP_NAMESPACE::ImageView           imageView          = {};
108274     VULKAN_HPP_NAMESPACE::ImageLayout         imageLayout        = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
108275     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode        = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
108276     VULKAN_HPP_NAMESPACE::ImageView           resolveImageView   = {};
108277     VULKAN_HPP_NAMESPACE::ImageLayout         resolveImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
108278     VULKAN_HPP_NAMESPACE::AttachmentLoadOp    loadOp             = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
108279     VULKAN_HPP_NAMESPACE::AttachmentStoreOp   storeOp            = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
108280     VULKAN_HPP_NAMESPACE::ClearValue          clearValue         = {};
108281   };
108282 
108283   template <>
108284   struct CppType<StructureType, StructureType::eRenderingAttachmentInfo>
108285   {
108286     using Type = RenderingAttachmentInfo;
108287   };
108288 
108289   using RenderingAttachmentInfoKHR = RenderingAttachmentInfo;
108290 
108291   struct RenderingAttachmentLocationInfo
108292   {
108293     using NativeType = VkRenderingAttachmentLocationInfo;
108294 
108295     static const bool                                  allowDuplicate = false;
108296     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingAttachmentLocationInfo;
108297 
108298 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingAttachmentLocationInfoVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108299     VULKAN_HPP_CONSTEXPR RenderingAttachmentLocationInfo( uint32_t         colorAttachmentCount_      = {},
108300                                                           const uint32_t * pColorAttachmentLocations_ = {},
108301                                                           const void *     pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
108302       : pNext{ pNext_ }
108303       , colorAttachmentCount{ colorAttachmentCount_ }
108304       , pColorAttachmentLocations{ pColorAttachmentLocations_ }
108305     {
108306     }
108307 
108308     VULKAN_HPP_CONSTEXPR RenderingAttachmentLocationInfo( RenderingAttachmentLocationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108309 
RenderingAttachmentLocationInfoVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108310     RenderingAttachmentLocationInfo( VkRenderingAttachmentLocationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108311       : RenderingAttachmentLocationInfo( *reinterpret_cast<RenderingAttachmentLocationInfo const *>( &rhs ) )
108312     {
108313     }
108314 
108315 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderingAttachmentLocationInfoVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108316     RenderingAttachmentLocationInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & colorAttachmentLocations_,
108317                                      const void *                                                          pNext_ = nullptr )
108318       : pNext( pNext_ )
108319       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentLocations_.size() ) )
108320       , pColorAttachmentLocations( colorAttachmentLocations_.data() )
108321     {
108322     }
108323 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108324 
108325     RenderingAttachmentLocationInfo & operator=( RenderingAttachmentLocationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108326 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108327 
operator =VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108328     RenderingAttachmentLocationInfo & operator=( VkRenderingAttachmentLocationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108329     {
108330       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo const *>( &rhs );
108331       return *this;
108332     }
108333 
108334 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108335     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108336     {
108337       pNext = pNext_;
108338       return *this;
108339     }
108340 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108341     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
108342     {
108343       colorAttachmentCount = colorAttachmentCount_;
108344       return *this;
108345     }
108346 
setPColorAttachmentLocationsVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108347     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfo & setPColorAttachmentLocations( const uint32_t * pColorAttachmentLocations_ ) VULKAN_HPP_NOEXCEPT
108348     {
108349       pColorAttachmentLocations = pColorAttachmentLocations_;
108350       return *this;
108351     }
108352 
108353 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
108354     RenderingAttachmentLocationInfo &
setColorAttachmentLocationsVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108355       setColorAttachmentLocations( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & colorAttachmentLocations_ ) VULKAN_HPP_NOEXCEPT
108356     {
108357       colorAttachmentCount      = static_cast<uint32_t>( colorAttachmentLocations_.size() );
108358       pColorAttachmentLocations = colorAttachmentLocations_.data();
108359       return *this;
108360     }
108361 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108362 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108363 
operator VkRenderingAttachmentLocationInfo const&VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108364     operator VkRenderingAttachmentLocationInfo const &() const VULKAN_HPP_NOEXCEPT
108365     {
108366       return *reinterpret_cast<const VkRenderingAttachmentLocationInfo *>( this );
108367     }
108368 
operator VkRenderingAttachmentLocationInfo&VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108369     operator VkRenderingAttachmentLocationInfo &() VULKAN_HPP_NOEXCEPT
108370     {
108371       return *reinterpret_cast<VkRenderingAttachmentLocationInfo *>( this );
108372     }
108373 
108374 #if defined( VULKAN_HPP_USE_REFLECT )
108375 #  if 14 <= VULKAN_HPP_CPP_VERSION
108376     auto
108377 #  else
108378     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &>
108379 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108380       reflect() const VULKAN_HPP_NOEXCEPT
108381     {
108382       return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentLocations );
108383     }
108384 #endif
108385 
108386 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108387     auto operator<=>( RenderingAttachmentLocationInfo const & ) const = default;
108388 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108389     bool operator==( RenderingAttachmentLocationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108390     {
108391 #  if defined( VULKAN_HPP_USE_REFLECT )
108392       return this->reflect() == rhs.reflect();
108393 #  else
108394       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
108395              ( pColorAttachmentLocations == rhs.pColorAttachmentLocations );
108396 #  endif
108397     }
108398 
operator !=VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo108399     bool operator!=( RenderingAttachmentLocationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108400     {
108401       return !operator==( rhs );
108402     }
108403 #endif
108404 
108405   public:
108406     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eRenderingAttachmentLocationInfo;
108407     const void *                        pNext                     = {};
108408     uint32_t                            colorAttachmentCount      = {};
108409     const uint32_t *                    pColorAttachmentLocations = {};
108410   };
108411 
108412   template <>
108413   struct CppType<StructureType, StructureType::eRenderingAttachmentLocationInfo>
108414   {
108415     using Type = RenderingAttachmentLocationInfo;
108416   };
108417 
108418   using RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo;
108419 
108420   struct RenderingFragmentDensityMapAttachmentInfoEXT
108421   {
108422     using NativeType = VkRenderingFragmentDensityMapAttachmentInfoEXT;
108423 
108424     static const bool                                  allowDuplicate = false;
108425     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT;
108426 
108427 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
108428     VULKAN_HPP_CONSTEXPR
RenderingFragmentDensityMapAttachmentInfoEXTVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108429       RenderingFragmentDensityMapAttachmentInfoEXT( VULKAN_HPP_NAMESPACE::ImageView   imageView_   = {},
108430                                                     VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
108431                                                     const void *                      pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
108432       : pNext{ pNext_ }
108433       , imageView{ imageView_ }
108434       , imageLayout{ imageLayout_ }
108435     {
108436     }
108437 
108438     VULKAN_HPP_CONSTEXPR RenderingFragmentDensityMapAttachmentInfoEXT( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108439 
RenderingFragmentDensityMapAttachmentInfoEXTVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108440     RenderingFragmentDensityMapAttachmentInfoEXT( VkRenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
108441       : RenderingFragmentDensityMapAttachmentInfoEXT( *reinterpret_cast<RenderingFragmentDensityMapAttachmentInfoEXT const *>( &rhs ) )
108442     {
108443     }
108444 
108445     RenderingFragmentDensityMapAttachmentInfoEXT & operator=( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108446 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108447 
operator =VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108448     RenderingFragmentDensityMapAttachmentInfoEXT & operator=( VkRenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
108449     {
108450       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT const *>( &rhs );
108451       return *this;
108452     }
108453 
108454 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108455     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108456     {
108457       pNext = pNext_;
108458       return *this;
108459     }
108460 
setImageViewVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108461     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
108462     {
108463       imageView = imageView_;
108464       return *this;
108465     }
108466 
setImageLayoutVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108467     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
108468     {
108469       imageLayout = imageLayout_;
108470       return *this;
108471     }
108472 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108473 
operator VkRenderingFragmentDensityMapAttachmentInfoEXT const&VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108474     operator VkRenderingFragmentDensityMapAttachmentInfoEXT const &() const VULKAN_HPP_NOEXCEPT
108475     {
108476       return *reinterpret_cast<const VkRenderingFragmentDensityMapAttachmentInfoEXT *>( this );
108477     }
108478 
operator VkRenderingFragmentDensityMapAttachmentInfoEXT&VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108479     operator VkRenderingFragmentDensityMapAttachmentInfoEXT &() VULKAN_HPP_NOEXCEPT
108480     {
108481       return *reinterpret_cast<VkRenderingFragmentDensityMapAttachmentInfoEXT *>( this );
108482     }
108483 
108484 #if defined( VULKAN_HPP_USE_REFLECT )
108485 #  if 14 <= VULKAN_HPP_CPP_VERSION
108486     auto
108487 #  else
108488     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108489                const void * const &,
108490                VULKAN_HPP_NAMESPACE::ImageView const &,
108491                VULKAN_HPP_NAMESPACE::ImageLayout const &>
108492 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108493       reflect() const VULKAN_HPP_NOEXCEPT
108494     {
108495       return std::tie( sType, pNext, imageView, imageLayout );
108496     }
108497 #endif
108498 
108499 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108500     auto operator<=>( RenderingFragmentDensityMapAttachmentInfoEXT const & ) const = default;
108501 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108502     bool operator==( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
108503     {
108504 #  if defined( VULKAN_HPP_USE_REFLECT )
108505       return this->reflect() == rhs.reflect();
108506 #  else
108507       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && ( imageLayout == rhs.imageLayout );
108508 #  endif
108509     }
108510 
operator !=VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT108511     bool operator!=( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
108512     {
108513       return !operator==( rhs );
108514     }
108515 #endif
108516 
108517   public:
108518     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT;
108519     const void *                        pNext       = {};
108520     VULKAN_HPP_NAMESPACE::ImageView     imageView   = {};
108521     VULKAN_HPP_NAMESPACE::ImageLayout   imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
108522   };
108523 
108524   template <>
108525   struct CppType<StructureType, StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT>
108526   {
108527     using Type = RenderingFragmentDensityMapAttachmentInfoEXT;
108528   };
108529 
108530   struct RenderingFragmentShadingRateAttachmentInfoKHR
108531   {
108532     using NativeType = VkRenderingFragmentShadingRateAttachmentInfoKHR;
108533 
108534     static const bool                                  allowDuplicate = false;
108535     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR;
108536 
108537 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
108538     VULKAN_HPP_CONSTEXPR
RenderingFragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108539       RenderingFragmentShadingRateAttachmentInfoKHR( VULKAN_HPP_NAMESPACE::ImageView   imageView_   = {},
108540                                                      VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
108541                                                      VULKAN_HPP_NAMESPACE::Extent2D    shadingRateAttachmentTexelSize_ = {},
108542                                                      const void *                      pNext_                          = nullptr ) VULKAN_HPP_NOEXCEPT
108543       : pNext{ pNext_ }
108544       , imageView{ imageView_ }
108545       , imageLayout{ imageLayout_ }
108546       , shadingRateAttachmentTexelSize{ shadingRateAttachmentTexelSize_ }
108547     {
108548     }
108549 
108550     VULKAN_HPP_CONSTEXPR
108551       RenderingFragmentShadingRateAttachmentInfoKHR( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108552 
RenderingFragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108553     RenderingFragmentShadingRateAttachmentInfoKHR( VkRenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
108554       : RenderingFragmentShadingRateAttachmentInfoKHR( *reinterpret_cast<RenderingFragmentShadingRateAttachmentInfoKHR const *>( &rhs ) )
108555     {
108556     }
108557 
108558     RenderingFragmentShadingRateAttachmentInfoKHR & operator=( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108559 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108560 
operator =VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108561     RenderingFragmentShadingRateAttachmentInfoKHR & operator=( VkRenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
108562     {
108563       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR const *>( &rhs );
108564       return *this;
108565     }
108566 
108567 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108568     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108569     {
108570       pNext = pNext_;
108571       return *this;
108572     }
108573 
setImageViewVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108574     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
108575     {
108576       imageView = imageView_;
108577       return *this;
108578     }
108579 
setImageLayoutVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108580     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
108581     {
108582       imageLayout = imageLayout_;
108583       return *this;
108584     }
108585 
108586     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR &
setShadingRateAttachmentTexelSizeVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108587       setShadingRateAttachmentTexelSize( VULKAN_HPP_NAMESPACE::Extent2D const & shadingRateAttachmentTexelSize_ ) VULKAN_HPP_NOEXCEPT
108588     {
108589       shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_;
108590       return *this;
108591     }
108592 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108593 
operator VkRenderingFragmentShadingRateAttachmentInfoKHR const&VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108594     operator VkRenderingFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
108595     {
108596       return *reinterpret_cast<const VkRenderingFragmentShadingRateAttachmentInfoKHR *>( this );
108597     }
108598 
operator VkRenderingFragmentShadingRateAttachmentInfoKHR&VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108599     operator VkRenderingFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT
108600     {
108601       return *reinterpret_cast<VkRenderingFragmentShadingRateAttachmentInfoKHR *>( this );
108602     }
108603 
108604 #if defined( VULKAN_HPP_USE_REFLECT )
108605 #  if 14 <= VULKAN_HPP_CPP_VERSION
108606     auto
108607 #  else
108608     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108609                const void * const &,
108610                VULKAN_HPP_NAMESPACE::ImageView const &,
108611                VULKAN_HPP_NAMESPACE::ImageLayout const &,
108612                VULKAN_HPP_NAMESPACE::Extent2D const &>
108613 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108614       reflect() const VULKAN_HPP_NOEXCEPT
108615     {
108616       return std::tie( sType, pNext, imageView, imageLayout, shadingRateAttachmentTexelSize );
108617     }
108618 #endif
108619 
108620 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108621     auto operator<=>( RenderingFragmentShadingRateAttachmentInfoKHR const & ) const = default;
108622 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108623     bool operator==( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
108624     {
108625 #  if defined( VULKAN_HPP_USE_REFLECT )
108626       return this->reflect() == rhs.reflect();
108627 #  else
108628       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && ( imageLayout == rhs.imageLayout ) &&
108629              ( shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize );
108630 #  endif
108631     }
108632 
operator !=VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR108633     bool operator!=( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
108634     {
108635       return !operator==( rhs );
108636     }
108637 #endif
108638 
108639   public:
108640     VULKAN_HPP_NAMESPACE::StructureType sType                          = StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR;
108641     const void *                        pNext                          = {};
108642     VULKAN_HPP_NAMESPACE::ImageView     imageView                      = {};
108643     VULKAN_HPP_NAMESPACE::ImageLayout   imageLayout                    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
108644     VULKAN_HPP_NAMESPACE::Extent2D      shadingRateAttachmentTexelSize = {};
108645   };
108646 
108647   template <>
108648   struct CppType<StructureType, StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR>
108649   {
108650     using Type = RenderingFragmentShadingRateAttachmentInfoKHR;
108651   };
108652 
108653   struct RenderingInfo
108654   {
108655     using NativeType = VkRenderingInfo;
108656 
108657     static const bool                                  allowDuplicate = false;
108658     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingInfo;
108659 
108660 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingInfoVULKAN_HPP_NAMESPACE::RenderingInfo108661     VULKAN_HPP_CONSTEXPR_14 RenderingInfo( VULKAN_HPP_NAMESPACE::RenderingFlags                  flags_                = {},
108662                                            VULKAN_HPP_NAMESPACE::Rect2D                          renderArea_           = {},
108663                                            uint32_t                                              layerCount_           = {},
108664                                            uint32_t                                              viewMask_             = {},
108665                                            uint32_t                                              colorAttachmentCount_ = {},
108666                                            const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments_    = {},
108667                                            const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment_     = {},
108668                                            const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment_   = {},
108669                                            const void *                                          pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
108670       : pNext{ pNext_ }
108671       , flags{ flags_ }
108672       , renderArea{ renderArea_ }
108673       , layerCount{ layerCount_ }
108674       , viewMask{ viewMask_ }
108675       , colorAttachmentCount{ colorAttachmentCount_ }
108676       , pColorAttachments{ pColorAttachments_ }
108677       , pDepthAttachment{ pDepthAttachment_ }
108678       , pStencilAttachment{ pStencilAttachment_ }
108679     {
108680     }
108681 
108682     VULKAN_HPP_CONSTEXPR_14 RenderingInfo( RenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108683 
RenderingInfoVULKAN_HPP_NAMESPACE::RenderingInfo108684     RenderingInfo( VkRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT : RenderingInfo( *reinterpret_cast<RenderingInfo const *>( &rhs ) ) {}
108685 
108686 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderingInfoVULKAN_HPP_NAMESPACE::RenderingInfo108687     RenderingInfo( VULKAN_HPP_NAMESPACE::RenderingFlags                                                                       flags_,
108688                    VULKAN_HPP_NAMESPACE::Rect2D                                                                               renderArea_,
108689                    uint32_t                                                                                                   layerCount_,
108690                    uint32_t                                                                                                   viewMask_,
108691                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo> const & colorAttachments_,
108692                    const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo *                                                      pDepthAttachment_   = {},
108693                    const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo *                                                      pStencilAttachment_ = {},
108694                    const void *                                                                                               pNext_              = nullptr )
108695       : pNext( pNext_ )
108696       , flags( flags_ )
108697       , renderArea( renderArea_ )
108698       , layerCount( layerCount_ )
108699       , viewMask( viewMask_ )
108700       , colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) )
108701       , pColorAttachments( colorAttachments_.data() )
108702       , pDepthAttachment( pDepthAttachment_ )
108703       , pStencilAttachment( pStencilAttachment_ )
108704     {
108705     }
108706 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108707 
108708     RenderingInfo & operator=( RenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108709 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108710 
operator =VULKAN_HPP_NAMESPACE::RenderingInfo108711     RenderingInfo & operator=( VkRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108712     {
108713       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingInfo const *>( &rhs );
108714       return *this;
108715     }
108716 
108717 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingInfo108718     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108719     {
108720       pNext = pNext_;
108721       return *this;
108722     }
108723 
setFlagsVULKAN_HPP_NAMESPACE::RenderingInfo108724     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderingFlags flags_ ) VULKAN_HPP_NOEXCEPT
108725     {
108726       flags = flags_;
108727       return *this;
108728     }
108729 
setRenderAreaVULKAN_HPP_NAMESPACE::RenderingInfo108730     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
108731     {
108732       renderArea = renderArea_;
108733       return *this;
108734     }
108735 
setLayerCountVULKAN_HPP_NAMESPACE::RenderingInfo108736     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
108737     {
108738       layerCount = layerCount_;
108739       return *this;
108740     }
108741 
setViewMaskVULKAN_HPP_NAMESPACE::RenderingInfo108742     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
108743     {
108744       viewMask = viewMask_;
108745       return *this;
108746     }
108747 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::RenderingInfo108748     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
108749     {
108750       colorAttachmentCount = colorAttachmentCount_;
108751       return *this;
108752     }
108753 
setPColorAttachmentsVULKAN_HPP_NAMESPACE::RenderingInfo108754     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPColorAttachments( const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
108755     {
108756       pColorAttachments = pColorAttachments_;
108757       return *this;
108758     }
108759 
108760 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::RenderingInfo108761     RenderingInfo & setColorAttachments(
108762       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo> const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT
108763     {
108764       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
108765       pColorAttachments    = colorAttachments_.data();
108766       return *this;
108767     }
108768 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108769 
setPDepthAttachmentVULKAN_HPP_NAMESPACE::RenderingInfo108770     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPDepthAttachment( const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment_ ) VULKAN_HPP_NOEXCEPT
108771     {
108772       pDepthAttachment = pDepthAttachment_;
108773       return *this;
108774     }
108775 
108776     VULKAN_HPP_CONSTEXPR_14 RenderingInfo &
setPStencilAttachmentVULKAN_HPP_NAMESPACE::RenderingInfo108777       setPStencilAttachment( const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
108778     {
108779       pStencilAttachment = pStencilAttachment_;
108780       return *this;
108781     }
108782 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108783 
operator VkRenderingInfo const&VULKAN_HPP_NAMESPACE::RenderingInfo108784     operator VkRenderingInfo const &() const VULKAN_HPP_NOEXCEPT
108785     {
108786       return *reinterpret_cast<const VkRenderingInfo *>( this );
108787     }
108788 
operator VkRenderingInfo&VULKAN_HPP_NAMESPACE::RenderingInfo108789     operator VkRenderingInfo &() VULKAN_HPP_NOEXCEPT
108790     {
108791       return *reinterpret_cast<VkRenderingInfo *>( this );
108792     }
108793 
108794 #if defined( VULKAN_HPP_USE_REFLECT )
108795 #  if 14 <= VULKAN_HPP_CPP_VERSION
108796     auto
108797 #  else
108798     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108799                const void * const &,
108800                VULKAN_HPP_NAMESPACE::RenderingFlags const &,
108801                VULKAN_HPP_NAMESPACE::Rect2D const &,
108802                uint32_t const &,
108803                uint32_t const &,
108804                uint32_t const &,
108805                const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * const &,
108806                const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * const &,
108807                const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * const &>
108808 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingInfo108809       reflect() const VULKAN_HPP_NOEXCEPT
108810     {
108811       return std::tie( sType, pNext, flags, renderArea, layerCount, viewMask, colorAttachmentCount, pColorAttachments, pDepthAttachment, pStencilAttachment );
108812     }
108813 #endif
108814 
108815 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108816     auto operator<=>( RenderingInfo const & ) const = default;
108817 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingInfo108818     bool operator==( RenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108819     {
108820 #  if defined( VULKAN_HPP_USE_REFLECT )
108821       return this->reflect() == rhs.reflect();
108822 #  else
108823       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( renderArea == rhs.renderArea ) &&
108824              ( layerCount == rhs.layerCount ) && ( viewMask == rhs.viewMask ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
108825              ( pColorAttachments == rhs.pColorAttachments ) && ( pDepthAttachment == rhs.pDepthAttachment ) && ( pStencilAttachment == rhs.pStencilAttachment );
108826 #  endif
108827     }
108828 
operator !=VULKAN_HPP_NAMESPACE::RenderingInfo108829     bool operator!=( RenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108830     {
108831       return !operator==( rhs );
108832     }
108833 #endif
108834 
108835   public:
108836     VULKAN_HPP_NAMESPACE::StructureType                   sType                = StructureType::eRenderingInfo;
108837     const void *                                          pNext                = {};
108838     VULKAN_HPP_NAMESPACE::RenderingFlags                  flags                = {};
108839     VULKAN_HPP_NAMESPACE::Rect2D                          renderArea           = {};
108840     uint32_t                                              layerCount           = {};
108841     uint32_t                                              viewMask             = {};
108842     uint32_t                                              colorAttachmentCount = {};
108843     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments    = {};
108844     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment     = {};
108845     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment   = {};
108846   };
108847 
108848   template <>
108849   struct CppType<StructureType, StructureType::eRenderingInfo>
108850   {
108851     using Type = RenderingInfo;
108852   };
108853 
108854   using RenderingInfoKHR = RenderingInfo;
108855 
108856   struct RenderingInputAttachmentIndexInfo
108857   {
108858     using NativeType = VkRenderingInputAttachmentIndexInfo;
108859 
108860     static const bool                                  allowDuplicate = false;
108861     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingInputAttachmentIndexInfo;
108862 
108863 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingInputAttachmentIndexInfoVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108864     VULKAN_HPP_CONSTEXPR RenderingInputAttachmentIndexInfo( uint32_t         colorAttachmentCount_         = {},
108865                                                             const uint32_t * pColorAttachmentInputIndices_ = {},
108866                                                             const uint32_t * pDepthInputAttachmentIndex_   = {},
108867                                                             const uint32_t * pStencilInputAttachmentIndex_ = {},
108868                                                             const void *     pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
108869       : pNext{ pNext_ }
108870       , colorAttachmentCount{ colorAttachmentCount_ }
108871       , pColorAttachmentInputIndices{ pColorAttachmentInputIndices_ }
108872       , pDepthInputAttachmentIndex{ pDepthInputAttachmentIndex_ }
108873       , pStencilInputAttachmentIndex{ pStencilInputAttachmentIndex_ }
108874     {
108875     }
108876 
108877     VULKAN_HPP_CONSTEXPR RenderingInputAttachmentIndexInfo( RenderingInputAttachmentIndexInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108878 
RenderingInputAttachmentIndexInfoVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108879     RenderingInputAttachmentIndexInfo( VkRenderingInputAttachmentIndexInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108880       : RenderingInputAttachmentIndexInfo( *reinterpret_cast<RenderingInputAttachmentIndexInfo const *>( &rhs ) )
108881     {
108882     }
108883 
108884 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderingInputAttachmentIndexInfoVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108885     RenderingInputAttachmentIndexInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & colorAttachmentInputIndices_,
108886                                        const uint32_t *                                                      pDepthInputAttachmentIndex_   = {},
108887                                        const uint32_t *                                                      pStencilInputAttachmentIndex_ = {},
108888                                        const void *                                                          pNext_                        = nullptr )
108889       : pNext( pNext_ )
108890       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentInputIndices_.size() ) )
108891       , pColorAttachmentInputIndices( colorAttachmentInputIndices_.data() )
108892       , pDepthInputAttachmentIndex( pDepthInputAttachmentIndex_ )
108893       , pStencilInputAttachmentIndex( pStencilInputAttachmentIndex_ )
108894     {
108895     }
108896 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108897 
108898     RenderingInputAttachmentIndexInfo & operator=( RenderingInputAttachmentIndexInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108899 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108900 
operator =VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108901     RenderingInputAttachmentIndexInfo & operator=( VkRenderingInputAttachmentIndexInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108902     {
108903       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo const *>( &rhs );
108904       return *this;
108905     }
108906 
108907 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108908     VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108909     {
108910       pNext = pNext_;
108911       return *this;
108912     }
108913 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108914     VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
108915     {
108916       colorAttachmentCount = colorAttachmentCount_;
108917       return *this;
108918     }
108919 
108920     VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo &
setPColorAttachmentInputIndicesVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108921       setPColorAttachmentInputIndices( const uint32_t * pColorAttachmentInputIndices_ ) VULKAN_HPP_NOEXCEPT
108922     {
108923       pColorAttachmentInputIndices = pColorAttachmentInputIndices_;
108924       return *this;
108925     }
108926 
108927 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
108928     RenderingInputAttachmentIndexInfo &
setColorAttachmentInputIndicesVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108929       setColorAttachmentInputIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & colorAttachmentInputIndices_ ) VULKAN_HPP_NOEXCEPT
108930     {
108931       colorAttachmentCount         = static_cast<uint32_t>( colorAttachmentInputIndices_.size() );
108932       pColorAttachmentInputIndices = colorAttachmentInputIndices_.data();
108933       return *this;
108934     }
108935 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108936 
108937     VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo &
setPDepthInputAttachmentIndexVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108938       setPDepthInputAttachmentIndex( const uint32_t * pDepthInputAttachmentIndex_ ) VULKAN_HPP_NOEXCEPT
108939     {
108940       pDepthInputAttachmentIndex = pDepthInputAttachmentIndex_;
108941       return *this;
108942     }
108943 
108944     VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo &
setPStencilInputAttachmentIndexVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108945       setPStencilInputAttachmentIndex( const uint32_t * pStencilInputAttachmentIndex_ ) VULKAN_HPP_NOEXCEPT
108946     {
108947       pStencilInputAttachmentIndex = pStencilInputAttachmentIndex_;
108948       return *this;
108949     }
108950 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108951 
operator VkRenderingInputAttachmentIndexInfo const&VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108952     operator VkRenderingInputAttachmentIndexInfo const &() const VULKAN_HPP_NOEXCEPT
108953     {
108954       return *reinterpret_cast<const VkRenderingInputAttachmentIndexInfo *>( this );
108955     }
108956 
operator VkRenderingInputAttachmentIndexInfo&VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108957     operator VkRenderingInputAttachmentIndexInfo &() VULKAN_HPP_NOEXCEPT
108958     {
108959       return *reinterpret_cast<VkRenderingInputAttachmentIndexInfo *>( this );
108960     }
108961 
108962 #if defined( VULKAN_HPP_USE_REFLECT )
108963 #  if 14 <= VULKAN_HPP_CPP_VERSION
108964     auto
108965 #  else
108966     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108967                const void * const &,
108968                uint32_t const &,
108969                const uint32_t * const &,
108970                const uint32_t * const &,
108971                const uint32_t * const &>
108972 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108973       reflect() const VULKAN_HPP_NOEXCEPT
108974     {
108975       return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentInputIndices, pDepthInputAttachmentIndex, pStencilInputAttachmentIndex );
108976     }
108977 #endif
108978 
108979 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108980     auto operator<=>( RenderingInputAttachmentIndexInfo const & ) const = default;
108981 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108982     bool operator==( RenderingInputAttachmentIndexInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108983     {
108984 #  if defined( VULKAN_HPP_USE_REFLECT )
108985       return this->reflect() == rhs.reflect();
108986 #  else
108987       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
108988              ( pColorAttachmentInputIndices == rhs.pColorAttachmentInputIndices ) && ( pDepthInputAttachmentIndex == rhs.pDepthInputAttachmentIndex ) &&
108989              ( pStencilInputAttachmentIndex == rhs.pStencilInputAttachmentIndex );
108990 #  endif
108991     }
108992 
operator !=VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo108993     bool operator!=( RenderingInputAttachmentIndexInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108994     {
108995       return !operator==( rhs );
108996     }
108997 #endif
108998 
108999   public:
109000     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::eRenderingInputAttachmentIndexInfo;
109001     const void *                        pNext                        = {};
109002     uint32_t                            colorAttachmentCount         = {};
109003     const uint32_t *                    pColorAttachmentInputIndices = {};
109004     const uint32_t *                    pDepthInputAttachmentIndex   = {};
109005     const uint32_t *                    pStencilInputAttachmentIndex = {};
109006   };
109007 
109008   template <>
109009   struct CppType<StructureType, StructureType::eRenderingInputAttachmentIndexInfo>
109010   {
109011     using Type = RenderingInputAttachmentIndexInfo;
109012   };
109013 
109014   using RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo;
109015 
109016   struct ResolveImageInfo2
109017   {
109018     using NativeType = VkResolveImageInfo2;
109019 
109020     static const bool                                  allowDuplicate = false;
109021     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eResolveImageInfo2;
109022 
109023 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ResolveImageInfo2VULKAN_HPP_NAMESPACE::ResolveImageInfo2109024     VULKAN_HPP_CONSTEXPR ResolveImageInfo2( VULKAN_HPP_NAMESPACE::Image                 srcImage_       = {},
109025                                             VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
109026                                             VULKAN_HPP_NAMESPACE::Image                 dstImage_       = {},
109027                                             VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
109028                                             uint32_t                                    regionCount_    = {},
109029                                             const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions_       = {},
109030                                             const void *                                pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
109031       : pNext{ pNext_ }
109032       , srcImage{ srcImage_ }
109033       , srcImageLayout{ srcImageLayout_ }
109034       , dstImage{ dstImage_ }
109035       , dstImageLayout{ dstImageLayout_ }
109036       , regionCount{ regionCount_ }
109037       , pRegions{ pRegions_ }
109038     {
109039     }
109040 
109041     VULKAN_HPP_CONSTEXPR ResolveImageInfo2( ResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109042 
ResolveImageInfo2VULKAN_HPP_NAMESPACE::ResolveImageInfo2109043     ResolveImageInfo2( VkResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : ResolveImageInfo2( *reinterpret_cast<ResolveImageInfo2 const *>( &rhs ) ) {}
109044 
109045 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ResolveImageInfo2VULKAN_HPP_NAMESPACE::ResolveImageInfo2109046     ResolveImageInfo2( VULKAN_HPP_NAMESPACE::Image                                                                      srcImage_,
109047                        VULKAN_HPP_NAMESPACE::ImageLayout                                                                srcImageLayout_,
109048                        VULKAN_HPP_NAMESPACE::Image                                                                      dstImage_,
109049                        VULKAN_HPP_NAMESPACE::ImageLayout                                                                dstImageLayout_,
109050                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageResolve2> const & regions_,
109051                        const void *                                                                                     pNext_ = nullptr )
109052       : pNext( pNext_ )
109053       , srcImage( srcImage_ )
109054       , srcImageLayout( srcImageLayout_ )
109055       , dstImage( dstImage_ )
109056       , dstImageLayout( dstImageLayout_ )
109057       , regionCount( static_cast<uint32_t>( regions_.size() ) )
109058       , pRegions( regions_.data() )
109059     {
109060     }
109061 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109062 
109063     ResolveImageInfo2 & operator=( ResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109064 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109065 
operator =VULKAN_HPP_NAMESPACE::ResolveImageInfo2109066     ResolveImageInfo2 & operator=( VkResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
109067     {
109068       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ResolveImageInfo2 const *>( &rhs );
109069       return *this;
109070     }
109071 
109072 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ResolveImageInfo2109073     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109074     {
109075       pNext = pNext_;
109076       return *this;
109077     }
109078 
setSrcImageVULKAN_HPP_NAMESPACE::ResolveImageInfo2109079     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
109080     {
109081       srcImage = srcImage_;
109082       return *this;
109083     }
109084 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::ResolveImageInfo2109085     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
109086     {
109087       srcImageLayout = srcImageLayout_;
109088       return *this;
109089     }
109090 
setDstImageVULKAN_HPP_NAMESPACE::ResolveImageInfo2109091     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
109092     {
109093       dstImage = dstImage_;
109094       return *this;
109095     }
109096 
setDstImageLayoutVULKAN_HPP_NAMESPACE::ResolveImageInfo2109097     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
109098     {
109099       dstImageLayout = dstImageLayout_;
109100       return *this;
109101     }
109102 
setRegionCountVULKAN_HPP_NAMESPACE::ResolveImageInfo2109103     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
109104     {
109105       regionCount = regionCount_;
109106       return *this;
109107     }
109108 
setPRegionsVULKAN_HPP_NAMESPACE::ResolveImageInfo2109109     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
109110     {
109111       pRegions = pRegions_;
109112       return *this;
109113     }
109114 
109115 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
109116     ResolveImageInfo2 &
setRegionsVULKAN_HPP_NAMESPACE::ResolveImageInfo2109117       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageResolve2> const & regions_ ) VULKAN_HPP_NOEXCEPT
109118     {
109119       regionCount = static_cast<uint32_t>( regions_.size() );
109120       pRegions    = regions_.data();
109121       return *this;
109122     }
109123 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109124 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109125 
operator VkResolveImageInfo2 const&VULKAN_HPP_NAMESPACE::ResolveImageInfo2109126     operator VkResolveImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
109127     {
109128       return *reinterpret_cast<const VkResolveImageInfo2 *>( this );
109129     }
109130 
operator VkResolveImageInfo2&VULKAN_HPP_NAMESPACE::ResolveImageInfo2109131     operator VkResolveImageInfo2 &() VULKAN_HPP_NOEXCEPT
109132     {
109133       return *reinterpret_cast<VkResolveImageInfo2 *>( this );
109134     }
109135 
109136 #if defined( VULKAN_HPP_USE_REFLECT )
109137 #  if 14 <= VULKAN_HPP_CPP_VERSION
109138     auto
109139 #  else
109140     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
109141                const void * const &,
109142                VULKAN_HPP_NAMESPACE::Image const &,
109143                VULKAN_HPP_NAMESPACE::ImageLayout const &,
109144                VULKAN_HPP_NAMESPACE::Image const &,
109145                VULKAN_HPP_NAMESPACE::ImageLayout const &,
109146                uint32_t const &,
109147                const VULKAN_HPP_NAMESPACE::ImageResolve2 * const &>
109148 #  endif
reflectVULKAN_HPP_NAMESPACE::ResolveImageInfo2109149       reflect() const VULKAN_HPP_NOEXCEPT
109150     {
109151       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions );
109152     }
109153 #endif
109154 
109155 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109156     auto operator<=>( ResolveImageInfo2 const & ) const = default;
109157 #else
operator ==VULKAN_HPP_NAMESPACE::ResolveImageInfo2109158     bool operator==( ResolveImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
109159     {
109160 #  if defined( VULKAN_HPP_USE_REFLECT )
109161       return this->reflect() == rhs.reflect();
109162 #  else
109163       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) &&
109164              ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
109165 #  endif
109166     }
109167 
operator !=VULKAN_HPP_NAMESPACE::ResolveImageInfo2109168     bool operator!=( ResolveImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
109169     {
109170       return !operator==( rhs );
109171     }
109172 #endif
109173 
109174   public:
109175     VULKAN_HPP_NAMESPACE::StructureType         sType          = StructureType::eResolveImageInfo2;
109176     const void *                                pNext          = {};
109177     VULKAN_HPP_NAMESPACE::Image                 srcImage       = {};
109178     VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
109179     VULKAN_HPP_NAMESPACE::Image                 dstImage       = {};
109180     VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
109181     uint32_t                                    regionCount    = {};
109182     const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions       = {};
109183   };
109184 
109185   template <>
109186   struct CppType<StructureType, StructureType::eResolveImageInfo2>
109187   {
109188     using Type = ResolveImageInfo2;
109189   };
109190 
109191   using ResolveImageInfo2KHR = ResolveImageInfo2;
109192 
109193   struct SamplerBlockMatchWindowCreateInfoQCOM
109194   {
109195     using NativeType = VkSamplerBlockMatchWindowCreateInfoQCOM;
109196 
109197     static const bool                                  allowDuplicate = false;
109198     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerBlockMatchWindowCreateInfoQCOM;
109199 
109200 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerBlockMatchWindowCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109201     VULKAN_HPP_CONSTEXPR SamplerBlockMatchWindowCreateInfoQCOM(
109202       VULKAN_HPP_NAMESPACE::Extent2D                        windowExtent_      = {},
109203       VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM windowCompareMode_ = VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM::eMin,
109204       const void *                                          pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
109205       : pNext{ pNext_ }
109206       , windowExtent{ windowExtent_ }
109207       , windowCompareMode{ windowCompareMode_ }
109208     {
109209     }
109210 
109211     VULKAN_HPP_CONSTEXPR SamplerBlockMatchWindowCreateInfoQCOM( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109212 
SamplerBlockMatchWindowCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109213     SamplerBlockMatchWindowCreateInfoQCOM( VkSamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
109214       : SamplerBlockMatchWindowCreateInfoQCOM( *reinterpret_cast<SamplerBlockMatchWindowCreateInfoQCOM const *>( &rhs ) )
109215     {
109216     }
109217 
109218     SamplerBlockMatchWindowCreateInfoQCOM & operator=( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109219 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109220 
operator =VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109221     SamplerBlockMatchWindowCreateInfoQCOM & operator=( VkSamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
109222     {
109223       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM const *>( &rhs );
109224       return *this;
109225     }
109226 
109227 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109228     VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109229     {
109230       pNext = pNext_;
109231       return *this;
109232     }
109233 
setWindowExtentVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109234     VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM & setWindowExtent( VULKAN_HPP_NAMESPACE::Extent2D const & windowExtent_ ) VULKAN_HPP_NOEXCEPT
109235     {
109236       windowExtent = windowExtent_;
109237       return *this;
109238     }
109239 
109240     VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM &
setWindowCompareModeVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109241       setWindowCompareMode( VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM windowCompareMode_ ) VULKAN_HPP_NOEXCEPT
109242     {
109243       windowCompareMode = windowCompareMode_;
109244       return *this;
109245     }
109246 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109247 
operator VkSamplerBlockMatchWindowCreateInfoQCOM const&VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109248     operator VkSamplerBlockMatchWindowCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
109249     {
109250       return *reinterpret_cast<const VkSamplerBlockMatchWindowCreateInfoQCOM *>( this );
109251     }
109252 
operator VkSamplerBlockMatchWindowCreateInfoQCOM&VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109253     operator VkSamplerBlockMatchWindowCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT
109254     {
109255       return *reinterpret_cast<VkSamplerBlockMatchWindowCreateInfoQCOM *>( this );
109256     }
109257 
109258 #if defined( VULKAN_HPP_USE_REFLECT )
109259 #  if 14 <= VULKAN_HPP_CPP_VERSION
109260     auto
109261 #  else
109262     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
109263                const void * const &,
109264                VULKAN_HPP_NAMESPACE::Extent2D const &,
109265                VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM const &>
109266 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109267       reflect() const VULKAN_HPP_NOEXCEPT
109268     {
109269       return std::tie( sType, pNext, windowExtent, windowCompareMode );
109270     }
109271 #endif
109272 
109273 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109274     auto operator<=>( SamplerBlockMatchWindowCreateInfoQCOM const & ) const = default;
109275 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109276     bool operator==( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
109277     {
109278 #  if defined( VULKAN_HPP_USE_REFLECT )
109279       return this->reflect() == rhs.reflect();
109280 #  else
109281       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( windowExtent == rhs.windowExtent ) && ( windowCompareMode == rhs.windowCompareMode );
109282 #  endif
109283     }
109284 
operator !=VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM109285     bool operator!=( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
109286     {
109287       return !operator==( rhs );
109288     }
109289 #endif
109290 
109291   public:
109292     VULKAN_HPP_NAMESPACE::StructureType                   sType             = StructureType::eSamplerBlockMatchWindowCreateInfoQCOM;
109293     const void *                                          pNext             = {};
109294     VULKAN_HPP_NAMESPACE::Extent2D                        windowExtent      = {};
109295     VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM windowCompareMode = VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM::eMin;
109296   };
109297 
109298   template <>
109299   struct CppType<StructureType, StructureType::eSamplerBlockMatchWindowCreateInfoQCOM>
109300   {
109301     using Type = SamplerBlockMatchWindowCreateInfoQCOM;
109302   };
109303 
109304   struct SamplerBorderColorComponentMappingCreateInfoEXT
109305   {
109306     using NativeType = VkSamplerBorderColorComponentMappingCreateInfoEXT;
109307 
109308     static const bool                                  allowDuplicate = false;
109309     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT;
109310 
109311 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerBorderColorComponentMappingCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109312     VULKAN_HPP_CONSTEXPR SamplerBorderColorComponentMappingCreateInfoEXT( VULKAN_HPP_NAMESPACE::ComponentMapping components_ = {},
109313                                                                           VULKAN_HPP_NAMESPACE::Bool32           srgb_       = {},
109314                                                                           const void *                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
109315       : pNext{ pNext_ }
109316       , components{ components_ }
109317       , srgb{ srgb_ }
109318     {
109319     }
109320 
109321     VULKAN_HPP_CONSTEXPR
109322       SamplerBorderColorComponentMappingCreateInfoEXT( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109323 
SamplerBorderColorComponentMappingCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109324     SamplerBorderColorComponentMappingCreateInfoEXT( VkSamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109325       : SamplerBorderColorComponentMappingCreateInfoEXT( *reinterpret_cast<SamplerBorderColorComponentMappingCreateInfoEXT const *>( &rhs ) )
109326     {
109327     }
109328 
109329     SamplerBorderColorComponentMappingCreateInfoEXT & operator=( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109330 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109331 
operator =VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109332     SamplerBorderColorComponentMappingCreateInfoEXT & operator=( VkSamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109333     {
109334       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT const *>( &rhs );
109335       return *this;
109336     }
109337 
109338 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109339     VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109340     {
109341       pNext = pNext_;
109342       return *this;
109343     }
109344 
109345     VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT &
setComponentsVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109346       setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
109347     {
109348       components = components_;
109349       return *this;
109350     }
109351 
setSrgbVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109352     VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT & setSrgb( VULKAN_HPP_NAMESPACE::Bool32 srgb_ ) VULKAN_HPP_NOEXCEPT
109353     {
109354       srgb = srgb_;
109355       return *this;
109356     }
109357 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109358 
operator VkSamplerBorderColorComponentMappingCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109359     operator VkSamplerBorderColorComponentMappingCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
109360     {
109361       return *reinterpret_cast<const VkSamplerBorderColorComponentMappingCreateInfoEXT *>( this );
109362     }
109363 
operator VkSamplerBorderColorComponentMappingCreateInfoEXT&VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109364     operator VkSamplerBorderColorComponentMappingCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
109365     {
109366       return *reinterpret_cast<VkSamplerBorderColorComponentMappingCreateInfoEXT *>( this );
109367     }
109368 
109369 #if defined( VULKAN_HPP_USE_REFLECT )
109370 #  if 14 <= VULKAN_HPP_CPP_VERSION
109371     auto
109372 #  else
109373     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
109374                const void * const &,
109375                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
109376                VULKAN_HPP_NAMESPACE::Bool32 const &>
109377 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109378       reflect() const VULKAN_HPP_NOEXCEPT
109379     {
109380       return std::tie( sType, pNext, components, srgb );
109381     }
109382 #endif
109383 
109384 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109385     auto operator<=>( SamplerBorderColorComponentMappingCreateInfoEXT const & ) const = default;
109386 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109387     bool operator==( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109388     {
109389 #  if defined( VULKAN_HPP_USE_REFLECT )
109390       return this->reflect() == rhs.reflect();
109391 #  else
109392       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( components == rhs.components ) && ( srgb == rhs.srgb );
109393 #  endif
109394     }
109395 
operator !=VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT109396     bool operator!=( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109397     {
109398       return !operator==( rhs );
109399     }
109400 #endif
109401 
109402   public:
109403     VULKAN_HPP_NAMESPACE::StructureType    sType      = StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT;
109404     const void *                           pNext      = {};
109405     VULKAN_HPP_NAMESPACE::ComponentMapping components = {};
109406     VULKAN_HPP_NAMESPACE::Bool32           srgb       = {};
109407   };
109408 
109409   template <>
109410   struct CppType<StructureType, StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT>
109411   {
109412     using Type = SamplerBorderColorComponentMappingCreateInfoEXT;
109413   };
109414 
109415   struct SamplerCaptureDescriptorDataInfoEXT
109416   {
109417     using NativeType = VkSamplerCaptureDescriptorDataInfoEXT;
109418 
109419     static const bool                                  allowDuplicate = false;
109420     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerCaptureDescriptorDataInfoEXT;
109421 
109422 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT109423     VULKAN_HPP_CONSTEXPR SamplerCaptureDescriptorDataInfoEXT( VULKAN_HPP_NAMESPACE::Sampler sampler_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
109424       : pNext{ pNext_ }
109425       , sampler{ sampler_ }
109426     {
109427     }
109428 
109429     VULKAN_HPP_CONSTEXPR SamplerCaptureDescriptorDataInfoEXT( SamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109430 
SamplerCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT109431     SamplerCaptureDescriptorDataInfoEXT( VkSamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109432       : SamplerCaptureDescriptorDataInfoEXT( *reinterpret_cast<SamplerCaptureDescriptorDataInfoEXT const *>( &rhs ) )
109433     {
109434     }
109435 
109436     SamplerCaptureDescriptorDataInfoEXT & operator=( SamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109437 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109438 
operator =VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT109439     SamplerCaptureDescriptorDataInfoEXT & operator=( VkSamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109440     {
109441       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT const *>( &rhs );
109442       return *this;
109443     }
109444 
109445 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT109446     VULKAN_HPP_CONSTEXPR_14 SamplerCaptureDescriptorDataInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109447     {
109448       pNext = pNext_;
109449       return *this;
109450     }
109451 
setSamplerVULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT109452     VULKAN_HPP_CONSTEXPR_14 SamplerCaptureDescriptorDataInfoEXT & setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT
109453     {
109454       sampler = sampler_;
109455       return *this;
109456     }
109457 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109458 
operator VkSamplerCaptureDescriptorDataInfoEXT const&VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT109459     operator VkSamplerCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT
109460     {
109461       return *reinterpret_cast<const VkSamplerCaptureDescriptorDataInfoEXT *>( this );
109462     }
109463 
operator VkSamplerCaptureDescriptorDataInfoEXT&VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT109464     operator VkSamplerCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT
109465     {
109466       return *reinterpret_cast<VkSamplerCaptureDescriptorDataInfoEXT *>( this );
109467     }
109468 
109469 #if defined( VULKAN_HPP_USE_REFLECT )
109470 #  if 14 <= VULKAN_HPP_CPP_VERSION
109471     auto
109472 #  else
109473     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Sampler const &>
109474 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT109475       reflect() const VULKAN_HPP_NOEXCEPT
109476     {
109477       return std::tie( sType, pNext, sampler );
109478     }
109479 #endif
109480 
109481 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109482     auto operator<=>( SamplerCaptureDescriptorDataInfoEXT const & ) const = default;
109483 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT109484     bool operator==( SamplerCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109485     {
109486 #  if defined( VULKAN_HPP_USE_REFLECT )
109487       return this->reflect() == rhs.reflect();
109488 #  else
109489       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampler == rhs.sampler );
109490 #  endif
109491     }
109492 
operator !=VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT109493     bool operator!=( SamplerCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109494     {
109495       return !operator==( rhs );
109496     }
109497 #endif
109498 
109499   public:
109500     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::eSamplerCaptureDescriptorDataInfoEXT;
109501     const void *                        pNext   = {};
109502     VULKAN_HPP_NAMESPACE::Sampler       sampler = {};
109503   };
109504 
109505   template <>
109506   struct CppType<StructureType, StructureType::eSamplerCaptureDescriptorDataInfoEXT>
109507   {
109508     using Type = SamplerCaptureDescriptorDataInfoEXT;
109509   };
109510 
109511   struct SamplerCreateInfo
109512   {
109513     using NativeType = VkSamplerCreateInfo;
109514 
109515     static const bool                                  allowDuplicate = false;
109516     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerCreateInfo;
109517 
109518 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerCreateInfoVULKAN_HPP_NAMESPACE::SamplerCreateInfo109519     VULKAN_HPP_CONSTEXPR SamplerCreateInfo( VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_            = {},
109520                                             VULKAN_HPP_NAMESPACE::Filter             magFilter_        = VULKAN_HPP_NAMESPACE::Filter::eNearest,
109521                                             VULKAN_HPP_NAMESPACE::Filter             minFilter_        = VULKAN_HPP_NAMESPACE::Filter::eNearest,
109522                                             VULKAN_HPP_NAMESPACE::SamplerMipmapMode  mipmapMode_       = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest,
109523                                             VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat,
109524                                             VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat,
109525                                             VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat,
109526                                             float                                    mipLodBias_       = {},
109527                                             VULKAN_HPP_NAMESPACE::Bool32             anisotropyEnable_ = {},
109528                                             float                                    maxAnisotropy_    = {},
109529                                             VULKAN_HPP_NAMESPACE::Bool32             compareEnable_    = {},
109530                                             VULKAN_HPP_NAMESPACE::CompareOp          compareOp_        = VULKAN_HPP_NAMESPACE::CompareOp::eNever,
109531                                             float                                    minLod_           = {},
109532                                             float                                    maxLod_           = {},
109533                                             VULKAN_HPP_NAMESPACE::BorderColor        borderColor_ = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack,
109534                                             VULKAN_HPP_NAMESPACE::Bool32             unnormalizedCoordinates_ = {},
109535                                             const void *                             pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
109536       : pNext{ pNext_ }
109537       , flags{ flags_ }
109538       , magFilter{ magFilter_ }
109539       , minFilter{ minFilter_ }
109540       , mipmapMode{ mipmapMode_ }
109541       , addressModeU{ addressModeU_ }
109542       , addressModeV{ addressModeV_ }
109543       , addressModeW{ addressModeW_ }
109544       , mipLodBias{ mipLodBias_ }
109545       , anisotropyEnable{ anisotropyEnable_ }
109546       , maxAnisotropy{ maxAnisotropy_ }
109547       , compareEnable{ compareEnable_ }
109548       , compareOp{ compareOp_ }
109549       , minLod{ minLod_ }
109550       , maxLod{ maxLod_ }
109551       , borderColor{ borderColor_ }
109552       , unnormalizedCoordinates{ unnormalizedCoordinates_ }
109553     {
109554     }
109555 
109556     VULKAN_HPP_CONSTEXPR SamplerCreateInfo( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109557 
SamplerCreateInfoVULKAN_HPP_NAMESPACE::SamplerCreateInfo109558     SamplerCreateInfo( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SamplerCreateInfo( *reinterpret_cast<SamplerCreateInfo const *>( &rhs ) ) {}
109559 
109560     SamplerCreateInfo & operator=( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109561 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109562 
operator =VULKAN_HPP_NAMESPACE::SamplerCreateInfo109563     SamplerCreateInfo & operator=( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
109564     {
109565       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCreateInfo const *>( &rhs );
109566       return *this;
109567     }
109568 
109569 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCreateInfo109570     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109571     {
109572       pNext = pNext_;
109573       return *this;
109574     }
109575 
setFlagsVULKAN_HPP_NAMESPACE::SamplerCreateInfo109576     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
109577     {
109578       flags = flags_;
109579       return *this;
109580     }
109581 
setMagFilterVULKAN_HPP_NAMESPACE::SamplerCreateInfo109582     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMagFilter( VULKAN_HPP_NAMESPACE::Filter magFilter_ ) VULKAN_HPP_NOEXCEPT
109583     {
109584       magFilter = magFilter_;
109585       return *this;
109586     }
109587 
setMinFilterVULKAN_HPP_NAMESPACE::SamplerCreateInfo109588     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMinFilter( VULKAN_HPP_NAMESPACE::Filter minFilter_ ) VULKAN_HPP_NOEXCEPT
109589     {
109590       minFilter = minFilter_;
109591       return *this;
109592     }
109593 
setMipmapModeVULKAN_HPP_NAMESPACE::SamplerCreateInfo109594     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMipmapMode( VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode_ ) VULKAN_HPP_NOEXCEPT
109595     {
109596       mipmapMode = mipmapMode_;
109597       return *this;
109598     }
109599 
setAddressModeUVULKAN_HPP_NAMESPACE::SamplerCreateInfo109600     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeU( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_ ) VULKAN_HPP_NOEXCEPT
109601     {
109602       addressModeU = addressModeU_;
109603       return *this;
109604     }
109605 
setAddressModeVVULKAN_HPP_NAMESPACE::SamplerCreateInfo109606     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeV( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_ ) VULKAN_HPP_NOEXCEPT
109607     {
109608       addressModeV = addressModeV_;
109609       return *this;
109610     }
109611 
setAddressModeWVULKAN_HPP_NAMESPACE::SamplerCreateInfo109612     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeW( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_ ) VULKAN_HPP_NOEXCEPT
109613     {
109614       addressModeW = addressModeW_;
109615       return *this;
109616     }
109617 
setMipLodBiasVULKAN_HPP_NAMESPACE::SamplerCreateInfo109618     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMipLodBias( float mipLodBias_ ) VULKAN_HPP_NOEXCEPT
109619     {
109620       mipLodBias = mipLodBias_;
109621       return *this;
109622     }
109623 
setAnisotropyEnableVULKAN_HPP_NAMESPACE::SamplerCreateInfo109624     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAnisotropyEnable( VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable_ ) VULKAN_HPP_NOEXCEPT
109625     {
109626       anisotropyEnable = anisotropyEnable_;
109627       return *this;
109628     }
109629 
setMaxAnisotropyVULKAN_HPP_NAMESPACE::SamplerCreateInfo109630     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxAnisotropy( float maxAnisotropy_ ) VULKAN_HPP_NOEXCEPT
109631     {
109632       maxAnisotropy = maxAnisotropy_;
109633       return *this;
109634     }
109635 
setCompareEnableVULKAN_HPP_NAMESPACE::SamplerCreateInfo109636     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setCompareEnable( VULKAN_HPP_NAMESPACE::Bool32 compareEnable_ ) VULKAN_HPP_NOEXCEPT
109637     {
109638       compareEnable = compareEnable_;
109639       return *this;
109640     }
109641 
setCompareOpVULKAN_HPP_NAMESPACE::SamplerCreateInfo109642     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT
109643     {
109644       compareOp = compareOp_;
109645       return *this;
109646     }
109647 
setMinLodVULKAN_HPP_NAMESPACE::SamplerCreateInfo109648     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMinLod( float minLod_ ) VULKAN_HPP_NOEXCEPT
109649     {
109650       minLod = minLod_;
109651       return *this;
109652     }
109653 
setMaxLodVULKAN_HPP_NAMESPACE::SamplerCreateInfo109654     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxLod( float maxLod_ ) VULKAN_HPP_NOEXCEPT
109655     {
109656       maxLod = maxLod_;
109657       return *this;
109658     }
109659 
setBorderColorVULKAN_HPP_NAMESPACE::SamplerCreateInfo109660     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setBorderColor( VULKAN_HPP_NAMESPACE::BorderColor borderColor_ ) VULKAN_HPP_NOEXCEPT
109661     {
109662       borderColor = borderColor_;
109663       return *this;
109664     }
109665 
setUnnormalizedCoordinatesVULKAN_HPP_NAMESPACE::SamplerCreateInfo109666     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setUnnormalizedCoordinates( VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates_ ) VULKAN_HPP_NOEXCEPT
109667     {
109668       unnormalizedCoordinates = unnormalizedCoordinates_;
109669       return *this;
109670     }
109671 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109672 
operator VkSamplerCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerCreateInfo109673     operator VkSamplerCreateInfo const &() const VULKAN_HPP_NOEXCEPT
109674     {
109675       return *reinterpret_cast<const VkSamplerCreateInfo *>( this );
109676     }
109677 
operator VkSamplerCreateInfo&VULKAN_HPP_NAMESPACE::SamplerCreateInfo109678     operator VkSamplerCreateInfo &() VULKAN_HPP_NOEXCEPT
109679     {
109680       return *reinterpret_cast<VkSamplerCreateInfo *>( this );
109681     }
109682 
109683 #if defined( VULKAN_HPP_USE_REFLECT )
109684 #  if 14 <= VULKAN_HPP_CPP_VERSION
109685     auto
109686 #  else
109687     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
109688                const void * const &,
109689                VULKAN_HPP_NAMESPACE::SamplerCreateFlags const &,
109690                VULKAN_HPP_NAMESPACE::Filter const &,
109691                VULKAN_HPP_NAMESPACE::Filter const &,
109692                VULKAN_HPP_NAMESPACE::SamplerMipmapMode const &,
109693                VULKAN_HPP_NAMESPACE::SamplerAddressMode const &,
109694                VULKAN_HPP_NAMESPACE::SamplerAddressMode const &,
109695                VULKAN_HPP_NAMESPACE::SamplerAddressMode const &,
109696                float const &,
109697                VULKAN_HPP_NAMESPACE::Bool32 const &,
109698                float const &,
109699                VULKAN_HPP_NAMESPACE::Bool32 const &,
109700                VULKAN_HPP_NAMESPACE::CompareOp const &,
109701                float const &,
109702                float const &,
109703                VULKAN_HPP_NAMESPACE::BorderColor const &,
109704                VULKAN_HPP_NAMESPACE::Bool32 const &>
109705 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerCreateInfo109706       reflect() const VULKAN_HPP_NOEXCEPT
109707     {
109708       return std::tie( sType,
109709                        pNext,
109710                        flags,
109711                        magFilter,
109712                        minFilter,
109713                        mipmapMode,
109714                        addressModeU,
109715                        addressModeV,
109716                        addressModeW,
109717                        mipLodBias,
109718                        anisotropyEnable,
109719                        maxAnisotropy,
109720                        compareEnable,
109721                        compareOp,
109722                        minLod,
109723                        maxLod,
109724                        borderColor,
109725                        unnormalizedCoordinates );
109726     }
109727 #endif
109728 
109729 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109730     auto operator<=>( SamplerCreateInfo const & ) const = default;
109731 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerCreateInfo109732     bool operator==( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
109733     {
109734 #  if defined( VULKAN_HPP_USE_REFLECT )
109735       return this->reflect() == rhs.reflect();
109736 #  else
109737       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( magFilter == rhs.magFilter ) && ( minFilter == rhs.minFilter ) &&
109738              ( mipmapMode == rhs.mipmapMode ) && ( addressModeU == rhs.addressModeU ) && ( addressModeV == rhs.addressModeV ) &&
109739              ( addressModeW == rhs.addressModeW ) && ( mipLodBias == rhs.mipLodBias ) && ( anisotropyEnable == rhs.anisotropyEnable ) &&
109740              ( maxAnisotropy == rhs.maxAnisotropy ) && ( compareEnable == rhs.compareEnable ) && ( compareOp == rhs.compareOp ) && ( minLod == rhs.minLod ) &&
109741              ( maxLod == rhs.maxLod ) && ( borderColor == rhs.borderColor ) && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
109742 #  endif
109743     }
109744 
operator !=VULKAN_HPP_NAMESPACE::SamplerCreateInfo109745     bool operator!=( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
109746     {
109747       return !operator==( rhs );
109748     }
109749 #endif
109750 
109751   public:
109752     VULKAN_HPP_NAMESPACE::StructureType      sType                   = StructureType::eSamplerCreateInfo;
109753     const void *                             pNext                   = {};
109754     VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags                   = {};
109755     VULKAN_HPP_NAMESPACE::Filter             magFilter               = VULKAN_HPP_NAMESPACE::Filter::eNearest;
109756     VULKAN_HPP_NAMESPACE::Filter             minFilter               = VULKAN_HPP_NAMESPACE::Filter::eNearest;
109757     VULKAN_HPP_NAMESPACE::SamplerMipmapMode  mipmapMode              = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest;
109758     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU            = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
109759     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV            = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
109760     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW            = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
109761     float                                    mipLodBias              = {};
109762     VULKAN_HPP_NAMESPACE::Bool32             anisotropyEnable        = {};
109763     float                                    maxAnisotropy           = {};
109764     VULKAN_HPP_NAMESPACE::Bool32             compareEnable           = {};
109765     VULKAN_HPP_NAMESPACE::CompareOp          compareOp               = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
109766     float                                    minLod                  = {};
109767     float                                    maxLod                  = {};
109768     VULKAN_HPP_NAMESPACE::BorderColor        borderColor             = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack;
109769     VULKAN_HPP_NAMESPACE::Bool32             unnormalizedCoordinates = {};
109770   };
109771 
109772   template <>
109773   struct CppType<StructureType, StructureType::eSamplerCreateInfo>
109774   {
109775     using Type = SamplerCreateInfo;
109776   };
109777 
109778   struct SamplerCubicWeightsCreateInfoQCOM
109779   {
109780     using NativeType = VkSamplerCubicWeightsCreateInfoQCOM;
109781 
109782     static const bool                                  allowDuplicate = false;
109783     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerCubicWeightsCreateInfoQCOM;
109784 
109785 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
109786     VULKAN_HPP_CONSTEXPR
SamplerCubicWeightsCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM109787       SamplerCubicWeightsCreateInfoQCOM( VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights_ = VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM::eCatmullRom,
109788                                          const void *                                 pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
109789       : pNext{ pNext_ }
109790       , cubicWeights{ cubicWeights_ }
109791     {
109792     }
109793 
109794     VULKAN_HPP_CONSTEXPR SamplerCubicWeightsCreateInfoQCOM( SamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109795 
SamplerCubicWeightsCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM109796     SamplerCubicWeightsCreateInfoQCOM( VkSamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
109797       : SamplerCubicWeightsCreateInfoQCOM( *reinterpret_cast<SamplerCubicWeightsCreateInfoQCOM const *>( &rhs ) )
109798     {
109799     }
109800 
109801     SamplerCubicWeightsCreateInfoQCOM & operator=( SamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109802 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109803 
operator =VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM109804     SamplerCubicWeightsCreateInfoQCOM & operator=( VkSamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
109805     {
109806       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM const *>( &rhs );
109807       return *this;
109808     }
109809 
109810 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM109811     VULKAN_HPP_CONSTEXPR_14 SamplerCubicWeightsCreateInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109812     {
109813       pNext = pNext_;
109814       return *this;
109815     }
109816 
109817     VULKAN_HPP_CONSTEXPR_14 SamplerCubicWeightsCreateInfoQCOM &
setCubicWeightsVULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM109818       setCubicWeights( VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights_ ) VULKAN_HPP_NOEXCEPT
109819     {
109820       cubicWeights = cubicWeights_;
109821       return *this;
109822     }
109823 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109824 
operator VkSamplerCubicWeightsCreateInfoQCOM const&VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM109825     operator VkSamplerCubicWeightsCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
109826     {
109827       return *reinterpret_cast<const VkSamplerCubicWeightsCreateInfoQCOM *>( this );
109828     }
109829 
operator VkSamplerCubicWeightsCreateInfoQCOM&VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM109830     operator VkSamplerCubicWeightsCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT
109831     {
109832       return *reinterpret_cast<VkSamplerCubicWeightsCreateInfoQCOM *>( this );
109833     }
109834 
109835 #if defined( VULKAN_HPP_USE_REFLECT )
109836 #  if 14 <= VULKAN_HPP_CPP_VERSION
109837     auto
109838 #  else
109839     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM const &>
109840 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM109841       reflect() const VULKAN_HPP_NOEXCEPT
109842     {
109843       return std::tie( sType, pNext, cubicWeights );
109844     }
109845 #endif
109846 
109847 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109848     auto operator<=>( SamplerCubicWeightsCreateInfoQCOM const & ) const = default;
109849 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM109850     bool operator==( SamplerCubicWeightsCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
109851     {
109852 #  if defined( VULKAN_HPP_USE_REFLECT )
109853       return this->reflect() == rhs.reflect();
109854 #  else
109855       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cubicWeights == rhs.cubicWeights );
109856 #  endif
109857     }
109858 
operator !=VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM109859     bool operator!=( SamplerCubicWeightsCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
109860     {
109861       return !operator==( rhs );
109862     }
109863 #endif
109864 
109865   public:
109866     VULKAN_HPP_NAMESPACE::StructureType          sType        = StructureType::eSamplerCubicWeightsCreateInfoQCOM;
109867     const void *                                 pNext        = {};
109868     VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights = VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM::eCatmullRom;
109869   };
109870 
109871   template <>
109872   struct CppType<StructureType, StructureType::eSamplerCubicWeightsCreateInfoQCOM>
109873   {
109874     using Type = SamplerCubicWeightsCreateInfoQCOM;
109875   };
109876 
109877   struct SamplerCustomBorderColorCreateInfoEXT
109878   {
109879     using NativeType = VkSamplerCustomBorderColorCreateInfoEXT;
109880 
109881     static const bool                                  allowDuplicate = false;
109882     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerCustomBorderColorCreateInfoEXT;
109883 
109884 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerCustomBorderColorCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT109885     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT( VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor_ = {},
109886                                                                    VULKAN_HPP_NAMESPACE::Format          format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
109887                                                                    const void *                          pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
109888       : pNext{ pNext_ }
109889       , customBorderColor{ customBorderColor_ }
109890       , format{ format_ }
109891     {
109892     }
109893 
109894     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109895 
SamplerCustomBorderColorCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT109896     SamplerCustomBorderColorCreateInfoEXT( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109897       : SamplerCustomBorderColorCreateInfoEXT( *reinterpret_cast<SamplerCustomBorderColorCreateInfoEXT const *>( &rhs ) )
109898     {
109899     }
109900 
109901     SamplerCustomBorderColorCreateInfoEXT & operator=( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109902 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109903 
operator =VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT109904     SamplerCustomBorderColorCreateInfoEXT & operator=( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109905     {
109906       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT const *>( &rhs );
109907       return *this;
109908     }
109909 
109910 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT109911     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109912     {
109913       pNext = pNext_;
109914       return *this;
109915     }
109916 
109917     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT &
setCustomBorderColorVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT109918       setCustomBorderColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & customBorderColor_ ) VULKAN_HPP_NOEXCEPT
109919     {
109920       customBorderColor = customBorderColor_;
109921       return *this;
109922     }
109923 
setFormatVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT109924     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
109925     {
109926       format = format_;
109927       return *this;
109928     }
109929 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109930 
operator VkSamplerCustomBorderColorCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT109931     operator VkSamplerCustomBorderColorCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
109932     {
109933       return *reinterpret_cast<const VkSamplerCustomBorderColorCreateInfoEXT *>( this );
109934     }
109935 
operator VkSamplerCustomBorderColorCreateInfoEXT&VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT109936     operator VkSamplerCustomBorderColorCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
109937     {
109938       return *reinterpret_cast<VkSamplerCustomBorderColorCreateInfoEXT *>( this );
109939     }
109940 
109941 #if defined( VULKAN_HPP_USE_REFLECT )
109942 #  if 14 <= VULKAN_HPP_CPP_VERSION
109943     auto
109944 #  else
109945     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
109946                const void * const &,
109947                VULKAN_HPP_NAMESPACE::ClearColorValue const &,
109948                VULKAN_HPP_NAMESPACE::Format const &>
109949 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT109950       reflect() const VULKAN_HPP_NOEXCEPT
109951     {
109952       return std::tie( sType, pNext, customBorderColor, format );
109953     }
109954 #endif
109955 
109956   public:
109957     VULKAN_HPP_NAMESPACE::StructureType   sType             = StructureType::eSamplerCustomBorderColorCreateInfoEXT;
109958     const void *                          pNext             = {};
109959     VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor = {};
109960     VULKAN_HPP_NAMESPACE::Format          format            = VULKAN_HPP_NAMESPACE::Format::eUndefined;
109961   };
109962 
109963   template <>
109964   struct CppType<StructureType, StructureType::eSamplerCustomBorderColorCreateInfoEXT>
109965   {
109966     using Type = SamplerCustomBorderColorCreateInfoEXT;
109967   };
109968 
109969   struct SamplerReductionModeCreateInfo
109970   {
109971     using NativeType = VkSamplerReductionModeCreateInfo;
109972 
109973     static const bool                                  allowDuplicate = false;
109974     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerReductionModeCreateInfo;
109975 
109976 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
109977     VULKAN_HPP_CONSTEXPR
SamplerReductionModeCreateInfoVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo109978       SamplerReductionModeCreateInfo( VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ = VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage,
109979                                       const void *                               pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
109980       : pNext{ pNext_ }
109981       , reductionMode{ reductionMode_ }
109982     {
109983     }
109984 
109985     VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109986 
SamplerReductionModeCreateInfoVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo109987     SamplerReductionModeCreateInfo( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
109988       : SamplerReductionModeCreateInfo( *reinterpret_cast<SamplerReductionModeCreateInfo const *>( &rhs ) )
109989     {
109990     }
109991 
109992     SamplerReductionModeCreateInfo & operator=( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109993 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109994 
operator =VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo109995     SamplerReductionModeCreateInfo & operator=( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
109996     {
109997       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo const *>( &rhs );
109998       return *this;
109999     }
110000 
110001 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo110002     VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
110003     {
110004       pNext = pNext_;
110005       return *this;
110006     }
110007 
setReductionModeVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo110008     VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & setReductionMode( VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ ) VULKAN_HPP_NOEXCEPT
110009     {
110010       reductionMode = reductionMode_;
110011       return *this;
110012     }
110013 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
110014 
operator VkSamplerReductionModeCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo110015     operator VkSamplerReductionModeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
110016     {
110017       return *reinterpret_cast<const VkSamplerReductionModeCreateInfo *>( this );
110018     }
110019 
operator VkSamplerReductionModeCreateInfo&VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo110020     operator VkSamplerReductionModeCreateInfo &() VULKAN_HPP_NOEXCEPT
110021     {
110022       return *reinterpret_cast<VkSamplerReductionModeCreateInfo *>( this );
110023     }
110024 
110025 #if defined( VULKAN_HPP_USE_REFLECT )
110026 #  if 14 <= VULKAN_HPP_CPP_VERSION
110027     auto
110028 #  else
110029     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SamplerReductionMode const &>
110030 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo110031       reflect() const VULKAN_HPP_NOEXCEPT
110032     {
110033       return std::tie( sType, pNext, reductionMode );
110034     }
110035 #endif
110036 
110037 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110038     auto operator<=>( SamplerReductionModeCreateInfo const & ) const = default;
110039 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo110040     bool operator==( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
110041     {
110042 #  if defined( VULKAN_HPP_USE_REFLECT )
110043       return this->reflect() == rhs.reflect();
110044 #  else
110045       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( reductionMode == rhs.reductionMode );
110046 #  endif
110047     }
110048 
operator !=VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo110049     bool operator!=( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
110050     {
110051       return !operator==( rhs );
110052     }
110053 #endif
110054 
110055   public:
110056     VULKAN_HPP_NAMESPACE::StructureType        sType         = StructureType::eSamplerReductionModeCreateInfo;
110057     const void *                               pNext         = {};
110058     VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode = VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage;
110059   };
110060 
110061   template <>
110062   struct CppType<StructureType, StructureType::eSamplerReductionModeCreateInfo>
110063   {
110064     using Type = SamplerReductionModeCreateInfo;
110065   };
110066 
110067   using SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
110068 
110069   struct SamplerYcbcrConversionCreateInfo
110070   {
110071     using NativeType = VkSamplerYcbcrConversionCreateInfo;
110072 
110073     static const bool                                  allowDuplicate = false;
110074     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerYcbcrConversionCreateInfo;
110075 
110076 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionCreateInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110077     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo(
110078       VULKAN_HPP_NAMESPACE::Format                      format_                      = VULKAN_HPP_NAMESPACE::Format::eUndefined,
110079       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_                  = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
110080       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           ycbcrRange_                  = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
110081       VULKAN_HPP_NAMESPACE::ComponentMapping            components_                  = {},
110082       VULKAN_HPP_NAMESPACE::ChromaLocation              xChromaOffset_               = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
110083       VULKAN_HPP_NAMESPACE::ChromaLocation              yChromaOffset_               = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
110084       VULKAN_HPP_NAMESPACE::Filter                      chromaFilter_                = VULKAN_HPP_NAMESPACE::Filter::eNearest,
110085       VULKAN_HPP_NAMESPACE::Bool32                      forceExplicitReconstruction_ = {},
110086       const void *                                      pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
110087       : pNext{ pNext_ }
110088       , format{ format_ }
110089       , ycbcrModel{ ycbcrModel_ }
110090       , ycbcrRange{ ycbcrRange_ }
110091       , components{ components_ }
110092       , xChromaOffset{ xChromaOffset_ }
110093       , yChromaOffset{ yChromaOffset_ }
110094       , chromaFilter{ chromaFilter_ }
110095       , forceExplicitReconstruction{ forceExplicitReconstruction_ }
110096     {
110097     }
110098 
110099     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110100 
SamplerYcbcrConversionCreateInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110101     SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
110102       : SamplerYcbcrConversionCreateInfo( *reinterpret_cast<SamplerYcbcrConversionCreateInfo const *>( &rhs ) )
110103     {
110104     }
110105 
110106     SamplerYcbcrConversionCreateInfo & operator=( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110107 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110108 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110109     SamplerYcbcrConversionCreateInfo & operator=( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
110110     {
110111       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const *>( &rhs );
110112       return *this;
110113     }
110114 
110115 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110116     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
110117     {
110118       pNext = pNext_;
110119       return *this;
110120     }
110121 
setFormatVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110122     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
110123     {
110124       format = format_;
110125       return *this;
110126     }
110127 
110128     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setYcbcrModelVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110129       setYcbcrModel( VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_ ) VULKAN_HPP_NOEXCEPT
110130     {
110131       ycbcrModel = ycbcrModel_;
110132       return *this;
110133     }
110134 
setYcbcrRangeVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110135     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setYcbcrRange( VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange_ ) VULKAN_HPP_NOEXCEPT
110136     {
110137       ycbcrRange = ycbcrRange_;
110138       return *this;
110139     }
110140 
setComponentsVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110141     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
110142     {
110143       components = components_;
110144       return *this;
110145     }
110146 
setXChromaOffsetVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110147     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setXChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset_ ) VULKAN_HPP_NOEXCEPT
110148     {
110149       xChromaOffset = xChromaOffset_;
110150       return *this;
110151     }
110152 
setYChromaOffsetVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110153     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setYChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset_ ) VULKAN_HPP_NOEXCEPT
110154     {
110155       yChromaOffset = yChromaOffset_;
110156       return *this;
110157     }
110158 
setChromaFilterVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110159     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setChromaFilter( VULKAN_HPP_NAMESPACE::Filter chromaFilter_ ) VULKAN_HPP_NOEXCEPT
110160     {
110161       chromaFilter = chromaFilter_;
110162       return *this;
110163     }
110164 
110165     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setForceExplicitReconstructionVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110166       setForceExplicitReconstruction( VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction_ ) VULKAN_HPP_NOEXCEPT
110167     {
110168       forceExplicitReconstruction = forceExplicitReconstruction_;
110169       return *this;
110170     }
110171 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
110172 
operator VkSamplerYcbcrConversionCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110173     operator VkSamplerYcbcrConversionCreateInfo const &() const VULKAN_HPP_NOEXCEPT
110174     {
110175       return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo *>( this );
110176     }
110177 
operator VkSamplerYcbcrConversionCreateInfo&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110178     operator VkSamplerYcbcrConversionCreateInfo &() VULKAN_HPP_NOEXCEPT
110179     {
110180       return *reinterpret_cast<VkSamplerYcbcrConversionCreateInfo *>( this );
110181     }
110182 
110183 #if defined( VULKAN_HPP_USE_REFLECT )
110184 #  if 14 <= VULKAN_HPP_CPP_VERSION
110185     auto
110186 #  else
110187     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
110188                const void * const &,
110189                VULKAN_HPP_NAMESPACE::Format const &,
110190                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
110191                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
110192                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
110193                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
110194                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
110195                VULKAN_HPP_NAMESPACE::Filter const &,
110196                VULKAN_HPP_NAMESPACE::Bool32 const &>
110197 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110198       reflect() const VULKAN_HPP_NOEXCEPT
110199     {
110200       return std::tie( sType, pNext, format, ycbcrModel, ycbcrRange, components, xChromaOffset, yChromaOffset, chromaFilter, forceExplicitReconstruction );
110201     }
110202 #endif
110203 
110204 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110205     auto operator<=>( SamplerYcbcrConversionCreateInfo const & ) const = default;
110206 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110207     bool operator==( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
110208     {
110209 #  if defined( VULKAN_HPP_USE_REFLECT )
110210       return this->reflect() == rhs.reflect();
110211 #  else
110212       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( ycbcrModel == rhs.ycbcrModel ) &&
110213              ( ycbcrRange == rhs.ycbcrRange ) && ( components == rhs.components ) && ( xChromaOffset == rhs.xChromaOffset ) &&
110214              ( yChromaOffset == rhs.yChromaOffset ) && ( chromaFilter == rhs.chromaFilter ) &&
110215              ( forceExplicitReconstruction == rhs.forceExplicitReconstruction );
110216 #  endif
110217     }
110218 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo110219     bool operator!=( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
110220     {
110221       return !operator==( rhs );
110222     }
110223 #endif
110224 
110225   public:
110226     VULKAN_HPP_NAMESPACE::StructureType               sType                       = StructureType::eSamplerYcbcrConversionCreateInfo;
110227     const void *                                      pNext                       = {};
110228     VULKAN_HPP_NAMESPACE::Format                      format                      = VULKAN_HPP_NAMESPACE::Format::eUndefined;
110229     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel                  = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
110230     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           ycbcrRange                  = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
110231     VULKAN_HPP_NAMESPACE::ComponentMapping            components                  = {};
110232     VULKAN_HPP_NAMESPACE::ChromaLocation              xChromaOffset               = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
110233     VULKAN_HPP_NAMESPACE::ChromaLocation              yChromaOffset               = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
110234     VULKAN_HPP_NAMESPACE::Filter                      chromaFilter                = VULKAN_HPP_NAMESPACE::Filter::eNearest;
110235     VULKAN_HPP_NAMESPACE::Bool32                      forceExplicitReconstruction = {};
110236   };
110237 
110238   template <>
110239   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionCreateInfo>
110240   {
110241     using Type = SamplerYcbcrConversionCreateInfo;
110242   };
110243 
110244   using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
110245 
110246   struct SamplerYcbcrConversionImageFormatProperties
110247   {
110248     using NativeType = VkSamplerYcbcrConversionImageFormatProperties;
110249 
110250     static const bool                                  allowDuplicate = false;
110251     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerYcbcrConversionImageFormatProperties;
110252 
110253 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionImageFormatPropertiesVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties110254     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( uint32_t combinedImageSamplerDescriptorCount_ = {},
110255                                                                       void *   pNext_                               = nullptr ) VULKAN_HPP_NOEXCEPT
110256       : pNext{ pNext_ }
110257       , combinedImageSamplerDescriptorCount{ combinedImageSamplerDescriptorCount_ }
110258     {
110259     }
110260 
110261     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110262 
SamplerYcbcrConversionImageFormatPropertiesVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties110263     SamplerYcbcrConversionImageFormatProperties( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
110264       : SamplerYcbcrConversionImageFormatProperties( *reinterpret_cast<SamplerYcbcrConversionImageFormatProperties const *>( &rhs ) )
110265     {
110266     }
110267 
110268     SamplerYcbcrConversionImageFormatProperties & operator=( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110269 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110270 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties110271     SamplerYcbcrConversionImageFormatProperties & operator=( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
110272     {
110273       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties const *>( &rhs );
110274       return *this;
110275     }
110276 
operator VkSamplerYcbcrConversionImageFormatProperties const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties110277     operator VkSamplerYcbcrConversionImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
110278     {
110279       return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties *>( this );
110280     }
110281 
operator VkSamplerYcbcrConversionImageFormatProperties&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties110282     operator VkSamplerYcbcrConversionImageFormatProperties &() VULKAN_HPP_NOEXCEPT
110283     {
110284       return *reinterpret_cast<VkSamplerYcbcrConversionImageFormatProperties *>( this );
110285     }
110286 
110287 #if defined( VULKAN_HPP_USE_REFLECT )
110288 #  if 14 <= VULKAN_HPP_CPP_VERSION
110289     auto
110290 #  else
110291     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
110292 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties110293       reflect() const VULKAN_HPP_NOEXCEPT
110294     {
110295       return std::tie( sType, pNext, combinedImageSamplerDescriptorCount );
110296     }
110297 #endif
110298 
110299 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110300     auto operator<=>( SamplerYcbcrConversionImageFormatProperties const & ) const = default;
110301 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties110302     bool operator==( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
110303     {
110304 #  if defined( VULKAN_HPP_USE_REFLECT )
110305       return this->reflect() == rhs.reflect();
110306 #  else
110307       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount );
110308 #  endif
110309     }
110310 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties110311     bool operator!=( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
110312     {
110313       return !operator==( rhs );
110314     }
110315 #endif
110316 
110317   public:
110318     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::eSamplerYcbcrConversionImageFormatProperties;
110319     void *                              pNext                               = {};
110320     uint32_t                            combinedImageSamplerDescriptorCount = {};
110321   };
110322 
110323   template <>
110324   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionImageFormatProperties>
110325   {
110326     using Type = SamplerYcbcrConversionImageFormatProperties;
110327   };
110328 
110329   using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties;
110330 
110331   struct SamplerYcbcrConversionInfo
110332   {
110333     using NativeType = VkSamplerYcbcrConversionInfo;
110334 
110335     static const bool                                  allowDuplicate = false;
110336     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerYcbcrConversionInfo;
110337 
110338 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo110339     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ = {},
110340                                                      const void *                                 pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
110341       : pNext{ pNext_ }
110342       , conversion{ conversion_ }
110343     {
110344     }
110345 
110346     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110347 
SamplerYcbcrConversionInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo110348     SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
110349       : SamplerYcbcrConversionInfo( *reinterpret_cast<SamplerYcbcrConversionInfo const *>( &rhs ) )
110350     {
110351     }
110352 
110353     SamplerYcbcrConversionInfo & operator=( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110354 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110355 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo110356     SamplerYcbcrConversionInfo & operator=( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
110357     {
110358       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo const *>( &rhs );
110359       return *this;
110360     }
110361 
110362 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo110363     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
110364     {
110365       pNext = pNext_;
110366       return *this;
110367     }
110368 
setConversionVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo110369     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & setConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ ) VULKAN_HPP_NOEXCEPT
110370     {
110371       conversion = conversion_;
110372       return *this;
110373     }
110374 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
110375 
operator VkSamplerYcbcrConversionInfo const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo110376     operator VkSamplerYcbcrConversionInfo const &() const VULKAN_HPP_NOEXCEPT
110377     {
110378       return *reinterpret_cast<const VkSamplerYcbcrConversionInfo *>( this );
110379     }
110380 
operator VkSamplerYcbcrConversionInfo&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo110381     operator VkSamplerYcbcrConversionInfo &() VULKAN_HPP_NOEXCEPT
110382     {
110383       return *reinterpret_cast<VkSamplerYcbcrConversionInfo *>( this );
110384     }
110385 
110386 #if defined( VULKAN_HPP_USE_REFLECT )
110387 #  if 14 <= VULKAN_HPP_CPP_VERSION
110388     auto
110389 #  else
110390     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const &>
110391 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo110392       reflect() const VULKAN_HPP_NOEXCEPT
110393     {
110394       return std::tie( sType, pNext, conversion );
110395     }
110396 #endif
110397 
110398 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110399     auto operator<=>( SamplerYcbcrConversionInfo const & ) const = default;
110400 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo110401     bool operator==( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
110402     {
110403 #  if defined( VULKAN_HPP_USE_REFLECT )
110404       return this->reflect() == rhs.reflect();
110405 #  else
110406       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conversion == rhs.conversion );
110407 #  endif
110408     }
110409 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo110410     bool operator!=( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
110411     {
110412       return !operator==( rhs );
110413     }
110414 #endif
110415 
110416   public:
110417     VULKAN_HPP_NAMESPACE::StructureType          sType      = StructureType::eSamplerYcbcrConversionInfo;
110418     const void *                                 pNext      = {};
110419     VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion = {};
110420   };
110421 
110422   template <>
110423   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionInfo>
110424   {
110425     using Type = SamplerYcbcrConversionInfo;
110426   };
110427 
110428   using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
110429 
110430   struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM
110431   {
110432     using NativeType = VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
110433 
110434     static const bool                                  allowDuplicate = false;
110435     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
110436 
110437 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110438     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( VULKAN_HPP_NAMESPACE::Bool32 enableYDegamma_    = {},
110439                                                                            VULKAN_HPP_NAMESPACE::Bool32 enableCbCrDegamma_ = {},
110440                                                                            void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
110441       : pNext{ pNext_ }
110442       , enableYDegamma{ enableYDegamma_ }
110443       , enableCbCrDegamma{ enableCbCrDegamma_ }
110444     {
110445     }
110446 
110447     VULKAN_HPP_CONSTEXPR
110448       SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110449 
SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110450     SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
110451       : SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( *reinterpret_cast<SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const *>( &rhs ) )
110452     {
110453     }
110454 
110455     SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & operator=( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110456 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110457 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110458     SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & operator=( VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
110459     {
110460       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const *>( &rhs );
110461       return *this;
110462     }
110463 
110464 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110465     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
110466     {
110467       pNext = pNext_;
110468       return *this;
110469     }
110470 
110471     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM &
setEnableYDegammaVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110472       setEnableYDegamma( VULKAN_HPP_NAMESPACE::Bool32 enableYDegamma_ ) VULKAN_HPP_NOEXCEPT
110473     {
110474       enableYDegamma = enableYDegamma_;
110475       return *this;
110476     }
110477 
110478     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM &
setEnableCbCrDegammaVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110479       setEnableCbCrDegamma( VULKAN_HPP_NAMESPACE::Bool32 enableCbCrDegamma_ ) VULKAN_HPP_NOEXCEPT
110480     {
110481       enableCbCrDegamma = enableCbCrDegamma_;
110482       return *this;
110483     }
110484 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
110485 
operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110486     operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
110487     {
110488       return *reinterpret_cast<const VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM *>( this );
110489     }
110490 
operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110491     operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT
110492     {
110493       return *reinterpret_cast<VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM *>( this );
110494     }
110495 
110496 #if defined( VULKAN_HPP_USE_REFLECT )
110497 #  if 14 <= VULKAN_HPP_CPP_VERSION
110498     auto
110499 #  else
110500     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
110501 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110502       reflect() const VULKAN_HPP_NOEXCEPT
110503     {
110504       return std::tie( sType, pNext, enableYDegamma, enableCbCrDegamma );
110505     }
110506 #endif
110507 
110508 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110509     auto operator<=>( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & ) const = default;
110510 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110511     bool operator==( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
110512     {
110513 #  if defined( VULKAN_HPP_USE_REFLECT )
110514       return this->reflect() == rhs.reflect();
110515 #  else
110516       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( enableYDegamma == rhs.enableYDegamma ) && ( enableCbCrDegamma == rhs.enableCbCrDegamma );
110517 #  endif
110518     }
110519 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM110520     bool operator!=( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
110521     {
110522       return !operator==( rhs );
110523     }
110524 #endif
110525 
110526   public:
110527     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
110528     void *                              pNext             = {};
110529     VULKAN_HPP_NAMESPACE::Bool32        enableYDegamma    = {};
110530     VULKAN_HPP_NAMESPACE::Bool32        enableCbCrDegamma = {};
110531   };
110532 
110533   template <>
110534   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM>
110535   {
110536     using Type = SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
110537   };
110538 
110539 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
110540   struct ScreenBufferFormatPropertiesQNX
110541   {
110542     using NativeType = VkScreenBufferFormatPropertiesQNX;
110543 
110544     static const bool                                  allowDuplicate = false;
110545     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eScreenBufferFormatPropertiesQNX;
110546 
110547 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ScreenBufferFormatPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX110548     VULKAN_HPP_CONSTEXPR ScreenBufferFormatPropertiesQNX(
110549       VULKAN_HPP_NAMESPACE::Format                      format_                           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
110550       uint64_t                                          externalFormat_                   = {},
110551       uint64_t                                          screenUsage_                      = {},
110552       VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures_                   = {},
110553       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
110554       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
110555       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
110556       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
110557       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
110558       void *                                            pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
110559       : pNext{ pNext_ }
110560       , format{ format_ }
110561       , externalFormat{ externalFormat_ }
110562       , screenUsage{ screenUsage_ }
110563       , formatFeatures{ formatFeatures_ }
110564       , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ }
110565       , suggestedYcbcrModel{ suggestedYcbcrModel_ }
110566       , suggestedYcbcrRange{ suggestedYcbcrRange_ }
110567       , suggestedXChromaOffset{ suggestedXChromaOffset_ }
110568       , suggestedYChromaOffset{ suggestedYChromaOffset_ }
110569     {
110570     }
110571 
110572     VULKAN_HPP_CONSTEXPR ScreenBufferFormatPropertiesQNX( ScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110573 
ScreenBufferFormatPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX110574     ScreenBufferFormatPropertiesQNX( VkScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
110575       : ScreenBufferFormatPropertiesQNX( *reinterpret_cast<ScreenBufferFormatPropertiesQNX const *>( &rhs ) )
110576     {
110577     }
110578 
110579     ScreenBufferFormatPropertiesQNX & operator=( ScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110580 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110581 
operator =VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX110582     ScreenBufferFormatPropertiesQNX & operator=( VkScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
110583     {
110584       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX const *>( &rhs );
110585       return *this;
110586     }
110587 
operator VkScreenBufferFormatPropertiesQNX const&VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX110588     operator VkScreenBufferFormatPropertiesQNX const &() const VULKAN_HPP_NOEXCEPT
110589     {
110590       return *reinterpret_cast<const VkScreenBufferFormatPropertiesQNX *>( this );
110591     }
110592 
operator VkScreenBufferFormatPropertiesQNX&VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX110593     operator VkScreenBufferFormatPropertiesQNX &() VULKAN_HPP_NOEXCEPT
110594     {
110595       return *reinterpret_cast<VkScreenBufferFormatPropertiesQNX *>( this );
110596     }
110597 
110598 #  if defined( VULKAN_HPP_USE_REFLECT )
110599 #    if 14 <= VULKAN_HPP_CPP_VERSION
110600     auto
110601 #    else
110602     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
110603                void * const &,
110604                VULKAN_HPP_NAMESPACE::Format const &,
110605                uint64_t const &,
110606                uint64_t const &,
110607                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
110608                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
110609                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
110610                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
110611                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
110612                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
110613 #    endif
reflectVULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX110614       reflect() const VULKAN_HPP_NOEXCEPT
110615     {
110616       return std::tie( sType,
110617                        pNext,
110618                        format,
110619                        externalFormat,
110620                        screenUsage,
110621                        formatFeatures,
110622                        samplerYcbcrConversionComponents,
110623                        suggestedYcbcrModel,
110624                        suggestedYcbcrRange,
110625                        suggestedXChromaOffset,
110626                        suggestedYChromaOffset );
110627     }
110628 #  endif
110629 
110630 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110631     auto operator<=>( ScreenBufferFormatPropertiesQNX const & ) const = default;
110632 #  else
operator ==VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX110633     bool operator==( ScreenBufferFormatPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
110634     {
110635 #    if defined( VULKAN_HPP_USE_REFLECT )
110636       return this->reflect() == rhs.reflect();
110637 #    else
110638       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( externalFormat == rhs.externalFormat ) &&
110639              ( screenUsage == rhs.screenUsage ) && ( formatFeatures == rhs.formatFeatures ) &&
110640              ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) && ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) &&
110641              ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) && ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) &&
110642              ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
110643 #    endif
110644     }
110645 
operator !=VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX110646     bool operator!=( ScreenBufferFormatPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
110647     {
110648       return !operator==( rhs );
110649     }
110650 #  endif
110651 
110652   public:
110653     VULKAN_HPP_NAMESPACE::StructureType               sType                            = StructureType::eScreenBufferFormatPropertiesQNX;
110654     void *                                            pNext                            = {};
110655     VULKAN_HPP_NAMESPACE::Format                      format                           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
110656     uint64_t                                          externalFormat                   = {};
110657     uint64_t                                          screenUsage                      = {};
110658     VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures                   = {};
110659     VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents = {};
110660     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
110661     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
110662     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
110663     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
110664   };
110665 
110666   template <>
110667   struct CppType<StructureType, StructureType::eScreenBufferFormatPropertiesQNX>
110668   {
110669     using Type = ScreenBufferFormatPropertiesQNX;
110670   };
110671 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
110672 
110673 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
110674   struct ScreenBufferPropertiesQNX
110675   {
110676     using NativeType = VkScreenBufferPropertiesQNX;
110677 
110678     static const bool                                  allowDuplicate = false;
110679     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eScreenBufferPropertiesQNX;
110680 
110681 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ScreenBufferPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX110682     VULKAN_HPP_CONSTEXPR ScreenBufferPropertiesQNX( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {},
110683                                                     uint32_t                         memoryTypeBits_ = {},
110684                                                     void *                           pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
110685       : pNext{ pNext_ }
110686       , allocationSize{ allocationSize_ }
110687       , memoryTypeBits{ memoryTypeBits_ }
110688     {
110689     }
110690 
110691     VULKAN_HPP_CONSTEXPR ScreenBufferPropertiesQNX( ScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110692 
ScreenBufferPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX110693     ScreenBufferPropertiesQNX( VkScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
110694       : ScreenBufferPropertiesQNX( *reinterpret_cast<ScreenBufferPropertiesQNX const *>( &rhs ) )
110695     {
110696     }
110697 
110698     ScreenBufferPropertiesQNX & operator=( ScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110699 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110700 
operator =VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX110701     ScreenBufferPropertiesQNX & operator=( VkScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
110702     {
110703       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX const *>( &rhs );
110704       return *this;
110705     }
110706 
operator VkScreenBufferPropertiesQNX const&VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX110707     operator VkScreenBufferPropertiesQNX const &() const VULKAN_HPP_NOEXCEPT
110708     {
110709       return *reinterpret_cast<const VkScreenBufferPropertiesQNX *>( this );
110710     }
110711 
operator VkScreenBufferPropertiesQNX&VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX110712     operator VkScreenBufferPropertiesQNX &() VULKAN_HPP_NOEXCEPT
110713     {
110714       return *reinterpret_cast<VkScreenBufferPropertiesQNX *>( this );
110715     }
110716 
110717 #  if defined( VULKAN_HPP_USE_REFLECT )
110718 #    if 14 <= VULKAN_HPP_CPP_VERSION
110719     auto
110720 #    else
110721     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
110722 #    endif
reflectVULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX110723       reflect() const VULKAN_HPP_NOEXCEPT
110724     {
110725       return std::tie( sType, pNext, allocationSize, memoryTypeBits );
110726     }
110727 #  endif
110728 
110729 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110730     auto operator<=>( ScreenBufferPropertiesQNX const & ) const = default;
110731 #  else
operator ==VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX110732     bool operator==( ScreenBufferPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
110733     {
110734 #    if defined( VULKAN_HPP_USE_REFLECT )
110735       return this->reflect() == rhs.reflect();
110736 #    else
110737       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && ( memoryTypeBits == rhs.memoryTypeBits );
110738 #    endif
110739     }
110740 
operator !=VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX110741     bool operator!=( ScreenBufferPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
110742     {
110743       return !operator==( rhs );
110744     }
110745 #  endif
110746 
110747   public:
110748     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eScreenBufferPropertiesQNX;
110749     void *                              pNext          = {};
110750     VULKAN_HPP_NAMESPACE::DeviceSize    allocationSize = {};
110751     uint32_t                            memoryTypeBits = {};
110752   };
110753 
110754   template <>
110755   struct CppType<StructureType, StructureType::eScreenBufferPropertiesQNX>
110756   {
110757     using Type = ScreenBufferPropertiesQNX;
110758   };
110759 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
110760 
110761 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
110762   struct ScreenSurfaceCreateInfoQNX
110763   {
110764     using NativeType = VkScreenSurfaceCreateInfoQNX;
110765 
110766     static const bool                                  allowDuplicate = false;
110767     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eScreenSurfaceCreateInfoQNX;
110768 
110769 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ScreenSurfaceCreateInfoQNXVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110770     VULKAN_HPP_CONSTEXPR ScreenSurfaceCreateInfoQNX( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags_   = {},
110771                                                      struct _screen_context *                          context_ = {},
110772                                                      struct _screen_window *                           window_  = {},
110773                                                      const void *                                      pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
110774       : pNext{ pNext_ }
110775       , flags{ flags_ }
110776       , context{ context_ }
110777       , window{ window_ }
110778     {
110779     }
110780 
110781     VULKAN_HPP_CONSTEXPR ScreenSurfaceCreateInfoQNX( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110782 
ScreenSurfaceCreateInfoQNXVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110783     ScreenSurfaceCreateInfoQNX( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
110784       : ScreenSurfaceCreateInfoQNX( *reinterpret_cast<ScreenSurfaceCreateInfoQNX const *>( &rhs ) )
110785     {
110786     }
110787 
110788     ScreenSurfaceCreateInfoQNX & operator=( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110789 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110790 
operator =VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110791     ScreenSurfaceCreateInfoQNX & operator=( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
110792     {
110793       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const *>( &rhs );
110794       return *this;
110795     }
110796 
110797 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110798     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
110799     {
110800       pNext = pNext_;
110801       return *this;
110802     }
110803 
setFlagsVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110804     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setFlags( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags_ ) VULKAN_HPP_NOEXCEPT
110805     {
110806       flags = flags_;
110807       return *this;
110808     }
110809 
setContextVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110810     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setContext( struct _screen_context * context_ ) VULKAN_HPP_NOEXCEPT
110811     {
110812       context = context_;
110813       return *this;
110814     }
110815 
setWindowVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110816     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setWindow( struct _screen_window * window_ ) VULKAN_HPP_NOEXCEPT
110817     {
110818       window = window_;
110819       return *this;
110820     }
110821 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
110822 
operator VkScreenSurfaceCreateInfoQNX const&VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110823     operator VkScreenSurfaceCreateInfoQNX const &() const VULKAN_HPP_NOEXCEPT
110824     {
110825       return *reinterpret_cast<const VkScreenSurfaceCreateInfoQNX *>( this );
110826     }
110827 
operator VkScreenSurfaceCreateInfoQNX&VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110828     operator VkScreenSurfaceCreateInfoQNX &() VULKAN_HPP_NOEXCEPT
110829     {
110830       return *reinterpret_cast<VkScreenSurfaceCreateInfoQNX *>( this );
110831     }
110832 
110833 #  if defined( VULKAN_HPP_USE_REFLECT )
110834 #    if 14 <= VULKAN_HPP_CPP_VERSION
110835     auto
110836 #    else
110837     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
110838                const void * const &,
110839                VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX const &,
110840                struct _screen_context * const &,
110841                struct _screen_window * const &>
110842 #    endif
reflectVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110843       reflect() const VULKAN_HPP_NOEXCEPT
110844     {
110845       return std::tie( sType, pNext, flags, context, window );
110846     }
110847 #  endif
110848 
110849 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110850     auto operator<=>( ScreenSurfaceCreateInfoQNX const & ) const = default;
110851 #  else
operator ==VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110852     bool operator==( ScreenSurfaceCreateInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
110853     {
110854 #    if defined( VULKAN_HPP_USE_REFLECT )
110855       return this->reflect() == rhs.reflect();
110856 #    else
110857       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( context == rhs.context ) && ( window == rhs.window );
110858 #    endif
110859     }
110860 
operator !=VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX110861     bool operator!=( ScreenSurfaceCreateInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
110862     {
110863       return !operator==( rhs );
110864     }
110865 #  endif
110866 
110867   public:
110868     VULKAN_HPP_NAMESPACE::StructureType               sType   = StructureType::eScreenSurfaceCreateInfoQNX;
110869     const void *                                      pNext   = {};
110870     VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags   = {};
110871     struct _screen_context *                          context = {};
110872     struct _screen_window *                           window  = {};
110873   };
110874 
110875   template <>
110876   struct CppType<StructureType, StructureType::eScreenSurfaceCreateInfoQNX>
110877   {
110878     using Type = ScreenSurfaceCreateInfoQNX;
110879   };
110880 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
110881 
110882   struct SemaphoreCreateInfo
110883   {
110884     using NativeType = VkSemaphoreCreateInfo;
110885 
110886     static const bool                                  allowDuplicate = false;
110887     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreCreateInfo;
110888 
110889 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo110890     VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
110891       : pNext{ pNext_ }
110892       , flags{ flags_ }
110893     {
110894     }
110895 
110896     VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110897 
SemaphoreCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo110898     SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreCreateInfo( *reinterpret_cast<SemaphoreCreateInfo const *>( &rhs ) )
110899     {
110900     }
110901 
110902     SemaphoreCreateInfo & operator=( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110903 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110904 
operator =VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo110905     SemaphoreCreateInfo & operator=( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
110906     {
110907       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const *>( &rhs );
110908       return *this;
110909     }
110910 
110911 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo110912     VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
110913     {
110914       pNext = pNext_;
110915       return *this;
110916     }
110917 
setFlagsVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo110918     VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
110919     {
110920       flags = flags_;
110921       return *this;
110922     }
110923 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
110924 
operator VkSemaphoreCreateInfo const&VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo110925     operator VkSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT
110926     {
110927       return *reinterpret_cast<const VkSemaphoreCreateInfo *>( this );
110928     }
110929 
operator VkSemaphoreCreateInfo&VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo110930     operator VkSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT
110931     {
110932       return *reinterpret_cast<VkSemaphoreCreateInfo *>( this );
110933     }
110934 
110935 #if defined( VULKAN_HPP_USE_REFLECT )
110936 #  if 14 <= VULKAN_HPP_CPP_VERSION
110937     auto
110938 #  else
110939     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags const &>
110940 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo110941       reflect() const VULKAN_HPP_NOEXCEPT
110942     {
110943       return std::tie( sType, pNext, flags );
110944     }
110945 #endif
110946 
110947 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110948     auto operator<=>( SemaphoreCreateInfo const & ) const = default;
110949 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo110950     bool operator==( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
110951     {
110952 #  if defined( VULKAN_HPP_USE_REFLECT )
110953       return this->reflect() == rhs.reflect();
110954 #  else
110955       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
110956 #  endif
110957     }
110958 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo110959     bool operator!=( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
110960     {
110961       return !operator==( rhs );
110962     }
110963 #endif
110964 
110965   public:
110966     VULKAN_HPP_NAMESPACE::StructureType        sType = StructureType::eSemaphoreCreateInfo;
110967     const void *                               pNext = {};
110968     VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags = {};
110969   };
110970 
110971   template <>
110972   struct CppType<StructureType, StructureType::eSemaphoreCreateInfo>
110973   {
110974     using Type = SemaphoreCreateInfo;
110975   };
110976 
110977   struct SemaphoreGetFdInfoKHR
110978   {
110979     using NativeType = VkSemaphoreGetFdInfoKHR;
110980 
110981     static const bool                                  allowDuplicate = false;
110982     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreGetFdInfoKHR;
110983 
110984 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetFdInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR110985     VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR(
110986       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_  = {},
110987       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
110988       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
110989       : pNext{ pNext_ }
110990       , semaphore{ semaphore_ }
110991       , handleType{ handleType_ }
110992     {
110993     }
110994 
110995     VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110996 
SemaphoreGetFdInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR110997     SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
110998       : SemaphoreGetFdInfoKHR( *reinterpret_cast<SemaphoreGetFdInfoKHR const *>( &rhs ) )
110999     {
111000     }
111001 
111002     SemaphoreGetFdInfoKHR & operator=( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111003 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111004 
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR111005     SemaphoreGetFdInfoKHR & operator=( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
111006     {
111007       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR const *>( &rhs );
111008       return *this;
111009     }
111010 
111011 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR111012     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111013     {
111014       pNext = pNext_;
111015       return *this;
111016     }
111017 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR111018     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
111019     {
111020       semaphore = semaphore_;
111021       return *this;
111022     }
111023 
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR111024     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
111025     {
111026       handleType = handleType_;
111027       return *this;
111028     }
111029 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111030 
operator VkSemaphoreGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR111031     operator VkSemaphoreGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
111032     {
111033       return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR *>( this );
111034     }
111035 
operator VkSemaphoreGetFdInfoKHR&VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR111036     operator VkSemaphoreGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
111037     {
111038       return *reinterpret_cast<VkSemaphoreGetFdInfoKHR *>( this );
111039     }
111040 
111041 #if defined( VULKAN_HPP_USE_REFLECT )
111042 #  if 14 <= VULKAN_HPP_CPP_VERSION
111043     auto
111044 #  else
111045     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
111046                const void * const &,
111047                VULKAN_HPP_NAMESPACE::Semaphore const &,
111048                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
111049 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR111050       reflect() const VULKAN_HPP_NOEXCEPT
111051     {
111052       return std::tie( sType, pNext, semaphore, handleType );
111053     }
111054 #endif
111055 
111056 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111057     auto operator<=>( SemaphoreGetFdInfoKHR const & ) const = default;
111058 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR111059     bool operator==( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
111060     {
111061 #  if defined( VULKAN_HPP_USE_REFLECT )
111062       return this->reflect() == rhs.reflect();
111063 #  else
111064       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( handleType == rhs.handleType );
111065 #  endif
111066     }
111067 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR111068     bool operator!=( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
111069     {
111070       return !operator==( rhs );
111071     }
111072 #endif
111073 
111074   public:
111075     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::eSemaphoreGetFdInfoKHR;
111076     const void *                                              pNext      = {};
111077     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore  = {};
111078     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
111079   };
111080 
111081   template <>
111082   struct CppType<StructureType, StructureType::eSemaphoreGetFdInfoKHR>
111083   {
111084     using Type = SemaphoreGetFdInfoKHR;
111085   };
111086 
111087 #if defined( VK_USE_PLATFORM_WIN32_KHR )
111088   struct SemaphoreGetWin32HandleInfoKHR
111089   {
111090     using NativeType = VkSemaphoreGetWin32HandleInfoKHR;
111091 
111092     static const bool                                  allowDuplicate = false;
111093     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreGetWin32HandleInfoKHR;
111094 
111095 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111096     VULKAN_HPP_CONSTEXPR SemaphoreGetWin32HandleInfoKHR(
111097       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_  = {},
111098       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
111099       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
111100       : pNext{ pNext_ }
111101       , semaphore{ semaphore_ }
111102       , handleType{ handleType_ }
111103     {
111104     }
111105 
111106     VULKAN_HPP_CONSTEXPR SemaphoreGetWin32HandleInfoKHR( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111107 
SemaphoreGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111108     SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
111109       : SemaphoreGetWin32HandleInfoKHR( *reinterpret_cast<SemaphoreGetWin32HandleInfoKHR const *>( &rhs ) )
111110     {
111111     }
111112 
111113     SemaphoreGetWin32HandleInfoKHR & operator=( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111114 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111115 
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111116     SemaphoreGetWin32HandleInfoKHR & operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
111117     {
111118       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR const *>( &rhs );
111119       return *this;
111120     }
111121 
111122 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111123     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111124     {
111125       pNext = pNext_;
111126       return *this;
111127     }
111128 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111129     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
111130     {
111131       semaphore = semaphore_;
111132       return *this;
111133     }
111134 
111135     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111136       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
111137     {
111138       handleType = handleType_;
111139       return *this;
111140     }
111141 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111142 
operator VkSemaphoreGetWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111143     operator VkSemaphoreGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
111144     {
111145       return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR *>( this );
111146     }
111147 
operator VkSemaphoreGetWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111148     operator VkSemaphoreGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
111149     {
111150       return *reinterpret_cast<VkSemaphoreGetWin32HandleInfoKHR *>( this );
111151     }
111152 
111153 #  if defined( VULKAN_HPP_USE_REFLECT )
111154 #    if 14 <= VULKAN_HPP_CPP_VERSION
111155     auto
111156 #    else
111157     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
111158                const void * const &,
111159                VULKAN_HPP_NAMESPACE::Semaphore const &,
111160                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
111161 #    endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111162       reflect() const VULKAN_HPP_NOEXCEPT
111163     {
111164       return std::tie( sType, pNext, semaphore, handleType );
111165     }
111166 #  endif
111167 
111168 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111169     auto operator<=>( SemaphoreGetWin32HandleInfoKHR const & ) const = default;
111170 #  else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111171     bool operator==( SemaphoreGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
111172     {
111173 #    if defined( VULKAN_HPP_USE_REFLECT )
111174       return this->reflect() == rhs.reflect();
111175 #    else
111176       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( handleType == rhs.handleType );
111177 #    endif
111178     }
111179 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR111180     bool operator!=( SemaphoreGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
111181     {
111182       return !operator==( rhs );
111183     }
111184 #  endif
111185 
111186   public:
111187     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::eSemaphoreGetWin32HandleInfoKHR;
111188     const void *                                              pNext      = {};
111189     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore  = {};
111190     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
111191   };
111192 
111193   template <>
111194   struct CppType<StructureType, StructureType::eSemaphoreGetWin32HandleInfoKHR>
111195   {
111196     using Type = SemaphoreGetWin32HandleInfoKHR;
111197   };
111198 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
111199 
111200 #if defined( VK_USE_PLATFORM_FUCHSIA )
111201   struct SemaphoreGetZirconHandleInfoFUCHSIA
111202   {
111203     using NativeType = VkSemaphoreGetZirconHandleInfoFUCHSIA;
111204 
111205     static const bool                                  allowDuplicate = false;
111206     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA;
111207 
111208 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111209     VULKAN_HPP_CONSTEXPR SemaphoreGetZirconHandleInfoFUCHSIA(
111210       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_  = {},
111211       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
111212       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
111213       : pNext{ pNext_ }
111214       , semaphore{ semaphore_ }
111215       , handleType{ handleType_ }
111216     {
111217     }
111218 
111219     VULKAN_HPP_CONSTEXPR SemaphoreGetZirconHandleInfoFUCHSIA( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111220 
SemaphoreGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111221     SemaphoreGetZirconHandleInfoFUCHSIA( VkSemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
111222       : SemaphoreGetZirconHandleInfoFUCHSIA( *reinterpret_cast<SemaphoreGetZirconHandleInfoFUCHSIA const *>( &rhs ) )
111223     {
111224     }
111225 
111226     SemaphoreGetZirconHandleInfoFUCHSIA & operator=( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111227 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111228 
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111229     SemaphoreGetZirconHandleInfoFUCHSIA & operator=( VkSemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
111230     {
111231       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA const *>( &rhs );
111232       return *this;
111233     }
111234 
111235 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111236     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111237     {
111238       pNext = pNext_;
111239       return *this;
111240     }
111241 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111242     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
111243     {
111244       semaphore = semaphore_;
111245       return *this;
111246     }
111247 
111248     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111249       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
111250     {
111251       handleType = handleType_;
111252       return *this;
111253     }
111254 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111255 
operator VkSemaphoreGetZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111256     operator VkSemaphoreGetZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
111257     {
111258       return *reinterpret_cast<const VkSemaphoreGetZirconHandleInfoFUCHSIA *>( this );
111259     }
111260 
operator VkSemaphoreGetZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111261     operator VkSemaphoreGetZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
111262     {
111263       return *reinterpret_cast<VkSemaphoreGetZirconHandleInfoFUCHSIA *>( this );
111264     }
111265 
111266 #  if defined( VULKAN_HPP_USE_REFLECT )
111267 #    if 14 <= VULKAN_HPP_CPP_VERSION
111268     auto
111269 #    else
111270     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
111271                const void * const &,
111272                VULKAN_HPP_NAMESPACE::Semaphore const &,
111273                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
111274 #    endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111275       reflect() const VULKAN_HPP_NOEXCEPT
111276     {
111277       return std::tie( sType, pNext, semaphore, handleType );
111278     }
111279 #  endif
111280 
111281 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111282     auto operator<=>( SemaphoreGetZirconHandleInfoFUCHSIA const & ) const = default;
111283 #  else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111284     bool operator==( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
111285     {
111286 #    if defined( VULKAN_HPP_USE_REFLECT )
111287       return this->reflect() == rhs.reflect();
111288 #    else
111289       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( handleType == rhs.handleType );
111290 #    endif
111291     }
111292 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA111293     bool operator!=( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
111294     {
111295       return !operator==( rhs );
111296     }
111297 #  endif
111298 
111299   public:
111300     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA;
111301     const void *                                              pNext      = {};
111302     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore  = {};
111303     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
111304   };
111305 
111306   template <>
111307   struct CppType<StructureType, StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA>
111308   {
111309     using Type = SemaphoreGetZirconHandleInfoFUCHSIA;
111310   };
111311 #endif /*VK_USE_PLATFORM_FUCHSIA*/
111312 
111313   struct SemaphoreSignalInfo
111314   {
111315     using NativeType = VkSemaphoreSignalInfo;
111316 
111317     static const bool                                  allowDuplicate = false;
111318     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreSignalInfo;
111319 
111320 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
111321     VULKAN_HPP_CONSTEXPR
SemaphoreSignalInfoVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111322       SemaphoreSignalInfo( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, uint64_t value_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
111323       : pNext{ pNext_ }
111324       , semaphore{ semaphore_ }
111325       , value{ value_ }
111326     {
111327     }
111328 
111329     VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111330 
SemaphoreSignalInfoVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111331     SemaphoreSignalInfo( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreSignalInfo( *reinterpret_cast<SemaphoreSignalInfo const *>( &rhs ) )
111332     {
111333     }
111334 
111335     SemaphoreSignalInfo & operator=( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111336 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111337 
operator =VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111338     SemaphoreSignalInfo & operator=( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT
111339     {
111340       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo const *>( &rhs );
111341       return *this;
111342     }
111343 
111344 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111345     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111346     {
111347       pNext = pNext_;
111348       return *this;
111349     }
111350 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111351     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
111352     {
111353       semaphore = semaphore_;
111354       return *this;
111355     }
111356 
setValueVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111357     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
111358     {
111359       value = value_;
111360       return *this;
111361     }
111362 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111363 
operator VkSemaphoreSignalInfo const&VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111364     operator VkSemaphoreSignalInfo const &() const VULKAN_HPP_NOEXCEPT
111365     {
111366       return *reinterpret_cast<const VkSemaphoreSignalInfo *>( this );
111367     }
111368 
operator VkSemaphoreSignalInfo&VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111369     operator VkSemaphoreSignalInfo &() VULKAN_HPP_NOEXCEPT
111370     {
111371       return *reinterpret_cast<VkSemaphoreSignalInfo *>( this );
111372     }
111373 
111374 #if defined( VULKAN_HPP_USE_REFLECT )
111375 #  if 14 <= VULKAN_HPP_CPP_VERSION
111376     auto
111377 #  else
111378     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Semaphore const &, uint64_t const &>
111379 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111380       reflect() const VULKAN_HPP_NOEXCEPT
111381     {
111382       return std::tie( sType, pNext, semaphore, value );
111383     }
111384 #endif
111385 
111386 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111387     auto operator<=>( SemaphoreSignalInfo const & ) const = default;
111388 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111389     bool operator==( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111390     {
111391 #  if defined( VULKAN_HPP_USE_REFLECT )
111392       return this->reflect() == rhs.reflect();
111393 #  else
111394       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( value == rhs.value );
111395 #  endif
111396     }
111397 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo111398     bool operator!=( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111399     {
111400       return !operator==( rhs );
111401     }
111402 #endif
111403 
111404   public:
111405     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eSemaphoreSignalInfo;
111406     const void *                        pNext     = {};
111407     VULKAN_HPP_NAMESPACE::Semaphore     semaphore = {};
111408     uint64_t                            value     = {};
111409   };
111410 
111411   template <>
111412   struct CppType<StructureType, StructureType::eSemaphoreSignalInfo>
111413   {
111414     using Type = SemaphoreSignalInfo;
111415   };
111416 
111417   using SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
111418 
111419   struct SemaphoreTypeCreateInfo
111420   {
111421     using NativeType = VkSemaphoreTypeCreateInfo;
111422 
111423     static const bool                                  allowDuplicate = false;
111424     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreTypeCreateInfo;
111425 
111426 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreTypeCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111427     VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary,
111428                                                   uint64_t                            initialValue_  = {},
111429                                                   const void *                        pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
111430       : pNext{ pNext_ }
111431       , semaphoreType{ semaphoreType_ }
111432       , initialValue{ initialValue_ }
111433     {
111434     }
111435 
111436     VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111437 
SemaphoreTypeCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111438     SemaphoreTypeCreateInfo( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
111439       : SemaphoreTypeCreateInfo( *reinterpret_cast<SemaphoreTypeCreateInfo const *>( &rhs ) )
111440     {
111441     }
111442 
111443     SemaphoreTypeCreateInfo & operator=( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111444 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111445 
operator =VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111446     SemaphoreTypeCreateInfo & operator=( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
111447     {
111448       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo const *>( &rhs );
111449       return *this;
111450     }
111451 
111452 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111453     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111454     {
111455       pNext = pNext_;
111456       return *this;
111457     }
111458 
setSemaphoreTypeVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111459     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setSemaphoreType( VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ ) VULKAN_HPP_NOEXCEPT
111460     {
111461       semaphoreType = semaphoreType_;
111462       return *this;
111463     }
111464 
setInitialValueVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111465     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setInitialValue( uint64_t initialValue_ ) VULKAN_HPP_NOEXCEPT
111466     {
111467       initialValue = initialValue_;
111468       return *this;
111469     }
111470 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111471 
operator VkSemaphoreTypeCreateInfo const&VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111472     operator VkSemaphoreTypeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
111473     {
111474       return *reinterpret_cast<const VkSemaphoreTypeCreateInfo *>( this );
111475     }
111476 
operator VkSemaphoreTypeCreateInfo&VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111477     operator VkSemaphoreTypeCreateInfo &() VULKAN_HPP_NOEXCEPT
111478     {
111479       return *reinterpret_cast<VkSemaphoreTypeCreateInfo *>( this );
111480     }
111481 
111482 #if defined( VULKAN_HPP_USE_REFLECT )
111483 #  if 14 <= VULKAN_HPP_CPP_VERSION
111484     auto
111485 #  else
111486     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SemaphoreType const &, uint64_t const &>
111487 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111488       reflect() const VULKAN_HPP_NOEXCEPT
111489     {
111490       return std::tie( sType, pNext, semaphoreType, initialValue );
111491     }
111492 #endif
111493 
111494 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111495     auto operator<=>( SemaphoreTypeCreateInfo const & ) const = default;
111496 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111497     bool operator==( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111498     {
111499 #  if defined( VULKAN_HPP_USE_REFLECT )
111500       return this->reflect() == rhs.reflect();
111501 #  else
111502       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphoreType == rhs.semaphoreType ) && ( initialValue == rhs.initialValue );
111503 #  endif
111504     }
111505 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo111506     bool operator!=( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111507     {
111508       return !operator==( rhs );
111509     }
111510 #endif
111511 
111512   public:
111513     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eSemaphoreTypeCreateInfo;
111514     const void *                        pNext         = {};
111515     VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary;
111516     uint64_t                            initialValue  = {};
111517   };
111518 
111519   template <>
111520   struct CppType<StructureType, StructureType::eSemaphoreTypeCreateInfo>
111521   {
111522     using Type = SemaphoreTypeCreateInfo;
111523   };
111524 
111525   using SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
111526 
111527   struct SemaphoreWaitInfo
111528   {
111529     using NativeType = VkSemaphoreWaitInfo;
111530 
111531     static const bool                                  allowDuplicate = false;
111532     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreWaitInfo;
111533 
111534 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111535     VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_          = {},
111536                                             uint32_t                                 semaphoreCount_ = {},
111537                                             const VULKAN_HPP_NAMESPACE::Semaphore *  pSemaphores_    = {},
111538                                             const uint64_t *                         pValues_        = {},
111539                                             const void *                             pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
111540       : pNext{ pNext_ }
111541       , flags{ flags_ }
111542       , semaphoreCount{ semaphoreCount_ }
111543       , pSemaphores{ pSemaphores_ }
111544       , pValues{ pValues_ }
111545     {
111546     }
111547 
111548     VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111549 
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111550     SemaphoreWaitInfo( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreWaitInfo( *reinterpret_cast<SemaphoreWaitInfo const *>( &rhs ) ) {}
111551 
111552 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111553     SemaphoreWaitInfo( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags                                                     flags_,
111554                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & semaphores_,
111555                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                        values_ = {},
111556                        const void *                                                                                 pNext_  = nullptr )
111557       : pNext( pNext_ )
111558       , flags( flags_ )
111559       , semaphoreCount( static_cast<uint32_t>( semaphores_.size() ) )
111560       , pSemaphores( semaphores_.data() )
111561       , pValues( values_.data() )
111562     {
111563 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
111564       VULKAN_HPP_ASSERT( semaphores_.size() == values_.size() );
111565 #    else
111566       if ( semaphores_.size() != values_.size() )
111567       {
111568         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::SemaphoreWaitInfo::SemaphoreWaitInfo: semaphores_.size() != values_.size()" );
111569       }
111570 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
111571     }
111572 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111573 
111574     SemaphoreWaitInfo & operator=( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111575 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111576 
operator =VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111577     SemaphoreWaitInfo & operator=( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
111578     {
111579       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo const *>( &rhs );
111580       return *this;
111581     }
111582 
111583 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111584     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111585     {
111586       pNext = pNext_;
111587       return *this;
111588     }
111589 
setFlagsVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111590     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_ ) VULKAN_HPP_NOEXCEPT
111591     {
111592       flags = flags_;
111593       return *this;
111594     }
111595 
setSemaphoreCountVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111596     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setSemaphoreCount( uint32_t semaphoreCount_ ) VULKAN_HPP_NOEXCEPT
111597     {
111598       semaphoreCount = semaphoreCount_;
111599       return *this;
111600     }
111601 
setPSemaphoresVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111602     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSemaphores_ ) VULKAN_HPP_NOEXCEPT
111603     {
111604       pSemaphores = pSemaphores_;
111605       return *this;
111606     }
111607 
111608 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
111609     SemaphoreWaitInfo &
setSemaphoresVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111610       setSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & semaphores_ ) VULKAN_HPP_NOEXCEPT
111611     {
111612       semaphoreCount = static_cast<uint32_t>( semaphores_.size() );
111613       pSemaphores    = semaphores_.data();
111614       return *this;
111615     }
111616 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111617 
setPValuesVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111618     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPValues( const uint64_t * pValues_ ) VULKAN_HPP_NOEXCEPT
111619     {
111620       pValues = pValues_;
111621       return *this;
111622     }
111623 
111624 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setValuesVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111625     SemaphoreWaitInfo & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & values_ ) VULKAN_HPP_NOEXCEPT
111626     {
111627       semaphoreCount = static_cast<uint32_t>( values_.size() );
111628       pValues        = values_.data();
111629       return *this;
111630     }
111631 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111632 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111633 
operator VkSemaphoreWaitInfo const&VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111634     operator VkSemaphoreWaitInfo const &() const VULKAN_HPP_NOEXCEPT
111635     {
111636       return *reinterpret_cast<const VkSemaphoreWaitInfo *>( this );
111637     }
111638 
operator VkSemaphoreWaitInfo&VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111639     operator VkSemaphoreWaitInfo &() VULKAN_HPP_NOEXCEPT
111640     {
111641       return *reinterpret_cast<VkSemaphoreWaitInfo *>( this );
111642     }
111643 
111644 #if defined( VULKAN_HPP_USE_REFLECT )
111645 #  if 14 <= VULKAN_HPP_CPP_VERSION
111646     auto
111647 #  else
111648     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
111649                const void * const &,
111650                VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags const &,
111651                uint32_t const &,
111652                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
111653                const uint64_t * const &>
111654 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111655       reflect() const VULKAN_HPP_NOEXCEPT
111656     {
111657       return std::tie( sType, pNext, flags, semaphoreCount, pSemaphores, pValues );
111658     }
111659 #endif
111660 
111661 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111662     auto operator<=>( SemaphoreWaitInfo const & ) const = default;
111663 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111664     bool operator==( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111665     {
111666 #  if defined( VULKAN_HPP_USE_REFLECT )
111667       return this->reflect() == rhs.reflect();
111668 #  else
111669       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( semaphoreCount == rhs.semaphoreCount ) &&
111670              ( pSemaphores == rhs.pSemaphores ) && ( pValues == rhs.pValues );
111671 #  endif
111672     }
111673 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo111674     bool operator!=( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111675     {
111676       return !operator==( rhs );
111677     }
111678 #endif
111679 
111680   public:
111681     VULKAN_HPP_NAMESPACE::StructureType      sType          = StructureType::eSemaphoreWaitInfo;
111682     const void *                             pNext          = {};
111683     VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags          = {};
111684     uint32_t                                 semaphoreCount = {};
111685     const VULKAN_HPP_NAMESPACE::Semaphore *  pSemaphores    = {};
111686     const uint64_t *                         pValues        = {};
111687   };
111688 
111689   template <>
111690   struct CppType<StructureType, StructureType::eSemaphoreWaitInfo>
111691   {
111692     using Type = SemaphoreWaitInfo;
111693   };
111694 
111695   using SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
111696 
111697   struct SetDescriptorBufferOffsetsInfoEXT
111698   {
111699     using NativeType = VkSetDescriptorBufferOffsetsInfoEXT;
111700 
111701     static const bool                                  allowDuplicate = false;
111702     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSetDescriptorBufferOffsetsInfoEXT;
111703 
111704 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SetDescriptorBufferOffsetsInfoEXTVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111705     VULKAN_HPP_CONSTEXPR SetDescriptorBufferOffsetsInfoEXT( VULKAN_HPP_NAMESPACE::ShaderStageFlags   stageFlags_     = {},
111706                                                             VULKAN_HPP_NAMESPACE::PipelineLayout     layout_         = {},
111707                                                             uint32_t                                 firstSet_       = {},
111708                                                             uint32_t                                 setCount_       = {},
111709                                                             const uint32_t *                         pBufferIndices_ = {},
111710                                                             const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets_       = {},
111711                                                             const void *                             pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
111712       : pNext{ pNext_ }
111713       , stageFlags{ stageFlags_ }
111714       , layout{ layout_ }
111715       , firstSet{ firstSet_ }
111716       , setCount{ setCount_ }
111717       , pBufferIndices{ pBufferIndices_ }
111718       , pOffsets{ pOffsets_ }
111719     {
111720     }
111721 
111722     VULKAN_HPP_CONSTEXPR SetDescriptorBufferOffsetsInfoEXT( SetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111723 
SetDescriptorBufferOffsetsInfoEXTVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111724     SetDescriptorBufferOffsetsInfoEXT( VkSetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
111725       : SetDescriptorBufferOffsetsInfoEXT( *reinterpret_cast<SetDescriptorBufferOffsetsInfoEXT const *>( &rhs ) )
111726     {
111727     }
111728 
111729 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SetDescriptorBufferOffsetsInfoEXTVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111730     SetDescriptorBufferOffsetsInfoEXT( VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                        stageFlags_,
111731                                        VULKAN_HPP_NAMESPACE::PipelineLayout                                                          layout_,
111732                                        uint32_t                                                                                      firstSet_,
111733                                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                         bufferIndices_,
111734                                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets_ = {},
111735                                        const void *                                                                                  pNext_   = nullptr )
111736       : pNext( pNext_ )
111737       , stageFlags( stageFlags_ )
111738       , layout( layout_ )
111739       , firstSet( firstSet_ )
111740       , setCount( static_cast<uint32_t>( bufferIndices_.size() ) )
111741       , pBufferIndices( bufferIndices_.data() )
111742       , pOffsets( offsets_.data() )
111743     {
111744 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
111745       VULKAN_HPP_ASSERT( bufferIndices_.size() == offsets_.size() );
111746 #    else
111747       if ( bufferIndices_.size() != offsets_.size() )
111748       {
111749         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
111750                           "::SetDescriptorBufferOffsetsInfoEXT::SetDescriptorBufferOffsetsInfoEXT: bufferIndices_.size() != offsets_.size()" );
111751       }
111752 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
111753     }
111754 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111755 
111756     SetDescriptorBufferOffsetsInfoEXT & operator=( SetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111757 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111758 
operator =VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111759     SetDescriptorBufferOffsetsInfoEXT & operator=( VkSetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
111760     {
111761       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT const *>( &rhs );
111762       return *this;
111763     }
111764 
111765 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111766     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111767     {
111768       pNext = pNext_;
111769       return *this;
111770     }
111771 
setStageFlagsVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111772     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
111773     {
111774       stageFlags = stageFlags_;
111775       return *this;
111776     }
111777 
setLayoutVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111778     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
111779     {
111780       layout = layout_;
111781       return *this;
111782     }
111783 
setFirstSetVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111784     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setFirstSet( uint32_t firstSet_ ) VULKAN_HPP_NOEXCEPT
111785     {
111786       firstSet = firstSet_;
111787       return *this;
111788     }
111789 
setSetCountVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111790     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setSetCount( uint32_t setCount_ ) VULKAN_HPP_NOEXCEPT
111791     {
111792       setCount = setCount_;
111793       return *this;
111794     }
111795 
setPBufferIndicesVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111796     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setPBufferIndices( const uint32_t * pBufferIndices_ ) VULKAN_HPP_NOEXCEPT
111797     {
111798       pBufferIndices = pBufferIndices_;
111799       return *this;
111800     }
111801 
111802 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
111803     SetDescriptorBufferOffsetsInfoEXT &
setBufferIndicesVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111804       setBufferIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & bufferIndices_ ) VULKAN_HPP_NOEXCEPT
111805     {
111806       setCount       = static_cast<uint32_t>( bufferIndices_.size() );
111807       pBufferIndices = bufferIndices_.data();
111808       return *this;
111809     }
111810 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111811 
setPOffsetsVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111812     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setPOffsets( const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets_ ) VULKAN_HPP_NOEXCEPT
111813     {
111814       pOffsets = pOffsets_;
111815       return *this;
111816     }
111817 
111818 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
111819     SetDescriptorBufferOffsetsInfoEXT &
setOffsetsVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111820       setOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets_ ) VULKAN_HPP_NOEXCEPT
111821     {
111822       setCount = static_cast<uint32_t>( offsets_.size() );
111823       pOffsets = offsets_.data();
111824       return *this;
111825     }
111826 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111827 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111828 
operator VkSetDescriptorBufferOffsetsInfoEXT const&VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111829     operator VkSetDescriptorBufferOffsetsInfoEXT const &() const VULKAN_HPP_NOEXCEPT
111830     {
111831       return *reinterpret_cast<const VkSetDescriptorBufferOffsetsInfoEXT *>( this );
111832     }
111833 
operator VkSetDescriptorBufferOffsetsInfoEXT&VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111834     operator VkSetDescriptorBufferOffsetsInfoEXT &() VULKAN_HPP_NOEXCEPT
111835     {
111836       return *reinterpret_cast<VkSetDescriptorBufferOffsetsInfoEXT *>( this );
111837     }
111838 
111839 #if defined( VULKAN_HPP_USE_REFLECT )
111840 #  if 14 <= VULKAN_HPP_CPP_VERSION
111841     auto
111842 #  else
111843     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
111844                const void * const &,
111845                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
111846                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
111847                uint32_t const &,
111848                uint32_t const &,
111849                const uint32_t * const &,
111850                const VULKAN_HPP_NAMESPACE::DeviceSize * const &>
111851 #  endif
reflectVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111852       reflect() const VULKAN_HPP_NOEXCEPT
111853     {
111854       return std::tie( sType, pNext, stageFlags, layout, firstSet, setCount, pBufferIndices, pOffsets );
111855     }
111856 #endif
111857 
111858 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111859     auto operator<=>( SetDescriptorBufferOffsetsInfoEXT const & ) const = default;
111860 #else
operator ==VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111861     bool operator==( SetDescriptorBufferOffsetsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
111862     {
111863 #  if defined( VULKAN_HPP_USE_REFLECT )
111864       return this->reflect() == rhs.reflect();
111865 #  else
111866       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( firstSet == rhs.firstSet ) &&
111867              ( setCount == rhs.setCount ) && ( pBufferIndices == rhs.pBufferIndices ) && ( pOffsets == rhs.pOffsets );
111868 #  endif
111869     }
111870 
operator !=VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT111871     bool operator!=( SetDescriptorBufferOffsetsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
111872     {
111873       return !operator==( rhs );
111874     }
111875 #endif
111876 
111877   public:
111878     VULKAN_HPP_NAMESPACE::StructureType      sType          = StructureType::eSetDescriptorBufferOffsetsInfoEXT;
111879     const void *                             pNext          = {};
111880     VULKAN_HPP_NAMESPACE::ShaderStageFlags   stageFlags     = {};
111881     VULKAN_HPP_NAMESPACE::PipelineLayout     layout         = {};
111882     uint32_t                                 firstSet       = {};
111883     uint32_t                                 setCount       = {};
111884     const uint32_t *                         pBufferIndices = {};
111885     const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets       = {};
111886   };
111887 
111888   template <>
111889   struct CppType<StructureType, StructureType::eSetDescriptorBufferOffsetsInfoEXT>
111890   {
111891     using Type = SetDescriptorBufferOffsetsInfoEXT;
111892   };
111893 
111894   struct SetLatencyMarkerInfoNV
111895   {
111896     using NativeType = VkSetLatencyMarkerInfoNV;
111897 
111898     static const bool                                  allowDuplicate = false;
111899     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSetLatencyMarkerInfoNV;
111900 
111901 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SetLatencyMarkerInfoNVVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111902     VULKAN_HPP_CONSTEXPR SetLatencyMarkerInfoNV( uint64_t                              presentID_ = {},
111903                                                  VULKAN_HPP_NAMESPACE::LatencyMarkerNV marker_    = VULKAN_HPP_NAMESPACE::LatencyMarkerNV::eSimulationStart,
111904                                                  const void *                          pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
111905       : pNext{ pNext_ }
111906       , presentID{ presentID_ }
111907       , marker{ marker_ }
111908     {
111909     }
111910 
111911     VULKAN_HPP_CONSTEXPR SetLatencyMarkerInfoNV( SetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111912 
SetLatencyMarkerInfoNVVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111913     SetLatencyMarkerInfoNV( VkSetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
111914       : SetLatencyMarkerInfoNV( *reinterpret_cast<SetLatencyMarkerInfoNV const *>( &rhs ) )
111915     {
111916     }
111917 
111918     SetLatencyMarkerInfoNV & operator=( SetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111919 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111920 
operator =VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111921     SetLatencyMarkerInfoNV & operator=( VkSetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
111922     {
111923       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV const *>( &rhs );
111924       return *this;
111925     }
111926 
111927 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111928     VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111929     {
111930       pNext = pNext_;
111931       return *this;
111932     }
111933 
setPresentIDVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111934     VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV & setPresentID( uint64_t presentID_ ) VULKAN_HPP_NOEXCEPT
111935     {
111936       presentID = presentID_;
111937       return *this;
111938     }
111939 
setMarkerVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111940     VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV & setMarker( VULKAN_HPP_NAMESPACE::LatencyMarkerNV marker_ ) VULKAN_HPP_NOEXCEPT
111941     {
111942       marker = marker_;
111943       return *this;
111944     }
111945 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111946 
operator VkSetLatencyMarkerInfoNV const&VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111947     operator VkSetLatencyMarkerInfoNV const &() const VULKAN_HPP_NOEXCEPT
111948     {
111949       return *reinterpret_cast<const VkSetLatencyMarkerInfoNV *>( this );
111950     }
111951 
operator VkSetLatencyMarkerInfoNV&VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111952     operator VkSetLatencyMarkerInfoNV &() VULKAN_HPP_NOEXCEPT
111953     {
111954       return *reinterpret_cast<VkSetLatencyMarkerInfoNV *>( this );
111955     }
111956 
111957 #if defined( VULKAN_HPP_USE_REFLECT )
111958 #  if 14 <= VULKAN_HPP_CPP_VERSION
111959     auto
111960 #  else
111961     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &, VULKAN_HPP_NAMESPACE::LatencyMarkerNV const &>
111962 #  endif
reflectVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111963       reflect() const VULKAN_HPP_NOEXCEPT
111964     {
111965       return std::tie( sType, pNext, presentID, marker );
111966     }
111967 #endif
111968 
111969 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111970     auto operator<=>( SetLatencyMarkerInfoNV const & ) const = default;
111971 #else
operator ==VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111972     bool operator==( SetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
111973     {
111974 #  if defined( VULKAN_HPP_USE_REFLECT )
111975       return this->reflect() == rhs.reflect();
111976 #  else
111977       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentID == rhs.presentID ) && ( marker == rhs.marker );
111978 #  endif
111979     }
111980 
operator !=VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV111981     bool operator!=( SetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
111982     {
111983       return !operator==( rhs );
111984     }
111985 #endif
111986 
111987   public:
111988     VULKAN_HPP_NAMESPACE::StructureType   sType     = StructureType::eSetLatencyMarkerInfoNV;
111989     const void *                          pNext     = {};
111990     uint64_t                              presentID = {};
111991     VULKAN_HPP_NAMESPACE::LatencyMarkerNV marker    = VULKAN_HPP_NAMESPACE::LatencyMarkerNV::eSimulationStart;
111992   };
111993 
111994   template <>
111995   struct CppType<StructureType, StructureType::eSetLatencyMarkerInfoNV>
111996   {
111997     using Type = SetLatencyMarkerInfoNV;
111998   };
111999 
112000   struct SetStateFlagsIndirectCommandNV
112001   {
112002     using NativeType = VkSetStateFlagsIndirectCommandNV;
112003 
112004 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SetStateFlagsIndirectCommandNVVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV112005     VULKAN_HPP_CONSTEXPR SetStateFlagsIndirectCommandNV( uint32_t data_ = {} ) VULKAN_HPP_NOEXCEPT : data{ data_ } {}
112006 
112007     VULKAN_HPP_CONSTEXPR SetStateFlagsIndirectCommandNV( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112008 
SetStateFlagsIndirectCommandNVVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV112009     SetStateFlagsIndirectCommandNV( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
112010       : SetStateFlagsIndirectCommandNV( *reinterpret_cast<SetStateFlagsIndirectCommandNV const *>( &rhs ) )
112011     {
112012     }
112013 
112014     SetStateFlagsIndirectCommandNV & operator=( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112015 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112016 
operator =VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV112017     SetStateFlagsIndirectCommandNV & operator=( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
112018     {
112019       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV const *>( &rhs );
112020       return *this;
112021     }
112022 
112023 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDataVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV112024     VULKAN_HPP_CONSTEXPR_14 SetStateFlagsIndirectCommandNV & setData( uint32_t data_ ) VULKAN_HPP_NOEXCEPT
112025     {
112026       data = data_;
112027       return *this;
112028     }
112029 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
112030 
operator VkSetStateFlagsIndirectCommandNV const&VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV112031     operator VkSetStateFlagsIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
112032     {
112033       return *reinterpret_cast<const VkSetStateFlagsIndirectCommandNV *>( this );
112034     }
112035 
operator VkSetStateFlagsIndirectCommandNV&VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV112036     operator VkSetStateFlagsIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
112037     {
112038       return *reinterpret_cast<VkSetStateFlagsIndirectCommandNV *>( this );
112039     }
112040 
112041 #if defined( VULKAN_HPP_USE_REFLECT )
112042 #  if 14 <= VULKAN_HPP_CPP_VERSION
112043     auto
112044 #  else
112045     std::tuple<uint32_t const &>
112046 #  endif
reflectVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV112047       reflect() const VULKAN_HPP_NOEXCEPT
112048     {
112049       return std::tie( data );
112050     }
112051 #endif
112052 
112053 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112054     auto operator<=>( SetStateFlagsIndirectCommandNV const & ) const = default;
112055 #else
operator ==VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV112056     bool operator==( SetStateFlagsIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
112057     {
112058 #  if defined( VULKAN_HPP_USE_REFLECT )
112059       return this->reflect() == rhs.reflect();
112060 #  else
112061       return ( data == rhs.data );
112062 #  endif
112063     }
112064 
operator !=VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV112065     bool operator!=( SetStateFlagsIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
112066     {
112067       return !operator==( rhs );
112068     }
112069 #endif
112070 
112071   public:
112072     uint32_t data = {};
112073   };
112074 
112075   struct ShaderCreateInfoEXT
112076   {
112077     using NativeType = VkShaderCreateInfoEXT;
112078 
112079     static const bool                                  allowDuplicate = false;
112080     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eShaderCreateInfoEXT;
112081 
112082 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112083     VULKAN_HPP_CONSTEXPR ShaderCreateInfoEXT( VULKAN_HPP_NAMESPACE::ShaderCreateFlagsEXT        flags_     = {},
112084                                               VULKAN_HPP_NAMESPACE::ShaderStageFlagBits         stage_     = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex,
112085                                               VULKAN_HPP_NAMESPACE::ShaderStageFlags            nextStage_ = {},
112086                                               VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT           codeType_  = VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT::eBinary,
112087                                               size_t                                            codeSize_  = {},
112088                                               const void *                                      pCode_     = {},
112089                                               const char *                                      pName_     = {},
112090                                               uint32_t                                          setLayoutCount_         = {},
112091                                               const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_            = {},
112092                                               uint32_t                                          pushConstantRangeCount_ = {},
112093                                               const VULKAN_HPP_NAMESPACE::PushConstantRange *   pPushConstantRanges_    = {},
112094                                               const VULKAN_HPP_NAMESPACE::SpecializationInfo *  pSpecializationInfo_    = {},
112095                                               const void *                                      pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
112096       : pNext{ pNext_ }
112097       , flags{ flags_ }
112098       , stage{ stage_ }
112099       , nextStage{ nextStage_ }
112100       , codeType{ codeType_ }
112101       , codeSize{ codeSize_ }
112102       , pCode{ pCode_ }
112103       , pName{ pName_ }
112104       , setLayoutCount{ setLayoutCount_ }
112105       , pSetLayouts{ pSetLayouts_ }
112106       , pushConstantRangeCount{ pushConstantRangeCount_ }
112107       , pPushConstantRanges{ pPushConstantRanges_ }
112108       , pSpecializationInfo{ pSpecializationInfo_ }
112109     {
112110     }
112111 
112112     VULKAN_HPP_CONSTEXPR ShaderCreateInfoEXT( ShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112113 
ShaderCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112114     ShaderCreateInfoEXT( VkShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : ShaderCreateInfoEXT( *reinterpret_cast<ShaderCreateInfoEXT const *>( &rhs ) )
112115     {
112116     }
112117 
112118 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
112119     template <typename T>
ShaderCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112120     ShaderCreateInfoEXT( VULKAN_HPP_NAMESPACE::ShaderCreateFlagsEXT                                                             flags_,
112121                          VULKAN_HPP_NAMESPACE::ShaderStageFlagBits                                                              stage_,
112122                          VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                                 nextStage_,
112123                          VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT                                                                codeType_,
112124                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const &                                         code_,
112125                          const char *                                                                                           pName_               = {},
112126                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_          = {},
112127                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const &   pushConstantRanges_  = {},
112128                          const VULKAN_HPP_NAMESPACE::SpecializationInfo *                                                       pSpecializationInfo_ = {},
112129                          const void *                                                                                           pNext_               = nullptr )
112130       : pNext( pNext_ )
112131       , flags( flags_ )
112132       , stage( stage_ )
112133       , nextStage( nextStage_ )
112134       , codeType( codeType_ )
112135       , codeSize( code_.size() * sizeof( T ) )
112136       , pCode( code_.data() )
112137       , pName( pName_ )
112138       , setLayoutCount( static_cast<uint32_t>( setLayouts_.size() ) )
112139       , pSetLayouts( setLayouts_.data() )
112140       , pushConstantRangeCount( static_cast<uint32_t>( pushConstantRanges_.size() ) )
112141       , pPushConstantRanges( pushConstantRanges_.data() )
112142       , pSpecializationInfo( pSpecializationInfo_ )
112143     {
112144     }
112145 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
112146 
112147     ShaderCreateInfoEXT & operator=( ShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112148 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112149 
operator =VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112150     ShaderCreateInfoEXT & operator=( VkShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112151     {
112152       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT const *>( &rhs );
112153       return *this;
112154     }
112155 
112156 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112157     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
112158     {
112159       pNext = pNext_;
112160       return *this;
112161     }
112162 
setFlagsVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112163     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::ShaderCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
112164     {
112165       flags = flags_;
112166       return *this;
112167     }
112168 
setStageVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112169     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setStage( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ ) VULKAN_HPP_NOEXCEPT
112170     {
112171       stage = stage_;
112172       return *this;
112173     }
112174 
setNextStageVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112175     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setNextStage( VULKAN_HPP_NAMESPACE::ShaderStageFlags nextStage_ ) VULKAN_HPP_NOEXCEPT
112176     {
112177       nextStage = nextStage_;
112178       return *this;
112179     }
112180 
setCodeTypeVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112181     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setCodeType( VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT codeType_ ) VULKAN_HPP_NOEXCEPT
112182     {
112183       codeType = codeType_;
112184       return *this;
112185     }
112186 
setCodeSizeVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112187     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setCodeSize( size_t codeSize_ ) VULKAN_HPP_NOEXCEPT
112188     {
112189       codeSize = codeSize_;
112190       return *this;
112191     }
112192 
setPCodeVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112193     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPCode( const void * pCode_ ) VULKAN_HPP_NOEXCEPT
112194     {
112195       pCode = pCode_;
112196       return *this;
112197     }
112198 
112199 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
112200     template <typename T>
setCodeVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112201     ShaderCreateInfoEXT & setCode( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & code_ ) VULKAN_HPP_NOEXCEPT
112202     {
112203       codeSize = code_.size() * sizeof( T );
112204       pCode    = code_.data();
112205       return *this;
112206     }
112207 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
112208 
setPNameVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112209     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
112210     {
112211       pName = pName_;
112212       return *this;
112213     }
112214 
setSetLayoutCountVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112215     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setSetLayoutCount( uint32_t setLayoutCount_ ) VULKAN_HPP_NOEXCEPT
112216     {
112217       setLayoutCount = setLayoutCount_;
112218       return *this;
112219     }
112220 
setPSetLayoutsVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112221     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT
112222     {
112223       pSetLayouts = pSetLayouts_;
112224       return *this;
112225     }
112226 
112227 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
112228     ShaderCreateInfoEXT &
setSetLayoutsVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112229       setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_ ) VULKAN_HPP_NOEXCEPT
112230     {
112231       setLayoutCount = static_cast<uint32_t>( setLayouts_.size() );
112232       pSetLayouts    = setLayouts_.data();
112233       return *this;
112234     }
112235 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
112236 
setPushConstantRangeCountVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112237     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) VULKAN_HPP_NOEXCEPT
112238     {
112239       pushConstantRangeCount = pushConstantRangeCount_;
112240       return *this;
112241     }
112242 
112243     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT &
setPPushConstantRangesVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112244       setPPushConstantRanges( const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
112245     {
112246       pPushConstantRanges = pPushConstantRanges_;
112247       return *this;
112248     }
112249 
112250 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPushConstantRangesVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112251     ShaderCreateInfoEXT & setPushConstantRanges(
112252       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const & pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
112253     {
112254       pushConstantRangeCount = static_cast<uint32_t>( pushConstantRanges_.size() );
112255       pPushConstantRanges    = pushConstantRanges_.data();
112256       return *this;
112257     }
112258 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
112259 
112260     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT &
setPSpecializationInfoVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112261       setPSpecializationInfo( const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ ) VULKAN_HPP_NOEXCEPT
112262     {
112263       pSpecializationInfo = pSpecializationInfo_;
112264       return *this;
112265     }
112266 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
112267 
operator VkShaderCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112268     operator VkShaderCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
112269     {
112270       return *reinterpret_cast<const VkShaderCreateInfoEXT *>( this );
112271     }
112272 
operator VkShaderCreateInfoEXT&VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112273     operator VkShaderCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
112274     {
112275       return *reinterpret_cast<VkShaderCreateInfoEXT *>( this );
112276     }
112277 
112278 #if defined( VULKAN_HPP_USE_REFLECT )
112279 #  if 14 <= VULKAN_HPP_CPP_VERSION
112280     auto
112281 #  else
112282     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
112283                const void * const &,
112284                VULKAN_HPP_NAMESPACE::ShaderCreateFlagsEXT const &,
112285                VULKAN_HPP_NAMESPACE::ShaderStageFlagBits const &,
112286                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
112287                VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT const &,
112288                size_t const &,
112289                const void * const &,
112290                const char * const &,
112291                uint32_t const &,
112292                const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &,
112293                uint32_t const &,
112294                const VULKAN_HPP_NAMESPACE::PushConstantRange * const &,
112295                const VULKAN_HPP_NAMESPACE::SpecializationInfo * const &>
112296 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112297       reflect() const VULKAN_HPP_NOEXCEPT
112298     {
112299       return std::tie( sType,
112300                        pNext,
112301                        flags,
112302                        stage,
112303                        nextStage,
112304                        codeType,
112305                        codeSize,
112306                        pCode,
112307                        pName,
112308                        setLayoutCount,
112309                        pSetLayouts,
112310                        pushConstantRangeCount,
112311                        pPushConstantRanges,
112312                        pSpecializationInfo );
112313     }
112314 #endif
112315 
112316 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112317     std::strong_ordering operator<=>( ShaderCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112318     {
112319       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
112320         return cmp;
112321       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
112322         return cmp;
112323       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
112324         return cmp;
112325       if ( auto cmp = stage <=> rhs.stage; cmp != 0 )
112326         return cmp;
112327       if ( auto cmp = nextStage <=> rhs.nextStage; cmp != 0 )
112328         return cmp;
112329       if ( auto cmp = codeType <=> rhs.codeType; cmp != 0 )
112330         return cmp;
112331       if ( auto cmp = codeSize <=> rhs.codeSize; cmp != 0 )
112332         return cmp;
112333       if ( auto cmp = pCode <=> rhs.pCode; cmp != 0 )
112334         return cmp;
112335       if ( pName != rhs.pName )
112336         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
112337           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
112338       if ( auto cmp = setLayoutCount <=> rhs.setLayoutCount; cmp != 0 )
112339         return cmp;
112340       if ( auto cmp = pSetLayouts <=> rhs.pSetLayouts; cmp != 0 )
112341         return cmp;
112342       if ( auto cmp = pushConstantRangeCount <=> rhs.pushConstantRangeCount; cmp != 0 )
112343         return cmp;
112344       if ( auto cmp = pPushConstantRanges <=> rhs.pPushConstantRanges; cmp != 0 )
112345         return cmp;
112346       if ( auto cmp = pSpecializationInfo <=> rhs.pSpecializationInfo; cmp != 0 )
112347         return cmp;
112348 
112349       return std::strong_ordering::equivalent;
112350     }
112351 #endif
112352 
operator ==VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112353     bool operator==( ShaderCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112354     {
112355       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && ( nextStage == rhs.nextStage ) &&
112356              ( codeType == rhs.codeType ) && ( codeSize == rhs.codeSize ) && ( pCode == rhs.pCode ) &&
112357              ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && ( setLayoutCount == rhs.setLayoutCount ) &&
112358              ( pSetLayouts == rhs.pSetLayouts ) && ( pushConstantRangeCount == rhs.pushConstantRangeCount ) &&
112359              ( pPushConstantRanges == rhs.pPushConstantRanges ) && ( pSpecializationInfo == rhs.pSpecializationInfo );
112360     }
112361 
operator !=VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT112362     bool operator!=( ShaderCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112363     {
112364       return !operator==( rhs );
112365     }
112366 
112367   public:
112368     VULKAN_HPP_NAMESPACE::StructureType               sType                  = StructureType::eShaderCreateInfoEXT;
112369     const void *                                      pNext                  = {};
112370     VULKAN_HPP_NAMESPACE::ShaderCreateFlagsEXT        flags                  = {};
112371     VULKAN_HPP_NAMESPACE::ShaderStageFlagBits         stage                  = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex;
112372     VULKAN_HPP_NAMESPACE::ShaderStageFlags            nextStage              = {};
112373     VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT           codeType               = VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT::eBinary;
112374     size_t                                            codeSize               = {};
112375     const void *                                      pCode                  = {};
112376     const char *                                      pName                  = {};
112377     uint32_t                                          setLayoutCount         = {};
112378     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts            = {};
112379     uint32_t                                          pushConstantRangeCount = {};
112380     const VULKAN_HPP_NAMESPACE::PushConstantRange *   pPushConstantRanges    = {};
112381     const VULKAN_HPP_NAMESPACE::SpecializationInfo *  pSpecializationInfo    = {};
112382   };
112383 
112384   template <>
112385   struct CppType<StructureType, StructureType::eShaderCreateInfoEXT>
112386   {
112387     using Type = ShaderCreateInfoEXT;
112388   };
112389 
112390   struct ShaderModuleCreateInfo
112391   {
112392     using NativeType = VkShaderModuleCreateInfo;
112393 
112394     static const bool                                  allowDuplicate = false;
112395     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eShaderModuleCreateInfo;
112396 
112397 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderModuleCreateInfoVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112398     VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_    = {},
112399                                                  size_t                                        codeSize_ = {},
112400                                                  const uint32_t *                              pCode_    = {},
112401                                                  const void *                                  pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
112402       : pNext{ pNext_ }
112403       , flags{ flags_ }
112404       , codeSize{ codeSize_ }
112405       , pCode{ pCode_ }
112406     {
112407     }
112408 
112409     VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112410 
ShaderModuleCreateInfoVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112411     ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
112412       : ShaderModuleCreateInfo( *reinterpret_cast<ShaderModuleCreateInfo const *>( &rhs ) )
112413     {
112414     }
112415 
112416 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ShaderModuleCreateInfoVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112417     ShaderModuleCreateInfo( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags                         flags_,
112418                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & code_,
112419                             const void *                                                          pNext_ = nullptr )
112420       : pNext( pNext_ ), flags( flags_ ), codeSize( code_.size() * 4 ), pCode( code_.data() )
112421     {
112422     }
112423 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
112424 
112425     ShaderModuleCreateInfo & operator=( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112426 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112427 
operator =VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112428     ShaderModuleCreateInfo & operator=( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
112429     {
112430       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const *>( &rhs );
112431       return *this;
112432     }
112433 
112434 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112435     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
112436     {
112437       pNext = pNext_;
112438       return *this;
112439     }
112440 
setFlagsVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112441     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
112442     {
112443       flags = flags_;
112444       return *this;
112445     }
112446 
setCodeSizeVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112447     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setCodeSize( size_t codeSize_ ) VULKAN_HPP_NOEXCEPT
112448     {
112449       codeSize = codeSize_;
112450       return *this;
112451     }
112452 
setPCodeVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112453     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setPCode( const uint32_t * pCode_ ) VULKAN_HPP_NOEXCEPT
112454     {
112455       pCode = pCode_;
112456       return *this;
112457     }
112458 
112459 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCodeVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112460     ShaderModuleCreateInfo & setCode( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & code_ ) VULKAN_HPP_NOEXCEPT
112461     {
112462       codeSize = code_.size() * 4;
112463       pCode    = code_.data();
112464       return *this;
112465     }
112466 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
112467 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
112468 
operator VkShaderModuleCreateInfo const&VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112469     operator VkShaderModuleCreateInfo const &() const VULKAN_HPP_NOEXCEPT
112470     {
112471       return *reinterpret_cast<const VkShaderModuleCreateInfo *>( this );
112472     }
112473 
operator VkShaderModuleCreateInfo&VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112474     operator VkShaderModuleCreateInfo &() VULKAN_HPP_NOEXCEPT
112475     {
112476       return *reinterpret_cast<VkShaderModuleCreateInfo *>( this );
112477     }
112478 
112479 #if defined( VULKAN_HPP_USE_REFLECT )
112480 #  if 14 <= VULKAN_HPP_CPP_VERSION
112481     auto
112482 #  else
112483     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
112484                const void * const &,
112485                VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags const &,
112486                size_t const &,
112487                const uint32_t * const &>
112488 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112489       reflect() const VULKAN_HPP_NOEXCEPT
112490     {
112491       return std::tie( sType, pNext, flags, codeSize, pCode );
112492     }
112493 #endif
112494 
112495 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112496     auto operator<=>( ShaderModuleCreateInfo const & ) const = default;
112497 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112498     bool operator==( ShaderModuleCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
112499     {
112500 #  if defined( VULKAN_HPP_USE_REFLECT )
112501       return this->reflect() == rhs.reflect();
112502 #  else
112503       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( codeSize == rhs.codeSize ) && ( pCode == rhs.pCode );
112504 #  endif
112505     }
112506 
operator !=VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo112507     bool operator!=( ShaderModuleCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
112508     {
112509       return !operator==( rhs );
112510     }
112511 #endif
112512 
112513   public:
112514     VULKAN_HPP_NAMESPACE::StructureType           sType    = StructureType::eShaderModuleCreateInfo;
112515     const void *                                  pNext    = {};
112516     VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags    = {};
112517     size_t                                        codeSize = {};
112518     const uint32_t *                              pCode    = {};
112519   };
112520 
112521   template <>
112522   struct CppType<StructureType, StructureType::eShaderModuleCreateInfo>
112523   {
112524     using Type = ShaderModuleCreateInfo;
112525   };
112526 
112527   struct ShaderModuleIdentifierEXT
112528   {
112529     using NativeType = VkShaderModuleIdentifierEXT;
112530 
112531     static const bool                                  allowDuplicate = false;
112532     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eShaderModuleIdentifierEXT;
112533 
112534 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderModuleIdentifierEXTVULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT112535     VULKAN_HPP_CONSTEXPR_14 ShaderModuleIdentifierEXT( uint32_t                                                              identifierSize_ = {},
112536                                                        std::array<uint8_t, VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT> const & identifier_     = {},
112537                                                        void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
112538       : pNext{ pNext_ }
112539       , identifierSize{ identifierSize_ }
112540       , identifier{ identifier_ }
112541     {
112542     }
112543 
112544     VULKAN_HPP_CONSTEXPR_14 ShaderModuleIdentifierEXT( ShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112545 
ShaderModuleIdentifierEXTVULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT112546     ShaderModuleIdentifierEXT( VkShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112547       : ShaderModuleIdentifierEXT( *reinterpret_cast<ShaderModuleIdentifierEXT const *>( &rhs ) )
112548     {
112549     }
112550 
112551     ShaderModuleIdentifierEXT & operator=( ShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112552 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112553 
operator =VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT112554     ShaderModuleIdentifierEXT & operator=( VkShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112555     {
112556       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT const *>( &rhs );
112557       return *this;
112558     }
112559 
operator VkShaderModuleIdentifierEXT const&VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT112560     operator VkShaderModuleIdentifierEXT const &() const VULKAN_HPP_NOEXCEPT
112561     {
112562       return *reinterpret_cast<const VkShaderModuleIdentifierEXT *>( this );
112563     }
112564 
operator VkShaderModuleIdentifierEXT&VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT112565     operator VkShaderModuleIdentifierEXT &() VULKAN_HPP_NOEXCEPT
112566     {
112567       return *reinterpret_cast<VkShaderModuleIdentifierEXT *>( this );
112568     }
112569 
112570 #if defined( VULKAN_HPP_USE_REFLECT )
112571 #  if 14 <= VULKAN_HPP_CPP_VERSION
112572     auto
112573 #  else
112574     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
112575                void * const &,
112576                uint32_t const &,
112577                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT> const &>
112578 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT112579       reflect() const VULKAN_HPP_NOEXCEPT
112580     {
112581       return std::tie( sType, pNext, identifierSize, identifier );
112582     }
112583 #endif
112584 
112585 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT112586     std::strong_ordering operator<=>( ShaderModuleIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112587     {
112588       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
112589         return cmp;
112590       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
112591         return cmp;
112592       if ( auto cmp = identifierSize <=> rhs.identifierSize; cmp != 0 )
112593         return cmp;
112594       for ( size_t i = 0; i < identifierSize; ++i )
112595       {
112596         if ( auto cmp = identifier[i] <=> rhs.identifier[i]; cmp != 0 )
112597           return cmp;
112598       }
112599 
112600       return std::strong_ordering::equivalent;
112601     }
112602 #endif
112603 
operator ==VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT112604     bool operator==( ShaderModuleIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112605     {
112606       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( identifierSize == rhs.identifierSize ) &&
112607              ( memcmp( identifier, rhs.identifier, identifierSize * sizeof( uint8_t ) ) == 0 );
112608     }
112609 
operator !=VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT112610     bool operator!=( ShaderModuleIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112611     {
112612       return !operator==( rhs );
112613     }
112614 
112615   public:
112616     VULKAN_HPP_NAMESPACE::StructureType                                                     sType          = StructureType::eShaderModuleIdentifierEXT;
112617     void *                                                                                  pNext          = {};
112618     uint32_t                                                                                identifierSize = {};
112619     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT> identifier     = {};
112620   };
112621 
112622   template <>
112623   struct CppType<StructureType, StructureType::eShaderModuleIdentifierEXT>
112624   {
112625     using Type = ShaderModuleIdentifierEXT;
112626   };
112627 
112628   struct ShaderModuleValidationCacheCreateInfoEXT
112629   {
112630     using NativeType = VkShaderModuleValidationCacheCreateInfoEXT;
112631 
112632     static const bool                                  allowDuplicate = false;
112633     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eShaderModuleValidationCacheCreateInfoEXT;
112634 
112635 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderModuleValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT112636     VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache_ = {},
112637                                                                    const void *                             pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
112638       : pNext{ pNext_ }
112639       , validationCache{ validationCache_ }
112640     {
112641     }
112642 
112643     VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112644 
ShaderModuleValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT112645     ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112646       : ShaderModuleValidationCacheCreateInfoEXT( *reinterpret_cast<ShaderModuleValidationCacheCreateInfoEXT const *>( &rhs ) )
112647     {
112648     }
112649 
112650     ShaderModuleValidationCacheCreateInfoEXT & operator=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112651 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112652 
operator =VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT112653     ShaderModuleValidationCacheCreateInfoEXT & operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112654     {
112655       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT const *>( &rhs );
112656       return *this;
112657     }
112658 
112659 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT112660     VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
112661     {
112662       pNext = pNext_;
112663       return *this;
112664     }
112665 
112666     VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT &
setValidationCacheVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT112667       setValidationCache( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache_ ) VULKAN_HPP_NOEXCEPT
112668     {
112669       validationCache = validationCache_;
112670       return *this;
112671     }
112672 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
112673 
operator VkShaderModuleValidationCacheCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT112674     operator VkShaderModuleValidationCacheCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
112675     {
112676       return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT *>( this );
112677     }
112678 
operator VkShaderModuleValidationCacheCreateInfoEXT&VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT112679     operator VkShaderModuleValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
112680     {
112681       return *reinterpret_cast<VkShaderModuleValidationCacheCreateInfoEXT *>( this );
112682     }
112683 
112684 #if defined( VULKAN_HPP_USE_REFLECT )
112685 #  if 14 <= VULKAN_HPP_CPP_VERSION
112686     auto
112687 #  else
112688     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ValidationCacheEXT const &>
112689 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT112690       reflect() const VULKAN_HPP_NOEXCEPT
112691     {
112692       return std::tie( sType, pNext, validationCache );
112693     }
112694 #endif
112695 
112696 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112697     auto operator<=>( ShaderModuleValidationCacheCreateInfoEXT const & ) const = default;
112698 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT112699     bool operator==( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112700     {
112701 #  if defined( VULKAN_HPP_USE_REFLECT )
112702       return this->reflect() == rhs.reflect();
112703 #  else
112704       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( validationCache == rhs.validationCache );
112705 #  endif
112706     }
112707 
operator !=VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT112708     bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112709     {
112710       return !operator==( rhs );
112711     }
112712 #endif
112713 
112714   public:
112715     VULKAN_HPP_NAMESPACE::StructureType      sType           = StructureType::eShaderModuleValidationCacheCreateInfoEXT;
112716     const void *                             pNext           = {};
112717     VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache = {};
112718   };
112719 
112720   template <>
112721   struct CppType<StructureType, StructureType::eShaderModuleValidationCacheCreateInfoEXT>
112722   {
112723     using Type = ShaderModuleValidationCacheCreateInfoEXT;
112724   };
112725 
112726   struct ShaderResourceUsageAMD
112727   {
112728     using NativeType = VkShaderResourceUsageAMD;
112729 
112730 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderResourceUsageAMDVULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD112731     VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( uint32_t numUsedVgprs_             = {},
112732                                                  uint32_t numUsedSgprs_             = {},
112733                                                  uint32_t ldsSizePerLocalWorkGroup_ = {},
112734                                                  size_t   ldsUsageSizeInBytes_      = {},
112735                                                  size_t   scratchMemUsageInBytes_   = {} ) VULKAN_HPP_NOEXCEPT
112736       : numUsedVgprs{ numUsedVgprs_ }
112737       , numUsedSgprs{ numUsedSgprs_ }
112738       , ldsSizePerLocalWorkGroup{ ldsSizePerLocalWorkGroup_ }
112739       , ldsUsageSizeInBytes{ ldsUsageSizeInBytes_ }
112740       , scratchMemUsageInBytes{ scratchMemUsageInBytes_ }
112741     {
112742     }
112743 
112744     VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112745 
ShaderResourceUsageAMDVULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD112746     ShaderResourceUsageAMD( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT
112747       : ShaderResourceUsageAMD( *reinterpret_cast<ShaderResourceUsageAMD const *>( &rhs ) )
112748     {
112749     }
112750 
112751     ShaderResourceUsageAMD & operator=( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112752 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112753 
operator =VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD112754     ShaderResourceUsageAMD & operator=( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT
112755     {
112756       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD const *>( &rhs );
112757       return *this;
112758     }
112759 
operator VkShaderResourceUsageAMD const&VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD112760     operator VkShaderResourceUsageAMD const &() const VULKAN_HPP_NOEXCEPT
112761     {
112762       return *reinterpret_cast<const VkShaderResourceUsageAMD *>( this );
112763     }
112764 
operator VkShaderResourceUsageAMD&VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD112765     operator VkShaderResourceUsageAMD &() VULKAN_HPP_NOEXCEPT
112766     {
112767       return *reinterpret_cast<VkShaderResourceUsageAMD *>( this );
112768     }
112769 
112770 #if defined( VULKAN_HPP_USE_REFLECT )
112771 #  if 14 <= VULKAN_HPP_CPP_VERSION
112772     auto
112773 #  else
112774     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, size_t const &, size_t const &>
112775 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD112776       reflect() const VULKAN_HPP_NOEXCEPT
112777     {
112778       return std::tie( numUsedVgprs, numUsedSgprs, ldsSizePerLocalWorkGroup, ldsUsageSizeInBytes, scratchMemUsageInBytes );
112779     }
112780 #endif
112781 
112782 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112783     auto operator<=>( ShaderResourceUsageAMD const & ) const = default;
112784 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD112785     bool operator==( ShaderResourceUsageAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
112786     {
112787 #  if defined( VULKAN_HPP_USE_REFLECT )
112788       return this->reflect() == rhs.reflect();
112789 #  else
112790       return ( numUsedVgprs == rhs.numUsedVgprs ) && ( numUsedSgprs == rhs.numUsedSgprs ) && ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup ) &&
112791              ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes ) && ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes );
112792 #  endif
112793     }
112794 
operator !=VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD112795     bool operator!=( ShaderResourceUsageAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
112796     {
112797       return !operator==( rhs );
112798     }
112799 #endif
112800 
112801   public:
112802     uint32_t numUsedVgprs             = {};
112803     uint32_t numUsedSgprs             = {};
112804     uint32_t ldsSizePerLocalWorkGroup = {};
112805     size_t   ldsUsageSizeInBytes      = {};
112806     size_t   scratchMemUsageInBytes   = {};
112807   };
112808 
112809   struct ShaderStatisticsInfoAMD
112810   {
112811     using NativeType = VkShaderStatisticsInfoAMD;
112812 
112813 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderStatisticsInfoAMDVULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD112814     VULKAN_HPP_CONSTEXPR_14 ShaderStatisticsInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlags       shaderStageMask_      = {},
112815                                                      VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD resourceUsage_        = {},
112816                                                      uint32_t                                     numPhysicalVgprs_     = {},
112817                                                      uint32_t                                     numPhysicalSgprs_     = {},
112818                                                      uint32_t                                     numAvailableVgprs_    = {},
112819                                                      uint32_t                                     numAvailableSgprs_    = {},
112820                                                      std::array<uint32_t, 3> const &              computeWorkGroupSize_ = {} ) VULKAN_HPP_NOEXCEPT
112821       : shaderStageMask{ shaderStageMask_ }
112822       , resourceUsage{ resourceUsage_ }
112823       , numPhysicalVgprs{ numPhysicalVgprs_ }
112824       , numPhysicalSgprs{ numPhysicalSgprs_ }
112825       , numAvailableVgprs{ numAvailableVgprs_ }
112826       , numAvailableSgprs{ numAvailableSgprs_ }
112827       , computeWorkGroupSize{ computeWorkGroupSize_ }
112828     {
112829     }
112830 
112831     VULKAN_HPP_CONSTEXPR_14 ShaderStatisticsInfoAMD( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112832 
ShaderStatisticsInfoAMDVULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD112833     ShaderStatisticsInfoAMD( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
112834       : ShaderStatisticsInfoAMD( *reinterpret_cast<ShaderStatisticsInfoAMD const *>( &rhs ) )
112835     {
112836     }
112837 
112838     ShaderStatisticsInfoAMD & operator=( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112839 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112840 
operator =VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD112841     ShaderStatisticsInfoAMD & operator=( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
112842     {
112843       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD const *>( &rhs );
112844       return *this;
112845     }
112846 
operator VkShaderStatisticsInfoAMD const&VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD112847     operator VkShaderStatisticsInfoAMD const &() const VULKAN_HPP_NOEXCEPT
112848     {
112849       return *reinterpret_cast<const VkShaderStatisticsInfoAMD *>( this );
112850     }
112851 
operator VkShaderStatisticsInfoAMD&VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD112852     operator VkShaderStatisticsInfoAMD &() VULKAN_HPP_NOEXCEPT
112853     {
112854       return *reinterpret_cast<VkShaderStatisticsInfoAMD *>( this );
112855     }
112856 
112857 #if defined( VULKAN_HPP_USE_REFLECT )
112858 #  if 14 <= VULKAN_HPP_CPP_VERSION
112859     auto
112860 #  else
112861     std::tuple<VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
112862                VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD const &,
112863                uint32_t const &,
112864                uint32_t const &,
112865                uint32_t const &,
112866                uint32_t const &,
112867                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &>
112868 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD112869       reflect() const VULKAN_HPP_NOEXCEPT
112870     {
112871       return std::tie( shaderStageMask, resourceUsage, numPhysicalVgprs, numPhysicalSgprs, numAvailableVgprs, numAvailableSgprs, computeWorkGroupSize );
112872     }
112873 #endif
112874 
112875 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112876     auto operator<=>( ShaderStatisticsInfoAMD const & ) const = default;
112877 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD112878     bool operator==( ShaderStatisticsInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
112879     {
112880 #  if defined( VULKAN_HPP_USE_REFLECT )
112881       return this->reflect() == rhs.reflect();
112882 #  else
112883       return ( shaderStageMask == rhs.shaderStageMask ) && ( resourceUsage == rhs.resourceUsage ) && ( numPhysicalVgprs == rhs.numPhysicalVgprs ) &&
112884              ( numPhysicalSgprs == rhs.numPhysicalSgprs ) && ( numAvailableVgprs == rhs.numAvailableVgprs ) && ( numAvailableSgprs == rhs.numAvailableSgprs ) &&
112885              ( computeWorkGroupSize == rhs.computeWorkGroupSize );
112886 #  endif
112887     }
112888 
operator !=VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD112889     bool operator!=( ShaderStatisticsInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
112890     {
112891       return !operator==( rhs );
112892     }
112893 #endif
112894 
112895   public:
112896     VULKAN_HPP_NAMESPACE::ShaderStageFlags            shaderStageMask      = {};
112897     VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD      resourceUsage        = {};
112898     uint32_t                                          numPhysicalVgprs     = {};
112899     uint32_t                                          numPhysicalSgprs     = {};
112900     uint32_t                                          numAvailableVgprs    = {};
112901     uint32_t                                          numAvailableSgprs    = {};
112902     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> computeWorkGroupSize = {};
112903   };
112904 
112905   struct SharedPresentSurfaceCapabilitiesKHR
112906   {
112907     using NativeType = VkSharedPresentSurfaceCapabilitiesKHR;
112908 
112909     static const bool                                  allowDuplicate = false;
112910     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
112911 
112912 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SharedPresentSurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR112913     VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags_ = {},
112914                                                               void *                                pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
112915       : pNext{ pNext_ }
112916       , sharedPresentSupportedUsageFlags{ sharedPresentSupportedUsageFlags_ }
112917     {
112918     }
112919 
112920     VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112921 
SharedPresentSurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR112922     SharedPresentSurfaceCapabilitiesKHR( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
112923       : SharedPresentSurfaceCapabilitiesKHR( *reinterpret_cast<SharedPresentSurfaceCapabilitiesKHR const *>( &rhs ) )
112924     {
112925     }
112926 
112927     SharedPresentSurfaceCapabilitiesKHR & operator=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112928 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112929 
operator =VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR112930     SharedPresentSurfaceCapabilitiesKHR & operator=( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
112931     {
112932       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR const *>( &rhs );
112933       return *this;
112934     }
112935 
operator VkSharedPresentSurfaceCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR112936     operator VkSharedPresentSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
112937     {
112938       return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR *>( this );
112939     }
112940 
operator VkSharedPresentSurfaceCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR112941     operator VkSharedPresentSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
112942     {
112943       return *reinterpret_cast<VkSharedPresentSurfaceCapabilitiesKHR *>( this );
112944     }
112945 
112946 #if defined( VULKAN_HPP_USE_REFLECT )
112947 #  if 14 <= VULKAN_HPP_CPP_VERSION
112948     auto
112949 #  else
112950     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
112951 #  endif
reflectVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR112952       reflect() const VULKAN_HPP_NOEXCEPT
112953     {
112954       return std::tie( sType, pNext, sharedPresentSupportedUsageFlags );
112955     }
112956 #endif
112957 
112958 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112959     auto operator<=>( SharedPresentSurfaceCapabilitiesKHR const & ) const = default;
112960 #else
operator ==VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR112961     bool operator==( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112962     {
112963 #  if defined( VULKAN_HPP_USE_REFLECT )
112964       return this->reflect() == rhs.reflect();
112965 #  else
112966       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
112967 #  endif
112968     }
112969 
operator !=VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR112970     bool operator!=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112971     {
112972       return !operator==( rhs );
112973     }
112974 #endif
112975 
112976   public:
112977     VULKAN_HPP_NAMESPACE::StructureType   sType                            = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
112978     void *                                pNext                            = {};
112979     VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags = {};
112980   };
112981 
112982   template <>
112983   struct CppType<StructureType, StructureType::eSharedPresentSurfaceCapabilitiesKHR>
112984   {
112985     using Type = SharedPresentSurfaceCapabilitiesKHR;
112986   };
112987 
112988   struct SparseImageFormatProperties
112989   {
112990     using NativeType = VkSparseImageFormatProperties;
112991 
112992 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageFormatPropertiesVULKAN_HPP_NAMESPACE::SparseImageFormatProperties112993     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties( VULKAN_HPP_NAMESPACE::ImageAspectFlags       aspectMask_       = {},
112994                                                       VULKAN_HPP_NAMESPACE::Extent3D               imageGranularity_ = {},
112995                                                       VULKAN_HPP_NAMESPACE::SparseImageFormatFlags flags_            = {} ) VULKAN_HPP_NOEXCEPT
112996       : aspectMask{ aspectMask_ }
112997       , imageGranularity{ imageGranularity_ }
112998       , flags{ flags_ }
112999     {
113000     }
113001 
113002     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113003 
SparseImageFormatPropertiesVULKAN_HPP_NAMESPACE::SparseImageFormatProperties113004     SparseImageFormatProperties( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
113005       : SparseImageFormatProperties( *reinterpret_cast<SparseImageFormatProperties const *>( &rhs ) )
113006     {
113007     }
113008 
113009     SparseImageFormatProperties & operator=( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113010 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113011 
operator =VULKAN_HPP_NAMESPACE::SparseImageFormatProperties113012     SparseImageFormatProperties & operator=( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
113013     {
113014       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const *>( &rhs );
113015       return *this;
113016     }
113017 
operator VkSparseImageFormatProperties const&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties113018     operator VkSparseImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
113019     {
113020       return *reinterpret_cast<const VkSparseImageFormatProperties *>( this );
113021     }
113022 
operator VkSparseImageFormatProperties&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties113023     operator VkSparseImageFormatProperties &() VULKAN_HPP_NOEXCEPT
113024     {
113025       return *reinterpret_cast<VkSparseImageFormatProperties *>( this );
113026     }
113027 
113028 #if defined( VULKAN_HPP_USE_REFLECT )
113029 #  if 14 <= VULKAN_HPP_CPP_VERSION
113030     auto
113031 #  else
113032     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, VULKAN_HPP_NAMESPACE::Extent3D const &, VULKAN_HPP_NAMESPACE::SparseImageFormatFlags const &>
113033 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageFormatProperties113034       reflect() const VULKAN_HPP_NOEXCEPT
113035     {
113036       return std::tie( aspectMask, imageGranularity, flags );
113037     }
113038 #endif
113039 
113040 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113041     auto operator<=>( SparseImageFormatProperties const & ) const = default;
113042 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageFormatProperties113043     bool operator==( SparseImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
113044     {
113045 #  if defined( VULKAN_HPP_USE_REFLECT )
113046       return this->reflect() == rhs.reflect();
113047 #  else
113048       return ( aspectMask == rhs.aspectMask ) && ( imageGranularity == rhs.imageGranularity ) && ( flags == rhs.flags );
113049 #  endif
113050     }
113051 
operator !=VULKAN_HPP_NAMESPACE::SparseImageFormatProperties113052     bool operator!=( SparseImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
113053     {
113054       return !operator==( rhs );
113055     }
113056 #endif
113057 
113058   public:
113059     VULKAN_HPP_NAMESPACE::ImageAspectFlags       aspectMask       = {};
113060     VULKAN_HPP_NAMESPACE::Extent3D               imageGranularity = {};
113061     VULKAN_HPP_NAMESPACE::SparseImageFormatFlags flags            = {};
113062   };
113063 
113064   struct SparseImageFormatProperties2
113065   {
113066     using NativeType = VkSparseImageFormatProperties2;
113067 
113068     static const bool                                  allowDuplicate = false;
113069     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSparseImageFormatProperties2;
113070 
113071 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageFormatProperties2VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2113072     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties_ = {},
113073                                                        void *                                            pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
113074       : pNext{ pNext_ }
113075       , properties{ properties_ }
113076     {
113077     }
113078 
113079     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113080 
SparseImageFormatProperties2VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2113081     SparseImageFormatProperties2( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
113082       : SparseImageFormatProperties2( *reinterpret_cast<SparseImageFormatProperties2 const *>( &rhs ) )
113083     {
113084     }
113085 
113086     SparseImageFormatProperties2 & operator=( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113087 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113088 
operator =VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2113089     SparseImageFormatProperties2 & operator=( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
113090     {
113091       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 const *>( &rhs );
113092       return *this;
113093     }
113094 
operator VkSparseImageFormatProperties2 const&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2113095     operator VkSparseImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
113096     {
113097       return *reinterpret_cast<const VkSparseImageFormatProperties2 *>( this );
113098     }
113099 
operator VkSparseImageFormatProperties2&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2113100     operator VkSparseImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT
113101     {
113102       return *reinterpret_cast<VkSparseImageFormatProperties2 *>( this );
113103     }
113104 
113105 #if defined( VULKAN_HPP_USE_REFLECT )
113106 #  if 14 <= VULKAN_HPP_CPP_VERSION
113107     auto
113108 #  else
113109     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const &>
113110 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageFormatProperties2113111       reflect() const VULKAN_HPP_NOEXCEPT
113112     {
113113       return std::tie( sType, pNext, properties );
113114     }
113115 #endif
113116 
113117 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113118     auto operator<=>( SparseImageFormatProperties2 const & ) const = default;
113119 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2113120     bool operator==( SparseImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
113121     {
113122 #  if defined( VULKAN_HPP_USE_REFLECT )
113123       return this->reflect() == rhs.reflect();
113124 #  else
113125       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( properties == rhs.properties );
113126 #  endif
113127     }
113128 
operator !=VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2113129     bool operator!=( SparseImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
113130     {
113131       return !operator==( rhs );
113132     }
113133 #endif
113134 
113135   public:
113136     VULKAN_HPP_NAMESPACE::StructureType               sType      = StructureType::eSparseImageFormatProperties2;
113137     void *                                            pNext      = {};
113138     VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties = {};
113139   };
113140 
113141   template <>
113142   struct CppType<StructureType, StructureType::eSparseImageFormatProperties2>
113143   {
113144     using Type = SparseImageFormatProperties2;
113145   };
113146 
113147   using SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
113148 
113149   struct SparseImageMemoryRequirements
113150   {
113151     using NativeType = VkSparseImageMemoryRequirements;
113152 
113153 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageMemoryRequirementsVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements113154     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties formatProperties_     = {},
113155                                                         uint32_t                                          imageMipTailFirstLod_ = {},
113156                                                         VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailSize_     = {},
113157                                                         VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailOffset_   = {},
113158                                                         VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailStride_   = {} ) VULKAN_HPP_NOEXCEPT
113159       : formatProperties{ formatProperties_ }
113160       , imageMipTailFirstLod{ imageMipTailFirstLod_ }
113161       , imageMipTailSize{ imageMipTailSize_ }
113162       , imageMipTailOffset{ imageMipTailOffset_ }
113163       , imageMipTailStride{ imageMipTailStride_ }
113164     {
113165     }
113166 
113167     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113168 
SparseImageMemoryRequirementsVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements113169     SparseImageMemoryRequirements( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
113170       : SparseImageMemoryRequirements( *reinterpret_cast<SparseImageMemoryRequirements const *>( &rhs ) )
113171     {
113172     }
113173 
113174     SparseImageMemoryRequirements & operator=( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113175 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113176 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements113177     SparseImageMemoryRequirements & operator=( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
113178     {
113179       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements const *>( &rhs );
113180       return *this;
113181     }
113182 
operator VkSparseImageMemoryRequirements const&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements113183     operator VkSparseImageMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
113184     {
113185       return *reinterpret_cast<const VkSparseImageMemoryRequirements *>( this );
113186     }
113187 
operator VkSparseImageMemoryRequirements&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements113188     operator VkSparseImageMemoryRequirements &() VULKAN_HPP_NOEXCEPT
113189     {
113190       return *reinterpret_cast<VkSparseImageMemoryRequirements *>( this );
113191     }
113192 
113193 #if defined( VULKAN_HPP_USE_REFLECT )
113194 #  if 14 <= VULKAN_HPP_CPP_VERSION
113195     auto
113196 #  else
113197     std::tuple<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const &,
113198                uint32_t const &,
113199                VULKAN_HPP_NAMESPACE::DeviceSize const &,
113200                VULKAN_HPP_NAMESPACE::DeviceSize const &,
113201                VULKAN_HPP_NAMESPACE::DeviceSize const &>
113202 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements113203       reflect() const VULKAN_HPP_NOEXCEPT
113204     {
113205       return std::tie( formatProperties, imageMipTailFirstLod, imageMipTailSize, imageMipTailOffset, imageMipTailStride );
113206     }
113207 #endif
113208 
113209 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113210     auto operator<=>( SparseImageMemoryRequirements const & ) const = default;
113211 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements113212     bool operator==( SparseImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
113213     {
113214 #  if defined( VULKAN_HPP_USE_REFLECT )
113215       return this->reflect() == rhs.reflect();
113216 #  else
113217       return ( formatProperties == rhs.formatProperties ) && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod ) &&
113218              ( imageMipTailSize == rhs.imageMipTailSize ) && ( imageMipTailOffset == rhs.imageMipTailOffset ) &&
113219              ( imageMipTailStride == rhs.imageMipTailStride );
113220 #  endif
113221     }
113222 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements113223     bool operator!=( SparseImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
113224     {
113225       return !operator==( rhs );
113226     }
113227 #endif
113228 
113229   public:
113230     VULKAN_HPP_NAMESPACE::SparseImageFormatProperties formatProperties     = {};
113231     uint32_t                                          imageMipTailFirstLod = {};
113232     VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailSize     = {};
113233     VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailOffset   = {};
113234     VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailStride   = {};
113235   };
113236 
113237   struct SparseImageMemoryRequirements2
113238   {
113239     using NativeType = VkSparseImageMemoryRequirements2;
113240 
113241     static const bool                                  allowDuplicate = false;
113242     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSparseImageMemoryRequirements2;
113243 
113244 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageMemoryRequirements2VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2113245     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements_ = {},
113246                                                          void *                                              pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
113247       : pNext{ pNext_ }
113248       , memoryRequirements{ memoryRequirements_ }
113249     {
113250     }
113251 
113252     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113253 
SparseImageMemoryRequirements2VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2113254     SparseImageMemoryRequirements2( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
113255       : SparseImageMemoryRequirements2( *reinterpret_cast<SparseImageMemoryRequirements2 const *>( &rhs ) )
113256     {
113257     }
113258 
113259     SparseImageMemoryRequirements2 & operator=( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113260 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113261 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2113262     SparseImageMemoryRequirements2 & operator=( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
113263     {
113264       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 const *>( &rhs );
113265       return *this;
113266     }
113267 
operator VkSparseImageMemoryRequirements2 const&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2113268     operator VkSparseImageMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT
113269     {
113270       return *reinterpret_cast<const VkSparseImageMemoryRequirements2 *>( this );
113271     }
113272 
operator VkSparseImageMemoryRequirements2&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2113273     operator VkSparseImageMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT
113274     {
113275       return *reinterpret_cast<VkSparseImageMemoryRequirements2 *>( this );
113276     }
113277 
113278 #if defined( VULKAN_HPP_USE_REFLECT )
113279 #  if 14 <= VULKAN_HPP_CPP_VERSION
113280     auto
113281 #  else
113282     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements const &>
113283 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2113284       reflect() const VULKAN_HPP_NOEXCEPT
113285     {
113286       return std::tie( sType, pNext, memoryRequirements );
113287     }
113288 #endif
113289 
113290 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113291     auto operator<=>( SparseImageMemoryRequirements2 const & ) const = default;
113292 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2113293     bool operator==( SparseImageMemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
113294     {
113295 #  if defined( VULKAN_HPP_USE_REFLECT )
113296       return this->reflect() == rhs.reflect();
113297 #  else
113298       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryRequirements == rhs.memoryRequirements );
113299 #  endif
113300     }
113301 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2113302     bool operator!=( SparseImageMemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
113303     {
113304       return !operator==( rhs );
113305     }
113306 #endif
113307 
113308   public:
113309     VULKAN_HPP_NAMESPACE::StructureType                 sType              = StructureType::eSparseImageMemoryRequirements2;
113310     void *                                              pNext              = {};
113311     VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements = {};
113312   };
113313 
113314   template <>
113315   struct CppType<StructureType, StructureType::eSparseImageMemoryRequirements2>
113316   {
113317     using Type = SparseImageMemoryRequirements2;
113318   };
113319 
113320   using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
113321 
113322 #if defined( VK_USE_PLATFORM_GGP )
113323   struct StreamDescriptorSurfaceCreateInfoGGP
113324   {
113325     using NativeType = VkStreamDescriptorSurfaceCreateInfoGGP;
113326 
113327     static const bool                                  allowDuplicate = false;
113328     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eStreamDescriptorSurfaceCreateInfoGGP;
113329 
113330 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
StreamDescriptorSurfaceCreateInfoGGPVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113331     VULKAN_HPP_CONSTEXPR StreamDescriptorSurfaceCreateInfoGGP( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags_            = {},
113332                                                                GgpStreamDescriptor                                         streamDescriptor_ = {},
113333                                                                const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
113334       : pNext{ pNext_ }
113335       , flags{ flags_ }
113336       , streamDescriptor{ streamDescriptor_ }
113337     {
113338     }
113339 
113340     VULKAN_HPP_CONSTEXPR StreamDescriptorSurfaceCreateInfoGGP( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113341 
StreamDescriptorSurfaceCreateInfoGGPVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113342     StreamDescriptorSurfaceCreateInfoGGP( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT
113343       : StreamDescriptorSurfaceCreateInfoGGP( *reinterpret_cast<StreamDescriptorSurfaceCreateInfoGGP const *>( &rhs ) )
113344     {
113345     }
113346 
113347     StreamDescriptorSurfaceCreateInfoGGP & operator=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113348 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113349 
operator =VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113350     StreamDescriptorSurfaceCreateInfoGGP & operator=( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT
113351     {
113352       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const *>( &rhs );
113353       return *this;
113354     }
113355 
113356 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113357     VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
113358     {
113359       pNext = pNext_;
113360       return *this;
113361     }
113362 
113363     VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP &
setFlagsVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113364       setFlags( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags_ ) VULKAN_HPP_NOEXCEPT
113365     {
113366       flags = flags_;
113367       return *this;
113368     }
113369 
setStreamDescriptorVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113370     VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & setStreamDescriptor( GgpStreamDescriptor streamDescriptor_ ) VULKAN_HPP_NOEXCEPT
113371     {
113372       streamDescriptor = streamDescriptor_;
113373       return *this;
113374     }
113375 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113376 
operator VkStreamDescriptorSurfaceCreateInfoGGP const&VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113377     operator VkStreamDescriptorSurfaceCreateInfoGGP const &() const VULKAN_HPP_NOEXCEPT
113378     {
113379       return *reinterpret_cast<const VkStreamDescriptorSurfaceCreateInfoGGP *>( this );
113380     }
113381 
operator VkStreamDescriptorSurfaceCreateInfoGGP&VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113382     operator VkStreamDescriptorSurfaceCreateInfoGGP &() VULKAN_HPP_NOEXCEPT
113383     {
113384       return *reinterpret_cast<VkStreamDescriptorSurfaceCreateInfoGGP *>( this );
113385     }
113386 
113387 #  if defined( VULKAN_HPP_USE_REFLECT )
113388 #    if 14 <= VULKAN_HPP_CPP_VERSION
113389     auto
113390 #    else
113391     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
113392                const void * const &,
113393                VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP const &,
113394                GgpStreamDescriptor const &>
113395 #    endif
reflectVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113396       reflect() const VULKAN_HPP_NOEXCEPT
113397     {
113398       return std::tie( sType, pNext, flags, streamDescriptor );
113399     }
113400 #  endif
113401 
113402 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113403     std::strong_ordering operator<=>( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
113404     {
113405       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
113406         return cmp;
113407       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
113408         return cmp;
113409       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
113410         return cmp;
113411       if ( auto cmp = memcmp( &streamDescriptor, &rhs.streamDescriptor, sizeof( GgpStreamDescriptor ) ); cmp != 0 )
113412         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
113413 
113414       return std::strong_ordering::equivalent;
113415     }
113416 #  endif
113417 
operator ==VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113418     bool operator==( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
113419     {
113420       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
113421              ( memcmp( &streamDescriptor, &rhs.streamDescriptor, sizeof( GgpStreamDescriptor ) ) == 0 );
113422     }
113423 
operator !=VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP113424     bool operator!=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
113425     {
113426       return !operator==( rhs );
113427     }
113428 
113429   public:
113430     VULKAN_HPP_NAMESPACE::StructureType                         sType            = StructureType::eStreamDescriptorSurfaceCreateInfoGGP;
113431     const void *                                                pNext            = {};
113432     VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags            = {};
113433     GgpStreamDescriptor                                         streamDescriptor = {};
113434   };
113435 
113436   template <>
113437   struct CppType<StructureType, StructureType::eStreamDescriptorSurfaceCreateInfoGGP>
113438   {
113439     using Type = StreamDescriptorSurfaceCreateInfoGGP;
113440   };
113441 #endif /*VK_USE_PLATFORM_GGP*/
113442 
113443   struct StridedDeviceAddressRegionKHR
113444   {
113445     using NativeType = VkStridedDeviceAddressRegionKHR;
113446 
113447 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
StridedDeviceAddressRegionKHRVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113448     VULKAN_HPP_CONSTEXPR StridedDeviceAddressRegionKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {},
113449                                                         VULKAN_HPP_NAMESPACE::DeviceSize    stride_        = {},
113450                                                         VULKAN_HPP_NAMESPACE::DeviceSize    size_          = {} ) VULKAN_HPP_NOEXCEPT
113451       : deviceAddress{ deviceAddress_ }
113452       , stride{ stride_ }
113453       , size{ size_ }
113454     {
113455     }
113456 
113457     VULKAN_HPP_CONSTEXPR StridedDeviceAddressRegionKHR( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113458 
StridedDeviceAddressRegionKHRVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113459     StridedDeviceAddressRegionKHR( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
113460       : StridedDeviceAddressRegionKHR( *reinterpret_cast<StridedDeviceAddressRegionKHR const *>( &rhs ) )
113461     {
113462     }
113463 
113464     StridedDeviceAddressRegionKHR & operator=( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113465 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113466 
operator =VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113467     StridedDeviceAddressRegionKHR & operator=( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
113468     {
113469       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR const *>( &rhs );
113470       return *this;
113471     }
113472 
113473 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDeviceAddressVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113474     VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
113475     {
113476       deviceAddress = deviceAddress_;
113477       return *this;
113478     }
113479 
setStrideVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113480     VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & setStride( VULKAN_HPP_NAMESPACE::DeviceSize stride_ ) VULKAN_HPP_NOEXCEPT
113481     {
113482       stride = stride_;
113483       return *this;
113484     }
113485 
setSizeVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113486     VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
113487     {
113488       size = size_;
113489       return *this;
113490     }
113491 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113492 
operator VkStridedDeviceAddressRegionKHR const&VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113493     operator VkStridedDeviceAddressRegionKHR const &() const VULKAN_HPP_NOEXCEPT
113494     {
113495       return *reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( this );
113496     }
113497 
operator VkStridedDeviceAddressRegionKHR&VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113498     operator VkStridedDeviceAddressRegionKHR &() VULKAN_HPP_NOEXCEPT
113499     {
113500       return *reinterpret_cast<VkStridedDeviceAddressRegionKHR *>( this );
113501     }
113502 
113503 #if defined( VULKAN_HPP_USE_REFLECT )
113504 #  if 14 <= VULKAN_HPP_CPP_VERSION
113505     auto
113506 #  else
113507     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
113508 #  endif
reflectVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113509       reflect() const VULKAN_HPP_NOEXCEPT
113510     {
113511       return std::tie( deviceAddress, stride, size );
113512     }
113513 #endif
113514 
113515 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113516     auto operator<=>( StridedDeviceAddressRegionKHR const & ) const = default;
113517 #else
operator ==VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113518     bool operator==( StridedDeviceAddressRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
113519     {
113520 #  if defined( VULKAN_HPP_USE_REFLECT )
113521       return this->reflect() == rhs.reflect();
113522 #  else
113523       return ( deviceAddress == rhs.deviceAddress ) && ( stride == rhs.stride ) && ( size == rhs.size );
113524 #  endif
113525     }
113526 
operator !=VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR113527     bool operator!=( StridedDeviceAddressRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
113528     {
113529       return !operator==( rhs );
113530     }
113531 #endif
113532 
113533   public:
113534     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
113535     VULKAN_HPP_NAMESPACE::DeviceSize    stride        = {};
113536     VULKAN_HPP_NAMESPACE::DeviceSize    size          = {};
113537   };
113538 
113539   struct SubmitInfo
113540   {
113541     using NativeType = VkSubmitInfo;
113542 
113543     static const bool                                  allowDuplicate = false;
113544     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubmitInfo;
113545 
113546 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo113547     VULKAN_HPP_CONSTEXPR SubmitInfo( uint32_t                                         waitSemaphoreCount_   = {},
113548                                      const VULKAN_HPP_NAMESPACE::Semaphore *          pWaitSemaphores_      = {},
113549                                      const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask_    = {},
113550                                      uint32_t                                         commandBufferCount_   = {},
113551                                      const VULKAN_HPP_NAMESPACE::CommandBuffer *      pCommandBuffers_      = {},
113552                                      uint32_t                                         signalSemaphoreCount_ = {},
113553                                      const VULKAN_HPP_NAMESPACE::Semaphore *          pSignalSemaphores_    = {},
113554                                      const void *                                     pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
113555       : pNext{ pNext_ }
113556       , waitSemaphoreCount{ waitSemaphoreCount_ }
113557       , pWaitSemaphores{ pWaitSemaphores_ }
113558       , pWaitDstStageMask{ pWaitDstStageMask_ }
113559       , commandBufferCount{ commandBufferCount_ }
113560       , pCommandBuffers{ pCommandBuffers_ }
113561       , signalSemaphoreCount{ signalSemaphoreCount_ }
113562       , pSignalSemaphores{ pSignalSemaphores_ }
113563     {
113564     }
113565 
113566     VULKAN_HPP_CONSTEXPR SubmitInfo( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113567 
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo113568     SubmitInfo( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SubmitInfo( *reinterpret_cast<SubmitInfo const *>( &rhs ) ) {}
113569 
113570 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo113571     SubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &          waitSemaphores_,
113572                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineStageFlags> const & waitDstStageMask_ = {},
113573                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBuffer> const &      commandBuffers_   = {},
113574                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &          signalSemaphores_ = {},
113575                 const void *                                                                                          pNext_            = nullptr )
113576       : pNext( pNext_ )
113577       , waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) )
113578       , pWaitSemaphores( waitSemaphores_.data() )
113579       , pWaitDstStageMask( waitDstStageMask_.data() )
113580       , commandBufferCount( static_cast<uint32_t>( commandBuffers_.size() ) )
113581       , pCommandBuffers( commandBuffers_.data() )
113582       , signalSemaphoreCount( static_cast<uint32_t>( signalSemaphores_.size() ) )
113583       , pSignalSemaphores( signalSemaphores_.data() )
113584     {
113585 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
113586       VULKAN_HPP_ASSERT( waitSemaphores_.size() == waitDstStageMask_.size() );
113587 #    else
113588       if ( waitSemaphores_.size() != waitDstStageMask_.size() )
113589       {
113590         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::SubmitInfo::SubmitInfo: waitSemaphores_.size() != waitDstStageMask_.size()" );
113591       }
113592 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
113593     }
113594 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113595 
113596     SubmitInfo & operator=( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113597 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113598 
operator =VULKAN_HPP_NAMESPACE::SubmitInfo113599     SubmitInfo & operator=( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
113600     {
113601       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubmitInfo const *>( &rhs );
113602       return *this;
113603     }
113604 
113605 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubmitInfo113606     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
113607     {
113608       pNext = pNext_;
113609       return *this;
113610     }
113611 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::SubmitInfo113612     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
113613     {
113614       waitSemaphoreCount = waitSemaphoreCount_;
113615       return *this;
113616     }
113617 
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo113618     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
113619     {
113620       pWaitSemaphores = pWaitSemaphores_;
113621       return *this;
113622     }
113623 
113624 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
113625     SubmitInfo &
setWaitSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo113626       setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT
113627     {
113628       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
113629       pWaitSemaphores    = waitSemaphores_.data();
113630       return *this;
113631     }
113632 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113633 
setPWaitDstStageMaskVULKAN_HPP_NAMESPACE::SubmitInfo113634     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPWaitDstStageMask( const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask_ ) VULKAN_HPP_NOEXCEPT
113635     {
113636       pWaitDstStageMask = pWaitDstStageMask_;
113637       return *this;
113638     }
113639 
113640 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitDstStageMaskVULKAN_HPP_NAMESPACE::SubmitInfo113641     SubmitInfo & setWaitDstStageMask( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineStageFlags> const & waitDstStageMask_ )
113642       VULKAN_HPP_NOEXCEPT
113643     {
113644       waitSemaphoreCount = static_cast<uint32_t>( waitDstStageMask_.size() );
113645       pWaitDstStageMask  = waitDstStageMask_.data();
113646       return *this;
113647     }
113648 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113649 
setCommandBufferCountVULKAN_HPP_NAMESPACE::SubmitInfo113650     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
113651     {
113652       commandBufferCount = commandBufferCount_;
113653       return *this;
113654     }
113655 
setPCommandBuffersVULKAN_HPP_NAMESPACE::SubmitInfo113656     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers_ ) VULKAN_HPP_NOEXCEPT
113657     {
113658       pCommandBuffers = pCommandBuffers_;
113659       return *this;
113660     }
113661 
113662 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
113663     SubmitInfo &
setCommandBuffersVULKAN_HPP_NAMESPACE::SubmitInfo113664       setCommandBuffers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers_ ) VULKAN_HPP_NOEXCEPT
113665     {
113666       commandBufferCount = static_cast<uint32_t>( commandBuffers_.size() );
113667       pCommandBuffers    = commandBuffers_.data();
113668       return *this;
113669     }
113670 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113671 
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::SubmitInfo113672     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
113673     {
113674       signalSemaphoreCount = signalSemaphoreCount_;
113675       return *this;
113676     }
113677 
setPSignalSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo113678     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT
113679     {
113680       pSignalSemaphores = pSignalSemaphores_;
113681       return *this;
113682     }
113683 
113684 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
113685     SubmitInfo &
setSignalSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo113686       setSignalSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & signalSemaphores_ ) VULKAN_HPP_NOEXCEPT
113687     {
113688       signalSemaphoreCount = static_cast<uint32_t>( signalSemaphores_.size() );
113689       pSignalSemaphores    = signalSemaphores_.data();
113690       return *this;
113691     }
113692 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113693 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113694 
operator VkSubmitInfo const&VULKAN_HPP_NAMESPACE::SubmitInfo113695     operator VkSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
113696     {
113697       return *reinterpret_cast<const VkSubmitInfo *>( this );
113698     }
113699 
operator VkSubmitInfo&VULKAN_HPP_NAMESPACE::SubmitInfo113700     operator VkSubmitInfo &() VULKAN_HPP_NOEXCEPT
113701     {
113702       return *reinterpret_cast<VkSubmitInfo *>( this );
113703     }
113704 
113705 #if defined( VULKAN_HPP_USE_REFLECT )
113706 #  if 14 <= VULKAN_HPP_CPP_VERSION
113707     auto
113708 #  else
113709     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
113710                const void * const &,
113711                uint32_t const &,
113712                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
113713                const VULKAN_HPP_NAMESPACE::PipelineStageFlags * const &,
113714                uint32_t const &,
113715                const VULKAN_HPP_NAMESPACE::CommandBuffer * const &,
113716                uint32_t const &,
113717                const VULKAN_HPP_NAMESPACE::Semaphore * const &>
113718 #  endif
reflectVULKAN_HPP_NAMESPACE::SubmitInfo113719       reflect() const VULKAN_HPP_NOEXCEPT
113720     {
113721       return std::tie(
113722         sType, pNext, waitSemaphoreCount, pWaitSemaphores, pWaitDstStageMask, commandBufferCount, pCommandBuffers, signalSemaphoreCount, pSignalSemaphores );
113723     }
113724 #endif
113725 
113726 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113727     auto operator<=>( SubmitInfo const & ) const = default;
113728 #else
operator ==VULKAN_HPP_NAMESPACE::SubmitInfo113729     bool operator==( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
113730     {
113731 #  if defined( VULKAN_HPP_USE_REFLECT )
113732       return this->reflect() == rhs.reflect();
113733 #  else
113734       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) &&
113735              ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( pWaitDstStageMask == rhs.pWaitDstStageMask ) && ( commandBufferCount == rhs.commandBufferCount ) &&
113736              ( pCommandBuffers == rhs.pCommandBuffers ) && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) &&
113737              ( pSignalSemaphores == rhs.pSignalSemaphores );
113738 #  endif
113739     }
113740 
operator !=VULKAN_HPP_NAMESPACE::SubmitInfo113741     bool operator!=( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
113742     {
113743       return !operator==( rhs );
113744     }
113745 #endif
113746 
113747   public:
113748     VULKAN_HPP_NAMESPACE::StructureType              sType                = StructureType::eSubmitInfo;
113749     const void *                                     pNext                = {};
113750     uint32_t                                         waitSemaphoreCount   = {};
113751     const VULKAN_HPP_NAMESPACE::Semaphore *          pWaitSemaphores      = {};
113752     const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask    = {};
113753     uint32_t                                         commandBufferCount   = {};
113754     const VULKAN_HPP_NAMESPACE::CommandBuffer *      pCommandBuffers      = {};
113755     uint32_t                                         signalSemaphoreCount = {};
113756     const VULKAN_HPP_NAMESPACE::Semaphore *          pSignalSemaphores    = {};
113757   };
113758 
113759   template <>
113760   struct CppType<StructureType, StructureType::eSubmitInfo>
113761   {
113762     using Type = SubmitInfo;
113763   };
113764 
113765   struct SubmitInfo2
113766   {
113767     using NativeType = VkSubmitInfo2;
113768 
113769     static const bool                                  allowDuplicate = false;
113770     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubmitInfo2;
113771 
113772 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubmitInfo2VULKAN_HPP_NAMESPACE::SubmitInfo2113773     VULKAN_HPP_CONSTEXPR SubmitInfo2( VULKAN_HPP_NAMESPACE::SubmitFlags                     flags_                    = {},
113774                                       uint32_t                                              waitSemaphoreInfoCount_   = {},
113775                                       const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo *     pWaitSemaphoreInfos_      = {},
113776                                       uint32_t                                              commandBufferInfoCount_   = {},
113777                                       const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos_      = {},
113778                                       uint32_t                                              signalSemaphoreInfoCount_ = {},
113779                                       const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo *     pSignalSemaphoreInfos_    = {},
113780                                       const void *                                          pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
113781       : pNext{ pNext_ }
113782       , flags{ flags_ }
113783       , waitSemaphoreInfoCount{ waitSemaphoreInfoCount_ }
113784       , pWaitSemaphoreInfos{ pWaitSemaphoreInfos_ }
113785       , commandBufferInfoCount{ commandBufferInfoCount_ }
113786       , pCommandBufferInfos{ pCommandBufferInfos_ }
113787       , signalSemaphoreInfoCount{ signalSemaphoreInfoCount_ }
113788       , pSignalSemaphoreInfos{ pSignalSemaphoreInfos_ }
113789     {
113790     }
113791 
113792     VULKAN_HPP_CONSTEXPR SubmitInfo2( SubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113793 
SubmitInfo2VULKAN_HPP_NAMESPACE::SubmitInfo2113794     SubmitInfo2( VkSubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubmitInfo2( *reinterpret_cast<SubmitInfo2 const *>( &rhs ) ) {}
113795 
113796 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubmitInfo2VULKAN_HPP_NAMESPACE::SubmitInfo2113797     SubmitInfo2( VULKAN_HPP_NAMESPACE::SubmitFlags                                                                          flags_,
113798                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const &     waitSemaphoreInfos_,
113799                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo> const & commandBufferInfos_   = {},
113800                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const &     signalSemaphoreInfos_ = {},
113801                  const void *                                                                                               pNext_                = nullptr )
113802       : pNext( pNext_ )
113803       , flags( flags_ )
113804       , waitSemaphoreInfoCount( static_cast<uint32_t>( waitSemaphoreInfos_.size() ) )
113805       , pWaitSemaphoreInfos( waitSemaphoreInfos_.data() )
113806       , commandBufferInfoCount( static_cast<uint32_t>( commandBufferInfos_.size() ) )
113807       , pCommandBufferInfos( commandBufferInfos_.data() )
113808       , signalSemaphoreInfoCount( static_cast<uint32_t>( signalSemaphoreInfos_.size() ) )
113809       , pSignalSemaphoreInfos( signalSemaphoreInfos_.data() )
113810     {
113811     }
113812 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113813 
113814     SubmitInfo2 & operator=( SubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113815 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113816 
operator =VULKAN_HPP_NAMESPACE::SubmitInfo2113817     SubmitInfo2 & operator=( VkSubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
113818     {
113819       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubmitInfo2 const *>( &rhs );
113820       return *this;
113821     }
113822 
113823 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubmitInfo2113824     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
113825     {
113826       pNext = pNext_;
113827       return *this;
113828     }
113829 
setFlagsVULKAN_HPP_NAMESPACE::SubmitInfo2113830     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setFlags( VULKAN_HPP_NAMESPACE::SubmitFlags flags_ ) VULKAN_HPP_NOEXCEPT
113831     {
113832       flags = flags_;
113833       return *this;
113834     }
113835 
setWaitSemaphoreInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo2113836     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setWaitSemaphoreInfoCount( uint32_t waitSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
113837     {
113838       waitSemaphoreInfoCount = waitSemaphoreInfoCount_;
113839       return *this;
113840     }
113841 
setPWaitSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2113842     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPWaitSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pWaitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
113843     {
113844       pWaitSemaphoreInfos = pWaitSemaphoreInfos_;
113845       return *this;
113846     }
113847 
113848 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2113849     SubmitInfo2 & setWaitSemaphoreInfos(
113850       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & waitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
113851     {
113852       waitSemaphoreInfoCount = static_cast<uint32_t>( waitSemaphoreInfos_.size() );
113853       pWaitSemaphoreInfos    = waitSemaphoreInfos_.data();
113854       return *this;
113855     }
113856 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113857 
setCommandBufferInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo2113858     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setCommandBufferInfoCount( uint32_t commandBufferInfoCount_ ) VULKAN_HPP_NOEXCEPT
113859     {
113860       commandBufferInfoCount = commandBufferInfoCount_;
113861       return *this;
113862     }
113863 
113864     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 &
setPCommandBufferInfosVULKAN_HPP_NAMESPACE::SubmitInfo2113865       setPCommandBufferInfos( const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos_ ) VULKAN_HPP_NOEXCEPT
113866     {
113867       pCommandBufferInfos = pCommandBufferInfos_;
113868       return *this;
113869     }
113870 
113871 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCommandBufferInfosVULKAN_HPP_NAMESPACE::SubmitInfo2113872     SubmitInfo2 & setCommandBufferInfos(
113873       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo> const & commandBufferInfos_ ) VULKAN_HPP_NOEXCEPT
113874     {
113875       commandBufferInfoCount = static_cast<uint32_t>( commandBufferInfos_.size() );
113876       pCommandBufferInfos    = commandBufferInfos_.data();
113877       return *this;
113878     }
113879 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113880 
setSignalSemaphoreInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo2113881     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setSignalSemaphoreInfoCount( uint32_t signalSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
113882     {
113883       signalSemaphoreInfoCount = signalSemaphoreInfoCount_;
113884       return *this;
113885     }
113886 
113887     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 &
setPSignalSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2113888       setPSignalSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pSignalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
113889     {
113890       pSignalSemaphoreInfos = pSignalSemaphoreInfos_;
113891       return *this;
113892     }
113893 
113894 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2113895     SubmitInfo2 & setSignalSemaphoreInfos(
113896       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & signalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
113897     {
113898       signalSemaphoreInfoCount = static_cast<uint32_t>( signalSemaphoreInfos_.size() );
113899       pSignalSemaphoreInfos    = signalSemaphoreInfos_.data();
113900       return *this;
113901     }
113902 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113903 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113904 
operator VkSubmitInfo2 const&VULKAN_HPP_NAMESPACE::SubmitInfo2113905     operator VkSubmitInfo2 const &() const VULKAN_HPP_NOEXCEPT
113906     {
113907       return *reinterpret_cast<const VkSubmitInfo2 *>( this );
113908     }
113909 
operator VkSubmitInfo2&VULKAN_HPP_NAMESPACE::SubmitInfo2113910     operator VkSubmitInfo2 &() VULKAN_HPP_NOEXCEPT
113911     {
113912       return *reinterpret_cast<VkSubmitInfo2 *>( this );
113913     }
113914 
113915 #if defined( VULKAN_HPP_USE_REFLECT )
113916 #  if 14 <= VULKAN_HPP_CPP_VERSION
113917     auto
113918 #  else
113919     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
113920                const void * const &,
113921                VULKAN_HPP_NAMESPACE::SubmitFlags const &,
113922                uint32_t const &,
113923                const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * const &,
113924                uint32_t const &,
113925                const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * const &,
113926                uint32_t const &,
113927                const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * const &>
113928 #  endif
reflectVULKAN_HPP_NAMESPACE::SubmitInfo2113929       reflect() const VULKAN_HPP_NOEXCEPT
113930     {
113931       return std::tie( sType,
113932                        pNext,
113933                        flags,
113934                        waitSemaphoreInfoCount,
113935                        pWaitSemaphoreInfos,
113936                        commandBufferInfoCount,
113937                        pCommandBufferInfos,
113938                        signalSemaphoreInfoCount,
113939                        pSignalSemaphoreInfos );
113940     }
113941 #endif
113942 
113943 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113944     auto operator<=>( SubmitInfo2 const & ) const = default;
113945 #else
operator ==VULKAN_HPP_NAMESPACE::SubmitInfo2113946     bool operator==( SubmitInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
113947     {
113948 #  if defined( VULKAN_HPP_USE_REFLECT )
113949       return this->reflect() == rhs.reflect();
113950 #  else
113951       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( waitSemaphoreInfoCount == rhs.waitSemaphoreInfoCount ) &&
113952              ( pWaitSemaphoreInfos == rhs.pWaitSemaphoreInfos ) && ( commandBufferInfoCount == rhs.commandBufferInfoCount ) &&
113953              ( pCommandBufferInfos == rhs.pCommandBufferInfos ) && ( signalSemaphoreInfoCount == rhs.signalSemaphoreInfoCount ) &&
113954              ( pSignalSemaphoreInfos == rhs.pSignalSemaphoreInfos );
113955 #  endif
113956     }
113957 
operator !=VULKAN_HPP_NAMESPACE::SubmitInfo2113958     bool operator!=( SubmitInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
113959     {
113960       return !operator==( rhs );
113961     }
113962 #endif
113963 
113964   public:
113965     VULKAN_HPP_NAMESPACE::StructureType                   sType                    = StructureType::eSubmitInfo2;
113966     const void *                                          pNext                    = {};
113967     VULKAN_HPP_NAMESPACE::SubmitFlags                     flags                    = {};
113968     uint32_t                                              waitSemaphoreInfoCount   = {};
113969     const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo *     pWaitSemaphoreInfos      = {};
113970     uint32_t                                              commandBufferInfoCount   = {};
113971     const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos      = {};
113972     uint32_t                                              signalSemaphoreInfoCount = {};
113973     const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo *     pSignalSemaphoreInfos    = {};
113974   };
113975 
113976   template <>
113977   struct CppType<StructureType, StructureType::eSubmitInfo2>
113978   {
113979     using Type = SubmitInfo2;
113980   };
113981 
113982   using SubmitInfo2KHR = SubmitInfo2;
113983 
113984   struct SubpassBeginInfo
113985   {
113986     using NativeType = VkSubpassBeginInfo;
113987 
113988     static const bool                                  allowDuplicate = false;
113989     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassBeginInfo;
113990 
113991 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassBeginInfoVULKAN_HPP_NAMESPACE::SubpassBeginInfo113992     VULKAN_HPP_CONSTEXPR SubpassBeginInfo( VULKAN_HPP_NAMESPACE::SubpassContents contents_ = VULKAN_HPP_NAMESPACE::SubpassContents::eInline,
113993                                            const void *                          pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
113994       : pNext{ pNext_ }
113995       , contents{ contents_ }
113996     {
113997     }
113998 
113999     VULKAN_HPP_CONSTEXPR SubpassBeginInfo( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114000 
SubpassBeginInfoVULKAN_HPP_NAMESPACE::SubpassBeginInfo114001     SubpassBeginInfo( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassBeginInfo( *reinterpret_cast<SubpassBeginInfo const *>( &rhs ) ) {}
114002 
114003     SubpassBeginInfo & operator=( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114004 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114005 
operator =VULKAN_HPP_NAMESPACE::SubpassBeginInfo114006     SubpassBeginInfo & operator=( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
114007     {
114008       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassBeginInfo const *>( &rhs );
114009       return *this;
114010     }
114011 
114012 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassBeginInfo114013     VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
114014     {
114015       pNext = pNext_;
114016       return *this;
114017     }
114018 
setContentsVULKAN_HPP_NAMESPACE::SubpassBeginInfo114019     VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & setContents( VULKAN_HPP_NAMESPACE::SubpassContents contents_ ) VULKAN_HPP_NOEXCEPT
114020     {
114021       contents = contents_;
114022       return *this;
114023     }
114024 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114025 
operator VkSubpassBeginInfo const&VULKAN_HPP_NAMESPACE::SubpassBeginInfo114026     operator VkSubpassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
114027     {
114028       return *reinterpret_cast<const VkSubpassBeginInfo *>( this );
114029     }
114030 
operator VkSubpassBeginInfo&VULKAN_HPP_NAMESPACE::SubpassBeginInfo114031     operator VkSubpassBeginInfo &() VULKAN_HPP_NOEXCEPT
114032     {
114033       return *reinterpret_cast<VkSubpassBeginInfo *>( this );
114034     }
114035 
114036 #if defined( VULKAN_HPP_USE_REFLECT )
114037 #  if 14 <= VULKAN_HPP_CPP_VERSION
114038     auto
114039 #  else
114040     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SubpassContents const &>
114041 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassBeginInfo114042       reflect() const VULKAN_HPP_NOEXCEPT
114043     {
114044       return std::tie( sType, pNext, contents );
114045     }
114046 #endif
114047 
114048 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114049     auto operator<=>( SubpassBeginInfo const & ) const = default;
114050 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassBeginInfo114051     bool operator==( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
114052     {
114053 #  if defined( VULKAN_HPP_USE_REFLECT )
114054       return this->reflect() == rhs.reflect();
114055 #  else
114056       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( contents == rhs.contents );
114057 #  endif
114058     }
114059 
operator !=VULKAN_HPP_NAMESPACE::SubpassBeginInfo114060     bool operator!=( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
114061     {
114062       return !operator==( rhs );
114063     }
114064 #endif
114065 
114066   public:
114067     VULKAN_HPP_NAMESPACE::StructureType   sType    = StructureType::eSubpassBeginInfo;
114068     const void *                          pNext    = {};
114069     VULKAN_HPP_NAMESPACE::SubpassContents contents = VULKAN_HPP_NAMESPACE::SubpassContents::eInline;
114070   };
114071 
114072   template <>
114073   struct CppType<StructureType, StructureType::eSubpassBeginInfo>
114074   {
114075     using Type = SubpassBeginInfo;
114076   };
114077 
114078   using SubpassBeginInfoKHR = SubpassBeginInfo;
114079 
114080   struct SubpassDescriptionDepthStencilResolve
114081   {
114082     using NativeType = VkSubpassDescriptionDepthStencilResolve;
114083 
114084     static const bool                                  allowDuplicate = false;
114085     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassDescriptionDepthStencilResolve;
114086 
114087 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
114088     VULKAN_HPP_CONSTEXPR
SubpassDescriptionDepthStencilResolveVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114089       SubpassDescriptionDepthStencilResolve( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_   = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone,
114090                                              VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone,
114091                                              const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment_ = {},
114092                                              const void *                                       pNext_                          = nullptr ) VULKAN_HPP_NOEXCEPT
114093       : pNext{ pNext_ }
114094       , depthResolveMode{ depthResolveMode_ }
114095       , stencilResolveMode{ stencilResolveMode_ }
114096       , pDepthStencilResolveAttachment{ pDepthStencilResolveAttachment_ }
114097     {
114098     }
114099 
114100     VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114101 
SubpassDescriptionDepthStencilResolveVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114102     SubpassDescriptionDepthStencilResolve( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
114103       : SubpassDescriptionDepthStencilResolve( *reinterpret_cast<SubpassDescriptionDepthStencilResolve const *>( &rhs ) )
114104     {
114105     }
114106 
114107     SubpassDescriptionDepthStencilResolve & operator=( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114108 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114109 
operator =VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114110     SubpassDescriptionDepthStencilResolve & operator=( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
114111     {
114112       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve const *>( &rhs );
114113       return *this;
114114     }
114115 
114116 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114117     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
114118     {
114119       pNext = pNext_;
114120       return *this;
114121     }
114122 
114123     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve &
setDepthResolveModeVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114124       setDepthResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_ ) VULKAN_HPP_NOEXCEPT
114125     {
114126       depthResolveMode = depthResolveMode_;
114127       return *this;
114128     }
114129 
114130     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve &
setStencilResolveModeVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114131       setStencilResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ ) VULKAN_HPP_NOEXCEPT
114132     {
114133       stencilResolveMode = stencilResolveMode_;
114134       return *this;
114135     }
114136 
114137     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve &
setPDepthStencilResolveAttachmentVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114138       setPDepthStencilResolveAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment_ ) VULKAN_HPP_NOEXCEPT
114139     {
114140       pDepthStencilResolveAttachment = pDepthStencilResolveAttachment_;
114141       return *this;
114142     }
114143 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114144 
operator VkSubpassDescriptionDepthStencilResolve const&VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114145     operator VkSubpassDescriptionDepthStencilResolve const &() const VULKAN_HPP_NOEXCEPT
114146     {
114147       return *reinterpret_cast<const VkSubpassDescriptionDepthStencilResolve *>( this );
114148     }
114149 
operator VkSubpassDescriptionDepthStencilResolve&VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114150     operator VkSubpassDescriptionDepthStencilResolve &() VULKAN_HPP_NOEXCEPT
114151     {
114152       return *reinterpret_cast<VkSubpassDescriptionDepthStencilResolve *>( this );
114153     }
114154 
114155 #if defined( VULKAN_HPP_USE_REFLECT )
114156 #  if 14 <= VULKAN_HPP_CPP_VERSION
114157     auto
114158 #  else
114159     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
114160                const void * const &,
114161                VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &,
114162                VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &,
114163                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &>
114164 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114165       reflect() const VULKAN_HPP_NOEXCEPT
114166     {
114167       return std::tie( sType, pNext, depthResolveMode, stencilResolveMode, pDepthStencilResolveAttachment );
114168     }
114169 #endif
114170 
114171 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114172     auto operator<=>( SubpassDescriptionDepthStencilResolve const & ) const = default;
114173 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114174     bool operator==( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
114175     {
114176 #  if defined( VULKAN_HPP_USE_REFLECT )
114177       return this->reflect() == rhs.reflect();
114178 #  else
114179       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthResolveMode == rhs.depthResolveMode ) &&
114180              ( stencilResolveMode == rhs.stencilResolveMode ) && ( pDepthStencilResolveAttachment == rhs.pDepthStencilResolveAttachment );
114181 #  endif
114182     }
114183 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve114184     bool operator!=( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
114185     {
114186       return !operator==( rhs );
114187     }
114188 #endif
114189 
114190   public:
114191     VULKAN_HPP_NAMESPACE::StructureType                sType                          = StructureType::eSubpassDescriptionDepthStencilResolve;
114192     const void *                                       pNext                          = {};
114193     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits          depthResolveMode               = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
114194     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits          stencilResolveMode             = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
114195     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment = {};
114196   };
114197 
114198   template <>
114199   struct CppType<StructureType, StructureType::eSubpassDescriptionDepthStencilResolve>
114200   {
114201     using Type = SubpassDescriptionDepthStencilResolve;
114202   };
114203 
114204   using SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
114205 
114206   struct SubpassEndInfo
114207   {
114208     using NativeType = VkSubpassEndInfo;
114209 
114210     static const bool                                  allowDuplicate = false;
114211     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassEndInfo;
114212 
114213 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassEndInfoVULKAN_HPP_NAMESPACE::SubpassEndInfo114214     VULKAN_HPP_CONSTEXPR SubpassEndInfo( const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {}
114215 
114216     VULKAN_HPP_CONSTEXPR SubpassEndInfo( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114217 
SubpassEndInfoVULKAN_HPP_NAMESPACE::SubpassEndInfo114218     SubpassEndInfo( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassEndInfo( *reinterpret_cast<SubpassEndInfo const *>( &rhs ) ) {}
114219 
114220     SubpassEndInfo & operator=( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114221 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114222 
operator =VULKAN_HPP_NAMESPACE::SubpassEndInfo114223     SubpassEndInfo & operator=( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT
114224     {
114225       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassEndInfo const *>( &rhs );
114226       return *this;
114227     }
114228 
114229 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassEndInfo114230     VULKAN_HPP_CONSTEXPR_14 SubpassEndInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
114231     {
114232       pNext = pNext_;
114233       return *this;
114234     }
114235 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114236 
operator VkSubpassEndInfo const&VULKAN_HPP_NAMESPACE::SubpassEndInfo114237     operator VkSubpassEndInfo const &() const VULKAN_HPP_NOEXCEPT
114238     {
114239       return *reinterpret_cast<const VkSubpassEndInfo *>( this );
114240     }
114241 
operator VkSubpassEndInfo&VULKAN_HPP_NAMESPACE::SubpassEndInfo114242     operator VkSubpassEndInfo &() VULKAN_HPP_NOEXCEPT
114243     {
114244       return *reinterpret_cast<VkSubpassEndInfo *>( this );
114245     }
114246 
114247 #if defined( VULKAN_HPP_USE_REFLECT )
114248 #  if 14 <= VULKAN_HPP_CPP_VERSION
114249     auto
114250 #  else
114251     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &>
114252 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassEndInfo114253       reflect() const VULKAN_HPP_NOEXCEPT
114254     {
114255       return std::tie( sType, pNext );
114256     }
114257 #endif
114258 
114259 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114260     auto operator<=>( SubpassEndInfo const & ) const = default;
114261 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassEndInfo114262     bool operator==( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
114263     {
114264 #  if defined( VULKAN_HPP_USE_REFLECT )
114265       return this->reflect() == rhs.reflect();
114266 #  else
114267       return ( sType == rhs.sType ) && ( pNext == rhs.pNext );
114268 #  endif
114269     }
114270 
operator !=VULKAN_HPP_NAMESPACE::SubpassEndInfo114271     bool operator!=( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
114272     {
114273       return !operator==( rhs );
114274     }
114275 #endif
114276 
114277   public:
114278     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassEndInfo;
114279     const void *                        pNext = {};
114280   };
114281 
114282   template <>
114283   struct CppType<StructureType, StructureType::eSubpassEndInfo>
114284   {
114285     using Type = SubpassEndInfo;
114286   };
114287 
114288   using SubpassEndInfoKHR = SubpassEndInfo;
114289 
114290   struct SubpassFragmentDensityMapOffsetEndInfoQCOM
114291   {
114292     using NativeType = VkSubpassFragmentDensityMapOffsetEndInfoQCOM;
114293 
114294     static const bool                                  allowDuplicate = false;
114295     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM;
114296 
114297 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassFragmentDensityMapOffsetEndInfoQCOMVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114298     VULKAN_HPP_CONSTEXPR SubpassFragmentDensityMapOffsetEndInfoQCOM( uint32_t                               fragmentDensityOffsetCount_ = {},
114299                                                                      const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets_    = {},
114300                                                                      const void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
114301       : pNext{ pNext_ }
114302       , fragmentDensityOffsetCount{ fragmentDensityOffsetCount_ }
114303       , pFragmentDensityOffsets{ pFragmentDensityOffsets_ }
114304     {
114305     }
114306 
114307     VULKAN_HPP_CONSTEXPR SubpassFragmentDensityMapOffsetEndInfoQCOM( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114308 
SubpassFragmentDensityMapOffsetEndInfoQCOMVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114309     SubpassFragmentDensityMapOffsetEndInfoQCOM( VkSubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
114310       : SubpassFragmentDensityMapOffsetEndInfoQCOM( *reinterpret_cast<SubpassFragmentDensityMapOffsetEndInfoQCOM const *>( &rhs ) )
114311     {
114312     }
114313 
114314 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassFragmentDensityMapOffsetEndInfoQCOMVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114315     SubpassFragmentDensityMapOffsetEndInfoQCOM(
114316       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Offset2D> const & fragmentDensityOffsets_, const void * pNext_ = nullptr )
114317       : pNext( pNext_ )
114318       , fragmentDensityOffsetCount( static_cast<uint32_t>( fragmentDensityOffsets_.size() ) )
114319       , pFragmentDensityOffsets( fragmentDensityOffsets_.data() )
114320     {
114321     }
114322 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114323 
114324     SubpassFragmentDensityMapOffsetEndInfoQCOM & operator=( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114325 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114326 
operator =VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114327     SubpassFragmentDensityMapOffsetEndInfoQCOM & operator=( VkSubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
114328     {
114329       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM const *>( &rhs );
114330       return *this;
114331     }
114332 
114333 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114334     VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
114335     {
114336       pNext = pNext_;
114337       return *this;
114338     }
114339 
114340     VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM &
setFragmentDensityOffsetCountVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114341       setFragmentDensityOffsetCount( uint32_t fragmentDensityOffsetCount_ ) VULKAN_HPP_NOEXCEPT
114342     {
114343       fragmentDensityOffsetCount = fragmentDensityOffsetCount_;
114344       return *this;
114345     }
114346 
114347     VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM &
setPFragmentDensityOffsetsVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114348       setPFragmentDensityOffsets( const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets_ ) VULKAN_HPP_NOEXCEPT
114349     {
114350       pFragmentDensityOffsets = pFragmentDensityOffsets_;
114351       return *this;
114352     }
114353 
114354 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setFragmentDensityOffsetsVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114355     SubpassFragmentDensityMapOffsetEndInfoQCOM & setFragmentDensityOffsets(
114356       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Offset2D> const & fragmentDensityOffsets_ ) VULKAN_HPP_NOEXCEPT
114357     {
114358       fragmentDensityOffsetCount = static_cast<uint32_t>( fragmentDensityOffsets_.size() );
114359       pFragmentDensityOffsets    = fragmentDensityOffsets_.data();
114360       return *this;
114361     }
114362 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114363 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114364 
operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM const&VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114365     operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
114366     {
114367       return *reinterpret_cast<const VkSubpassFragmentDensityMapOffsetEndInfoQCOM *>( this );
114368     }
114369 
operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM&VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114370     operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM &() VULKAN_HPP_NOEXCEPT
114371     {
114372       return *reinterpret_cast<VkSubpassFragmentDensityMapOffsetEndInfoQCOM *>( this );
114373     }
114374 
114375 #if defined( VULKAN_HPP_USE_REFLECT )
114376 #  if 14 <= VULKAN_HPP_CPP_VERSION
114377     auto
114378 #  else
114379     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Offset2D * const &>
114380 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114381       reflect() const VULKAN_HPP_NOEXCEPT
114382     {
114383       return std::tie( sType, pNext, fragmentDensityOffsetCount, pFragmentDensityOffsets );
114384     }
114385 #endif
114386 
114387 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114388     auto operator<=>( SubpassFragmentDensityMapOffsetEndInfoQCOM const & ) const = default;
114389 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114390     bool operator==( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
114391     {
114392 #  if defined( VULKAN_HPP_USE_REFLECT )
114393       return this->reflect() == rhs.reflect();
114394 #  else
114395       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityOffsetCount == rhs.fragmentDensityOffsetCount ) &&
114396              ( pFragmentDensityOffsets == rhs.pFragmentDensityOffsets );
114397 #  endif
114398     }
114399 
operator !=VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM114400     bool operator!=( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
114401     {
114402       return !operator==( rhs );
114403     }
114404 #endif
114405 
114406   public:
114407     VULKAN_HPP_NAMESPACE::StructureType    sType                      = StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM;
114408     const void *                           pNext                      = {};
114409     uint32_t                               fragmentDensityOffsetCount = {};
114410     const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets    = {};
114411   };
114412 
114413   template <>
114414   struct CppType<StructureType, StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM>
114415   {
114416     using Type = SubpassFragmentDensityMapOffsetEndInfoQCOM;
114417   };
114418 
114419   struct SubpassResolvePerformanceQueryEXT
114420   {
114421     using NativeType = VkSubpassResolvePerformanceQueryEXT;
114422 
114423     static const bool                                  allowDuplicate = false;
114424     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassResolvePerformanceQueryEXT;
114425 
114426 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassResolvePerformanceQueryEXTVULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT114427     VULKAN_HPP_CONSTEXPR SubpassResolvePerformanceQueryEXT( VULKAN_HPP_NAMESPACE::Bool32 optimal_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
114428       : pNext{ pNext_ }
114429       , optimal{ optimal_ }
114430     {
114431     }
114432 
114433     VULKAN_HPP_CONSTEXPR SubpassResolvePerformanceQueryEXT( SubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114434 
SubpassResolvePerformanceQueryEXTVULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT114435     SubpassResolvePerformanceQueryEXT( VkSubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT
114436       : SubpassResolvePerformanceQueryEXT( *reinterpret_cast<SubpassResolvePerformanceQueryEXT const *>( &rhs ) )
114437     {
114438     }
114439 
114440     SubpassResolvePerformanceQueryEXT & operator=( SubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114441 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114442 
operator =VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT114443     SubpassResolvePerformanceQueryEXT & operator=( VkSubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT
114444     {
114445       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT const *>( &rhs );
114446       return *this;
114447     }
114448 
operator VkSubpassResolvePerformanceQueryEXT const&VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT114449     operator VkSubpassResolvePerformanceQueryEXT const &() const VULKAN_HPP_NOEXCEPT
114450     {
114451       return *reinterpret_cast<const VkSubpassResolvePerformanceQueryEXT *>( this );
114452     }
114453 
operator VkSubpassResolvePerformanceQueryEXT&VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT114454     operator VkSubpassResolvePerformanceQueryEXT &() VULKAN_HPP_NOEXCEPT
114455     {
114456       return *reinterpret_cast<VkSubpassResolvePerformanceQueryEXT *>( this );
114457     }
114458 
114459 #if defined( VULKAN_HPP_USE_REFLECT )
114460 #  if 14 <= VULKAN_HPP_CPP_VERSION
114461     auto
114462 #  else
114463     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
114464 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT114465       reflect() const VULKAN_HPP_NOEXCEPT
114466     {
114467       return std::tie( sType, pNext, optimal );
114468     }
114469 #endif
114470 
114471 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114472     auto operator<=>( SubpassResolvePerformanceQueryEXT const & ) const = default;
114473 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT114474     bool operator==( SubpassResolvePerformanceQueryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114475     {
114476 #  if defined( VULKAN_HPP_USE_REFLECT )
114477       return this->reflect() == rhs.reflect();
114478 #  else
114479       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( optimal == rhs.optimal );
114480 #  endif
114481     }
114482 
operator !=VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT114483     bool operator!=( SubpassResolvePerformanceQueryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114484     {
114485       return !operator==( rhs );
114486     }
114487 #endif
114488 
114489   public:
114490     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::eSubpassResolvePerformanceQueryEXT;
114491     void *                              pNext   = {};
114492     VULKAN_HPP_NAMESPACE::Bool32        optimal = {};
114493   };
114494 
114495   template <>
114496   struct CppType<StructureType, StructureType::eSubpassResolvePerformanceQueryEXT>
114497   {
114498     using Type = SubpassResolvePerformanceQueryEXT;
114499   };
114500 
114501   struct SubpassShadingPipelineCreateInfoHUAWEI
114502   {
114503     using NativeType = VkSubpassShadingPipelineCreateInfoHUAWEI;
114504 
114505     static const bool                                  allowDuplicate = false;
114506     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassShadingPipelineCreateInfoHUAWEI;
114507 
114508 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassShadingPipelineCreateInfoHUAWEIVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114509     VULKAN_HPP_CONSTEXPR SubpassShadingPipelineCreateInfoHUAWEI( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {},
114510                                                                  uint32_t                         subpass_    = {},
114511                                                                  void *                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
114512       : pNext{ pNext_ }
114513       , renderPass{ renderPass_ }
114514       , subpass{ subpass_ }
114515     {
114516     }
114517 
114518     VULKAN_HPP_CONSTEXPR SubpassShadingPipelineCreateInfoHUAWEI( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114519 
SubpassShadingPipelineCreateInfoHUAWEIVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114520     SubpassShadingPipelineCreateInfoHUAWEI( VkSubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
114521       : SubpassShadingPipelineCreateInfoHUAWEI( *reinterpret_cast<SubpassShadingPipelineCreateInfoHUAWEI const *>( &rhs ) )
114522     {
114523     }
114524 
114525     SubpassShadingPipelineCreateInfoHUAWEI & operator=( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114526 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114527 
operator =VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114528     SubpassShadingPipelineCreateInfoHUAWEI & operator=( VkSubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
114529     {
114530       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI const *>( &rhs );
114531       return *this;
114532     }
114533 
114534 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114535     VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
114536     {
114537       pNext = pNext_;
114538       return *this;
114539     }
114540 
setRenderPassVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114541     VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
114542     {
114543       renderPass = renderPass_;
114544       return *this;
114545     }
114546 
setSubpassVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114547     VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
114548     {
114549       subpass = subpass_;
114550       return *this;
114551     }
114552 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114553 
operator VkSubpassShadingPipelineCreateInfoHUAWEI const&VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114554     operator VkSubpassShadingPipelineCreateInfoHUAWEI const &() const VULKAN_HPP_NOEXCEPT
114555     {
114556       return *reinterpret_cast<const VkSubpassShadingPipelineCreateInfoHUAWEI *>( this );
114557     }
114558 
operator VkSubpassShadingPipelineCreateInfoHUAWEI&VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114559     operator VkSubpassShadingPipelineCreateInfoHUAWEI &() VULKAN_HPP_NOEXCEPT
114560     {
114561       return *reinterpret_cast<VkSubpassShadingPipelineCreateInfoHUAWEI *>( this );
114562     }
114563 
114564 #if defined( VULKAN_HPP_USE_REFLECT )
114565 #  if 14 <= VULKAN_HPP_CPP_VERSION
114566     auto
114567 #  else
114568     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::RenderPass const &, uint32_t const &>
114569 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114570       reflect() const VULKAN_HPP_NOEXCEPT
114571     {
114572       return std::tie( sType, pNext, renderPass, subpass );
114573     }
114574 #endif
114575 
114576 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114577     auto operator<=>( SubpassShadingPipelineCreateInfoHUAWEI const & ) const = default;
114578 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114579     bool operator==( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
114580     {
114581 #  if defined( VULKAN_HPP_USE_REFLECT )
114582       return this->reflect() == rhs.reflect();
114583 #  else
114584       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && ( subpass == rhs.subpass );
114585 #  endif
114586     }
114587 
operator !=VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI114588     bool operator!=( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
114589     {
114590       return !operator==( rhs );
114591     }
114592 #endif
114593 
114594   public:
114595     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eSubpassShadingPipelineCreateInfoHUAWEI;
114596     void *                              pNext      = {};
114597     VULKAN_HPP_NAMESPACE::RenderPass    renderPass = {};
114598     uint32_t                            subpass    = {};
114599   };
114600 
114601   template <>
114602   struct CppType<StructureType, StructureType::eSubpassShadingPipelineCreateInfoHUAWEI>
114603   {
114604     using Type = SubpassShadingPipelineCreateInfoHUAWEI;
114605   };
114606 
114607   struct SubresourceHostMemcpySize
114608   {
114609     using NativeType = VkSubresourceHostMemcpySize;
114610 
114611     static const bool                                  allowDuplicate = false;
114612     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubresourceHostMemcpySize;
114613 
114614 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubresourceHostMemcpySizeVULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize114615     VULKAN_HPP_CONSTEXPR SubresourceHostMemcpySize( VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
114616       : pNext{ pNext_ }
114617       , size{ size_ }
114618     {
114619     }
114620 
114621     VULKAN_HPP_CONSTEXPR SubresourceHostMemcpySize( SubresourceHostMemcpySize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114622 
SubresourceHostMemcpySizeVULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize114623     SubresourceHostMemcpySize( VkSubresourceHostMemcpySize const & rhs ) VULKAN_HPP_NOEXCEPT
114624       : SubresourceHostMemcpySize( *reinterpret_cast<SubresourceHostMemcpySize const *>( &rhs ) )
114625     {
114626     }
114627 
114628     SubresourceHostMemcpySize & operator=( SubresourceHostMemcpySize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114629 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114630 
operator =VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize114631     SubresourceHostMemcpySize & operator=( VkSubresourceHostMemcpySize const & rhs ) VULKAN_HPP_NOEXCEPT
114632     {
114633       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize const *>( &rhs );
114634       return *this;
114635     }
114636 
operator VkSubresourceHostMemcpySize const&VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize114637     operator VkSubresourceHostMemcpySize const &() const VULKAN_HPP_NOEXCEPT
114638     {
114639       return *reinterpret_cast<const VkSubresourceHostMemcpySize *>( this );
114640     }
114641 
operator VkSubresourceHostMemcpySize&VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize114642     operator VkSubresourceHostMemcpySize &() VULKAN_HPP_NOEXCEPT
114643     {
114644       return *reinterpret_cast<VkSubresourceHostMemcpySize *>( this );
114645     }
114646 
114647 #if defined( VULKAN_HPP_USE_REFLECT )
114648 #  if 14 <= VULKAN_HPP_CPP_VERSION
114649     auto
114650 #  else
114651     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
114652 #  endif
reflectVULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize114653       reflect() const VULKAN_HPP_NOEXCEPT
114654     {
114655       return std::tie( sType, pNext, size );
114656     }
114657 #endif
114658 
114659 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114660     auto operator<=>( SubresourceHostMemcpySize const & ) const = default;
114661 #else
operator ==VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize114662     bool operator==( SubresourceHostMemcpySize const & rhs ) const VULKAN_HPP_NOEXCEPT
114663     {
114664 #  if defined( VULKAN_HPP_USE_REFLECT )
114665       return this->reflect() == rhs.reflect();
114666 #  else
114667       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( size == rhs.size );
114668 #  endif
114669     }
114670 
operator !=VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize114671     bool operator!=( SubresourceHostMemcpySize const & rhs ) const VULKAN_HPP_NOEXCEPT
114672     {
114673       return !operator==( rhs );
114674     }
114675 #endif
114676 
114677   public:
114678     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubresourceHostMemcpySize;
114679     void *                              pNext = {};
114680     VULKAN_HPP_NAMESPACE::DeviceSize    size  = {};
114681   };
114682 
114683   template <>
114684   struct CppType<StructureType, StructureType::eSubresourceHostMemcpySize>
114685   {
114686     using Type = SubresourceHostMemcpySize;
114687   };
114688 
114689   using SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize;
114690 
114691   struct SubresourceLayout2
114692   {
114693     using NativeType = VkSubresourceLayout2;
114694 
114695     static const bool                                  allowDuplicate = false;
114696     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubresourceLayout2;
114697 
114698 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubresourceLayout2VULKAN_HPP_NAMESPACE::SubresourceLayout2114699     VULKAN_HPP_CONSTEXPR SubresourceLayout2( VULKAN_HPP_NAMESPACE::SubresourceLayout subresourceLayout_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
114700       : pNext{ pNext_ }
114701       , subresourceLayout{ subresourceLayout_ }
114702     {
114703     }
114704 
114705     VULKAN_HPP_CONSTEXPR SubresourceLayout2( SubresourceLayout2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114706 
SubresourceLayout2VULKAN_HPP_NAMESPACE::SubresourceLayout2114707     SubresourceLayout2( VkSubresourceLayout2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubresourceLayout2( *reinterpret_cast<SubresourceLayout2 const *>( &rhs ) ) {}
114708 
114709     SubresourceLayout2 & operator=( SubresourceLayout2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114710 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114711 
operator =VULKAN_HPP_NAMESPACE::SubresourceLayout2114712     SubresourceLayout2 & operator=( VkSubresourceLayout2 const & rhs ) VULKAN_HPP_NOEXCEPT
114713     {
114714       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubresourceLayout2 const *>( &rhs );
114715       return *this;
114716     }
114717 
operator VkSubresourceLayout2 const&VULKAN_HPP_NAMESPACE::SubresourceLayout2114718     operator VkSubresourceLayout2 const &() const VULKAN_HPP_NOEXCEPT
114719     {
114720       return *reinterpret_cast<const VkSubresourceLayout2 *>( this );
114721     }
114722 
operator VkSubresourceLayout2&VULKAN_HPP_NAMESPACE::SubresourceLayout2114723     operator VkSubresourceLayout2 &() VULKAN_HPP_NOEXCEPT
114724     {
114725       return *reinterpret_cast<VkSubresourceLayout2 *>( this );
114726     }
114727 
114728 #if defined( VULKAN_HPP_USE_REFLECT )
114729 #  if 14 <= VULKAN_HPP_CPP_VERSION
114730     auto
114731 #  else
114732     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SubresourceLayout const &>
114733 #  endif
reflectVULKAN_HPP_NAMESPACE::SubresourceLayout2114734       reflect() const VULKAN_HPP_NOEXCEPT
114735     {
114736       return std::tie( sType, pNext, subresourceLayout );
114737     }
114738 #endif
114739 
114740 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114741     auto operator<=>( SubresourceLayout2 const & ) const = default;
114742 #else
operator ==VULKAN_HPP_NAMESPACE::SubresourceLayout2114743     bool operator==( SubresourceLayout2 const & rhs ) const VULKAN_HPP_NOEXCEPT
114744     {
114745 #  if defined( VULKAN_HPP_USE_REFLECT )
114746       return this->reflect() == rhs.reflect();
114747 #  else
114748       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subresourceLayout == rhs.subresourceLayout );
114749 #  endif
114750     }
114751 
operator !=VULKAN_HPP_NAMESPACE::SubresourceLayout2114752     bool operator!=( SubresourceLayout2 const & rhs ) const VULKAN_HPP_NOEXCEPT
114753     {
114754       return !operator==( rhs );
114755     }
114756 #endif
114757 
114758   public:
114759     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eSubresourceLayout2;
114760     void *                                  pNext             = {};
114761     VULKAN_HPP_NAMESPACE::SubresourceLayout subresourceLayout = {};
114762   };
114763 
114764   template <>
114765   struct CppType<StructureType, StructureType::eSubresourceLayout2>
114766   {
114767     using Type = SubresourceLayout2;
114768   };
114769 
114770   using SubresourceLayout2EXT = SubresourceLayout2;
114771   using SubresourceLayout2KHR = SubresourceLayout2;
114772 
114773   struct SurfaceCapabilities2EXT
114774   {
114775     using NativeType = VkSurfaceCapabilities2EXT;
114776 
114777     static const bool                                  allowDuplicate = false;
114778     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceCapabilities2EXT;
114779 
114780 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilities2EXTVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT114781     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT(
114782       uint32_t                                          minImageCount_            = {},
114783       uint32_t                                          maxImageCount_            = {},
114784       VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent_            = {},
114785       VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent_           = {},
114786       VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent_           = {},
114787       uint32_t                                          maxImageArrayLayers_      = {},
114788       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms_      = {},
114789       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_         = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
114790       VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR      supportedCompositeAlpha_  = {},
114791       VULKAN_HPP_NAMESPACE::ImageUsageFlags             supportedUsageFlags_      = {},
114792       VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT      supportedSurfaceCounters_ = {},
114793       void *                                            pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
114794       : pNext{ pNext_ }
114795       , minImageCount{ minImageCount_ }
114796       , maxImageCount{ maxImageCount_ }
114797       , currentExtent{ currentExtent_ }
114798       , minImageExtent{ minImageExtent_ }
114799       , maxImageExtent{ maxImageExtent_ }
114800       , maxImageArrayLayers{ maxImageArrayLayers_ }
114801       , supportedTransforms{ supportedTransforms_ }
114802       , currentTransform{ currentTransform_ }
114803       , supportedCompositeAlpha{ supportedCompositeAlpha_ }
114804       , supportedUsageFlags{ supportedUsageFlags_ }
114805       , supportedSurfaceCounters{ supportedSurfaceCounters_ }
114806     {
114807     }
114808 
114809     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114810 
SurfaceCapabilities2EXTVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT114811     SurfaceCapabilities2EXT( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
114812       : SurfaceCapabilities2EXT( *reinterpret_cast<SurfaceCapabilities2EXT const *>( &rhs ) )
114813     {
114814     }
114815 
114816     SurfaceCapabilities2EXT & operator=( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114817 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114818 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT114819     SurfaceCapabilities2EXT & operator=( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
114820     {
114821       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT const *>( &rhs );
114822       return *this;
114823     }
114824 
operator VkSurfaceCapabilities2EXT const&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT114825     operator VkSurfaceCapabilities2EXT const &() const VULKAN_HPP_NOEXCEPT
114826     {
114827       return *reinterpret_cast<const VkSurfaceCapabilities2EXT *>( this );
114828     }
114829 
operator VkSurfaceCapabilities2EXT&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT114830     operator VkSurfaceCapabilities2EXT &() VULKAN_HPP_NOEXCEPT
114831     {
114832       return *reinterpret_cast<VkSurfaceCapabilities2EXT *>( this );
114833     }
114834 
114835 #if defined( VULKAN_HPP_USE_REFLECT )
114836 #  if 14 <= VULKAN_HPP_CPP_VERSION
114837     auto
114838 #  else
114839     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
114840                void * const &,
114841                uint32_t const &,
114842                uint32_t const &,
114843                VULKAN_HPP_NAMESPACE::Extent2D const &,
114844                VULKAN_HPP_NAMESPACE::Extent2D const &,
114845                VULKAN_HPP_NAMESPACE::Extent2D const &,
114846                uint32_t const &,
114847                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &,
114848                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
114849                VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR const &,
114850                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
114851                VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT const &>
114852 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT114853       reflect() const VULKAN_HPP_NOEXCEPT
114854     {
114855       return std::tie( sType,
114856                        pNext,
114857                        minImageCount,
114858                        maxImageCount,
114859                        currentExtent,
114860                        minImageExtent,
114861                        maxImageExtent,
114862                        maxImageArrayLayers,
114863                        supportedTransforms,
114864                        currentTransform,
114865                        supportedCompositeAlpha,
114866                        supportedUsageFlags,
114867                        supportedSurfaceCounters );
114868     }
114869 #endif
114870 
114871 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114872     auto operator<=>( SurfaceCapabilities2EXT const & ) const = default;
114873 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT114874     bool operator==( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114875     {
114876 #  if defined( VULKAN_HPP_USE_REFLECT )
114877       return this->reflect() == rhs.reflect();
114878 #  else
114879       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minImageCount == rhs.minImageCount ) && ( maxImageCount == rhs.maxImageCount ) &&
114880              ( currentExtent == rhs.currentExtent ) && ( minImageExtent == rhs.minImageExtent ) && ( maxImageExtent == rhs.maxImageExtent ) &&
114881              ( maxImageArrayLayers == rhs.maxImageArrayLayers ) && ( supportedTransforms == rhs.supportedTransforms ) &&
114882              ( currentTransform == rhs.currentTransform ) && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha ) &&
114883              ( supportedUsageFlags == rhs.supportedUsageFlags ) && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
114884 #  endif
114885     }
114886 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT114887     bool operator!=( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114888     {
114889       return !operator==( rhs );
114890     }
114891 #endif
114892 
114893   public:
114894     VULKAN_HPP_NAMESPACE::StructureType               sType                    = StructureType::eSurfaceCapabilities2EXT;
114895     void *                                            pNext                    = {};
114896     uint32_t                                          minImageCount            = {};
114897     uint32_t                                          maxImageCount            = {};
114898     VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent            = {};
114899     VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent           = {};
114900     VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent           = {};
114901     uint32_t                                          maxImageArrayLayers      = {};
114902     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms      = {};
114903     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform         = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
114904     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR      supportedCompositeAlpha  = {};
114905     VULKAN_HPP_NAMESPACE::ImageUsageFlags             supportedUsageFlags      = {};
114906     VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT      supportedSurfaceCounters = {};
114907   };
114908 
114909   template <>
114910   struct CppType<StructureType, StructureType::eSurfaceCapabilities2EXT>
114911   {
114912     using Type = SurfaceCapabilities2EXT;
114913   };
114914 
114915   struct SurfaceCapabilitiesKHR
114916   {
114917     using NativeType = VkSurfaceCapabilitiesKHR;
114918 
114919 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR114920     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR(
114921       uint32_t                                          minImageCount_           = {},
114922       uint32_t                                          maxImageCount_           = {},
114923       VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent_           = {},
114924       VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent_          = {},
114925       VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent_          = {},
114926       uint32_t                                          maxImageArrayLayers_     = {},
114927       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms_     = {},
114928       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_        = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
114929       VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR      supportedCompositeAlpha_ = {},
114930       VULKAN_HPP_NAMESPACE::ImageUsageFlags             supportedUsageFlags_     = {} ) VULKAN_HPP_NOEXCEPT
114931       : minImageCount{ minImageCount_ }
114932       , maxImageCount{ maxImageCount_ }
114933       , currentExtent{ currentExtent_ }
114934       , minImageExtent{ minImageExtent_ }
114935       , maxImageExtent{ maxImageExtent_ }
114936       , maxImageArrayLayers{ maxImageArrayLayers_ }
114937       , supportedTransforms{ supportedTransforms_ }
114938       , currentTransform{ currentTransform_ }
114939       , supportedCompositeAlpha{ supportedCompositeAlpha_ }
114940       , supportedUsageFlags{ supportedUsageFlags_ }
114941     {
114942     }
114943 
114944     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114945 
SurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR114946     SurfaceCapabilitiesKHR( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
114947       : SurfaceCapabilitiesKHR( *reinterpret_cast<SurfaceCapabilitiesKHR const *>( &rhs ) )
114948     {
114949     }
114950 
114951     SurfaceCapabilitiesKHR & operator=( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114952 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114953 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR114954     SurfaceCapabilitiesKHR & operator=( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
114955     {
114956       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const *>( &rhs );
114957       return *this;
114958     }
114959 
operator VkSurfaceCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR114960     operator VkSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
114961     {
114962       return *reinterpret_cast<const VkSurfaceCapabilitiesKHR *>( this );
114963     }
114964 
operator VkSurfaceCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR114965     operator VkSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
114966     {
114967       return *reinterpret_cast<VkSurfaceCapabilitiesKHR *>( this );
114968     }
114969 
114970 #if defined( VULKAN_HPP_USE_REFLECT )
114971 #  if 14 <= VULKAN_HPP_CPP_VERSION
114972     auto
114973 #  else
114974     std::tuple<uint32_t const &,
114975                uint32_t const &,
114976                VULKAN_HPP_NAMESPACE::Extent2D const &,
114977                VULKAN_HPP_NAMESPACE::Extent2D const &,
114978                VULKAN_HPP_NAMESPACE::Extent2D const &,
114979                uint32_t const &,
114980                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &,
114981                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
114982                VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR const &,
114983                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
114984 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR114985       reflect() const VULKAN_HPP_NOEXCEPT
114986     {
114987       return std::tie( minImageCount,
114988                        maxImageCount,
114989                        currentExtent,
114990                        minImageExtent,
114991                        maxImageExtent,
114992                        maxImageArrayLayers,
114993                        supportedTransforms,
114994                        currentTransform,
114995                        supportedCompositeAlpha,
114996                        supportedUsageFlags );
114997     }
114998 #endif
114999 
115000 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115001     auto operator<=>( SurfaceCapabilitiesKHR const & ) const = default;
115002 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR115003     bool operator==( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115004     {
115005 #  if defined( VULKAN_HPP_USE_REFLECT )
115006       return this->reflect() == rhs.reflect();
115007 #  else
115008       return ( minImageCount == rhs.minImageCount ) && ( maxImageCount == rhs.maxImageCount ) && ( currentExtent == rhs.currentExtent ) &&
115009              ( minImageExtent == rhs.minImageExtent ) && ( maxImageExtent == rhs.maxImageExtent ) && ( maxImageArrayLayers == rhs.maxImageArrayLayers ) &&
115010              ( supportedTransforms == rhs.supportedTransforms ) && ( currentTransform == rhs.currentTransform ) &&
115011              ( supportedCompositeAlpha == rhs.supportedCompositeAlpha ) && ( supportedUsageFlags == rhs.supportedUsageFlags );
115012 #  endif
115013     }
115014 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR115015     bool operator!=( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115016     {
115017       return !operator==( rhs );
115018     }
115019 #endif
115020 
115021   public:
115022     uint32_t                                          minImageCount           = {};
115023     uint32_t                                          maxImageCount           = {};
115024     VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent           = {};
115025     VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent          = {};
115026     VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent          = {};
115027     uint32_t                                          maxImageArrayLayers     = {};
115028     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms     = {};
115029     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform        = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
115030     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR      supportedCompositeAlpha = {};
115031     VULKAN_HPP_NAMESPACE::ImageUsageFlags             supportedUsageFlags     = {};
115032   };
115033 
115034   struct SurfaceCapabilities2KHR
115035   {
115036     using NativeType = VkSurfaceCapabilities2KHR;
115037 
115038     static const bool                                  allowDuplicate = false;
115039     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceCapabilities2KHR;
115040 
115041 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilities2KHRVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR115042     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities_ = {},
115043                                                   void *                                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
115044       : pNext{ pNext_ }
115045       , surfaceCapabilities{ surfaceCapabilities_ }
115046     {
115047     }
115048 
115049     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115050 
SurfaceCapabilities2KHRVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR115051     SurfaceCapabilities2KHR( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
115052       : SurfaceCapabilities2KHR( *reinterpret_cast<SurfaceCapabilities2KHR const *>( &rhs ) )
115053     {
115054     }
115055 
115056     SurfaceCapabilities2KHR & operator=( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115057 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115058 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR115059     SurfaceCapabilities2KHR & operator=( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
115060     {
115061       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR const *>( &rhs );
115062       return *this;
115063     }
115064 
operator VkSurfaceCapabilities2KHR const&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR115065     operator VkSurfaceCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT
115066     {
115067       return *reinterpret_cast<const VkSurfaceCapabilities2KHR *>( this );
115068     }
115069 
operator VkSurfaceCapabilities2KHR&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR115070     operator VkSurfaceCapabilities2KHR &() VULKAN_HPP_NOEXCEPT
115071     {
115072       return *reinterpret_cast<VkSurfaceCapabilities2KHR *>( this );
115073     }
115074 
115075 #if defined( VULKAN_HPP_USE_REFLECT )
115076 #  if 14 <= VULKAN_HPP_CPP_VERSION
115077     auto
115078 #  else
115079     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const &>
115080 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR115081       reflect() const VULKAN_HPP_NOEXCEPT
115082     {
115083       return std::tie( sType, pNext, surfaceCapabilities );
115084     }
115085 #endif
115086 
115087 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115088     auto operator<=>( SurfaceCapabilities2KHR const & ) const = default;
115089 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR115090     bool operator==( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115091     {
115092 #  if defined( VULKAN_HPP_USE_REFLECT )
115093       return this->reflect() == rhs.reflect();
115094 #  else
115095       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceCapabilities == rhs.surfaceCapabilities );
115096 #  endif
115097     }
115098 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR115099     bool operator!=( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115100     {
115101       return !operator==( rhs );
115102     }
115103 #endif
115104 
115105   public:
115106     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::eSurfaceCapabilities2KHR;
115107     void *                                       pNext               = {};
115108     VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities = {};
115109   };
115110 
115111   template <>
115112   struct CppType<StructureType, StructureType::eSurfaceCapabilities2KHR>
115113   {
115114     using Type = SurfaceCapabilities2KHR;
115115   };
115116 
115117 #if defined( VK_USE_PLATFORM_WIN32_KHR )
115118   struct SurfaceCapabilitiesFullScreenExclusiveEXT
115119   {
115120     using NativeType = VkSurfaceCapabilitiesFullScreenExclusiveEXT;
115121 
115122     static const bool                                  allowDuplicate = false;
115123     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT;
115124 
115125 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilitiesFullScreenExclusiveEXTVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT115126     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT( VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported_ = {},
115127                                                                     void *                       pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
115128       : pNext{ pNext_ }
115129       , fullScreenExclusiveSupported{ fullScreenExclusiveSupported_ }
115130     {
115131     }
115132 
115133     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115134 
SurfaceCapabilitiesFullScreenExclusiveEXTVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT115135     SurfaceCapabilitiesFullScreenExclusiveEXT( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115136       : SurfaceCapabilitiesFullScreenExclusiveEXT( *reinterpret_cast<SurfaceCapabilitiesFullScreenExclusiveEXT const *>( &rhs ) )
115137     {
115138     }
115139 
115140     SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115141 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115142 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT115143     SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115144     {
115145       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT const *>( &rhs );
115146       return *this;
115147     }
115148 
operator VkSurfaceCapabilitiesFullScreenExclusiveEXT const&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT115149     operator VkSurfaceCapabilitiesFullScreenExclusiveEXT const &() const VULKAN_HPP_NOEXCEPT
115150     {
115151       return *reinterpret_cast<const VkSurfaceCapabilitiesFullScreenExclusiveEXT *>( this );
115152     }
115153 
operator VkSurfaceCapabilitiesFullScreenExclusiveEXT&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT115154     operator VkSurfaceCapabilitiesFullScreenExclusiveEXT &() VULKAN_HPP_NOEXCEPT
115155     {
115156       return *reinterpret_cast<VkSurfaceCapabilitiesFullScreenExclusiveEXT *>( this );
115157     }
115158 
115159 #  if defined( VULKAN_HPP_USE_REFLECT )
115160 #    if 14 <= VULKAN_HPP_CPP_VERSION
115161     auto
115162 #    else
115163     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
115164 #    endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT115165       reflect() const VULKAN_HPP_NOEXCEPT
115166     {
115167       return std::tie( sType, pNext, fullScreenExclusiveSupported );
115168     }
115169 #  endif
115170 
115171 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115172     auto operator<=>( SurfaceCapabilitiesFullScreenExclusiveEXT const & ) const = default;
115173 #  else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT115174     bool operator==( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115175     {
115176 #    if defined( VULKAN_HPP_USE_REFLECT )
115177       return this->reflect() == rhs.reflect();
115178 #    else
115179       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fullScreenExclusiveSupported == rhs.fullScreenExclusiveSupported );
115180 #    endif
115181     }
115182 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT115183     bool operator!=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115184     {
115185       return !operator==( rhs );
115186     }
115187 #  endif
115188 
115189   public:
115190     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT;
115191     void *                              pNext                        = {};
115192     VULKAN_HPP_NAMESPACE::Bool32        fullScreenExclusiveSupported = {};
115193   };
115194 
115195   template <>
115196   struct CppType<StructureType, StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT>
115197   {
115198     using Type = SurfaceCapabilitiesFullScreenExclusiveEXT;
115199   };
115200 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
115201 
115202   struct SurfaceCapabilitiesPresentBarrierNV
115203   {
115204     using NativeType = VkSurfaceCapabilitiesPresentBarrierNV;
115205 
115206     static const bool                                  allowDuplicate = false;
115207     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceCapabilitiesPresentBarrierNV;
115208 
115209 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilitiesPresentBarrierNVVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV115210     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesPresentBarrierNV( VULKAN_HPP_NAMESPACE::Bool32 presentBarrierSupported_ = {},
115211                                                               void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
115212       : pNext{ pNext_ }
115213       , presentBarrierSupported{ presentBarrierSupported_ }
115214     {
115215     }
115216 
115217     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesPresentBarrierNV( SurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115218 
SurfaceCapabilitiesPresentBarrierNVVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV115219     SurfaceCapabilitiesPresentBarrierNV( VkSurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT
115220       : SurfaceCapabilitiesPresentBarrierNV( *reinterpret_cast<SurfaceCapabilitiesPresentBarrierNV const *>( &rhs ) )
115221     {
115222     }
115223 
115224     SurfaceCapabilitiesPresentBarrierNV & operator=( SurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115225 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115226 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV115227     SurfaceCapabilitiesPresentBarrierNV & operator=( VkSurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT
115228     {
115229       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV const *>( &rhs );
115230       return *this;
115231     }
115232 
operator VkSurfaceCapabilitiesPresentBarrierNV const&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV115233     operator VkSurfaceCapabilitiesPresentBarrierNV const &() const VULKAN_HPP_NOEXCEPT
115234     {
115235       return *reinterpret_cast<const VkSurfaceCapabilitiesPresentBarrierNV *>( this );
115236     }
115237 
operator VkSurfaceCapabilitiesPresentBarrierNV&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV115238     operator VkSurfaceCapabilitiesPresentBarrierNV &() VULKAN_HPP_NOEXCEPT
115239     {
115240       return *reinterpret_cast<VkSurfaceCapabilitiesPresentBarrierNV *>( this );
115241     }
115242 
115243 #if defined( VULKAN_HPP_USE_REFLECT )
115244 #  if 14 <= VULKAN_HPP_CPP_VERSION
115245     auto
115246 #  else
115247     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
115248 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV115249       reflect() const VULKAN_HPP_NOEXCEPT
115250     {
115251       return std::tie( sType, pNext, presentBarrierSupported );
115252     }
115253 #endif
115254 
115255 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115256     auto operator<=>( SurfaceCapabilitiesPresentBarrierNV const & ) const = default;
115257 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV115258     bool operator==( SurfaceCapabilitiesPresentBarrierNV const & rhs ) const VULKAN_HPP_NOEXCEPT
115259     {
115260 #  if defined( VULKAN_HPP_USE_REFLECT )
115261       return this->reflect() == rhs.reflect();
115262 #  else
115263       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentBarrierSupported == rhs.presentBarrierSupported );
115264 #  endif
115265     }
115266 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV115267     bool operator!=( SurfaceCapabilitiesPresentBarrierNV const & rhs ) const VULKAN_HPP_NOEXCEPT
115268     {
115269       return !operator==( rhs );
115270     }
115271 #endif
115272 
115273   public:
115274     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::eSurfaceCapabilitiesPresentBarrierNV;
115275     void *                              pNext                   = {};
115276     VULKAN_HPP_NAMESPACE::Bool32        presentBarrierSupported = {};
115277   };
115278 
115279   template <>
115280   struct CppType<StructureType, StructureType::eSurfaceCapabilitiesPresentBarrierNV>
115281   {
115282     using Type = SurfaceCapabilitiesPresentBarrierNV;
115283   };
115284 
115285   struct SurfaceFormatKHR
115286   {
115287     using NativeType = VkSurfaceFormatKHR;
115288 
115289 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
115290     VULKAN_HPP_CONSTEXPR
SurfaceFormatKHRVULKAN_HPP_NAMESPACE::SurfaceFormatKHR115291       SurfaceFormatKHR( VULKAN_HPP_NAMESPACE::Format        format_     = VULKAN_HPP_NAMESPACE::Format::eUndefined,
115292                         VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace_ = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear ) VULKAN_HPP_NOEXCEPT
115293       : format{ format_ }
115294       , colorSpace{ colorSpace_ }
115295     {
115296     }
115297 
115298     VULKAN_HPP_CONSTEXPR SurfaceFormatKHR( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115299 
SurfaceFormatKHRVULKAN_HPP_NAMESPACE::SurfaceFormatKHR115300     SurfaceFormatKHR( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT : SurfaceFormatKHR( *reinterpret_cast<SurfaceFormatKHR const *>( &rhs ) ) {}
115301 
115302     SurfaceFormatKHR & operator=( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115303 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115304 
operator =VULKAN_HPP_NAMESPACE::SurfaceFormatKHR115305     SurfaceFormatKHR & operator=( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT
115306     {
115307       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const *>( &rhs );
115308       return *this;
115309     }
115310 
operator VkSurfaceFormatKHR const&VULKAN_HPP_NAMESPACE::SurfaceFormatKHR115311     operator VkSurfaceFormatKHR const &() const VULKAN_HPP_NOEXCEPT
115312     {
115313       return *reinterpret_cast<const VkSurfaceFormatKHR *>( this );
115314     }
115315 
operator VkSurfaceFormatKHR&VULKAN_HPP_NAMESPACE::SurfaceFormatKHR115316     operator VkSurfaceFormatKHR &() VULKAN_HPP_NOEXCEPT
115317     {
115318       return *reinterpret_cast<VkSurfaceFormatKHR *>( this );
115319     }
115320 
115321 #if defined( VULKAN_HPP_USE_REFLECT )
115322 #  if 14 <= VULKAN_HPP_CPP_VERSION
115323     auto
115324 #  else
115325     std::tuple<VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::ColorSpaceKHR const &>
115326 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFormatKHR115327       reflect() const VULKAN_HPP_NOEXCEPT
115328     {
115329       return std::tie( format, colorSpace );
115330     }
115331 #endif
115332 
115333 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115334     auto operator<=>( SurfaceFormatKHR const & ) const = default;
115335 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFormatKHR115336     bool operator==( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115337     {
115338 #  if defined( VULKAN_HPP_USE_REFLECT )
115339       return this->reflect() == rhs.reflect();
115340 #  else
115341       return ( format == rhs.format ) && ( colorSpace == rhs.colorSpace );
115342 #  endif
115343     }
115344 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFormatKHR115345     bool operator!=( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115346     {
115347       return !operator==( rhs );
115348     }
115349 #endif
115350 
115351   public:
115352     VULKAN_HPP_NAMESPACE::Format        format     = VULKAN_HPP_NAMESPACE::Format::eUndefined;
115353     VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear;
115354   };
115355 
115356   struct SurfaceFormat2KHR
115357   {
115358     using NativeType = VkSurfaceFormat2KHR;
115359 
115360     static const bool                                  allowDuplicate = false;
115361     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceFormat2KHR;
115362 
115363 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceFormat2KHRVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR115364     VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
115365       : pNext{ pNext_ }
115366       , surfaceFormat{ surfaceFormat_ }
115367     {
115368     }
115369 
115370     VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115371 
SurfaceFormat2KHRVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR115372     SurfaceFormat2KHR( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT : SurfaceFormat2KHR( *reinterpret_cast<SurfaceFormat2KHR const *>( &rhs ) ) {}
115373 
115374     SurfaceFormat2KHR & operator=( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115375 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115376 
operator =VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR115377     SurfaceFormat2KHR & operator=( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
115378     {
115379       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR const *>( &rhs );
115380       return *this;
115381     }
115382 
operator VkSurfaceFormat2KHR const&VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR115383     operator VkSurfaceFormat2KHR const &() const VULKAN_HPP_NOEXCEPT
115384     {
115385       return *reinterpret_cast<const VkSurfaceFormat2KHR *>( this );
115386     }
115387 
operator VkSurfaceFormat2KHR&VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR115388     operator VkSurfaceFormat2KHR &() VULKAN_HPP_NOEXCEPT
115389     {
115390       return *reinterpret_cast<VkSurfaceFormat2KHR *>( this );
115391     }
115392 
115393 #if defined( VULKAN_HPP_USE_REFLECT )
115394 #  if 14 <= VULKAN_HPP_CPP_VERSION
115395     auto
115396 #  else
115397     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const &>
115398 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR115399       reflect() const VULKAN_HPP_NOEXCEPT
115400     {
115401       return std::tie( sType, pNext, surfaceFormat );
115402     }
115403 #endif
115404 
115405 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115406     auto operator<=>( SurfaceFormat2KHR const & ) const = default;
115407 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR115408     bool operator==( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115409     {
115410 #  if defined( VULKAN_HPP_USE_REFLECT )
115411       return this->reflect() == rhs.reflect();
115412 #  else
115413       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceFormat == rhs.surfaceFormat );
115414 #  endif
115415     }
115416 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR115417     bool operator!=( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115418     {
115419       return !operator==( rhs );
115420     }
115421 #endif
115422 
115423   public:
115424     VULKAN_HPP_NAMESPACE::StructureType    sType         = StructureType::eSurfaceFormat2KHR;
115425     void *                                 pNext         = {};
115426     VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat = {};
115427   };
115428 
115429   template <>
115430   struct CppType<StructureType, StructureType::eSurfaceFormat2KHR>
115431   {
115432     using Type = SurfaceFormat2KHR;
115433   };
115434 
115435 #if defined( VK_USE_PLATFORM_WIN32_KHR )
115436   struct SurfaceFullScreenExclusiveInfoEXT
115437   {
115438     using NativeType = VkSurfaceFullScreenExclusiveInfoEXT;
115439 
115440     static const bool                                  allowDuplicate = false;
115441     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceFullScreenExclusiveInfoEXT;
115442 
115443 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceFullScreenExclusiveInfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT115444     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveInfoEXT(
115445       VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive_ = VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault,
115446       void *                                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
115447       : pNext{ pNext_ }
115448       , fullScreenExclusive{ fullScreenExclusive_ }
115449     {
115450     }
115451 
115452     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveInfoEXT( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115453 
SurfaceFullScreenExclusiveInfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT115454     SurfaceFullScreenExclusiveInfoEXT( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115455       : SurfaceFullScreenExclusiveInfoEXT( *reinterpret_cast<SurfaceFullScreenExclusiveInfoEXT const *>( &rhs ) )
115456     {
115457     }
115458 
115459     SurfaceFullScreenExclusiveInfoEXT & operator=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115460 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115461 
operator =VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT115462     SurfaceFullScreenExclusiveInfoEXT & operator=( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115463     {
115464       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT const *>( &rhs );
115465       return *this;
115466     }
115467 
115468 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT115469     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
115470     {
115471       pNext = pNext_;
115472       return *this;
115473     }
115474 
115475     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT &
setFullScreenExclusiveVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT115476       setFullScreenExclusive( VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive_ ) VULKAN_HPP_NOEXCEPT
115477     {
115478       fullScreenExclusive = fullScreenExclusive_;
115479       return *this;
115480     }
115481 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115482 
operator VkSurfaceFullScreenExclusiveInfoEXT const&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT115483     operator VkSurfaceFullScreenExclusiveInfoEXT const &() const VULKAN_HPP_NOEXCEPT
115484     {
115485       return *reinterpret_cast<const VkSurfaceFullScreenExclusiveInfoEXT *>( this );
115486     }
115487 
operator VkSurfaceFullScreenExclusiveInfoEXT&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT115488     operator VkSurfaceFullScreenExclusiveInfoEXT &() VULKAN_HPP_NOEXCEPT
115489     {
115490       return *reinterpret_cast<VkSurfaceFullScreenExclusiveInfoEXT *>( this );
115491     }
115492 
115493 #  if defined( VULKAN_HPP_USE_REFLECT )
115494 #    if 14 <= VULKAN_HPP_CPP_VERSION
115495     auto
115496 #    else
115497     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT const &>
115498 #    endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT115499       reflect() const VULKAN_HPP_NOEXCEPT
115500     {
115501       return std::tie( sType, pNext, fullScreenExclusive );
115502     }
115503 #  endif
115504 
115505 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115506     auto operator<=>( SurfaceFullScreenExclusiveInfoEXT const & ) const = default;
115507 #  else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT115508     bool operator==( SurfaceFullScreenExclusiveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115509     {
115510 #    if defined( VULKAN_HPP_USE_REFLECT )
115511       return this->reflect() == rhs.reflect();
115512 #    else
115513       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fullScreenExclusive == rhs.fullScreenExclusive );
115514 #    endif
115515     }
115516 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT115517     bool operator!=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115518     {
115519       return !operator==( rhs );
115520     }
115521 #  endif
115522 
115523   public:
115524     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::eSurfaceFullScreenExclusiveInfoEXT;
115525     void *                                       pNext               = {};
115526     VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive = VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault;
115527   };
115528 
115529   template <>
115530   struct CppType<StructureType, StructureType::eSurfaceFullScreenExclusiveInfoEXT>
115531   {
115532     using Type = SurfaceFullScreenExclusiveInfoEXT;
115533   };
115534 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
115535 
115536 #if defined( VK_USE_PLATFORM_WIN32_KHR )
115537   struct SurfaceFullScreenExclusiveWin32InfoEXT
115538   {
115539     using NativeType = VkSurfaceFullScreenExclusiveWin32InfoEXT;
115540 
115541     static const bool                                  allowDuplicate = false;
115542     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT;
115543 
115544 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceFullScreenExclusiveWin32InfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT115545     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( HMONITOR hmonitor_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
115546       : pNext{ pNext_ }
115547       , hmonitor{ hmonitor_ }
115548     {
115549     }
115550 
115551     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115552 
SurfaceFullScreenExclusiveWin32InfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT115553     SurfaceFullScreenExclusiveWin32InfoEXT( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115554       : SurfaceFullScreenExclusiveWin32InfoEXT( *reinterpret_cast<SurfaceFullScreenExclusiveWin32InfoEXT const *>( &rhs ) )
115555     {
115556     }
115557 
115558     SurfaceFullScreenExclusiveWin32InfoEXT & operator=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115559 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115560 
operator =VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT115561     SurfaceFullScreenExclusiveWin32InfoEXT & operator=( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115562     {
115563       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT const *>( &rhs );
115564       return *this;
115565     }
115566 
115567 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT115568     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
115569     {
115570       pNext = pNext_;
115571       return *this;
115572     }
115573 
setHmonitorVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT115574     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & setHmonitor( HMONITOR hmonitor_ ) VULKAN_HPP_NOEXCEPT
115575     {
115576       hmonitor = hmonitor_;
115577       return *this;
115578     }
115579 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115580 
operator VkSurfaceFullScreenExclusiveWin32InfoEXT const&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT115581     operator VkSurfaceFullScreenExclusiveWin32InfoEXT const &() const VULKAN_HPP_NOEXCEPT
115582     {
115583       return *reinterpret_cast<const VkSurfaceFullScreenExclusiveWin32InfoEXT *>( this );
115584     }
115585 
operator VkSurfaceFullScreenExclusiveWin32InfoEXT&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT115586     operator VkSurfaceFullScreenExclusiveWin32InfoEXT &() VULKAN_HPP_NOEXCEPT
115587     {
115588       return *reinterpret_cast<VkSurfaceFullScreenExclusiveWin32InfoEXT *>( this );
115589     }
115590 
115591 #  if defined( VULKAN_HPP_USE_REFLECT )
115592 #    if 14 <= VULKAN_HPP_CPP_VERSION
115593     auto
115594 #    else
115595     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, HMONITOR const &>
115596 #    endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT115597       reflect() const VULKAN_HPP_NOEXCEPT
115598     {
115599       return std::tie( sType, pNext, hmonitor );
115600     }
115601 #  endif
115602 
115603 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115604     auto operator<=>( SurfaceFullScreenExclusiveWin32InfoEXT const & ) const = default;
115605 #  else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT115606     bool operator==( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115607     {
115608 #    if defined( VULKAN_HPP_USE_REFLECT )
115609       return this->reflect() == rhs.reflect();
115610 #    else
115611       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hmonitor == rhs.hmonitor );
115612 #    endif
115613     }
115614 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT115615     bool operator!=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115616     {
115617       return !operator==( rhs );
115618     }
115619 #  endif
115620 
115621   public:
115622     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT;
115623     const void *                        pNext    = {};
115624     HMONITOR                            hmonitor = {};
115625   };
115626 
115627   template <>
115628   struct CppType<StructureType, StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT>
115629   {
115630     using Type = SurfaceFullScreenExclusiveWin32InfoEXT;
115631   };
115632 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
115633 
115634   struct SurfacePresentModeCompatibilityEXT
115635   {
115636     using NativeType = VkSurfacePresentModeCompatibilityEXT;
115637 
115638     static const bool                                  allowDuplicate = false;
115639     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfacePresentModeCompatibilityEXT;
115640 
115641 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfacePresentModeCompatibilityEXTVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115642     VULKAN_HPP_CONSTEXPR SurfacePresentModeCompatibilityEXT( uint32_t                               presentModeCount_ = {},
115643                                                              VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_    = {},
115644                                                              void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
115645       : pNext{ pNext_ }
115646       , presentModeCount{ presentModeCount_ }
115647       , pPresentModes{ pPresentModes_ }
115648     {
115649     }
115650 
115651     VULKAN_HPP_CONSTEXPR SurfacePresentModeCompatibilityEXT( SurfacePresentModeCompatibilityEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115652 
SurfacePresentModeCompatibilityEXTVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115653     SurfacePresentModeCompatibilityEXT( VkSurfacePresentModeCompatibilityEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115654       : SurfacePresentModeCompatibilityEXT( *reinterpret_cast<SurfacePresentModeCompatibilityEXT const *>( &rhs ) )
115655     {
115656     }
115657 
115658 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SurfacePresentModeCompatibilityEXTVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115659     SurfacePresentModeCompatibilityEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_,
115660                                         void *                                                                                      pNext_ = nullptr )
115661       : pNext( pNext_ ), presentModeCount( static_cast<uint32_t>( presentModes_.size() ) ), pPresentModes( presentModes_.data() )
115662     {
115663     }
115664 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
115665 
115666     SurfacePresentModeCompatibilityEXT & operator=( SurfacePresentModeCompatibilityEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115667 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115668 
operator =VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115669     SurfacePresentModeCompatibilityEXT & operator=( VkSurfacePresentModeCompatibilityEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115670     {
115671       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT const *>( &rhs );
115672       return *this;
115673     }
115674 
115675 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115676     VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
115677     {
115678       pNext = pNext_;
115679       return *this;
115680     }
115681 
setPresentModeCountVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115682     VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityEXT & setPresentModeCount( uint32_t presentModeCount_ ) VULKAN_HPP_NOEXCEPT
115683     {
115684       presentModeCount = presentModeCount_;
115685       return *this;
115686     }
115687 
setPPresentModesVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115688     VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityEXT & setPPresentModes( VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_ ) VULKAN_HPP_NOEXCEPT
115689     {
115690       pPresentModes = pPresentModes_;
115691       return *this;
115692     }
115693 
115694 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
115695     SurfacePresentModeCompatibilityEXT &
setPresentModesVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115696       setPresentModes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_ ) VULKAN_HPP_NOEXCEPT
115697     {
115698       presentModeCount = static_cast<uint32_t>( presentModes_.size() );
115699       pPresentModes    = presentModes_.data();
115700       return *this;
115701     }
115702 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
115703 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115704 
operator VkSurfacePresentModeCompatibilityEXT const&VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115705     operator VkSurfacePresentModeCompatibilityEXT const &() const VULKAN_HPP_NOEXCEPT
115706     {
115707       return *reinterpret_cast<const VkSurfacePresentModeCompatibilityEXT *>( this );
115708     }
115709 
operator VkSurfacePresentModeCompatibilityEXT&VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115710     operator VkSurfacePresentModeCompatibilityEXT &() VULKAN_HPP_NOEXCEPT
115711     {
115712       return *reinterpret_cast<VkSurfacePresentModeCompatibilityEXT *>( this );
115713     }
115714 
115715 #if defined( VULKAN_HPP_USE_REFLECT )
115716 #  if 14 <= VULKAN_HPP_CPP_VERSION
115717     auto
115718 #  else
115719     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::PresentModeKHR * const &>
115720 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115721       reflect() const VULKAN_HPP_NOEXCEPT
115722     {
115723       return std::tie( sType, pNext, presentModeCount, pPresentModes );
115724     }
115725 #endif
115726 
115727 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115728     auto operator<=>( SurfacePresentModeCompatibilityEXT const & ) const = default;
115729 #else
operator ==VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115730     bool operator==( SurfacePresentModeCompatibilityEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115731     {
115732 #  if defined( VULKAN_HPP_USE_REFLECT )
115733       return this->reflect() == rhs.reflect();
115734 #  else
115735       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentModeCount == rhs.presentModeCount ) && ( pPresentModes == rhs.pPresentModes );
115736 #  endif
115737     }
115738 
operator !=VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT115739     bool operator!=( SurfacePresentModeCompatibilityEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115740     {
115741       return !operator==( rhs );
115742     }
115743 #endif
115744 
115745   public:
115746     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eSurfacePresentModeCompatibilityEXT;
115747     void *                                 pNext            = {};
115748     uint32_t                               presentModeCount = {};
115749     VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes    = {};
115750   };
115751 
115752   template <>
115753   struct CppType<StructureType, StructureType::eSurfacePresentModeCompatibilityEXT>
115754   {
115755     using Type = SurfacePresentModeCompatibilityEXT;
115756   };
115757 
115758   struct SurfacePresentModeEXT
115759   {
115760     using NativeType = VkSurfacePresentModeEXT;
115761 
115762     static const bool                                  allowDuplicate = false;
115763     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfacePresentModeEXT;
115764 
115765 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfacePresentModeEXTVULKAN_HPP_NAMESPACE::SurfacePresentModeEXT115766     VULKAN_HPP_CONSTEXPR SurfacePresentModeEXT( VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate,
115767                                                 void *                               pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
115768       : pNext{ pNext_ }
115769       , presentMode{ presentMode_ }
115770     {
115771     }
115772 
115773     VULKAN_HPP_CONSTEXPR SurfacePresentModeEXT( SurfacePresentModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115774 
SurfacePresentModeEXTVULKAN_HPP_NAMESPACE::SurfacePresentModeEXT115775     SurfacePresentModeEXT( VkSurfacePresentModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115776       : SurfacePresentModeEXT( *reinterpret_cast<SurfacePresentModeEXT const *>( &rhs ) )
115777     {
115778     }
115779 
115780     SurfacePresentModeEXT & operator=( SurfacePresentModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115781 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115782 
operator =VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT115783     SurfacePresentModeEXT & operator=( VkSurfacePresentModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115784     {
115785       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT const *>( &rhs );
115786       return *this;
115787     }
115788 
115789 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfacePresentModeEXT115790     VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
115791     {
115792       pNext = pNext_;
115793       return *this;
115794     }
115795 
setPresentModeVULKAN_HPP_NAMESPACE::SurfacePresentModeEXT115796     VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeEXT & setPresentMode( VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ ) VULKAN_HPP_NOEXCEPT
115797     {
115798       presentMode = presentMode_;
115799       return *this;
115800     }
115801 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115802 
operator VkSurfacePresentModeEXT const&VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT115803     operator VkSurfacePresentModeEXT const &() const VULKAN_HPP_NOEXCEPT
115804     {
115805       return *reinterpret_cast<const VkSurfacePresentModeEXT *>( this );
115806     }
115807 
operator VkSurfacePresentModeEXT&VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT115808     operator VkSurfacePresentModeEXT &() VULKAN_HPP_NOEXCEPT
115809     {
115810       return *reinterpret_cast<VkSurfacePresentModeEXT *>( this );
115811     }
115812 
115813 #if defined( VULKAN_HPP_USE_REFLECT )
115814 #  if 14 <= VULKAN_HPP_CPP_VERSION
115815     auto
115816 #  else
115817     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PresentModeKHR const &>
115818 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfacePresentModeEXT115819       reflect() const VULKAN_HPP_NOEXCEPT
115820     {
115821       return std::tie( sType, pNext, presentMode );
115822     }
115823 #endif
115824 
115825 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115826     auto operator<=>( SurfacePresentModeEXT const & ) const = default;
115827 #else
operator ==VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT115828     bool operator==( SurfacePresentModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115829     {
115830 #  if defined( VULKAN_HPP_USE_REFLECT )
115831       return this->reflect() == rhs.reflect();
115832 #  else
115833       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentMode == rhs.presentMode );
115834 #  endif
115835     }
115836 
operator !=VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT115837     bool operator!=( SurfacePresentModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115838     {
115839       return !operator==( rhs );
115840     }
115841 #endif
115842 
115843   public:
115844     VULKAN_HPP_NAMESPACE::StructureType  sType       = StructureType::eSurfacePresentModeEXT;
115845     void *                               pNext       = {};
115846     VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate;
115847   };
115848 
115849   template <>
115850   struct CppType<StructureType, StructureType::eSurfacePresentModeEXT>
115851   {
115852     using Type = SurfacePresentModeEXT;
115853   };
115854 
115855   struct SurfacePresentScalingCapabilitiesEXT
115856   {
115857     using NativeType = VkSurfacePresentScalingCapabilitiesEXT;
115858 
115859     static const bool                                  allowDuplicate = false;
115860     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfacePresentScalingCapabilitiesEXT;
115861 
115862 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfacePresentScalingCapabilitiesEXTVULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT115863     VULKAN_HPP_CONSTEXPR SurfacePresentScalingCapabilitiesEXT( VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT supportedPresentScaling_  = {},
115864                                                                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT supportedPresentGravityX_ = {},
115865                                                                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT supportedPresentGravityY_ = {},
115866                                                                VULKAN_HPP_NAMESPACE::Extent2D               minScaledImageExtent_     = {},
115867                                                                VULKAN_HPP_NAMESPACE::Extent2D               maxScaledImageExtent_     = {},
115868                                                                void *                                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
115869       : pNext{ pNext_ }
115870       , supportedPresentScaling{ supportedPresentScaling_ }
115871       , supportedPresentGravityX{ supportedPresentGravityX_ }
115872       , supportedPresentGravityY{ supportedPresentGravityY_ }
115873       , minScaledImageExtent{ minScaledImageExtent_ }
115874       , maxScaledImageExtent{ maxScaledImageExtent_ }
115875     {
115876     }
115877 
115878     VULKAN_HPP_CONSTEXPR SurfacePresentScalingCapabilitiesEXT( SurfacePresentScalingCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115879 
SurfacePresentScalingCapabilitiesEXTVULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT115880     SurfacePresentScalingCapabilitiesEXT( VkSurfacePresentScalingCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115881       : SurfacePresentScalingCapabilitiesEXT( *reinterpret_cast<SurfacePresentScalingCapabilitiesEXT const *>( &rhs ) )
115882     {
115883     }
115884 
115885     SurfacePresentScalingCapabilitiesEXT & operator=( SurfacePresentScalingCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115886 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115887 
operator =VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT115888     SurfacePresentScalingCapabilitiesEXT & operator=( VkSurfacePresentScalingCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115889     {
115890       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT const *>( &rhs );
115891       return *this;
115892     }
115893 
operator VkSurfacePresentScalingCapabilitiesEXT const&VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT115894     operator VkSurfacePresentScalingCapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT
115895     {
115896       return *reinterpret_cast<const VkSurfacePresentScalingCapabilitiesEXT *>( this );
115897     }
115898 
operator VkSurfacePresentScalingCapabilitiesEXT&VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT115899     operator VkSurfacePresentScalingCapabilitiesEXT &() VULKAN_HPP_NOEXCEPT
115900     {
115901       return *reinterpret_cast<VkSurfacePresentScalingCapabilitiesEXT *>( this );
115902     }
115903 
115904 #if defined( VULKAN_HPP_USE_REFLECT )
115905 #  if 14 <= VULKAN_HPP_CPP_VERSION
115906     auto
115907 #  else
115908     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
115909                void * const &,
115910                VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT const &,
115911                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT const &,
115912                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT const &,
115913                VULKAN_HPP_NAMESPACE::Extent2D const &,
115914                VULKAN_HPP_NAMESPACE::Extent2D const &>
115915 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT115916       reflect() const VULKAN_HPP_NOEXCEPT
115917     {
115918       return std::tie( sType, pNext, supportedPresentScaling, supportedPresentGravityX, supportedPresentGravityY, minScaledImageExtent, maxScaledImageExtent );
115919     }
115920 #endif
115921 
115922 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115923     auto operator<=>( SurfacePresentScalingCapabilitiesEXT const & ) const = default;
115924 #else
operator ==VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT115925     bool operator==( SurfacePresentScalingCapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115926     {
115927 #  if defined( VULKAN_HPP_USE_REFLECT )
115928       return this->reflect() == rhs.reflect();
115929 #  else
115930       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedPresentScaling == rhs.supportedPresentScaling ) &&
115931              ( supportedPresentGravityX == rhs.supportedPresentGravityX ) && ( supportedPresentGravityY == rhs.supportedPresentGravityY ) &&
115932              ( minScaledImageExtent == rhs.minScaledImageExtent ) && ( maxScaledImageExtent == rhs.maxScaledImageExtent );
115933 #  endif
115934     }
115935 
operator !=VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT115936     bool operator!=( SurfacePresentScalingCapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115937     {
115938       return !operator==( rhs );
115939     }
115940 #endif
115941 
115942   public:
115943     VULKAN_HPP_NAMESPACE::StructureType          sType                    = StructureType::eSurfacePresentScalingCapabilitiesEXT;
115944     void *                                       pNext                    = {};
115945     VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT supportedPresentScaling  = {};
115946     VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT supportedPresentGravityX = {};
115947     VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT supportedPresentGravityY = {};
115948     VULKAN_HPP_NAMESPACE::Extent2D               minScaledImageExtent     = {};
115949     VULKAN_HPP_NAMESPACE::Extent2D               maxScaledImageExtent     = {};
115950   };
115951 
115952   template <>
115953   struct CppType<StructureType, StructureType::eSurfacePresentScalingCapabilitiesEXT>
115954   {
115955     using Type = SurfacePresentScalingCapabilitiesEXT;
115956   };
115957 
115958   struct SurfaceProtectedCapabilitiesKHR
115959   {
115960     using NativeType = VkSurfaceProtectedCapabilitiesKHR;
115961 
115962     static const bool                                  allowDuplicate = false;
115963     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceProtectedCapabilitiesKHR;
115964 
115965 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceProtectedCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR115966     VULKAN_HPP_CONSTEXPR SurfaceProtectedCapabilitiesKHR( VULKAN_HPP_NAMESPACE::Bool32 supportsProtected_ = {},
115967                                                           const void *                 pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
115968       : pNext{ pNext_ }
115969       , supportsProtected{ supportsProtected_ }
115970     {
115971     }
115972 
115973     VULKAN_HPP_CONSTEXPR SurfaceProtectedCapabilitiesKHR( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115974 
SurfaceProtectedCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR115975     SurfaceProtectedCapabilitiesKHR( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
115976       : SurfaceProtectedCapabilitiesKHR( *reinterpret_cast<SurfaceProtectedCapabilitiesKHR const *>( &rhs ) )
115977     {
115978     }
115979 
115980     SurfaceProtectedCapabilitiesKHR & operator=( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115981 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115982 
operator =VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR115983     SurfaceProtectedCapabilitiesKHR & operator=( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
115984     {
115985       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR const *>( &rhs );
115986       return *this;
115987     }
115988 
operator VkSurfaceProtectedCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR115989     operator VkSurfaceProtectedCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
115990     {
115991       return *reinterpret_cast<const VkSurfaceProtectedCapabilitiesKHR *>( this );
115992     }
115993 
operator VkSurfaceProtectedCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR115994     operator VkSurfaceProtectedCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
115995     {
115996       return *reinterpret_cast<VkSurfaceProtectedCapabilitiesKHR *>( this );
115997     }
115998 
115999 #if defined( VULKAN_HPP_USE_REFLECT )
116000 #  if 14 <= VULKAN_HPP_CPP_VERSION
116001     auto
116002 #  else
116003     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
116004 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR116005       reflect() const VULKAN_HPP_NOEXCEPT
116006     {
116007       return std::tie( sType, pNext, supportsProtected );
116008     }
116009 #endif
116010 
116011 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116012     auto operator<=>( SurfaceProtectedCapabilitiesKHR const & ) const = default;
116013 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR116014     bool operator==( SurfaceProtectedCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116015     {
116016 #  if defined( VULKAN_HPP_USE_REFLECT )
116017       return this->reflect() == rhs.reflect();
116018 #  else
116019       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportsProtected == rhs.supportsProtected );
116020 #  endif
116021     }
116022 
operator !=VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR116023     bool operator!=( SurfaceProtectedCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116024     {
116025       return !operator==( rhs );
116026     }
116027 #endif
116028 
116029   public:
116030     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eSurfaceProtectedCapabilitiesKHR;
116031     const void *                        pNext             = {};
116032     VULKAN_HPP_NAMESPACE::Bool32        supportsProtected = {};
116033   };
116034 
116035   template <>
116036   struct CppType<StructureType, StructureType::eSurfaceProtectedCapabilitiesKHR>
116037   {
116038     using Type = SurfaceProtectedCapabilitiesKHR;
116039   };
116040 
116041   struct SwapchainCounterCreateInfoEXT
116042   {
116043     using NativeType = VkSwapchainCounterCreateInfoEXT;
116044 
116045     static const bool                                  allowDuplicate = false;
116046     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainCounterCreateInfoEXT;
116047 
116048 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainCounterCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT116049     VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ = {},
116050                                                         const void *                                 pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
116051       : pNext{ pNext_ }
116052       , surfaceCounters{ surfaceCounters_ }
116053     {
116054     }
116055 
116056     VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116057 
SwapchainCounterCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT116058     SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
116059       : SwapchainCounterCreateInfoEXT( *reinterpret_cast<SwapchainCounterCreateInfoEXT const *>( &rhs ) )
116060     {
116061     }
116062 
116063     SwapchainCounterCreateInfoEXT & operator=( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116064 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116065 
operator =VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT116066     SwapchainCounterCreateInfoEXT & operator=( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
116067     {
116068       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT const *>( &rhs );
116069       return *this;
116070     }
116071 
116072 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT116073     VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116074     {
116075       pNext = pNext_;
116076       return *this;
116077     }
116078 
116079     VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT &
setSurfaceCountersVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT116080       setSurfaceCounters( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ ) VULKAN_HPP_NOEXCEPT
116081     {
116082       surfaceCounters = surfaceCounters_;
116083       return *this;
116084     }
116085 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116086 
operator VkSwapchainCounterCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT116087     operator VkSwapchainCounterCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
116088     {
116089       return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT *>( this );
116090     }
116091 
operator VkSwapchainCounterCreateInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT116092     operator VkSwapchainCounterCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
116093     {
116094       return *reinterpret_cast<VkSwapchainCounterCreateInfoEXT *>( this );
116095     }
116096 
116097 #if defined( VULKAN_HPP_USE_REFLECT )
116098 #  if 14 <= VULKAN_HPP_CPP_VERSION
116099     auto
116100 #  else
116101     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT const &>
116102 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT116103       reflect() const VULKAN_HPP_NOEXCEPT
116104     {
116105       return std::tie( sType, pNext, surfaceCounters );
116106     }
116107 #endif
116108 
116109 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116110     auto operator<=>( SwapchainCounterCreateInfoEXT const & ) const = default;
116111 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT116112     bool operator==( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
116113     {
116114 #  if defined( VULKAN_HPP_USE_REFLECT )
116115       return this->reflect() == rhs.reflect();
116116 #  else
116117       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceCounters == rhs.surfaceCounters );
116118 #  endif
116119     }
116120 
operator !=VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT116121     bool operator!=( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
116122     {
116123       return !operator==( rhs );
116124     }
116125 #endif
116126 
116127   public:
116128     VULKAN_HPP_NAMESPACE::StructureType          sType           = StructureType::eSwapchainCounterCreateInfoEXT;
116129     const void *                                 pNext           = {};
116130     VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters = {};
116131   };
116132 
116133   template <>
116134   struct CppType<StructureType, StructureType::eSwapchainCounterCreateInfoEXT>
116135   {
116136     using Type = SwapchainCounterCreateInfoEXT;
116137   };
116138 
116139   struct SwapchainCreateInfoKHR
116140   {
116141     using NativeType = VkSwapchainCreateInfoKHR;
116142 
116143     static const bool                                  allowDuplicate = false;
116144     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainCreateInfoKHR;
116145 
116146 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
116147     VULKAN_HPP_CONSTEXPR
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116148       SwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR     flags_                 = {},
116149                               VULKAN_HPP_NAMESPACE::SurfaceKHR                  surface_               = {},
116150                               uint32_t                                          minImageCount_         = {},
116151                               VULKAN_HPP_NAMESPACE::Format                      imageFormat_           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
116152                               VULKAN_HPP_NAMESPACE::ColorSpaceKHR               imageColorSpace_       = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear,
116153                               VULKAN_HPP_NAMESPACE::Extent2D                    imageExtent_           = {},
116154                               uint32_t                                          imageArrayLayers_      = {},
116155                               VULKAN_HPP_NAMESPACE::ImageUsageFlags             imageUsage_            = {},
116156                               VULKAN_HPP_NAMESPACE::SharingMode                 imageSharingMode_      = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
116157                               uint32_t                                          queueFamilyIndexCount_ = {},
116158                               const uint32_t *                                  pQueueFamilyIndices_   = {},
116159                               VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_   = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
116160                               VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR   compositeAlpha_ = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque,
116161                               VULKAN_HPP_NAMESPACE::PresentModeKHR              presentMode_    = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate,
116162                               VULKAN_HPP_NAMESPACE::Bool32                      clipped_        = {},
116163                               VULKAN_HPP_NAMESPACE::SwapchainKHR                oldSwapchain_   = {},
116164                               const void *                                      pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
116165       : pNext{ pNext_ }
116166       , flags{ flags_ }
116167       , surface{ surface_ }
116168       , minImageCount{ minImageCount_ }
116169       , imageFormat{ imageFormat_ }
116170       , imageColorSpace{ imageColorSpace_ }
116171       , imageExtent{ imageExtent_ }
116172       , imageArrayLayers{ imageArrayLayers_ }
116173       , imageUsage{ imageUsage_ }
116174       , imageSharingMode{ imageSharingMode_ }
116175       , queueFamilyIndexCount{ queueFamilyIndexCount_ }
116176       , pQueueFamilyIndices{ pQueueFamilyIndices_ }
116177       , preTransform{ preTransform_ }
116178       , compositeAlpha{ compositeAlpha_ }
116179       , presentMode{ presentMode_ }
116180       , clipped{ clipped_ }
116181       , oldSwapchain{ oldSwapchain_ }
116182     {
116183     }
116184 
116185     VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116186 
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116187     SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116188       : SwapchainCreateInfoKHR( *reinterpret_cast<SwapchainCreateInfoKHR const *>( &rhs ) )
116189     {
116190     }
116191 
116192 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116193     SwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR                         flags_,
116194                             VULKAN_HPP_NAMESPACE::SurfaceKHR                                      surface_,
116195                             uint32_t                                                              minImageCount_,
116196                             VULKAN_HPP_NAMESPACE::Format                                          imageFormat_,
116197                             VULKAN_HPP_NAMESPACE::ColorSpaceKHR                                   imageColorSpace_,
116198                             VULKAN_HPP_NAMESPACE::Extent2D                                        imageExtent_,
116199                             uint32_t                                                              imageArrayLayers_,
116200                             VULKAN_HPP_NAMESPACE::ImageUsageFlags                                 imageUsage_,
116201                             VULKAN_HPP_NAMESPACE::SharingMode                                     imageSharingMode_,
116202                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_,
116203                             VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_   = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
116204                             VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR   compositeAlpha_ = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque,
116205                             VULKAN_HPP_NAMESPACE::PresentModeKHR              presentMode_    = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate,
116206                             VULKAN_HPP_NAMESPACE::Bool32                      clipped_        = {},
116207                             VULKAN_HPP_NAMESPACE::SwapchainKHR                oldSwapchain_   = {},
116208                             const void *                                      pNext_          = nullptr )
116209       : pNext( pNext_ )
116210       , flags( flags_ )
116211       , surface( surface_ )
116212       , minImageCount( minImageCount_ )
116213       , imageFormat( imageFormat_ )
116214       , imageColorSpace( imageColorSpace_ )
116215       , imageExtent( imageExtent_ )
116216       , imageArrayLayers( imageArrayLayers_ )
116217       , imageUsage( imageUsage_ )
116218       , imageSharingMode( imageSharingMode_ )
116219       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
116220       , pQueueFamilyIndices( queueFamilyIndices_.data() )
116221       , preTransform( preTransform_ )
116222       , compositeAlpha( compositeAlpha_ )
116223       , presentMode( presentMode_ )
116224       , clipped( clipped_ )
116225       , oldSwapchain( oldSwapchain_ )
116226     {
116227     }
116228 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
116229 
116230     SwapchainCreateInfoKHR & operator=( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116231 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116232 
operator =VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116233     SwapchainCreateInfoKHR & operator=( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116234     {
116235       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const *>( &rhs );
116236       return *this;
116237     }
116238 
116239 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116240     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116241     {
116242       pNext = pNext_;
116243       return *this;
116244     }
116245 
setFlagsVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116246     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
116247     {
116248       flags = flags_;
116249       return *this;
116250     }
116251 
setSurfaceVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116252     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT
116253     {
116254       surface = surface_;
116255       return *this;
116256     }
116257 
setMinImageCountVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116258     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setMinImageCount( uint32_t minImageCount_ ) VULKAN_HPP_NOEXCEPT
116259     {
116260       minImageCount = minImageCount_;
116261       return *this;
116262     }
116263 
setImageFormatVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116264     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageFormat( VULKAN_HPP_NAMESPACE::Format imageFormat_ ) VULKAN_HPP_NOEXCEPT
116265     {
116266       imageFormat = imageFormat_;
116267       return *this;
116268     }
116269 
setImageColorSpaceVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116270     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageColorSpace( VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_ ) VULKAN_HPP_NOEXCEPT
116271     {
116272       imageColorSpace = imageColorSpace_;
116273       return *this;
116274     }
116275 
setImageExtentVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116276     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
116277     {
116278       imageExtent = imageExtent_;
116279       return *this;
116280     }
116281 
setImageArrayLayersVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116282     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageArrayLayers( uint32_t imageArrayLayers_ ) VULKAN_HPP_NOEXCEPT
116283     {
116284       imageArrayLayers = imageArrayLayers_;
116285       return *this;
116286     }
116287 
setImageUsageVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116288     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ ) VULKAN_HPP_NOEXCEPT
116289     {
116290       imageUsage = imageUsage_;
116291       return *this;
116292     }
116293 
setImageSharingModeVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116294     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageSharingMode( VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_ ) VULKAN_HPP_NOEXCEPT
116295     {
116296       imageSharingMode = imageSharingMode_;
116297       return *this;
116298     }
116299 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116300     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
116301     {
116302       queueFamilyIndexCount = queueFamilyIndexCount_;
116303       return *this;
116304     }
116305 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116306     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
116307     {
116308       pQueueFamilyIndices = pQueueFamilyIndices_;
116309       return *this;
116310     }
116311 
116312 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
116313     SwapchainCreateInfoKHR &
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116314       setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
116315     {
116316       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
116317       pQueueFamilyIndices   = queueFamilyIndices_.data();
116318       return *this;
116319     }
116320 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
116321 
setPreTransformVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116322     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPreTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ ) VULKAN_HPP_NOEXCEPT
116323     {
116324       preTransform = preTransform_;
116325       return *this;
116326     }
116327 
setCompositeAlphaVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116328     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setCompositeAlpha( VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ ) VULKAN_HPP_NOEXCEPT
116329     {
116330       compositeAlpha = compositeAlpha_;
116331       return *this;
116332     }
116333 
setPresentModeVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116334     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPresentMode( VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ ) VULKAN_HPP_NOEXCEPT
116335     {
116336       presentMode = presentMode_;
116337       return *this;
116338     }
116339 
setClippedVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116340     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setClipped( VULKAN_HPP_NAMESPACE::Bool32 clipped_ ) VULKAN_HPP_NOEXCEPT
116341     {
116342       clipped = clipped_;
116343       return *this;
116344     }
116345 
setOldSwapchainVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116346     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setOldSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ ) VULKAN_HPP_NOEXCEPT
116347     {
116348       oldSwapchain = oldSwapchain_;
116349       return *this;
116350     }
116351 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116352 
operator VkSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116353     operator VkSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
116354     {
116355       return *reinterpret_cast<const VkSwapchainCreateInfoKHR *>( this );
116356     }
116357 
operator VkSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116358     operator VkSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
116359     {
116360       return *reinterpret_cast<VkSwapchainCreateInfoKHR *>( this );
116361     }
116362 
116363 #if defined( VULKAN_HPP_USE_REFLECT )
116364 #  if 14 <= VULKAN_HPP_CPP_VERSION
116365     auto
116366 #  else
116367     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
116368                const void * const &,
116369                VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR const &,
116370                VULKAN_HPP_NAMESPACE::SurfaceKHR const &,
116371                uint32_t const &,
116372                VULKAN_HPP_NAMESPACE::Format const &,
116373                VULKAN_HPP_NAMESPACE::ColorSpaceKHR const &,
116374                VULKAN_HPP_NAMESPACE::Extent2D const &,
116375                uint32_t const &,
116376                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
116377                VULKAN_HPP_NAMESPACE::SharingMode const &,
116378                uint32_t const &,
116379                const uint32_t * const &,
116380                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
116381                VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR const &,
116382                VULKAN_HPP_NAMESPACE::PresentModeKHR const &,
116383                VULKAN_HPP_NAMESPACE::Bool32 const &,
116384                VULKAN_HPP_NAMESPACE::SwapchainKHR const &>
116385 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116386       reflect() const VULKAN_HPP_NOEXCEPT
116387     {
116388       return std::tie( sType,
116389                        pNext,
116390                        flags,
116391                        surface,
116392                        minImageCount,
116393                        imageFormat,
116394                        imageColorSpace,
116395                        imageExtent,
116396                        imageArrayLayers,
116397                        imageUsage,
116398                        imageSharingMode,
116399                        queueFamilyIndexCount,
116400                        pQueueFamilyIndices,
116401                        preTransform,
116402                        compositeAlpha,
116403                        presentMode,
116404                        clipped,
116405                        oldSwapchain );
116406     }
116407 #endif
116408 
116409 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116410     auto operator<=>( SwapchainCreateInfoKHR const & ) const = default;
116411 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116412     bool operator==( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116413     {
116414 #  if defined( VULKAN_HPP_USE_REFLECT )
116415       return this->reflect() == rhs.reflect();
116416 #  else
116417       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( surface == rhs.surface ) &&
116418              ( minImageCount == rhs.minImageCount ) && ( imageFormat == rhs.imageFormat ) && ( imageColorSpace == rhs.imageColorSpace ) &&
116419              ( imageExtent == rhs.imageExtent ) && ( imageArrayLayers == rhs.imageArrayLayers ) && ( imageUsage == rhs.imageUsage ) &&
116420              ( imageSharingMode == rhs.imageSharingMode ) && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) &&
116421              ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ) && ( preTransform == rhs.preTransform ) && ( compositeAlpha == rhs.compositeAlpha ) &&
116422              ( presentMode == rhs.presentMode ) && ( clipped == rhs.clipped ) && ( oldSwapchain == rhs.oldSwapchain );
116423 #  endif
116424     }
116425 
operator !=VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR116426     bool operator!=( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116427     {
116428       return !operator==( rhs );
116429     }
116430 #endif
116431 
116432   public:
116433     VULKAN_HPP_NAMESPACE::StructureType               sType                 = StructureType::eSwapchainCreateInfoKHR;
116434     const void *                                      pNext                 = {};
116435     VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR     flags                 = {};
116436     VULKAN_HPP_NAMESPACE::SurfaceKHR                  surface               = {};
116437     uint32_t                                          minImageCount         = {};
116438     VULKAN_HPP_NAMESPACE::Format                      imageFormat           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
116439     VULKAN_HPP_NAMESPACE::ColorSpaceKHR               imageColorSpace       = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear;
116440     VULKAN_HPP_NAMESPACE::Extent2D                    imageExtent           = {};
116441     uint32_t                                          imageArrayLayers      = {};
116442     VULKAN_HPP_NAMESPACE::ImageUsageFlags             imageUsage            = {};
116443     VULKAN_HPP_NAMESPACE::SharingMode                 imageSharingMode      = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
116444     uint32_t                                          queueFamilyIndexCount = {};
116445     const uint32_t *                                  pQueueFamilyIndices   = {};
116446     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform          = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
116447     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR   compositeAlpha        = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque;
116448     VULKAN_HPP_NAMESPACE::PresentModeKHR              presentMode           = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate;
116449     VULKAN_HPP_NAMESPACE::Bool32                      clipped               = {};
116450     VULKAN_HPP_NAMESPACE::SwapchainKHR                oldSwapchain          = {};
116451   };
116452 
116453   template <>
116454   struct CppType<StructureType, StructureType::eSwapchainCreateInfoKHR>
116455   {
116456     using Type = SwapchainCreateInfoKHR;
116457   };
116458 
116459   struct SwapchainDisplayNativeHdrCreateInfoAMD
116460   {
116461     using NativeType = VkSwapchainDisplayNativeHdrCreateInfoAMD;
116462 
116463     static const bool                                  allowDuplicate = false;
116464     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD;
116465 
116466 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainDisplayNativeHdrCreateInfoAMDVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD116467     VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable_ = {},
116468                                                                  const void *                 pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
116469       : pNext{ pNext_ }
116470       , localDimmingEnable{ localDimmingEnable_ }
116471     {
116472     }
116473 
116474     VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116475 
SwapchainDisplayNativeHdrCreateInfoAMDVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD116476     SwapchainDisplayNativeHdrCreateInfoAMD( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
116477       : SwapchainDisplayNativeHdrCreateInfoAMD( *reinterpret_cast<SwapchainDisplayNativeHdrCreateInfoAMD const *>( &rhs ) )
116478     {
116479     }
116480 
116481     SwapchainDisplayNativeHdrCreateInfoAMD & operator=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116482 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116483 
operator =VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD116484     SwapchainDisplayNativeHdrCreateInfoAMD & operator=( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
116485     {
116486       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD const *>( &rhs );
116487       return *this;
116488     }
116489 
116490 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD116491     VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116492     {
116493       pNext = pNext_;
116494       return *this;
116495     }
116496 
116497     VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD &
setLocalDimmingEnableVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD116498       setLocalDimmingEnable( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable_ ) VULKAN_HPP_NOEXCEPT
116499     {
116500       localDimmingEnable = localDimmingEnable_;
116501       return *this;
116502     }
116503 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116504 
operator VkSwapchainDisplayNativeHdrCreateInfoAMD const&VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD116505     operator VkSwapchainDisplayNativeHdrCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT
116506     {
116507       return *reinterpret_cast<const VkSwapchainDisplayNativeHdrCreateInfoAMD *>( this );
116508     }
116509 
operator VkSwapchainDisplayNativeHdrCreateInfoAMD&VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD116510     operator VkSwapchainDisplayNativeHdrCreateInfoAMD &() VULKAN_HPP_NOEXCEPT
116511     {
116512       return *reinterpret_cast<VkSwapchainDisplayNativeHdrCreateInfoAMD *>( this );
116513     }
116514 
116515 #if defined( VULKAN_HPP_USE_REFLECT )
116516 #  if 14 <= VULKAN_HPP_CPP_VERSION
116517     auto
116518 #  else
116519     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
116520 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD116521       reflect() const VULKAN_HPP_NOEXCEPT
116522     {
116523       return std::tie( sType, pNext, localDimmingEnable );
116524     }
116525 #endif
116526 
116527 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116528     auto operator<=>( SwapchainDisplayNativeHdrCreateInfoAMD const & ) const = default;
116529 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD116530     bool operator==( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
116531     {
116532 #  if defined( VULKAN_HPP_USE_REFLECT )
116533       return this->reflect() == rhs.reflect();
116534 #  else
116535       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( localDimmingEnable == rhs.localDimmingEnable );
116536 #  endif
116537     }
116538 
operator !=VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD116539     bool operator!=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
116540     {
116541       return !operator==( rhs );
116542     }
116543 #endif
116544 
116545   public:
116546     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD;
116547     const void *                        pNext              = {};
116548     VULKAN_HPP_NAMESPACE::Bool32        localDimmingEnable = {};
116549   };
116550 
116551   template <>
116552   struct CppType<StructureType, StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD>
116553   {
116554     using Type = SwapchainDisplayNativeHdrCreateInfoAMD;
116555   };
116556 
116557   struct SwapchainLatencyCreateInfoNV
116558   {
116559     using NativeType = VkSwapchainLatencyCreateInfoNV;
116560 
116561     static const bool                                  allowDuplicate = false;
116562     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainLatencyCreateInfoNV;
116563 
116564 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainLatencyCreateInfoNVVULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV116565     VULKAN_HPP_CONSTEXPR SwapchainLatencyCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 latencyModeEnable_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
116566       : pNext{ pNext_ }
116567       , latencyModeEnable{ latencyModeEnable_ }
116568     {
116569     }
116570 
116571     VULKAN_HPP_CONSTEXPR SwapchainLatencyCreateInfoNV( SwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116572 
SwapchainLatencyCreateInfoNVVULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV116573     SwapchainLatencyCreateInfoNV( VkSwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
116574       : SwapchainLatencyCreateInfoNV( *reinterpret_cast<SwapchainLatencyCreateInfoNV const *>( &rhs ) )
116575     {
116576     }
116577 
116578     SwapchainLatencyCreateInfoNV & operator=( SwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116579 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116580 
operator =VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV116581     SwapchainLatencyCreateInfoNV & operator=( VkSwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
116582     {
116583       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV const *>( &rhs );
116584       return *this;
116585     }
116586 
116587 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV116588     VULKAN_HPP_CONSTEXPR_14 SwapchainLatencyCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116589     {
116590       pNext = pNext_;
116591       return *this;
116592     }
116593 
setLatencyModeEnableVULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV116594     VULKAN_HPP_CONSTEXPR_14 SwapchainLatencyCreateInfoNV & setLatencyModeEnable( VULKAN_HPP_NAMESPACE::Bool32 latencyModeEnable_ ) VULKAN_HPP_NOEXCEPT
116595     {
116596       latencyModeEnable = latencyModeEnable_;
116597       return *this;
116598     }
116599 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116600 
operator VkSwapchainLatencyCreateInfoNV const&VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV116601     operator VkSwapchainLatencyCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
116602     {
116603       return *reinterpret_cast<const VkSwapchainLatencyCreateInfoNV *>( this );
116604     }
116605 
operator VkSwapchainLatencyCreateInfoNV&VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV116606     operator VkSwapchainLatencyCreateInfoNV &() VULKAN_HPP_NOEXCEPT
116607     {
116608       return *reinterpret_cast<VkSwapchainLatencyCreateInfoNV *>( this );
116609     }
116610 
116611 #if defined( VULKAN_HPP_USE_REFLECT )
116612 #  if 14 <= VULKAN_HPP_CPP_VERSION
116613     auto
116614 #  else
116615     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
116616 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV116617       reflect() const VULKAN_HPP_NOEXCEPT
116618     {
116619       return std::tie( sType, pNext, latencyModeEnable );
116620     }
116621 #endif
116622 
116623 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116624     auto operator<=>( SwapchainLatencyCreateInfoNV const & ) const = default;
116625 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV116626     bool operator==( SwapchainLatencyCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
116627     {
116628 #  if defined( VULKAN_HPP_USE_REFLECT )
116629       return this->reflect() == rhs.reflect();
116630 #  else
116631       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( latencyModeEnable == rhs.latencyModeEnable );
116632 #  endif
116633     }
116634 
operator !=VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV116635     bool operator!=( SwapchainLatencyCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
116636     {
116637       return !operator==( rhs );
116638     }
116639 #endif
116640 
116641   public:
116642     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eSwapchainLatencyCreateInfoNV;
116643     const void *                        pNext             = {};
116644     VULKAN_HPP_NAMESPACE::Bool32        latencyModeEnable = {};
116645   };
116646 
116647   template <>
116648   struct CppType<StructureType, StructureType::eSwapchainLatencyCreateInfoNV>
116649   {
116650     using Type = SwapchainLatencyCreateInfoNV;
116651   };
116652 
116653   struct SwapchainPresentBarrierCreateInfoNV
116654   {
116655     using NativeType = VkSwapchainPresentBarrierCreateInfoNV;
116656 
116657     static const bool                                  allowDuplicate = false;
116658     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainPresentBarrierCreateInfoNV;
116659 
116660 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainPresentBarrierCreateInfoNVVULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV116661     VULKAN_HPP_CONSTEXPR SwapchainPresentBarrierCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 presentBarrierEnable_ = {},
116662                                                               void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
116663       : pNext{ pNext_ }
116664       , presentBarrierEnable{ presentBarrierEnable_ }
116665     {
116666     }
116667 
116668     VULKAN_HPP_CONSTEXPR SwapchainPresentBarrierCreateInfoNV( SwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116669 
SwapchainPresentBarrierCreateInfoNVVULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV116670     SwapchainPresentBarrierCreateInfoNV( VkSwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
116671       : SwapchainPresentBarrierCreateInfoNV( *reinterpret_cast<SwapchainPresentBarrierCreateInfoNV const *>( &rhs ) )
116672     {
116673     }
116674 
116675     SwapchainPresentBarrierCreateInfoNV & operator=( SwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116676 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116677 
operator =VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV116678     SwapchainPresentBarrierCreateInfoNV & operator=( VkSwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
116679     {
116680       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV const *>( &rhs );
116681       return *this;
116682     }
116683 
116684 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV116685     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentBarrierCreateInfoNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
116686     {
116687       pNext = pNext_;
116688       return *this;
116689     }
116690 
116691     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentBarrierCreateInfoNV &
setPresentBarrierEnableVULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV116692       setPresentBarrierEnable( VULKAN_HPP_NAMESPACE::Bool32 presentBarrierEnable_ ) VULKAN_HPP_NOEXCEPT
116693     {
116694       presentBarrierEnable = presentBarrierEnable_;
116695       return *this;
116696     }
116697 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116698 
operator VkSwapchainPresentBarrierCreateInfoNV const&VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV116699     operator VkSwapchainPresentBarrierCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
116700     {
116701       return *reinterpret_cast<const VkSwapchainPresentBarrierCreateInfoNV *>( this );
116702     }
116703 
operator VkSwapchainPresentBarrierCreateInfoNV&VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV116704     operator VkSwapchainPresentBarrierCreateInfoNV &() VULKAN_HPP_NOEXCEPT
116705     {
116706       return *reinterpret_cast<VkSwapchainPresentBarrierCreateInfoNV *>( this );
116707     }
116708 
116709 #if defined( VULKAN_HPP_USE_REFLECT )
116710 #  if 14 <= VULKAN_HPP_CPP_VERSION
116711     auto
116712 #  else
116713     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
116714 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV116715       reflect() const VULKAN_HPP_NOEXCEPT
116716     {
116717       return std::tie( sType, pNext, presentBarrierEnable );
116718     }
116719 #endif
116720 
116721 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116722     auto operator<=>( SwapchainPresentBarrierCreateInfoNV const & ) const = default;
116723 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV116724     bool operator==( SwapchainPresentBarrierCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
116725     {
116726 #  if defined( VULKAN_HPP_USE_REFLECT )
116727       return this->reflect() == rhs.reflect();
116728 #  else
116729       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentBarrierEnable == rhs.presentBarrierEnable );
116730 #  endif
116731     }
116732 
operator !=VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV116733     bool operator!=( SwapchainPresentBarrierCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
116734     {
116735       return !operator==( rhs );
116736     }
116737 #endif
116738 
116739   public:
116740     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eSwapchainPresentBarrierCreateInfoNV;
116741     void *                              pNext                = {};
116742     VULKAN_HPP_NAMESPACE::Bool32        presentBarrierEnable = {};
116743   };
116744 
116745   template <>
116746   struct CppType<StructureType, StructureType::eSwapchainPresentBarrierCreateInfoNV>
116747   {
116748     using Type = SwapchainPresentBarrierCreateInfoNV;
116749   };
116750 
116751   struct SwapchainPresentFenceInfoEXT
116752   {
116753     using NativeType = VkSwapchainPresentFenceInfoEXT;
116754 
116755     static const bool                                  allowDuplicate = false;
116756     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainPresentFenceInfoEXT;
116757 
116758 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainPresentFenceInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116759     VULKAN_HPP_CONSTEXPR SwapchainPresentFenceInfoEXT( uint32_t                            swapchainCount_ = {},
116760                                                        const VULKAN_HPP_NAMESPACE::Fence * pFences_        = {},
116761                                                        const void *                        pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
116762       : pNext{ pNext_ }
116763       , swapchainCount{ swapchainCount_ }
116764       , pFences{ pFences_ }
116765     {
116766     }
116767 
116768     VULKAN_HPP_CONSTEXPR SwapchainPresentFenceInfoEXT( SwapchainPresentFenceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116769 
SwapchainPresentFenceInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116770     SwapchainPresentFenceInfoEXT( VkSwapchainPresentFenceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
116771       : SwapchainPresentFenceInfoEXT( *reinterpret_cast<SwapchainPresentFenceInfoEXT const *>( &rhs ) )
116772     {
116773     }
116774 
116775 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SwapchainPresentFenceInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116776     SwapchainPresentFenceInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Fence> const & fences_,
116777                                   const void *                                                                             pNext_ = nullptr )
116778       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( fences_.size() ) ), pFences( fences_.data() )
116779     {
116780     }
116781 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
116782 
116783     SwapchainPresentFenceInfoEXT & operator=( SwapchainPresentFenceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116784 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116785 
operator =VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116786     SwapchainPresentFenceInfoEXT & operator=( VkSwapchainPresentFenceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
116787     {
116788       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT const *>( &rhs );
116789       return *this;
116790     }
116791 
116792 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116793     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116794     {
116795       pNext = pNext_;
116796       return *this;
116797     }
116798 
setSwapchainCountVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116799     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoEXT & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
116800     {
116801       swapchainCount = swapchainCount_;
116802       return *this;
116803     }
116804 
setPFencesVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116805     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoEXT & setPFences( const VULKAN_HPP_NAMESPACE::Fence * pFences_ ) VULKAN_HPP_NOEXCEPT
116806     {
116807       pFences = pFences_;
116808       return *this;
116809     }
116810 
116811 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
116812     SwapchainPresentFenceInfoEXT &
setFencesVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116813       setFences( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Fence> const & fences_ ) VULKAN_HPP_NOEXCEPT
116814     {
116815       swapchainCount = static_cast<uint32_t>( fences_.size() );
116816       pFences        = fences_.data();
116817       return *this;
116818     }
116819 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
116820 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116821 
operator VkSwapchainPresentFenceInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116822     operator VkSwapchainPresentFenceInfoEXT const &() const VULKAN_HPP_NOEXCEPT
116823     {
116824       return *reinterpret_cast<const VkSwapchainPresentFenceInfoEXT *>( this );
116825     }
116826 
operator VkSwapchainPresentFenceInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116827     operator VkSwapchainPresentFenceInfoEXT &() VULKAN_HPP_NOEXCEPT
116828     {
116829       return *reinterpret_cast<VkSwapchainPresentFenceInfoEXT *>( this );
116830     }
116831 
116832 #if defined( VULKAN_HPP_USE_REFLECT )
116833 #  if 14 <= VULKAN_HPP_CPP_VERSION
116834     auto
116835 #  else
116836     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Fence * const &>
116837 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116838       reflect() const VULKAN_HPP_NOEXCEPT
116839     {
116840       return std::tie( sType, pNext, swapchainCount, pFences );
116841     }
116842 #endif
116843 
116844 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116845     auto operator<=>( SwapchainPresentFenceInfoEXT const & ) const = default;
116846 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116847     bool operator==( SwapchainPresentFenceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
116848     {
116849 #  if defined( VULKAN_HPP_USE_REFLECT )
116850       return this->reflect() == rhs.reflect();
116851 #  else
116852       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pFences == rhs.pFences );
116853 #  endif
116854     }
116855 
operator !=VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT116856     bool operator!=( SwapchainPresentFenceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
116857     {
116858       return !operator==( rhs );
116859     }
116860 #endif
116861 
116862   public:
116863     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eSwapchainPresentFenceInfoEXT;
116864     const void *                        pNext          = {};
116865     uint32_t                            swapchainCount = {};
116866     const VULKAN_HPP_NAMESPACE::Fence * pFences        = {};
116867   };
116868 
116869   template <>
116870   struct CppType<StructureType, StructureType::eSwapchainPresentFenceInfoEXT>
116871   {
116872     using Type = SwapchainPresentFenceInfoEXT;
116873   };
116874 
116875   struct SwapchainPresentModeInfoEXT
116876   {
116877     using NativeType = VkSwapchainPresentModeInfoEXT;
116878 
116879     static const bool                                  allowDuplicate = false;
116880     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainPresentModeInfoEXT;
116881 
116882 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainPresentModeInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116883     VULKAN_HPP_CONSTEXPR SwapchainPresentModeInfoEXT( uint32_t                                     swapchainCount_ = {},
116884                                                       const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_  = {},
116885                                                       const void *                                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
116886       : pNext{ pNext_ }
116887       , swapchainCount{ swapchainCount_ }
116888       , pPresentModes{ pPresentModes_ }
116889     {
116890     }
116891 
116892     VULKAN_HPP_CONSTEXPR SwapchainPresentModeInfoEXT( SwapchainPresentModeInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116893 
SwapchainPresentModeInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116894     SwapchainPresentModeInfoEXT( VkSwapchainPresentModeInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
116895       : SwapchainPresentModeInfoEXT( *reinterpret_cast<SwapchainPresentModeInfoEXT const *>( &rhs ) )
116896     {
116897     }
116898 
116899 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SwapchainPresentModeInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116900     SwapchainPresentModeInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_,
116901                                  const void *                                                                                      pNext_ = nullptr )
116902       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( presentModes_.size() ) ), pPresentModes( presentModes_.data() )
116903     {
116904     }
116905 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
116906 
116907     SwapchainPresentModeInfoEXT & operator=( SwapchainPresentModeInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116908 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116909 
operator =VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116910     SwapchainPresentModeInfoEXT & operator=( VkSwapchainPresentModeInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
116911     {
116912       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT const *>( &rhs );
116913       return *this;
116914     }
116915 
116916 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116917     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116918     {
116919       pNext = pNext_;
116920       return *this;
116921     }
116922 
setSwapchainCountVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116923     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoEXT & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
116924     {
116925       swapchainCount = swapchainCount_;
116926       return *this;
116927     }
116928 
setPPresentModesVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116929     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoEXT & setPPresentModes( const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_ ) VULKAN_HPP_NOEXCEPT
116930     {
116931       pPresentModes = pPresentModes_;
116932       return *this;
116933     }
116934 
116935 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
116936     SwapchainPresentModeInfoEXT &
setPresentModesVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116937       setPresentModes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_ ) VULKAN_HPP_NOEXCEPT
116938     {
116939       swapchainCount = static_cast<uint32_t>( presentModes_.size() );
116940       pPresentModes  = presentModes_.data();
116941       return *this;
116942     }
116943 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
116944 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116945 
operator VkSwapchainPresentModeInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116946     operator VkSwapchainPresentModeInfoEXT const &() const VULKAN_HPP_NOEXCEPT
116947     {
116948       return *reinterpret_cast<const VkSwapchainPresentModeInfoEXT *>( this );
116949     }
116950 
operator VkSwapchainPresentModeInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116951     operator VkSwapchainPresentModeInfoEXT &() VULKAN_HPP_NOEXCEPT
116952     {
116953       return *reinterpret_cast<VkSwapchainPresentModeInfoEXT *>( this );
116954     }
116955 
116956 #if defined( VULKAN_HPP_USE_REFLECT )
116957 #  if 14 <= VULKAN_HPP_CPP_VERSION
116958     auto
116959 #  else
116960     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PresentModeKHR * const &>
116961 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116962       reflect() const VULKAN_HPP_NOEXCEPT
116963     {
116964       return std::tie( sType, pNext, swapchainCount, pPresentModes );
116965     }
116966 #endif
116967 
116968 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116969     auto operator<=>( SwapchainPresentModeInfoEXT const & ) const = default;
116970 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116971     bool operator==( SwapchainPresentModeInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
116972     {
116973 #  if defined( VULKAN_HPP_USE_REFLECT )
116974       return this->reflect() == rhs.reflect();
116975 #  else
116976       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pPresentModes == rhs.pPresentModes );
116977 #  endif
116978     }
116979 
operator !=VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT116980     bool operator!=( SwapchainPresentModeInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
116981     {
116982       return !operator==( rhs );
116983     }
116984 #endif
116985 
116986   public:
116987     VULKAN_HPP_NAMESPACE::StructureType          sType          = StructureType::eSwapchainPresentModeInfoEXT;
116988     const void *                                 pNext          = {};
116989     uint32_t                                     swapchainCount = {};
116990     const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes  = {};
116991   };
116992 
116993   template <>
116994   struct CppType<StructureType, StructureType::eSwapchainPresentModeInfoEXT>
116995   {
116996     using Type = SwapchainPresentModeInfoEXT;
116997   };
116998 
116999   struct SwapchainPresentModesCreateInfoEXT
117000   {
117001     using NativeType = VkSwapchainPresentModesCreateInfoEXT;
117002 
117003     static const bool                                  allowDuplicate = false;
117004     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainPresentModesCreateInfoEXT;
117005 
117006 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainPresentModesCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117007     VULKAN_HPP_CONSTEXPR SwapchainPresentModesCreateInfoEXT( uint32_t                                     presentModeCount_ = {},
117008                                                              const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_    = {},
117009                                                              const void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
117010       : pNext{ pNext_ }
117011       , presentModeCount{ presentModeCount_ }
117012       , pPresentModes{ pPresentModes_ }
117013     {
117014     }
117015 
117016     VULKAN_HPP_CONSTEXPR SwapchainPresentModesCreateInfoEXT( SwapchainPresentModesCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117017 
SwapchainPresentModesCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117018     SwapchainPresentModesCreateInfoEXT( VkSwapchainPresentModesCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
117019       : SwapchainPresentModesCreateInfoEXT( *reinterpret_cast<SwapchainPresentModesCreateInfoEXT const *>( &rhs ) )
117020     {
117021     }
117022 
117023 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SwapchainPresentModesCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117024     SwapchainPresentModesCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_,
117025                                         const void *                                                                                      pNext_ = nullptr )
117026       : pNext( pNext_ ), presentModeCount( static_cast<uint32_t>( presentModes_.size() ) ), pPresentModes( presentModes_.data() )
117027     {
117028     }
117029 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117030 
117031     SwapchainPresentModesCreateInfoEXT & operator=( SwapchainPresentModesCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117032 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117033 
operator =VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117034     SwapchainPresentModesCreateInfoEXT & operator=( VkSwapchainPresentModesCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
117035     {
117036       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT const *>( &rhs );
117037       return *this;
117038     }
117039 
117040 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117041     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
117042     {
117043       pNext = pNext_;
117044       return *this;
117045     }
117046 
setPresentModeCountVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117047     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoEXT & setPresentModeCount( uint32_t presentModeCount_ ) VULKAN_HPP_NOEXCEPT
117048     {
117049       presentModeCount = presentModeCount_;
117050       return *this;
117051     }
117052 
117053     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoEXT &
setPPresentModesVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117054       setPPresentModes( const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_ ) VULKAN_HPP_NOEXCEPT
117055     {
117056       pPresentModes = pPresentModes_;
117057       return *this;
117058     }
117059 
117060 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
117061     SwapchainPresentModesCreateInfoEXT &
setPresentModesVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117062       setPresentModes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_ ) VULKAN_HPP_NOEXCEPT
117063     {
117064       presentModeCount = static_cast<uint32_t>( presentModes_.size() );
117065       pPresentModes    = presentModes_.data();
117066       return *this;
117067     }
117068 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117069 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117070 
operator VkSwapchainPresentModesCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117071     operator VkSwapchainPresentModesCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
117072     {
117073       return *reinterpret_cast<const VkSwapchainPresentModesCreateInfoEXT *>( this );
117074     }
117075 
operator VkSwapchainPresentModesCreateInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117076     operator VkSwapchainPresentModesCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
117077     {
117078       return *reinterpret_cast<VkSwapchainPresentModesCreateInfoEXT *>( this );
117079     }
117080 
117081 #if defined( VULKAN_HPP_USE_REFLECT )
117082 #  if 14 <= VULKAN_HPP_CPP_VERSION
117083     auto
117084 #  else
117085     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PresentModeKHR * const &>
117086 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117087       reflect() const VULKAN_HPP_NOEXCEPT
117088     {
117089       return std::tie( sType, pNext, presentModeCount, pPresentModes );
117090     }
117091 #endif
117092 
117093 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117094     auto operator<=>( SwapchainPresentModesCreateInfoEXT const & ) const = default;
117095 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117096     bool operator==( SwapchainPresentModesCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
117097     {
117098 #  if defined( VULKAN_HPP_USE_REFLECT )
117099       return this->reflect() == rhs.reflect();
117100 #  else
117101       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentModeCount == rhs.presentModeCount ) && ( pPresentModes == rhs.pPresentModes );
117102 #  endif
117103     }
117104 
operator !=VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT117105     bool operator!=( SwapchainPresentModesCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
117106     {
117107       return !operator==( rhs );
117108     }
117109 #endif
117110 
117111   public:
117112     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eSwapchainPresentModesCreateInfoEXT;
117113     const void *                                 pNext            = {};
117114     uint32_t                                     presentModeCount = {};
117115     const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes    = {};
117116   };
117117 
117118   template <>
117119   struct CppType<StructureType, StructureType::eSwapchainPresentModesCreateInfoEXT>
117120   {
117121     using Type = SwapchainPresentModesCreateInfoEXT;
117122   };
117123 
117124   struct SwapchainPresentScalingCreateInfoEXT
117125   {
117126     using NativeType = VkSwapchainPresentScalingCreateInfoEXT;
117127 
117128     static const bool                                  allowDuplicate = false;
117129     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainPresentScalingCreateInfoEXT;
117130 
117131 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainPresentScalingCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117132     VULKAN_HPP_CONSTEXPR SwapchainPresentScalingCreateInfoEXT( VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT scalingBehavior_ = {},
117133                                                                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityX_ = {},
117134                                                                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityY_ = {},
117135                                                                const void *                                 pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
117136       : pNext{ pNext_ }
117137       , scalingBehavior{ scalingBehavior_ }
117138       , presentGravityX{ presentGravityX_ }
117139       , presentGravityY{ presentGravityY_ }
117140     {
117141     }
117142 
117143     VULKAN_HPP_CONSTEXPR SwapchainPresentScalingCreateInfoEXT( SwapchainPresentScalingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117144 
SwapchainPresentScalingCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117145     SwapchainPresentScalingCreateInfoEXT( VkSwapchainPresentScalingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
117146       : SwapchainPresentScalingCreateInfoEXT( *reinterpret_cast<SwapchainPresentScalingCreateInfoEXT const *>( &rhs ) )
117147     {
117148     }
117149 
117150     SwapchainPresentScalingCreateInfoEXT & operator=( SwapchainPresentScalingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117151 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117152 
operator =VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117153     SwapchainPresentScalingCreateInfoEXT & operator=( VkSwapchainPresentScalingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
117154     {
117155       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT const *>( &rhs );
117156       return *this;
117157     }
117158 
117159 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117160     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
117161     {
117162       pNext = pNext_;
117163       return *this;
117164     }
117165 
117166     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoEXT &
setScalingBehaviorVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117167       setScalingBehavior( VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT scalingBehavior_ ) VULKAN_HPP_NOEXCEPT
117168     {
117169       scalingBehavior = scalingBehavior_;
117170       return *this;
117171     }
117172 
117173     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoEXT &
setPresentGravityXVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117174       setPresentGravityX( VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityX_ ) VULKAN_HPP_NOEXCEPT
117175     {
117176       presentGravityX = presentGravityX_;
117177       return *this;
117178     }
117179 
117180     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoEXT &
setPresentGravityYVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117181       setPresentGravityY( VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityY_ ) VULKAN_HPP_NOEXCEPT
117182     {
117183       presentGravityY = presentGravityY_;
117184       return *this;
117185     }
117186 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117187 
operator VkSwapchainPresentScalingCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117188     operator VkSwapchainPresentScalingCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
117189     {
117190       return *reinterpret_cast<const VkSwapchainPresentScalingCreateInfoEXT *>( this );
117191     }
117192 
operator VkSwapchainPresentScalingCreateInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117193     operator VkSwapchainPresentScalingCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
117194     {
117195       return *reinterpret_cast<VkSwapchainPresentScalingCreateInfoEXT *>( this );
117196     }
117197 
117198 #if defined( VULKAN_HPP_USE_REFLECT )
117199 #  if 14 <= VULKAN_HPP_CPP_VERSION
117200     auto
117201 #  else
117202     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
117203                const void * const &,
117204                VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT const &,
117205                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT const &,
117206                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT const &>
117207 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117208       reflect() const VULKAN_HPP_NOEXCEPT
117209     {
117210       return std::tie( sType, pNext, scalingBehavior, presentGravityX, presentGravityY );
117211     }
117212 #endif
117213 
117214 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117215     auto operator<=>( SwapchainPresentScalingCreateInfoEXT const & ) const = default;
117216 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117217     bool operator==( SwapchainPresentScalingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
117218     {
117219 #  if defined( VULKAN_HPP_USE_REFLECT )
117220       return this->reflect() == rhs.reflect();
117221 #  else
117222       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( scalingBehavior == rhs.scalingBehavior ) && ( presentGravityX == rhs.presentGravityX ) &&
117223              ( presentGravityY == rhs.presentGravityY );
117224 #  endif
117225     }
117226 
operator !=VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT117227     bool operator!=( SwapchainPresentScalingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
117228     {
117229       return !operator==( rhs );
117230     }
117231 #endif
117232 
117233   public:
117234     VULKAN_HPP_NAMESPACE::StructureType          sType           = StructureType::eSwapchainPresentScalingCreateInfoEXT;
117235     const void *                                 pNext           = {};
117236     VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT scalingBehavior = {};
117237     VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityX = {};
117238     VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityY = {};
117239   };
117240 
117241   template <>
117242   struct CppType<StructureType, StructureType::eSwapchainPresentScalingCreateInfoEXT>
117243   {
117244     using Type = SwapchainPresentScalingCreateInfoEXT;
117245   };
117246 
117247   struct TextureLODGatherFormatPropertiesAMD
117248   {
117249     using NativeType = VkTextureLODGatherFormatPropertiesAMD;
117250 
117251     static const bool                                  allowDuplicate = false;
117252     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eTextureLodGatherFormatPropertiesAMD;
117253 
117254 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TextureLODGatherFormatPropertiesAMDVULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD117255     VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( VULKAN_HPP_NAMESPACE::Bool32 supportsTextureGatherLODBiasAMD_ = {},
117256                                                               void *                       pNext_                           = nullptr ) VULKAN_HPP_NOEXCEPT
117257       : pNext{ pNext_ }
117258       , supportsTextureGatherLODBiasAMD{ supportsTextureGatherLODBiasAMD_ }
117259     {
117260     }
117261 
117262     VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117263 
TextureLODGatherFormatPropertiesAMDVULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD117264     TextureLODGatherFormatPropertiesAMD( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
117265       : TextureLODGatherFormatPropertiesAMD( *reinterpret_cast<TextureLODGatherFormatPropertiesAMD const *>( &rhs ) )
117266     {
117267     }
117268 
117269     TextureLODGatherFormatPropertiesAMD & operator=( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117270 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117271 
operator =VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD117272     TextureLODGatherFormatPropertiesAMD & operator=( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
117273     {
117274       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD const *>( &rhs );
117275       return *this;
117276     }
117277 
operator VkTextureLODGatherFormatPropertiesAMD const&VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD117278     operator VkTextureLODGatherFormatPropertiesAMD const &() const VULKAN_HPP_NOEXCEPT
117279     {
117280       return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD *>( this );
117281     }
117282 
operator VkTextureLODGatherFormatPropertiesAMD&VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD117283     operator VkTextureLODGatherFormatPropertiesAMD &() VULKAN_HPP_NOEXCEPT
117284     {
117285       return *reinterpret_cast<VkTextureLODGatherFormatPropertiesAMD *>( this );
117286     }
117287 
117288 #if defined( VULKAN_HPP_USE_REFLECT )
117289 #  if 14 <= VULKAN_HPP_CPP_VERSION
117290     auto
117291 #  else
117292     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
117293 #  endif
reflectVULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD117294       reflect() const VULKAN_HPP_NOEXCEPT
117295     {
117296       return std::tie( sType, pNext, supportsTextureGatherLODBiasAMD );
117297     }
117298 #endif
117299 
117300 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117301     auto operator<=>( TextureLODGatherFormatPropertiesAMD const & ) const = default;
117302 #else
operator ==VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD117303     bool operator==( TextureLODGatherFormatPropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
117304     {
117305 #  if defined( VULKAN_HPP_USE_REFLECT )
117306       return this->reflect() == rhs.reflect();
117307 #  else
117308       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
117309 #  endif
117310     }
117311 
operator !=VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD117312     bool operator!=( TextureLODGatherFormatPropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
117313     {
117314       return !operator==( rhs );
117315     }
117316 #endif
117317 
117318   public:
117319     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::eTextureLodGatherFormatPropertiesAMD;
117320     void *                              pNext                           = {};
117321     VULKAN_HPP_NAMESPACE::Bool32        supportsTextureGatherLODBiasAMD = {};
117322   };
117323 
117324   template <>
117325   struct CppType<StructureType, StructureType::eTextureLodGatherFormatPropertiesAMD>
117326   {
117327     using Type = TextureLODGatherFormatPropertiesAMD;
117328   };
117329 
117330   struct TilePropertiesQCOM
117331   {
117332     using NativeType = VkTilePropertiesQCOM;
117333 
117334     static const bool                                  allowDuplicate = false;
117335     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eTilePropertiesQCOM;
117336 
117337 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TilePropertiesQCOMVULKAN_HPP_NAMESPACE::TilePropertiesQCOM117338     VULKAN_HPP_CONSTEXPR TilePropertiesQCOM( VULKAN_HPP_NAMESPACE::Extent3D tileSize_  = {},
117339                                              VULKAN_HPP_NAMESPACE::Extent2D apronSize_ = {},
117340                                              VULKAN_HPP_NAMESPACE::Offset2D origin_    = {},
117341                                              void *                         pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
117342       : pNext{ pNext_ }
117343       , tileSize{ tileSize_ }
117344       , apronSize{ apronSize_ }
117345       , origin{ origin_ }
117346     {
117347     }
117348 
117349     VULKAN_HPP_CONSTEXPR TilePropertiesQCOM( TilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117350 
TilePropertiesQCOMVULKAN_HPP_NAMESPACE::TilePropertiesQCOM117351     TilePropertiesQCOM( VkTilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT : TilePropertiesQCOM( *reinterpret_cast<TilePropertiesQCOM const *>( &rhs ) ) {}
117352 
117353     TilePropertiesQCOM & operator=( TilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117354 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117355 
operator =VULKAN_HPP_NAMESPACE::TilePropertiesQCOM117356     TilePropertiesQCOM & operator=( VkTilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
117357     {
117358       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TilePropertiesQCOM const *>( &rhs );
117359       return *this;
117360     }
117361 
117362 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::TilePropertiesQCOM117363     VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
117364     {
117365       pNext = pNext_;
117366       return *this;
117367     }
117368 
setTileSizeVULKAN_HPP_NAMESPACE::TilePropertiesQCOM117369     VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setTileSize( VULKAN_HPP_NAMESPACE::Extent3D const & tileSize_ ) VULKAN_HPP_NOEXCEPT
117370     {
117371       tileSize = tileSize_;
117372       return *this;
117373     }
117374 
setApronSizeVULKAN_HPP_NAMESPACE::TilePropertiesQCOM117375     VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setApronSize( VULKAN_HPP_NAMESPACE::Extent2D const & apronSize_ ) VULKAN_HPP_NOEXCEPT
117376     {
117377       apronSize = apronSize_;
117378       return *this;
117379     }
117380 
setOriginVULKAN_HPP_NAMESPACE::TilePropertiesQCOM117381     VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setOrigin( VULKAN_HPP_NAMESPACE::Offset2D const & origin_ ) VULKAN_HPP_NOEXCEPT
117382     {
117383       origin = origin_;
117384       return *this;
117385     }
117386 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117387 
operator VkTilePropertiesQCOM const&VULKAN_HPP_NAMESPACE::TilePropertiesQCOM117388     operator VkTilePropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT
117389     {
117390       return *reinterpret_cast<const VkTilePropertiesQCOM *>( this );
117391     }
117392 
operator VkTilePropertiesQCOM&VULKAN_HPP_NAMESPACE::TilePropertiesQCOM117393     operator VkTilePropertiesQCOM &() VULKAN_HPP_NOEXCEPT
117394     {
117395       return *reinterpret_cast<VkTilePropertiesQCOM *>( this );
117396     }
117397 
117398 #if defined( VULKAN_HPP_USE_REFLECT )
117399 #  if 14 <= VULKAN_HPP_CPP_VERSION
117400     auto
117401 #  else
117402     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
117403                void * const &,
117404                VULKAN_HPP_NAMESPACE::Extent3D const &,
117405                VULKAN_HPP_NAMESPACE::Extent2D const &,
117406                VULKAN_HPP_NAMESPACE::Offset2D const &>
117407 #  endif
reflectVULKAN_HPP_NAMESPACE::TilePropertiesQCOM117408       reflect() const VULKAN_HPP_NOEXCEPT
117409     {
117410       return std::tie( sType, pNext, tileSize, apronSize, origin );
117411     }
117412 #endif
117413 
117414 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117415     auto operator<=>( TilePropertiesQCOM const & ) const = default;
117416 #else
operator ==VULKAN_HPP_NAMESPACE::TilePropertiesQCOM117417     bool operator==( TilePropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
117418     {
117419 #  if defined( VULKAN_HPP_USE_REFLECT )
117420       return this->reflect() == rhs.reflect();
117421 #  else
117422       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tileSize == rhs.tileSize ) && ( apronSize == rhs.apronSize ) && ( origin == rhs.origin );
117423 #  endif
117424     }
117425 
operator !=VULKAN_HPP_NAMESPACE::TilePropertiesQCOM117426     bool operator!=( TilePropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
117427     {
117428       return !operator==( rhs );
117429     }
117430 #endif
117431 
117432   public:
117433     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eTilePropertiesQCOM;
117434     void *                              pNext     = {};
117435     VULKAN_HPP_NAMESPACE::Extent3D      tileSize  = {};
117436     VULKAN_HPP_NAMESPACE::Extent2D      apronSize = {};
117437     VULKAN_HPP_NAMESPACE::Offset2D      origin    = {};
117438   };
117439 
117440   template <>
117441   struct CppType<StructureType, StructureType::eTilePropertiesQCOM>
117442   {
117443     using Type = TilePropertiesQCOM;
117444   };
117445 
117446   struct TimelineSemaphoreSubmitInfo
117447   {
117448     using NativeType = VkTimelineSemaphoreSubmitInfo;
117449 
117450     static const bool                                  allowDuplicate = false;
117451     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eTimelineSemaphoreSubmitInfo;
117452 
117453 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117454     VULKAN_HPP_CONSTEXPR TimelineSemaphoreSubmitInfo( uint32_t         waitSemaphoreValueCount_   = {},
117455                                                       const uint64_t * pWaitSemaphoreValues_      = {},
117456                                                       uint32_t         signalSemaphoreValueCount_ = {},
117457                                                       const uint64_t * pSignalSemaphoreValues_    = {},
117458                                                       const void *     pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
117459       : pNext{ pNext_ }
117460       , waitSemaphoreValueCount{ waitSemaphoreValueCount_ }
117461       , pWaitSemaphoreValues{ pWaitSemaphoreValues_ }
117462       , signalSemaphoreValueCount{ signalSemaphoreValueCount_ }
117463       , pSignalSemaphoreValues{ pSignalSemaphoreValues_ }
117464     {
117465     }
117466 
117467     VULKAN_HPP_CONSTEXPR TimelineSemaphoreSubmitInfo( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117468 
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117469     TimelineSemaphoreSubmitInfo( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
117470       : TimelineSemaphoreSubmitInfo( *reinterpret_cast<TimelineSemaphoreSubmitInfo const *>( &rhs ) )
117471     {
117472     }
117473 
117474 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117475     TimelineSemaphoreSubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_,
117476                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ = {},
117477                                  const void *                                                          pNext_                 = nullptr )
117478       : pNext( pNext_ )
117479       , waitSemaphoreValueCount( static_cast<uint32_t>( waitSemaphoreValues_.size() ) )
117480       , pWaitSemaphoreValues( waitSemaphoreValues_.data() )
117481       , signalSemaphoreValueCount( static_cast<uint32_t>( signalSemaphoreValues_.size() ) )
117482       , pSignalSemaphoreValues( signalSemaphoreValues_.data() )
117483     {
117484     }
117485 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117486 
117487     TimelineSemaphoreSubmitInfo & operator=( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117488 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117489 
operator =VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117490     TimelineSemaphoreSubmitInfo & operator=( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
117491     {
117492       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo const *>( &rhs );
117493       return *this;
117494     }
117495 
117496 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117497     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
117498     {
117499       pNext = pNext_;
117500       return *this;
117501     }
117502 
setWaitSemaphoreValueCountVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117503     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setWaitSemaphoreValueCount( uint32_t waitSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT
117504     {
117505       waitSemaphoreValueCount = waitSemaphoreValueCount_;
117506       return *this;
117507     }
117508 
setPWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117509     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPWaitSemaphoreValues( const uint64_t * pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
117510     {
117511       pWaitSemaphoreValues = pWaitSemaphoreValues_;
117512       return *this;
117513     }
117514 
117515 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
117516     TimelineSemaphoreSubmitInfo &
setWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117517       setWaitSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
117518     {
117519       waitSemaphoreValueCount = static_cast<uint32_t>( waitSemaphoreValues_.size() );
117520       pWaitSemaphoreValues    = waitSemaphoreValues_.data();
117521       return *this;
117522     }
117523 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117524 
setSignalSemaphoreValueCountVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117525     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setSignalSemaphoreValueCount( uint32_t signalSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT
117526     {
117527       signalSemaphoreValueCount = signalSemaphoreValueCount_;
117528       return *this;
117529     }
117530 
setPSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117531     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPSignalSemaphoreValues( const uint64_t * pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
117532     {
117533       pSignalSemaphoreValues = pSignalSemaphoreValues_;
117534       return *this;
117535     }
117536 
117537 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
117538     TimelineSemaphoreSubmitInfo &
setSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117539       setSignalSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
117540     {
117541       signalSemaphoreValueCount = static_cast<uint32_t>( signalSemaphoreValues_.size() );
117542       pSignalSemaphoreValues    = signalSemaphoreValues_.data();
117543       return *this;
117544     }
117545 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117546 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117547 
operator VkTimelineSemaphoreSubmitInfo const&VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117548     operator VkTimelineSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
117549     {
117550       return *reinterpret_cast<const VkTimelineSemaphoreSubmitInfo *>( this );
117551     }
117552 
operator VkTimelineSemaphoreSubmitInfo&VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117553     operator VkTimelineSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT
117554     {
117555       return *reinterpret_cast<VkTimelineSemaphoreSubmitInfo *>( this );
117556     }
117557 
117558 #if defined( VULKAN_HPP_USE_REFLECT )
117559 #  if 14 <= VULKAN_HPP_CPP_VERSION
117560     auto
117561 #  else
117562     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
117563                const void * const &,
117564                uint32_t const &,
117565                const uint64_t * const &,
117566                uint32_t const &,
117567                const uint64_t * const &>
117568 #  endif
reflectVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117569       reflect() const VULKAN_HPP_NOEXCEPT
117570     {
117571       return std::tie( sType, pNext, waitSemaphoreValueCount, pWaitSemaphoreValues, signalSemaphoreValueCount, pSignalSemaphoreValues );
117572     }
117573 #endif
117574 
117575 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117576     auto operator<=>( TimelineSemaphoreSubmitInfo const & ) const = default;
117577 #else
operator ==VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117578     bool operator==( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
117579     {
117580 #  if defined( VULKAN_HPP_USE_REFLECT )
117581       return this->reflect() == rhs.reflect();
117582 #  else
117583       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreValueCount == rhs.waitSemaphoreValueCount ) &&
117584              ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) && ( signalSemaphoreValueCount == rhs.signalSemaphoreValueCount ) &&
117585              ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
117586 #  endif
117587     }
117588 
operator !=VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo117589     bool operator!=( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
117590     {
117591       return !operator==( rhs );
117592     }
117593 #endif
117594 
117595   public:
117596     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eTimelineSemaphoreSubmitInfo;
117597     const void *                        pNext                     = {};
117598     uint32_t                            waitSemaphoreValueCount   = {};
117599     const uint64_t *                    pWaitSemaphoreValues      = {};
117600     uint32_t                            signalSemaphoreValueCount = {};
117601     const uint64_t *                    pSignalSemaphoreValues    = {};
117602   };
117603 
117604   template <>
117605   struct CppType<StructureType, StructureType::eTimelineSemaphoreSubmitInfo>
117606   {
117607     using Type = TimelineSemaphoreSubmitInfo;
117608   };
117609 
117610   using TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
117611 
117612   struct TraceRaysIndirectCommand2KHR
117613   {
117614     using NativeType = VkTraceRaysIndirectCommand2KHR;
117615 
117616 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TraceRaysIndirectCommand2KHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117617     VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommand2KHR( VULKAN_HPP_NAMESPACE::DeviceAddress raygenShaderRecordAddress_         = {},
117618                                                        VULKAN_HPP_NAMESPACE::DeviceSize    raygenShaderRecordSize_            = {},
117619                                                        VULKAN_HPP_NAMESPACE::DeviceAddress missShaderBindingTableAddress_     = {},
117620                                                        VULKAN_HPP_NAMESPACE::DeviceSize    missShaderBindingTableSize_        = {},
117621                                                        VULKAN_HPP_NAMESPACE::DeviceSize    missShaderBindingTableStride_      = {},
117622                                                        VULKAN_HPP_NAMESPACE::DeviceAddress hitShaderBindingTableAddress_      = {},
117623                                                        VULKAN_HPP_NAMESPACE::DeviceSize    hitShaderBindingTableSize_         = {},
117624                                                        VULKAN_HPP_NAMESPACE::DeviceSize    hitShaderBindingTableStride_       = {},
117625                                                        VULKAN_HPP_NAMESPACE::DeviceAddress callableShaderBindingTableAddress_ = {},
117626                                                        VULKAN_HPP_NAMESPACE::DeviceSize    callableShaderBindingTableSize_    = {},
117627                                                        VULKAN_HPP_NAMESPACE::DeviceSize    callableShaderBindingTableStride_  = {},
117628                                                        uint32_t                            width_                             = {},
117629                                                        uint32_t                            height_                            = {},
117630                                                        uint32_t                            depth_                             = {} ) VULKAN_HPP_NOEXCEPT
117631       : raygenShaderRecordAddress{ raygenShaderRecordAddress_ }
117632       , raygenShaderRecordSize{ raygenShaderRecordSize_ }
117633       , missShaderBindingTableAddress{ missShaderBindingTableAddress_ }
117634       , missShaderBindingTableSize{ missShaderBindingTableSize_ }
117635       , missShaderBindingTableStride{ missShaderBindingTableStride_ }
117636       , hitShaderBindingTableAddress{ hitShaderBindingTableAddress_ }
117637       , hitShaderBindingTableSize{ hitShaderBindingTableSize_ }
117638       , hitShaderBindingTableStride{ hitShaderBindingTableStride_ }
117639       , callableShaderBindingTableAddress{ callableShaderBindingTableAddress_ }
117640       , callableShaderBindingTableSize{ callableShaderBindingTableSize_ }
117641       , callableShaderBindingTableStride{ callableShaderBindingTableStride_ }
117642       , width{ width_ }
117643       , height{ height_ }
117644       , depth{ depth_ }
117645     {
117646     }
117647 
117648     VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommand2KHR( TraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117649 
TraceRaysIndirectCommand2KHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117650     TraceRaysIndirectCommand2KHR( VkTraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
117651       : TraceRaysIndirectCommand2KHR( *reinterpret_cast<TraceRaysIndirectCommand2KHR const *>( &rhs ) )
117652     {
117653     }
117654 
117655     TraceRaysIndirectCommand2KHR & operator=( TraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117656 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117657 
operator =VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117658     TraceRaysIndirectCommand2KHR & operator=( VkTraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
117659     {
117660       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR const *>( &rhs );
117661       return *this;
117662     }
117663 
117664 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
117665     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setRaygenShaderRecordAddressVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117666       setRaygenShaderRecordAddress( VULKAN_HPP_NAMESPACE::DeviceAddress raygenShaderRecordAddress_ ) VULKAN_HPP_NOEXCEPT
117667     {
117668       raygenShaderRecordAddress = raygenShaderRecordAddress_;
117669       return *this;
117670     }
117671 
117672     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setRaygenShaderRecordSizeVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117673       setRaygenShaderRecordSize( VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderRecordSize_ ) VULKAN_HPP_NOEXCEPT
117674     {
117675       raygenShaderRecordSize = raygenShaderRecordSize_;
117676       return *this;
117677     }
117678 
117679     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setMissShaderBindingTableAddressVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117680       setMissShaderBindingTableAddress( VULKAN_HPP_NAMESPACE::DeviceAddress missShaderBindingTableAddress_ ) VULKAN_HPP_NOEXCEPT
117681     {
117682       missShaderBindingTableAddress = missShaderBindingTableAddress_;
117683       return *this;
117684     }
117685 
117686     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setMissShaderBindingTableSizeVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117687       setMissShaderBindingTableSize( VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingTableSize_ ) VULKAN_HPP_NOEXCEPT
117688     {
117689       missShaderBindingTableSize = missShaderBindingTableSize_;
117690       return *this;
117691     }
117692 
117693     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setMissShaderBindingTableStrideVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117694       setMissShaderBindingTableStride( VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingTableStride_ ) VULKAN_HPP_NOEXCEPT
117695     {
117696       missShaderBindingTableStride = missShaderBindingTableStride_;
117697       return *this;
117698     }
117699 
117700     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setHitShaderBindingTableAddressVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117701       setHitShaderBindingTableAddress( VULKAN_HPP_NAMESPACE::DeviceAddress hitShaderBindingTableAddress_ ) VULKAN_HPP_NOEXCEPT
117702     {
117703       hitShaderBindingTableAddress = hitShaderBindingTableAddress_;
117704       return *this;
117705     }
117706 
117707     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setHitShaderBindingTableSizeVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117708       setHitShaderBindingTableSize( VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingTableSize_ ) VULKAN_HPP_NOEXCEPT
117709     {
117710       hitShaderBindingTableSize = hitShaderBindingTableSize_;
117711       return *this;
117712     }
117713 
117714     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setHitShaderBindingTableStrideVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117715       setHitShaderBindingTableStride( VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingTableStride_ ) VULKAN_HPP_NOEXCEPT
117716     {
117717       hitShaderBindingTableStride = hitShaderBindingTableStride_;
117718       return *this;
117719     }
117720 
117721     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setCallableShaderBindingTableAddressVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117722       setCallableShaderBindingTableAddress( VULKAN_HPP_NAMESPACE::DeviceAddress callableShaderBindingTableAddress_ ) VULKAN_HPP_NOEXCEPT
117723     {
117724       callableShaderBindingTableAddress = callableShaderBindingTableAddress_;
117725       return *this;
117726     }
117727 
117728     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setCallableShaderBindingTableSizeVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117729       setCallableShaderBindingTableSize( VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingTableSize_ ) VULKAN_HPP_NOEXCEPT
117730     {
117731       callableShaderBindingTableSize = callableShaderBindingTableSize_;
117732       return *this;
117733     }
117734 
117735     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setCallableShaderBindingTableStrideVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117736       setCallableShaderBindingTableStride( VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingTableStride_ ) VULKAN_HPP_NOEXCEPT
117737     {
117738       callableShaderBindingTableStride = callableShaderBindingTableStride_;
117739       return *this;
117740     }
117741 
setWidthVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117742     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
117743     {
117744       width = width_;
117745       return *this;
117746     }
117747 
setHeightVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117748     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
117749     {
117750       height = height_;
117751       return *this;
117752     }
117753 
setDepthVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117754     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT
117755     {
117756       depth = depth_;
117757       return *this;
117758     }
117759 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117760 
operator VkTraceRaysIndirectCommand2KHR const&VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117761     operator VkTraceRaysIndirectCommand2KHR const &() const VULKAN_HPP_NOEXCEPT
117762     {
117763       return *reinterpret_cast<const VkTraceRaysIndirectCommand2KHR *>( this );
117764     }
117765 
operator VkTraceRaysIndirectCommand2KHR&VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117766     operator VkTraceRaysIndirectCommand2KHR &() VULKAN_HPP_NOEXCEPT
117767     {
117768       return *reinterpret_cast<VkTraceRaysIndirectCommand2KHR *>( this );
117769     }
117770 
117771 #if defined( VULKAN_HPP_USE_REFLECT )
117772 #  if 14 <= VULKAN_HPP_CPP_VERSION
117773     auto
117774 #  else
117775     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &,
117776                VULKAN_HPP_NAMESPACE::DeviceSize const &,
117777                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
117778                VULKAN_HPP_NAMESPACE::DeviceSize const &,
117779                VULKAN_HPP_NAMESPACE::DeviceSize const &,
117780                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
117781                VULKAN_HPP_NAMESPACE::DeviceSize const &,
117782                VULKAN_HPP_NAMESPACE::DeviceSize const &,
117783                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
117784                VULKAN_HPP_NAMESPACE::DeviceSize const &,
117785                VULKAN_HPP_NAMESPACE::DeviceSize const &,
117786                uint32_t const &,
117787                uint32_t const &,
117788                uint32_t const &>
117789 #  endif
reflectVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117790       reflect() const VULKAN_HPP_NOEXCEPT
117791     {
117792       return std::tie( raygenShaderRecordAddress,
117793                        raygenShaderRecordSize,
117794                        missShaderBindingTableAddress,
117795                        missShaderBindingTableSize,
117796                        missShaderBindingTableStride,
117797                        hitShaderBindingTableAddress,
117798                        hitShaderBindingTableSize,
117799                        hitShaderBindingTableStride,
117800                        callableShaderBindingTableAddress,
117801                        callableShaderBindingTableSize,
117802                        callableShaderBindingTableStride,
117803                        width,
117804                        height,
117805                        depth );
117806     }
117807 #endif
117808 
117809 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117810     auto operator<=>( TraceRaysIndirectCommand2KHR const & ) const = default;
117811 #else
operator ==VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117812     bool operator==( TraceRaysIndirectCommand2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117813     {
117814 #  if defined( VULKAN_HPP_USE_REFLECT )
117815       return this->reflect() == rhs.reflect();
117816 #  else
117817       return ( raygenShaderRecordAddress == rhs.raygenShaderRecordAddress ) && ( raygenShaderRecordSize == rhs.raygenShaderRecordSize ) &&
117818              ( missShaderBindingTableAddress == rhs.missShaderBindingTableAddress ) && ( missShaderBindingTableSize == rhs.missShaderBindingTableSize ) &&
117819              ( missShaderBindingTableStride == rhs.missShaderBindingTableStride ) && ( hitShaderBindingTableAddress == rhs.hitShaderBindingTableAddress ) &&
117820              ( hitShaderBindingTableSize == rhs.hitShaderBindingTableSize ) && ( hitShaderBindingTableStride == rhs.hitShaderBindingTableStride ) &&
117821              ( callableShaderBindingTableAddress == rhs.callableShaderBindingTableAddress ) &&
117822              ( callableShaderBindingTableSize == rhs.callableShaderBindingTableSize ) &&
117823              ( callableShaderBindingTableStride == rhs.callableShaderBindingTableStride ) && ( width == rhs.width ) && ( height == rhs.height ) &&
117824              ( depth == rhs.depth );
117825 #  endif
117826     }
117827 
operator !=VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR117828     bool operator!=( TraceRaysIndirectCommand2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117829     {
117830       return !operator==( rhs );
117831     }
117832 #endif
117833 
117834   public:
117835     VULKAN_HPP_NAMESPACE::DeviceAddress raygenShaderRecordAddress         = {};
117836     VULKAN_HPP_NAMESPACE::DeviceSize    raygenShaderRecordSize            = {};
117837     VULKAN_HPP_NAMESPACE::DeviceAddress missShaderBindingTableAddress     = {};
117838     VULKAN_HPP_NAMESPACE::DeviceSize    missShaderBindingTableSize        = {};
117839     VULKAN_HPP_NAMESPACE::DeviceSize    missShaderBindingTableStride      = {};
117840     VULKAN_HPP_NAMESPACE::DeviceAddress hitShaderBindingTableAddress      = {};
117841     VULKAN_HPP_NAMESPACE::DeviceSize    hitShaderBindingTableSize         = {};
117842     VULKAN_HPP_NAMESPACE::DeviceSize    hitShaderBindingTableStride       = {};
117843     VULKAN_HPP_NAMESPACE::DeviceAddress callableShaderBindingTableAddress = {};
117844     VULKAN_HPP_NAMESPACE::DeviceSize    callableShaderBindingTableSize    = {};
117845     VULKAN_HPP_NAMESPACE::DeviceSize    callableShaderBindingTableStride  = {};
117846     uint32_t                            width                             = {};
117847     uint32_t                            height                            = {};
117848     uint32_t                            depth                             = {};
117849   };
117850 
117851   struct TraceRaysIndirectCommandKHR
117852   {
117853     using NativeType = VkTraceRaysIndirectCommandKHR;
117854 
117855 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TraceRaysIndirectCommandKHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117856     VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommandKHR( uint32_t width_ = {}, uint32_t height_ = {}, uint32_t depth_ = {} ) VULKAN_HPP_NOEXCEPT
117857       : width{ width_ }
117858       , height{ height_ }
117859       , depth{ depth_ }
117860     {
117861     }
117862 
117863     VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommandKHR( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117864 
TraceRaysIndirectCommandKHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117865     TraceRaysIndirectCommandKHR( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117866       : TraceRaysIndirectCommandKHR( *reinterpret_cast<TraceRaysIndirectCommandKHR const *>( &rhs ) )
117867     {
117868     }
117869 
TraceRaysIndirectCommandKHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117870     explicit TraceRaysIndirectCommandKHR( Extent2D const & extent2D, uint32_t depth_ = {} )
117871       : width( extent2D.width ), height( extent2D.height ), depth( depth_ )
117872     {
117873     }
117874 
117875     TraceRaysIndirectCommandKHR & operator=( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117876 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117877 
operator =VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117878     TraceRaysIndirectCommandKHR & operator=( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117879     {
117880       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR const *>( &rhs );
117881       return *this;
117882     }
117883 
117884 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117885     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
117886     {
117887       width = width_;
117888       return *this;
117889     }
117890 
setHeightVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117891     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
117892     {
117893       height = height_;
117894       return *this;
117895     }
117896 
setDepthVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117897     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT
117898     {
117899       depth = depth_;
117900       return *this;
117901     }
117902 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117903 
operator VkTraceRaysIndirectCommandKHR const&VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117904     operator VkTraceRaysIndirectCommandKHR const &() const VULKAN_HPP_NOEXCEPT
117905     {
117906       return *reinterpret_cast<const VkTraceRaysIndirectCommandKHR *>( this );
117907     }
117908 
operator VkTraceRaysIndirectCommandKHR&VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117909     operator VkTraceRaysIndirectCommandKHR &() VULKAN_HPP_NOEXCEPT
117910     {
117911       return *reinterpret_cast<VkTraceRaysIndirectCommandKHR *>( this );
117912     }
117913 
117914 #if defined( VULKAN_HPP_USE_REFLECT )
117915 #  if 14 <= VULKAN_HPP_CPP_VERSION
117916     auto
117917 #  else
117918     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
117919 #  endif
reflectVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117920       reflect() const VULKAN_HPP_NOEXCEPT
117921     {
117922       return std::tie( width, height, depth );
117923     }
117924 #endif
117925 
117926 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117927     auto operator<=>( TraceRaysIndirectCommandKHR const & ) const = default;
117928 #else
operator ==VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117929     bool operator==( TraceRaysIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117930     {
117931 #  if defined( VULKAN_HPP_USE_REFLECT )
117932       return this->reflect() == rhs.reflect();
117933 #  else
117934       return ( width == rhs.width ) && ( height == rhs.height ) && ( depth == rhs.depth );
117935 #  endif
117936     }
117937 
operator !=VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR117938     bool operator!=( TraceRaysIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117939     {
117940       return !operator==( rhs );
117941     }
117942 #endif
117943 
117944   public:
117945     uint32_t width  = {};
117946     uint32_t height = {};
117947     uint32_t depth  = {};
117948   };
117949 
117950   struct ValidationCacheCreateInfoEXT
117951   {
117952     using NativeType = VkValidationCacheCreateInfoEXT;
117953 
117954     static const bool                                  allowDuplicate = false;
117955     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eValidationCacheCreateInfoEXT;
117956 
117957 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT117958     VULKAN_HPP_CONSTEXPR ValidationCacheCreateInfoEXT( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_           = {},
117959                                                        size_t                                              initialDataSize_ = {},
117960                                                        const void *                                        pInitialData_    = {},
117961                                                        const void *                                        pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
117962       : pNext{ pNext_ }
117963       , flags{ flags_ }
117964       , initialDataSize{ initialDataSize_ }
117965       , pInitialData{ pInitialData_ }
117966     {
117967     }
117968 
117969     VULKAN_HPP_CONSTEXPR ValidationCacheCreateInfoEXT( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117970 
ValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT117971     ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
117972       : ValidationCacheCreateInfoEXT( *reinterpret_cast<ValidationCacheCreateInfoEXT const *>( &rhs ) )
117973     {
117974     }
117975 
117976 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
117977     template <typename T>
ValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT117978     ValidationCacheCreateInfoEXT( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT            flags_,
117979                                   VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_,
117980                                   const void *                                                   pNext_ = nullptr )
117981       : pNext( pNext_ ), flags( flags_ ), initialDataSize( initialData_.size() * sizeof( T ) ), pInitialData( initialData_.data() )
117982     {
117983     }
117984 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117985 
117986     ValidationCacheCreateInfoEXT & operator=( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117987 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117988 
operator =VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT117989     ValidationCacheCreateInfoEXT & operator=( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
117990     {
117991       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const *>( &rhs );
117992       return *this;
117993     }
117994 
117995 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT117996     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
117997     {
117998       pNext = pNext_;
117999       return *this;
118000     }
118001 
setFlagsVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT118002     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
118003     {
118004       flags = flags_;
118005       return *this;
118006     }
118007 
setInitialDataSizeVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT118008     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT
118009     {
118010       initialDataSize = initialDataSize_;
118011       return *this;
118012     }
118013 
setPInitialDataVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT118014     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setPInitialData( const void * pInitialData_ ) VULKAN_HPP_NOEXCEPT
118015     {
118016       pInitialData = pInitialData_;
118017       return *this;
118018     }
118019 
118020 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
118021     template <typename T>
setInitialDataVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT118022     ValidationCacheCreateInfoEXT & setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_ ) VULKAN_HPP_NOEXCEPT
118023     {
118024       initialDataSize = initialData_.size() * sizeof( T );
118025       pInitialData    = initialData_.data();
118026       return *this;
118027     }
118028 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118029 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118030 
operator VkValidationCacheCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT118031     operator VkValidationCacheCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
118032     {
118033       return *reinterpret_cast<const VkValidationCacheCreateInfoEXT *>( this );
118034     }
118035 
operator VkValidationCacheCreateInfoEXT&VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT118036     operator VkValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
118037     {
118038       return *reinterpret_cast<VkValidationCacheCreateInfoEXT *>( this );
118039     }
118040 
118041 #if defined( VULKAN_HPP_USE_REFLECT )
118042 #  if 14 <= VULKAN_HPP_CPP_VERSION
118043     auto
118044 #  else
118045     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
118046                const void * const &,
118047                VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT const &,
118048                size_t const &,
118049                const void * const &>
118050 #  endif
reflectVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT118051       reflect() const VULKAN_HPP_NOEXCEPT
118052     {
118053       return std::tie( sType, pNext, flags, initialDataSize, pInitialData );
118054     }
118055 #endif
118056 
118057 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118058     auto operator<=>( ValidationCacheCreateInfoEXT const & ) const = default;
118059 #else
operator ==VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT118060     bool operator==( ValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
118061     {
118062 #  if defined( VULKAN_HPP_USE_REFLECT )
118063       return this->reflect() == rhs.reflect();
118064 #  else
118065       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( initialDataSize == rhs.initialDataSize ) &&
118066              ( pInitialData == rhs.pInitialData );
118067 #  endif
118068     }
118069 
operator !=VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT118070     bool operator!=( ValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
118071     {
118072       return !operator==( rhs );
118073     }
118074 #endif
118075 
118076   public:
118077     VULKAN_HPP_NAMESPACE::StructureType                 sType           = StructureType::eValidationCacheCreateInfoEXT;
118078     const void *                                        pNext           = {};
118079     VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags           = {};
118080     size_t                                              initialDataSize = {};
118081     const void *                                        pInitialData    = {};
118082   };
118083 
118084   template <>
118085   struct CppType<StructureType, StructureType::eValidationCacheCreateInfoEXT>
118086   {
118087     using Type = ValidationCacheCreateInfoEXT;
118088   };
118089 
118090   struct ValidationFeaturesEXT
118091   {
118092     using NativeType = VkValidationFeaturesEXT;
118093 
118094     static const bool                                  allowDuplicate = false;
118095     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eValidationFeaturesEXT;
118096 
118097 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118098     VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( uint32_t                                                  enabledValidationFeatureCount_  = {},
118099                                                 const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT *  pEnabledValidationFeatures_     = {},
118100                                                 uint32_t                                                  disabledValidationFeatureCount_ = {},
118101                                                 const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures_    = {},
118102                                                 const void *                                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
118103       : pNext{ pNext_ }
118104       , enabledValidationFeatureCount{ enabledValidationFeatureCount_ }
118105       , pEnabledValidationFeatures{ pEnabledValidationFeatures_ }
118106       , disabledValidationFeatureCount{ disabledValidationFeatureCount_ }
118107       , pDisabledValidationFeatures{ pDisabledValidationFeatures_ }
118108     {
118109     }
118110 
118111     VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118112 
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118113     ValidationFeaturesEXT( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
118114       : ValidationFeaturesEXT( *reinterpret_cast<ValidationFeaturesEXT const *>( &rhs ) )
118115     {
118116     }
118117 
118118 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118119     ValidationFeaturesEXT(
118120       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT> const &  enabledValidationFeatures_,
118121       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT> const & disabledValidationFeatures_ = {},
118122       const void *                                                                                                   pNext_                      = nullptr )
118123       : pNext( pNext_ )
118124       , enabledValidationFeatureCount( static_cast<uint32_t>( enabledValidationFeatures_.size() ) )
118125       , pEnabledValidationFeatures( enabledValidationFeatures_.data() )
118126       , disabledValidationFeatureCount( static_cast<uint32_t>( disabledValidationFeatures_.size() ) )
118127       , pDisabledValidationFeatures( disabledValidationFeatures_.data() )
118128     {
118129     }
118130 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118131 
118132     ValidationFeaturesEXT & operator=( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118133 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118134 
operator =VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118135     ValidationFeaturesEXT & operator=( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
118136     {
118137       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT const *>( &rhs );
118138       return *this;
118139     }
118140 
118141 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118142     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118143     {
118144       pNext = pNext_;
118145       return *this;
118146     }
118147 
setEnabledValidationFeatureCountVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118148     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setEnabledValidationFeatureCount( uint32_t enabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT
118149     {
118150       enabledValidationFeatureCount = enabledValidationFeatureCount_;
118151       return *this;
118152     }
118153 
118154     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT &
setPEnabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118155       setPEnabledValidationFeatures( const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * pEnabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
118156     {
118157       pEnabledValidationFeatures = pEnabledValidationFeatures_;
118158       return *this;
118159     }
118160 
118161 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setEnabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118162     ValidationFeaturesEXT & setEnabledValidationFeatures(
118163       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT> const & enabledValidationFeatures_ )
118164       VULKAN_HPP_NOEXCEPT
118165     {
118166       enabledValidationFeatureCount = static_cast<uint32_t>( enabledValidationFeatures_.size() );
118167       pEnabledValidationFeatures    = enabledValidationFeatures_.data();
118168       return *this;
118169     }
118170 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118171 
setDisabledValidationFeatureCountVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118172     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setDisabledValidationFeatureCount( uint32_t disabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT
118173     {
118174       disabledValidationFeatureCount = disabledValidationFeatureCount_;
118175       return *this;
118176     }
118177 
118178     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT &
setPDisabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118179       setPDisabledValidationFeatures( const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
118180     {
118181       pDisabledValidationFeatures = pDisabledValidationFeatures_;
118182       return *this;
118183     }
118184 
118185 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDisabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118186     ValidationFeaturesEXT & setDisabledValidationFeatures(
118187       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT> const & disabledValidationFeatures_ )
118188       VULKAN_HPP_NOEXCEPT
118189     {
118190       disabledValidationFeatureCount = static_cast<uint32_t>( disabledValidationFeatures_.size() );
118191       pDisabledValidationFeatures    = disabledValidationFeatures_.data();
118192       return *this;
118193     }
118194 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118195 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118196 
operator VkValidationFeaturesEXT const&VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118197     operator VkValidationFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
118198     {
118199       return *reinterpret_cast<const VkValidationFeaturesEXT *>( this );
118200     }
118201 
operator VkValidationFeaturesEXT&VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118202     operator VkValidationFeaturesEXT &() VULKAN_HPP_NOEXCEPT
118203     {
118204       return *reinterpret_cast<VkValidationFeaturesEXT *>( this );
118205     }
118206 
118207 #if defined( VULKAN_HPP_USE_REFLECT )
118208 #  if 14 <= VULKAN_HPP_CPP_VERSION
118209     auto
118210 #  else
118211     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
118212                const void * const &,
118213                uint32_t const &,
118214                const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * const &,
118215                uint32_t const &,
118216                const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * const &>
118217 #  endif
reflectVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118218       reflect() const VULKAN_HPP_NOEXCEPT
118219     {
118220       return std::tie( sType, pNext, enabledValidationFeatureCount, pEnabledValidationFeatures, disabledValidationFeatureCount, pDisabledValidationFeatures );
118221     }
118222 #endif
118223 
118224 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118225     auto operator<=>( ValidationFeaturesEXT const & ) const = default;
118226 #else
operator ==VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118227     bool operator==( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
118228     {
118229 #  if defined( VULKAN_HPP_USE_REFLECT )
118230       return this->reflect() == rhs.reflect();
118231 #  else
118232       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( enabledValidationFeatureCount == rhs.enabledValidationFeatureCount ) &&
118233              ( pEnabledValidationFeatures == rhs.pEnabledValidationFeatures ) && ( disabledValidationFeatureCount == rhs.disabledValidationFeatureCount ) &&
118234              ( pDisabledValidationFeatures == rhs.pDisabledValidationFeatures );
118235 #  endif
118236     }
118237 
operator !=VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT118238     bool operator!=( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
118239     {
118240       return !operator==( rhs );
118241     }
118242 #endif
118243 
118244   public:
118245     VULKAN_HPP_NAMESPACE::StructureType                       sType                          = StructureType::eValidationFeaturesEXT;
118246     const void *                                              pNext                          = {};
118247     uint32_t                                                  enabledValidationFeatureCount  = {};
118248     const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT *  pEnabledValidationFeatures     = {};
118249     uint32_t                                                  disabledValidationFeatureCount = {};
118250     const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures    = {};
118251   };
118252 
118253   template <>
118254   struct CppType<StructureType, StructureType::eValidationFeaturesEXT>
118255   {
118256     using Type = ValidationFeaturesEXT;
118257   };
118258 
118259   struct ValidationFlagsEXT
118260   {
118261     using NativeType = VkValidationFlagsEXT;
118262 
118263     static const bool                                  allowDuplicate = false;
118264     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eValidationFlagsEXT;
118265 
118266 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ValidationFlagsEXTVULKAN_HPP_NAMESPACE::ValidationFlagsEXT118267     VULKAN_HPP_CONSTEXPR ValidationFlagsEXT( uint32_t                                         disabledValidationCheckCount_ = {},
118268                                              const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks_    = {},
118269                                              const void *                                     pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
118270       : pNext{ pNext_ }
118271       , disabledValidationCheckCount{ disabledValidationCheckCount_ }
118272       , pDisabledValidationChecks{ pDisabledValidationChecks_ }
118273     {
118274     }
118275 
118276     VULKAN_HPP_CONSTEXPR ValidationFlagsEXT( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118277 
ValidationFlagsEXTVULKAN_HPP_NAMESPACE::ValidationFlagsEXT118278     ValidationFlagsEXT( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT : ValidationFlagsEXT( *reinterpret_cast<ValidationFlagsEXT const *>( &rhs ) ) {}
118279 
118280 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ValidationFlagsEXTVULKAN_HPP_NAMESPACE::ValidationFlagsEXT118281     ValidationFlagsEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationCheckEXT> const & disabledValidationChecks_,
118282                         const void *                                                                                          pNext_ = nullptr )
118283       : pNext( pNext_ )
118284       , disabledValidationCheckCount( static_cast<uint32_t>( disabledValidationChecks_.size() ) )
118285       , pDisabledValidationChecks( disabledValidationChecks_.data() )
118286     {
118287     }
118288 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118289 
118290     ValidationFlagsEXT & operator=( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118291 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118292 
operator =VULKAN_HPP_NAMESPACE::ValidationFlagsEXT118293     ValidationFlagsEXT & operator=( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
118294     {
118295       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationFlagsEXT const *>( &rhs );
118296       return *this;
118297     }
118298 
118299 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ValidationFlagsEXT118300     VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118301     {
118302       pNext = pNext_;
118303       return *this;
118304     }
118305 
setDisabledValidationCheckCountVULKAN_HPP_NAMESPACE::ValidationFlagsEXT118306     VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ ) VULKAN_HPP_NOEXCEPT
118307     {
118308       disabledValidationCheckCount = disabledValidationCheckCount_;
118309       return *this;
118310     }
118311 
118312     VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT &
setPDisabledValidationChecksVULKAN_HPP_NAMESPACE::ValidationFlagsEXT118313       setPDisabledValidationChecks( const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT
118314     {
118315       pDisabledValidationChecks = pDisabledValidationChecks_;
118316       return *this;
118317     }
118318 
118319 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDisabledValidationChecksVULKAN_HPP_NAMESPACE::ValidationFlagsEXT118320     ValidationFlagsEXT & setDisabledValidationChecks(
118321       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationCheckEXT> const & disabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT
118322     {
118323       disabledValidationCheckCount = static_cast<uint32_t>( disabledValidationChecks_.size() );
118324       pDisabledValidationChecks    = disabledValidationChecks_.data();
118325       return *this;
118326     }
118327 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118328 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118329 
operator VkValidationFlagsEXT const&VULKAN_HPP_NAMESPACE::ValidationFlagsEXT118330     operator VkValidationFlagsEXT const &() const VULKAN_HPP_NOEXCEPT
118331     {
118332       return *reinterpret_cast<const VkValidationFlagsEXT *>( this );
118333     }
118334 
operator VkValidationFlagsEXT&VULKAN_HPP_NAMESPACE::ValidationFlagsEXT118335     operator VkValidationFlagsEXT &() VULKAN_HPP_NOEXCEPT
118336     {
118337       return *reinterpret_cast<VkValidationFlagsEXT *>( this );
118338     }
118339 
118340 #if defined( VULKAN_HPP_USE_REFLECT )
118341 #  if 14 <= VULKAN_HPP_CPP_VERSION
118342     auto
118343 #  else
118344     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * const &>
118345 #  endif
reflectVULKAN_HPP_NAMESPACE::ValidationFlagsEXT118346       reflect() const VULKAN_HPP_NOEXCEPT
118347     {
118348       return std::tie( sType, pNext, disabledValidationCheckCount, pDisabledValidationChecks );
118349     }
118350 #endif
118351 
118352 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118353     auto operator<=>( ValidationFlagsEXT const & ) const = default;
118354 #else
operator ==VULKAN_HPP_NAMESPACE::ValidationFlagsEXT118355     bool operator==( ValidationFlagsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
118356     {
118357 #  if defined( VULKAN_HPP_USE_REFLECT )
118358       return this->reflect() == rhs.reflect();
118359 #  else
118360       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount ) &&
118361              ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
118362 #  endif
118363     }
118364 
operator !=VULKAN_HPP_NAMESPACE::ValidationFlagsEXT118365     bool operator!=( ValidationFlagsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
118366     {
118367       return !operator==( rhs );
118368     }
118369 #endif
118370 
118371   public:
118372     VULKAN_HPP_NAMESPACE::StructureType              sType                        = StructureType::eValidationFlagsEXT;
118373     const void *                                     pNext                        = {};
118374     uint32_t                                         disabledValidationCheckCount = {};
118375     const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks    = {};
118376   };
118377 
118378   template <>
118379   struct CppType<StructureType, StructureType::eValidationFlagsEXT>
118380   {
118381     using Type = ValidationFlagsEXT;
118382   };
118383 
118384   struct VertexInputAttributeDescription2EXT
118385   {
118386     using NativeType = VkVertexInputAttributeDescription2EXT;
118387 
118388     static const bool                                  allowDuplicate = false;
118389     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVertexInputAttributeDescription2EXT;
118390 
118391 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputAttributeDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118392     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT( uint32_t                     location_ = {},
118393                                                               uint32_t                     binding_  = {},
118394                                                               VULKAN_HPP_NAMESPACE::Format format_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
118395                                                               uint32_t                     offset_   = {},
118396                                                               void *                       pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
118397       : pNext{ pNext_ }
118398       , location{ location_ }
118399       , binding{ binding_ }
118400       , format{ format_ }
118401       , offset{ offset_ }
118402     {
118403     }
118404 
118405     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT( VertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118406 
VertexInputAttributeDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118407     VertexInputAttributeDescription2EXT( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
118408       : VertexInputAttributeDescription2EXT( *reinterpret_cast<VertexInputAttributeDescription2EXT const *>( &rhs ) )
118409     {
118410     }
118411 
118412     VertexInputAttributeDescription2EXT & operator=( VertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118413 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118414 
operator =VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118415     VertexInputAttributeDescription2EXT & operator=( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
118416     {
118417       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT const *>( &rhs );
118418       return *this;
118419     }
118420 
118421 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118422     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
118423     {
118424       pNext = pNext_;
118425       return *this;
118426     }
118427 
setLocationVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118428     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT
118429     {
118430       location = location_;
118431       return *this;
118432     }
118433 
setBindingVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118434     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
118435     {
118436       binding = binding_;
118437       return *this;
118438     }
118439 
setFormatVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118440     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
118441     {
118442       format = format_;
118443       return *this;
118444     }
118445 
setOffsetVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118446     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
118447     {
118448       offset = offset_;
118449       return *this;
118450     }
118451 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118452 
operator VkVertexInputAttributeDescription2EXT const&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118453     operator VkVertexInputAttributeDescription2EXT const &() const VULKAN_HPP_NOEXCEPT
118454     {
118455       return *reinterpret_cast<const VkVertexInputAttributeDescription2EXT *>( this );
118456     }
118457 
operator VkVertexInputAttributeDescription2EXT&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118458     operator VkVertexInputAttributeDescription2EXT &() VULKAN_HPP_NOEXCEPT
118459     {
118460       return *reinterpret_cast<VkVertexInputAttributeDescription2EXT *>( this );
118461     }
118462 
118463 #if defined( VULKAN_HPP_USE_REFLECT )
118464 #  if 14 <= VULKAN_HPP_CPP_VERSION
118465     auto
118466 #  else
118467     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
118468                void * const &,
118469                uint32_t const &,
118470                uint32_t const &,
118471                VULKAN_HPP_NAMESPACE::Format const &,
118472                uint32_t const &>
118473 #  endif
reflectVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118474       reflect() const VULKAN_HPP_NOEXCEPT
118475     {
118476       return std::tie( sType, pNext, location, binding, format, offset );
118477     }
118478 #endif
118479 
118480 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118481     auto operator<=>( VertexInputAttributeDescription2EXT const & ) const = default;
118482 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118483     bool operator==( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
118484     {
118485 #  if defined( VULKAN_HPP_USE_REFLECT )
118486       return this->reflect() == rhs.reflect();
118487 #  else
118488       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( location == rhs.location ) && ( binding == rhs.binding ) && ( format == rhs.format ) &&
118489              ( offset == rhs.offset );
118490 #  endif
118491     }
118492 
operator !=VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT118493     bool operator!=( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
118494     {
118495       return !operator==( rhs );
118496     }
118497 #endif
118498 
118499   public:
118500     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eVertexInputAttributeDescription2EXT;
118501     void *                              pNext    = {};
118502     uint32_t                            location = {};
118503     uint32_t                            binding  = {};
118504     VULKAN_HPP_NAMESPACE::Format        format   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
118505     uint32_t                            offset   = {};
118506   };
118507 
118508   template <>
118509   struct CppType<StructureType, StructureType::eVertexInputAttributeDescription2EXT>
118510   {
118511     using Type = VertexInputAttributeDescription2EXT;
118512   };
118513 
118514   struct VertexInputBindingDescription2EXT
118515   {
118516     using NativeType = VkVertexInputBindingDescription2EXT;
118517 
118518     static const bool                                  allowDuplicate = false;
118519     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVertexInputBindingDescription2EXT;
118520 
118521 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputBindingDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118522     VULKAN_HPP_CONSTEXPR VertexInputBindingDescription2EXT( uint32_t                              binding_   = {},
118523                                                             uint32_t                              stride_    = {},
118524                                                             VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex,
118525                                                             uint32_t                              divisor_   = {},
118526                                                             void *                                pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
118527       : pNext{ pNext_ }
118528       , binding{ binding_ }
118529       , stride{ stride_ }
118530       , inputRate{ inputRate_ }
118531       , divisor{ divisor_ }
118532     {
118533     }
118534 
118535     VULKAN_HPP_CONSTEXPR VertexInputBindingDescription2EXT( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118536 
VertexInputBindingDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118537     VertexInputBindingDescription2EXT( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
118538       : VertexInputBindingDescription2EXT( *reinterpret_cast<VertexInputBindingDescription2EXT const *>( &rhs ) )
118539     {
118540     }
118541 
118542     VertexInputBindingDescription2EXT & operator=( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118543 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118544 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118545     VertexInputBindingDescription2EXT & operator=( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
118546     {
118547       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT const *>( &rhs );
118548       return *this;
118549     }
118550 
118551 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118552     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
118553     {
118554       pNext = pNext_;
118555       return *this;
118556     }
118557 
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118558     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
118559     {
118560       binding = binding_;
118561       return *this;
118562     }
118563 
setStrideVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118564     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
118565     {
118566       stride = stride_;
118567       return *this;
118568     }
118569 
setInputRateVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118570     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT
118571     {
118572       inputRate = inputRate_;
118573       return *this;
118574     }
118575 
setDivisorVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118576     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT
118577     {
118578       divisor = divisor_;
118579       return *this;
118580     }
118581 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118582 
operator VkVertexInputBindingDescription2EXT const&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118583     operator VkVertexInputBindingDescription2EXT const &() const VULKAN_HPP_NOEXCEPT
118584     {
118585       return *reinterpret_cast<const VkVertexInputBindingDescription2EXT *>( this );
118586     }
118587 
operator VkVertexInputBindingDescription2EXT&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118588     operator VkVertexInputBindingDescription2EXT &() VULKAN_HPP_NOEXCEPT
118589     {
118590       return *reinterpret_cast<VkVertexInputBindingDescription2EXT *>( this );
118591     }
118592 
118593 #if defined( VULKAN_HPP_USE_REFLECT )
118594 #  if 14 <= VULKAN_HPP_CPP_VERSION
118595     auto
118596 #  else
118597     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
118598                void * const &,
118599                uint32_t const &,
118600                uint32_t const &,
118601                VULKAN_HPP_NAMESPACE::VertexInputRate const &,
118602                uint32_t const &>
118603 #  endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118604       reflect() const VULKAN_HPP_NOEXCEPT
118605     {
118606       return std::tie( sType, pNext, binding, stride, inputRate, divisor );
118607     }
118608 #endif
118609 
118610 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118611     auto operator<=>( VertexInputBindingDescription2EXT const & ) const = default;
118612 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118613     bool operator==( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
118614     {
118615 #  if defined( VULKAN_HPP_USE_REFLECT )
118616       return this->reflect() == rhs.reflect();
118617 #  else
118618       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( binding == rhs.binding ) && ( stride == rhs.stride ) && ( inputRate == rhs.inputRate ) &&
118619              ( divisor == rhs.divisor );
118620 #  endif
118621     }
118622 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT118623     bool operator!=( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
118624     {
118625       return !operator==( rhs );
118626     }
118627 #endif
118628 
118629   public:
118630     VULKAN_HPP_NAMESPACE::StructureType   sType     = StructureType::eVertexInputBindingDescription2EXT;
118631     void *                                pNext     = {};
118632     uint32_t                              binding   = {};
118633     uint32_t                              stride    = {};
118634     VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex;
118635     uint32_t                              divisor   = {};
118636   };
118637 
118638   template <>
118639   struct CppType<StructureType, StructureType::eVertexInputBindingDescription2EXT>
118640   {
118641     using Type = VertexInputBindingDescription2EXT;
118642   };
118643 
118644 #if defined( VK_USE_PLATFORM_VI_NN )
118645   struct ViSurfaceCreateInfoNN
118646   {
118647     using NativeType = VkViSurfaceCreateInfoNN;
118648 
118649     static const bool                                  allowDuplicate = false;
118650     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eViSurfaceCreateInfoNN;
118651 
118652 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
118653     VULKAN_HPP_CONSTEXPR
ViSurfaceCreateInfoNNVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118654       ViSurfaceCreateInfoNN( VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags_ = {}, void * window_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
118655       : pNext{ pNext_ }
118656       , flags{ flags_ }
118657       , window{ window_ }
118658     {
118659     }
118660 
118661     VULKAN_HPP_CONSTEXPR ViSurfaceCreateInfoNN( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118662 
ViSurfaceCreateInfoNNVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118663     ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT
118664       : ViSurfaceCreateInfoNN( *reinterpret_cast<ViSurfaceCreateInfoNN const *>( &rhs ) )
118665     {
118666     }
118667 
118668     ViSurfaceCreateInfoNN & operator=( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118669 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118670 
operator =VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118671     ViSurfaceCreateInfoNN & operator=( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT
118672     {
118673       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const *>( &rhs );
118674       return *this;
118675     }
118676 
118677 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118678     VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118679     {
118680       pNext = pNext_;
118681       return *this;
118682     }
118683 
setFlagsVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118684     VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setFlags( VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags_ ) VULKAN_HPP_NOEXCEPT
118685     {
118686       flags = flags_;
118687       return *this;
118688     }
118689 
setWindowVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118690     VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setWindow( void * window_ ) VULKAN_HPP_NOEXCEPT
118691     {
118692       window = window_;
118693       return *this;
118694     }
118695 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118696 
operator VkViSurfaceCreateInfoNN const&VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118697     operator VkViSurfaceCreateInfoNN const &() const VULKAN_HPP_NOEXCEPT
118698     {
118699       return *reinterpret_cast<const VkViSurfaceCreateInfoNN *>( this );
118700     }
118701 
operator VkViSurfaceCreateInfoNN&VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118702     operator VkViSurfaceCreateInfoNN &() VULKAN_HPP_NOEXCEPT
118703     {
118704       return *reinterpret_cast<VkViSurfaceCreateInfoNN *>( this );
118705     }
118706 
118707 #  if defined( VULKAN_HPP_USE_REFLECT )
118708 #    if 14 <= VULKAN_HPP_CPP_VERSION
118709     auto
118710 #    else
118711     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN const &, void * const &>
118712 #    endif
reflectVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118713       reflect() const VULKAN_HPP_NOEXCEPT
118714     {
118715       return std::tie( sType, pNext, flags, window );
118716     }
118717 #  endif
118718 
118719 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118720     auto operator<=>( ViSurfaceCreateInfoNN const & ) const = default;
118721 #  else
operator ==VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118722     bool operator==( ViSurfaceCreateInfoNN const & rhs ) const VULKAN_HPP_NOEXCEPT
118723     {
118724 #    if defined( VULKAN_HPP_USE_REFLECT )
118725       return this->reflect() == rhs.reflect();
118726 #    else
118727       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( window == rhs.window );
118728 #    endif
118729     }
118730 
operator !=VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN118731     bool operator!=( ViSurfaceCreateInfoNN const & rhs ) const VULKAN_HPP_NOEXCEPT
118732     {
118733       return !operator==( rhs );
118734     }
118735 #  endif
118736 
118737   public:
118738     VULKAN_HPP_NAMESPACE::StructureType          sType  = StructureType::eViSurfaceCreateInfoNN;
118739     const void *                                 pNext  = {};
118740     VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags  = {};
118741     void *                                       window = {};
118742   };
118743 
118744   template <>
118745   struct CppType<StructureType, StructureType::eViSurfaceCreateInfoNN>
118746   {
118747     using Type = ViSurfaceCreateInfoNN;
118748   };
118749 #endif /*VK_USE_PLATFORM_VI_NN*/
118750 
118751   struct VideoPictureResourceInfoKHR
118752   {
118753     using NativeType = VkVideoPictureResourceInfoKHR;
118754 
118755     static const bool                                  allowDuplicate = false;
118756     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoPictureResourceInfoKHR;
118757 
118758 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoPictureResourceInfoKHRVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118759     VULKAN_HPP_CONSTEXPR VideoPictureResourceInfoKHR( VULKAN_HPP_NAMESPACE::Offset2D  codedOffset_      = {},
118760                                                       VULKAN_HPP_NAMESPACE::Extent2D  codedExtent_      = {},
118761                                                       uint32_t                        baseArrayLayer_   = {},
118762                                                       VULKAN_HPP_NAMESPACE::ImageView imageViewBinding_ = {},
118763                                                       const void *                    pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
118764       : pNext{ pNext_ }
118765       , codedOffset{ codedOffset_ }
118766       , codedExtent{ codedExtent_ }
118767       , baseArrayLayer{ baseArrayLayer_ }
118768       , imageViewBinding{ imageViewBinding_ }
118769     {
118770     }
118771 
118772     VULKAN_HPP_CONSTEXPR VideoPictureResourceInfoKHR( VideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118773 
VideoPictureResourceInfoKHRVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118774     VideoPictureResourceInfoKHR( VkVideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118775       : VideoPictureResourceInfoKHR( *reinterpret_cast<VideoPictureResourceInfoKHR const *>( &rhs ) )
118776     {
118777     }
118778 
118779     VideoPictureResourceInfoKHR & operator=( VideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118780 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118781 
operator =VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118782     VideoPictureResourceInfoKHR & operator=( VkVideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118783     {
118784       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const *>( &rhs );
118785       return *this;
118786     }
118787 
118788 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118789     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118790     {
118791       pNext = pNext_;
118792       return *this;
118793     }
118794 
setCodedOffsetVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118795     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setCodedOffset( VULKAN_HPP_NAMESPACE::Offset2D const & codedOffset_ ) VULKAN_HPP_NOEXCEPT
118796     {
118797       codedOffset = codedOffset_;
118798       return *this;
118799     }
118800 
setCodedExtentVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118801     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & codedExtent_ ) VULKAN_HPP_NOEXCEPT
118802     {
118803       codedExtent = codedExtent_;
118804       return *this;
118805     }
118806 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118807     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
118808     {
118809       baseArrayLayer = baseArrayLayer_;
118810       return *this;
118811     }
118812 
setImageViewBindingVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118813     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setImageViewBinding( VULKAN_HPP_NAMESPACE::ImageView imageViewBinding_ ) VULKAN_HPP_NOEXCEPT
118814     {
118815       imageViewBinding = imageViewBinding_;
118816       return *this;
118817     }
118818 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118819 
operator VkVideoPictureResourceInfoKHR const&VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118820     operator VkVideoPictureResourceInfoKHR const &() const VULKAN_HPP_NOEXCEPT
118821     {
118822       return *reinterpret_cast<const VkVideoPictureResourceInfoKHR *>( this );
118823     }
118824 
operator VkVideoPictureResourceInfoKHR&VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118825     operator VkVideoPictureResourceInfoKHR &() VULKAN_HPP_NOEXCEPT
118826     {
118827       return *reinterpret_cast<VkVideoPictureResourceInfoKHR *>( this );
118828     }
118829 
118830 #if defined( VULKAN_HPP_USE_REFLECT )
118831 #  if 14 <= VULKAN_HPP_CPP_VERSION
118832     auto
118833 #  else
118834     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
118835                const void * const &,
118836                VULKAN_HPP_NAMESPACE::Offset2D const &,
118837                VULKAN_HPP_NAMESPACE::Extent2D const &,
118838                uint32_t const &,
118839                VULKAN_HPP_NAMESPACE::ImageView const &>
118840 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118841       reflect() const VULKAN_HPP_NOEXCEPT
118842     {
118843       return std::tie( sType, pNext, codedOffset, codedExtent, baseArrayLayer, imageViewBinding );
118844     }
118845 #endif
118846 
118847 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118848     auto operator<=>( VideoPictureResourceInfoKHR const & ) const = default;
118849 #else
operator ==VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118850     bool operator==( VideoPictureResourceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118851     {
118852 #  if defined( VULKAN_HPP_USE_REFLECT )
118853       return this->reflect() == rhs.reflect();
118854 #  else
118855       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( codedOffset == rhs.codedOffset ) && ( codedExtent == rhs.codedExtent ) &&
118856              ( baseArrayLayer == rhs.baseArrayLayer ) && ( imageViewBinding == rhs.imageViewBinding );
118857 #  endif
118858     }
118859 
operator !=VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR118860     bool operator!=( VideoPictureResourceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118861     {
118862       return !operator==( rhs );
118863     }
118864 #endif
118865 
118866   public:
118867     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eVideoPictureResourceInfoKHR;
118868     const void *                        pNext            = {};
118869     VULKAN_HPP_NAMESPACE::Offset2D      codedOffset      = {};
118870     VULKAN_HPP_NAMESPACE::Extent2D      codedExtent      = {};
118871     uint32_t                            baseArrayLayer   = {};
118872     VULKAN_HPP_NAMESPACE::ImageView     imageViewBinding = {};
118873   };
118874 
118875   template <>
118876   struct CppType<StructureType, StructureType::eVideoPictureResourceInfoKHR>
118877   {
118878     using Type = VideoPictureResourceInfoKHR;
118879   };
118880 
118881   struct VideoReferenceSlotInfoKHR
118882   {
118883     using NativeType = VkVideoReferenceSlotInfoKHR;
118884 
118885     static const bool                                  allowDuplicate = false;
118886     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoReferenceSlotInfoKHR;
118887 
118888 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoReferenceSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118889     VULKAN_HPP_CONSTEXPR VideoReferenceSlotInfoKHR( int32_t                                                   slotIndex_        = {},
118890                                                     const VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR * pPictureResource_ = {},
118891                                                     const void *                                              pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
118892       : pNext{ pNext_ }
118893       , slotIndex{ slotIndex_ }
118894       , pPictureResource{ pPictureResource_ }
118895     {
118896     }
118897 
118898     VULKAN_HPP_CONSTEXPR VideoReferenceSlotInfoKHR( VideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118899 
VideoReferenceSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118900     VideoReferenceSlotInfoKHR( VkVideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118901       : VideoReferenceSlotInfoKHR( *reinterpret_cast<VideoReferenceSlotInfoKHR const *>( &rhs ) )
118902     {
118903     }
118904 
118905     VideoReferenceSlotInfoKHR & operator=( VideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118906 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118907 
operator =VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118908     VideoReferenceSlotInfoKHR & operator=( VkVideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118909     {
118910       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR const *>( &rhs );
118911       return *this;
118912     }
118913 
118914 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118915     VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118916     {
118917       pNext = pNext_;
118918       return *this;
118919     }
118920 
setSlotIndexVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118921     VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR & setSlotIndex( int32_t slotIndex_ ) VULKAN_HPP_NOEXCEPT
118922     {
118923       slotIndex = slotIndex_;
118924       return *this;
118925     }
118926 
118927     VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR &
setPPictureResourceVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118928       setPPictureResource( const VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR * pPictureResource_ ) VULKAN_HPP_NOEXCEPT
118929     {
118930       pPictureResource = pPictureResource_;
118931       return *this;
118932     }
118933 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118934 
operator VkVideoReferenceSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118935     operator VkVideoReferenceSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
118936     {
118937       return *reinterpret_cast<const VkVideoReferenceSlotInfoKHR *>( this );
118938     }
118939 
operator VkVideoReferenceSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118940     operator VkVideoReferenceSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
118941     {
118942       return *reinterpret_cast<VkVideoReferenceSlotInfoKHR *>( this );
118943     }
118944 
118945 #if defined( VULKAN_HPP_USE_REFLECT )
118946 #  if 14 <= VULKAN_HPP_CPP_VERSION
118947     auto
118948 #  else
118949     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
118950                const void * const &,
118951                int32_t const &,
118952                const VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR * const &>
118953 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118954       reflect() const VULKAN_HPP_NOEXCEPT
118955     {
118956       return std::tie( sType, pNext, slotIndex, pPictureResource );
118957     }
118958 #endif
118959 
118960 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118961     auto operator<=>( VideoReferenceSlotInfoKHR const & ) const = default;
118962 #else
operator ==VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118963     bool operator==( VideoReferenceSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118964     {
118965 #  if defined( VULKAN_HPP_USE_REFLECT )
118966       return this->reflect() == rhs.reflect();
118967 #  else
118968       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( slotIndex == rhs.slotIndex ) && ( pPictureResource == rhs.pPictureResource );
118969 #  endif
118970     }
118971 
operator !=VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR118972     bool operator!=( VideoReferenceSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118973     {
118974       return !operator==( rhs );
118975     }
118976 #endif
118977 
118978   public:
118979     VULKAN_HPP_NAMESPACE::StructureType                       sType            = StructureType::eVideoReferenceSlotInfoKHR;
118980     const void *                                              pNext            = {};
118981     int32_t                                                   slotIndex        = {};
118982     const VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR * pPictureResource = {};
118983   };
118984 
118985   template <>
118986   struct CppType<StructureType, StructureType::eVideoReferenceSlotInfoKHR>
118987   {
118988     using Type = VideoReferenceSlotInfoKHR;
118989   };
118990 
118991   struct VideoBeginCodingInfoKHR
118992   {
118993     using NativeType = VkVideoBeginCodingInfoKHR;
118994 
118995     static const bool                                  allowDuplicate = false;
118996     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoBeginCodingInfoKHR;
118997 
118998 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoBeginCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR118999     VULKAN_HPP_CONSTEXPR VideoBeginCodingInfoKHR( VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR          flags_                  = {},
119000                                                   VULKAN_HPP_NAMESPACE::VideoSessionKHR                   videoSession_           = {},
119001                                                   VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR         videoSessionParameters_ = {},
119002                                                   uint32_t                                                referenceSlotCount_     = {},
119003                                                   const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_        = {},
119004                                                   const void *                                            pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
119005       : pNext{ pNext_ }
119006       , flags{ flags_ }
119007       , videoSession{ videoSession_ }
119008       , videoSessionParameters{ videoSessionParameters_ }
119009       , referenceSlotCount{ referenceSlotCount_ }
119010       , pReferenceSlots{ pReferenceSlots_ }
119011     {
119012     }
119013 
119014     VULKAN_HPP_CONSTEXPR VideoBeginCodingInfoKHR( VideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119015 
VideoBeginCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119016     VideoBeginCodingInfoKHR( VkVideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119017       : VideoBeginCodingInfoKHR( *reinterpret_cast<VideoBeginCodingInfoKHR const *>( &rhs ) )
119018     {
119019     }
119020 
119021 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoBeginCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119022     VideoBeginCodingInfoKHR( VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR  flags_,
119023                              VULKAN_HPP_NAMESPACE::VideoSessionKHR           videoSession_,
119024                              VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_,
119025                              VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_,
119026                              const void *                                                                                                 pNext_ = nullptr )
119027       : pNext( pNext_ )
119028       , flags( flags_ )
119029       , videoSession( videoSession_ )
119030       , videoSessionParameters( videoSessionParameters_ )
119031       , referenceSlotCount( static_cast<uint32_t>( referenceSlots_.size() ) )
119032       , pReferenceSlots( referenceSlots_.data() )
119033     {
119034     }
119035 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
119036 
119037     VideoBeginCodingInfoKHR & operator=( VideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119038 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119039 
operator =VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119040     VideoBeginCodingInfoKHR & operator=( VkVideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119041     {
119042       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR const *>( &rhs );
119043       return *this;
119044     }
119045 
119046 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119047     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119048     {
119049       pNext = pNext_;
119050       return *this;
119051     }
119052 
setFlagsVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119053     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
119054     {
119055       flags = flags_;
119056       return *this;
119057     }
119058 
setVideoSessionVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119059     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setVideoSession( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_ ) VULKAN_HPP_NOEXCEPT
119060     {
119061       videoSession = videoSession_;
119062       return *this;
119063     }
119064 
119065     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR &
setVideoSessionParametersVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119066       setVideoSessionParameters( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_ ) VULKAN_HPP_NOEXCEPT
119067     {
119068       videoSessionParameters = videoSessionParameters_;
119069       return *this;
119070     }
119071 
setReferenceSlotCountVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119072     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT
119073     {
119074       referenceSlotCount = referenceSlotCount_;
119075       return *this;
119076     }
119077 
119078     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR &
setPReferenceSlotsVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119079       setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT
119080     {
119081       pReferenceSlots = pReferenceSlots_;
119082       return *this;
119083     }
119084 
119085 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceSlotsVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119086     VideoBeginCodingInfoKHR & setReferenceSlots(
119087       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_ ) VULKAN_HPP_NOEXCEPT
119088     {
119089       referenceSlotCount = static_cast<uint32_t>( referenceSlots_.size() );
119090       pReferenceSlots    = referenceSlots_.data();
119091       return *this;
119092     }
119093 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
119094 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119095 
operator VkVideoBeginCodingInfoKHR const&VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119096     operator VkVideoBeginCodingInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119097     {
119098       return *reinterpret_cast<const VkVideoBeginCodingInfoKHR *>( this );
119099     }
119100 
operator VkVideoBeginCodingInfoKHR&VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119101     operator VkVideoBeginCodingInfoKHR &() VULKAN_HPP_NOEXCEPT
119102     {
119103       return *reinterpret_cast<VkVideoBeginCodingInfoKHR *>( this );
119104     }
119105 
119106 #if defined( VULKAN_HPP_USE_REFLECT )
119107 #  if 14 <= VULKAN_HPP_CPP_VERSION
119108     auto
119109 #  else
119110     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
119111                const void * const &,
119112                VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR const &,
119113                VULKAN_HPP_NAMESPACE::VideoSessionKHR const &,
119114                VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const &,
119115                uint32_t const &,
119116                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * const &>
119117 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119118       reflect() const VULKAN_HPP_NOEXCEPT
119119     {
119120       return std::tie( sType, pNext, flags, videoSession, videoSessionParameters, referenceSlotCount, pReferenceSlots );
119121     }
119122 #endif
119123 
119124 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119125     auto operator<=>( VideoBeginCodingInfoKHR const & ) const = default;
119126 #else
operator ==VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119127     bool operator==( VideoBeginCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119128     {
119129 #  if defined( VULKAN_HPP_USE_REFLECT )
119130       return this->reflect() == rhs.reflect();
119131 #  else
119132       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( videoSession == rhs.videoSession ) &&
119133              ( videoSessionParameters == rhs.videoSessionParameters ) && ( referenceSlotCount == rhs.referenceSlotCount ) &&
119134              ( pReferenceSlots == rhs.pReferenceSlots );
119135 #  endif
119136     }
119137 
operator !=VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR119138     bool operator!=( VideoBeginCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119139     {
119140       return !operator==( rhs );
119141     }
119142 #endif
119143 
119144   public:
119145     VULKAN_HPP_NAMESPACE::StructureType                     sType                  = StructureType::eVideoBeginCodingInfoKHR;
119146     const void *                                            pNext                  = {};
119147     VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR          flags                  = {};
119148     VULKAN_HPP_NAMESPACE::VideoSessionKHR                   videoSession           = {};
119149     VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR         videoSessionParameters = {};
119150     uint32_t                                                referenceSlotCount     = {};
119151     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots        = {};
119152   };
119153 
119154   template <>
119155   struct CppType<StructureType, StructureType::eVideoBeginCodingInfoKHR>
119156   {
119157     using Type = VideoBeginCodingInfoKHR;
119158   };
119159 
119160   struct VideoCapabilitiesKHR
119161   {
119162     using NativeType = VkVideoCapabilitiesKHR;
119163 
119164     static const bool                                  allowDuplicate = false;
119165     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoCapabilitiesKHR;
119166 
119167 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR119168     VULKAN_HPP_CONSTEXPR_14 VideoCapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR flags_                             = {},
119169                                                   VULKAN_HPP_NAMESPACE::DeviceSize              minBitstreamBufferOffsetAlignment_ = {},
119170                                                   VULKAN_HPP_NAMESPACE::DeviceSize              minBitstreamBufferSizeAlignment_   = {},
119171                                                   VULKAN_HPP_NAMESPACE::Extent2D                pictureAccessGranularity_          = {},
119172                                                   VULKAN_HPP_NAMESPACE::Extent2D                minCodedExtent_                    = {},
119173                                                   VULKAN_HPP_NAMESPACE::Extent2D                maxCodedExtent_                    = {},
119174                                                   uint32_t                                      maxDpbSlots_                       = {},
119175                                                   uint32_t                                      maxActiveReferencePictures_        = {},
119176                                                   VULKAN_HPP_NAMESPACE::ExtensionProperties     stdHeaderVersion_                  = {},
119177                                                   void *                                        pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
119178       : pNext{ pNext_ }
119179       , flags{ flags_ }
119180       , minBitstreamBufferOffsetAlignment{ minBitstreamBufferOffsetAlignment_ }
119181       , minBitstreamBufferSizeAlignment{ minBitstreamBufferSizeAlignment_ }
119182       , pictureAccessGranularity{ pictureAccessGranularity_ }
119183       , minCodedExtent{ minCodedExtent_ }
119184       , maxCodedExtent{ maxCodedExtent_ }
119185       , maxDpbSlots{ maxDpbSlots_ }
119186       , maxActiveReferencePictures{ maxActiveReferencePictures_ }
119187       , stdHeaderVersion{ stdHeaderVersion_ }
119188     {
119189     }
119190 
119191     VULKAN_HPP_CONSTEXPR_14 VideoCapabilitiesKHR( VideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119192 
VideoCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR119193     VideoCapabilitiesKHR( VkVideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119194       : VideoCapabilitiesKHR( *reinterpret_cast<VideoCapabilitiesKHR const *>( &rhs ) )
119195     {
119196     }
119197 
119198     VideoCapabilitiesKHR & operator=( VideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119199 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119200 
operator =VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR119201     VideoCapabilitiesKHR & operator=( VkVideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119202     {
119203       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR const *>( &rhs );
119204       return *this;
119205     }
119206 
operator VkVideoCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR119207     operator VkVideoCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
119208     {
119209       return *reinterpret_cast<const VkVideoCapabilitiesKHR *>( this );
119210     }
119211 
operator VkVideoCapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR119212     operator VkVideoCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
119213     {
119214       return *reinterpret_cast<VkVideoCapabilitiesKHR *>( this );
119215     }
119216 
119217 #if defined( VULKAN_HPP_USE_REFLECT )
119218 #  if 14 <= VULKAN_HPP_CPP_VERSION
119219     auto
119220 #  else
119221     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
119222                void * const &,
119223                VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR const &,
119224                VULKAN_HPP_NAMESPACE::DeviceSize const &,
119225                VULKAN_HPP_NAMESPACE::DeviceSize const &,
119226                VULKAN_HPP_NAMESPACE::Extent2D const &,
119227                VULKAN_HPP_NAMESPACE::Extent2D const &,
119228                VULKAN_HPP_NAMESPACE::Extent2D const &,
119229                uint32_t const &,
119230                uint32_t const &,
119231                VULKAN_HPP_NAMESPACE::ExtensionProperties const &>
119232 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR119233       reflect() const VULKAN_HPP_NOEXCEPT
119234     {
119235       return std::tie( sType,
119236                        pNext,
119237                        flags,
119238                        minBitstreamBufferOffsetAlignment,
119239                        minBitstreamBufferSizeAlignment,
119240                        pictureAccessGranularity,
119241                        minCodedExtent,
119242                        maxCodedExtent,
119243                        maxDpbSlots,
119244                        maxActiveReferencePictures,
119245                        stdHeaderVersion );
119246     }
119247 #endif
119248 
119249 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119250     auto operator<=>( VideoCapabilitiesKHR const & ) const = default;
119251 #else
operator ==VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR119252     bool operator==( VideoCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119253     {
119254 #  if defined( VULKAN_HPP_USE_REFLECT )
119255       return this->reflect() == rhs.reflect();
119256 #  else
119257       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
119258              ( minBitstreamBufferOffsetAlignment == rhs.minBitstreamBufferOffsetAlignment ) &&
119259              ( minBitstreamBufferSizeAlignment == rhs.minBitstreamBufferSizeAlignment ) && ( pictureAccessGranularity == rhs.pictureAccessGranularity ) &&
119260              ( minCodedExtent == rhs.minCodedExtent ) && ( maxCodedExtent == rhs.maxCodedExtent ) && ( maxDpbSlots == rhs.maxDpbSlots ) &&
119261              ( maxActiveReferencePictures == rhs.maxActiveReferencePictures ) && ( stdHeaderVersion == rhs.stdHeaderVersion );
119262 #  endif
119263     }
119264 
operator !=VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR119265     bool operator!=( VideoCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119266     {
119267       return !operator==( rhs );
119268     }
119269 #endif
119270 
119271   public:
119272     VULKAN_HPP_NAMESPACE::StructureType           sType                             = StructureType::eVideoCapabilitiesKHR;
119273     void *                                        pNext                             = {};
119274     VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR flags                             = {};
119275     VULKAN_HPP_NAMESPACE::DeviceSize              minBitstreamBufferOffsetAlignment = {};
119276     VULKAN_HPP_NAMESPACE::DeviceSize              minBitstreamBufferSizeAlignment   = {};
119277     VULKAN_HPP_NAMESPACE::Extent2D                pictureAccessGranularity          = {};
119278     VULKAN_HPP_NAMESPACE::Extent2D                minCodedExtent                    = {};
119279     VULKAN_HPP_NAMESPACE::Extent2D                maxCodedExtent                    = {};
119280     uint32_t                                      maxDpbSlots                       = {};
119281     uint32_t                                      maxActiveReferencePictures        = {};
119282     VULKAN_HPP_NAMESPACE::ExtensionProperties     stdHeaderVersion                  = {};
119283   };
119284 
119285   template <>
119286   struct CppType<StructureType, StructureType::eVideoCapabilitiesKHR>
119287   {
119288     using Type = VideoCapabilitiesKHR;
119289   };
119290 
119291   struct VideoCodingControlInfoKHR
119292   {
119293     using NativeType = VkVideoCodingControlInfoKHR;
119294 
119295     static const bool                                  allowDuplicate = false;
119296     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoCodingControlInfoKHR;
119297 
119298 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoCodingControlInfoKHRVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR119299     VULKAN_HPP_CONSTEXPR VideoCodingControlInfoKHR( VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags_ = {},
119300                                                     const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
119301       : pNext{ pNext_ }
119302       , flags{ flags_ }
119303     {
119304     }
119305 
119306     VULKAN_HPP_CONSTEXPR VideoCodingControlInfoKHR( VideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119307 
VideoCodingControlInfoKHRVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR119308     VideoCodingControlInfoKHR( VkVideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119309       : VideoCodingControlInfoKHR( *reinterpret_cast<VideoCodingControlInfoKHR const *>( &rhs ) )
119310     {
119311     }
119312 
119313     VideoCodingControlInfoKHR & operator=( VideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119314 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119315 
operator =VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR119316     VideoCodingControlInfoKHR & operator=( VkVideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119317     {
119318       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR const *>( &rhs );
119319       return *this;
119320     }
119321 
119322 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR119323     VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119324     {
119325       pNext = pNext_;
119326       return *this;
119327     }
119328 
setFlagsVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR119329     VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
119330     {
119331       flags = flags_;
119332       return *this;
119333     }
119334 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119335 
operator VkVideoCodingControlInfoKHR const&VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR119336     operator VkVideoCodingControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119337     {
119338       return *reinterpret_cast<const VkVideoCodingControlInfoKHR *>( this );
119339     }
119340 
operator VkVideoCodingControlInfoKHR&VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR119341     operator VkVideoCodingControlInfoKHR &() VULKAN_HPP_NOEXCEPT
119342     {
119343       return *reinterpret_cast<VkVideoCodingControlInfoKHR *>( this );
119344     }
119345 
119346 #if defined( VULKAN_HPP_USE_REFLECT )
119347 #  if 14 <= VULKAN_HPP_CPP_VERSION
119348     auto
119349 #  else
119350     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR const &>
119351 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR119352       reflect() const VULKAN_HPP_NOEXCEPT
119353     {
119354       return std::tie( sType, pNext, flags );
119355     }
119356 #endif
119357 
119358 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119359     auto operator<=>( VideoCodingControlInfoKHR const & ) const = default;
119360 #else
operator ==VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR119361     bool operator==( VideoCodingControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119362     {
119363 #  if defined( VULKAN_HPP_USE_REFLECT )
119364       return this->reflect() == rhs.reflect();
119365 #  else
119366       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
119367 #  endif
119368     }
119369 
operator !=VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR119370     bool operator!=( VideoCodingControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119371     {
119372       return !operator==( rhs );
119373     }
119374 #endif
119375 
119376   public:
119377     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::eVideoCodingControlInfoKHR;
119378     const void *                                     pNext = {};
119379     VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags = {};
119380   };
119381 
119382   template <>
119383   struct CppType<StructureType, StructureType::eVideoCodingControlInfoKHR>
119384   {
119385     using Type = VideoCodingControlInfoKHR;
119386   };
119387 
119388   struct VideoDecodeAV1CapabilitiesKHR
119389   {
119390     using NativeType = VkVideoDecodeAV1CapabilitiesKHR;
119391 
119392     static const bool                                  allowDuplicate = false;
119393     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeAv1CapabilitiesKHR;
119394 
119395 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeAV1CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR119396     VULKAN_HPP_CONSTEXPR VideoDecodeAV1CapabilitiesKHR( StdVideoAV1Level maxLevel_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
119397       : pNext{ pNext_ }
119398       , maxLevel{ maxLevel_ }
119399     {
119400     }
119401 
119402     VULKAN_HPP_CONSTEXPR VideoDecodeAV1CapabilitiesKHR( VideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119403 
VideoDecodeAV1CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR119404     VideoDecodeAV1CapabilitiesKHR( VkVideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119405       : VideoDecodeAV1CapabilitiesKHR( *reinterpret_cast<VideoDecodeAV1CapabilitiesKHR const *>( &rhs ) )
119406     {
119407     }
119408 
119409     VideoDecodeAV1CapabilitiesKHR & operator=( VideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119410 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119411 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR119412     VideoDecodeAV1CapabilitiesKHR & operator=( VkVideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119413     {
119414       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR const *>( &rhs );
119415       return *this;
119416     }
119417 
operator VkVideoDecodeAV1CapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR119418     operator VkVideoDecodeAV1CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
119419     {
119420       return *reinterpret_cast<const VkVideoDecodeAV1CapabilitiesKHR *>( this );
119421     }
119422 
operator VkVideoDecodeAV1CapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR119423     operator VkVideoDecodeAV1CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
119424     {
119425       return *reinterpret_cast<VkVideoDecodeAV1CapabilitiesKHR *>( this );
119426     }
119427 
119428 #if defined( VULKAN_HPP_USE_REFLECT )
119429 #  if 14 <= VULKAN_HPP_CPP_VERSION
119430     auto
119431 #  else
119432     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, StdVideoAV1Level const &>
119433 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR119434       reflect() const VULKAN_HPP_NOEXCEPT
119435     {
119436       return std::tie( sType, pNext, maxLevel );
119437     }
119438 #endif
119439 
119440 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR119441     std::strong_ordering operator<=>( VideoDecodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119442     {
119443       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
119444         return cmp;
119445       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
119446         return cmp;
119447       if ( auto cmp = memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoAV1Level ) ); cmp != 0 )
119448         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
119449 
119450       return std::strong_ordering::equivalent;
119451     }
119452 #endif
119453 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR119454     bool operator==( VideoDecodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119455     {
119456       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoAV1Level ) ) == 0 );
119457     }
119458 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR119459     bool operator!=( VideoDecodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119460     {
119461       return !operator==( rhs );
119462     }
119463 
119464   public:
119465     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eVideoDecodeAv1CapabilitiesKHR;
119466     void *                              pNext    = {};
119467     StdVideoAV1Level                    maxLevel = {};
119468   };
119469 
119470   template <>
119471   struct CppType<StructureType, StructureType::eVideoDecodeAv1CapabilitiesKHR>
119472   {
119473     using Type = VideoDecodeAV1CapabilitiesKHR;
119474   };
119475 
119476   struct VideoDecodeAV1DpbSlotInfoKHR
119477   {
119478     using NativeType = VkVideoDecodeAV1DpbSlotInfoKHR;
119479 
119480     static const bool                                  allowDuplicate = false;
119481     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeAv1DpbSlotInfoKHR;
119482 
119483 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeAV1DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR119484     VULKAN_HPP_CONSTEXPR VideoDecodeAV1DpbSlotInfoKHR( const StdVideoDecodeAV1ReferenceInfo * pStdReferenceInfo_ = {},
119485                                                        const void *                           pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
119486       : pNext{ pNext_ }
119487       , pStdReferenceInfo{ pStdReferenceInfo_ }
119488     {
119489     }
119490 
119491     VULKAN_HPP_CONSTEXPR VideoDecodeAV1DpbSlotInfoKHR( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119492 
VideoDecodeAV1DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR119493     VideoDecodeAV1DpbSlotInfoKHR( VkVideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119494       : VideoDecodeAV1DpbSlotInfoKHR( *reinterpret_cast<VideoDecodeAV1DpbSlotInfoKHR const *>( &rhs ) )
119495     {
119496     }
119497 
119498     VideoDecodeAV1DpbSlotInfoKHR & operator=( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119499 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119500 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR119501     VideoDecodeAV1DpbSlotInfoKHR & operator=( VkVideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119502     {
119503       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR const *>( &rhs );
119504       return *this;
119505     }
119506 
119507 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR119508     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1DpbSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119509     {
119510       pNext = pNext_;
119511       return *this;
119512     }
119513 
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR119514     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1DpbSlotInfoKHR & setPStdReferenceInfo( const StdVideoDecodeAV1ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
119515     {
119516       pStdReferenceInfo = pStdReferenceInfo_;
119517       return *this;
119518     }
119519 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119520 
operator VkVideoDecodeAV1DpbSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR119521     operator VkVideoDecodeAV1DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119522     {
119523       return *reinterpret_cast<const VkVideoDecodeAV1DpbSlotInfoKHR *>( this );
119524     }
119525 
operator VkVideoDecodeAV1DpbSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR119526     operator VkVideoDecodeAV1DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
119527     {
119528       return *reinterpret_cast<VkVideoDecodeAV1DpbSlotInfoKHR *>( this );
119529     }
119530 
119531 #if defined( VULKAN_HPP_USE_REFLECT )
119532 #  if 14 <= VULKAN_HPP_CPP_VERSION
119533     auto
119534 #  else
119535     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoDecodeAV1ReferenceInfo * const &>
119536 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR119537       reflect() const VULKAN_HPP_NOEXCEPT
119538     {
119539       return std::tie( sType, pNext, pStdReferenceInfo );
119540     }
119541 #endif
119542 
119543 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119544     auto operator<=>( VideoDecodeAV1DpbSlotInfoKHR const & ) const = default;
119545 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR119546     bool operator==( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119547     {
119548 #  if defined( VULKAN_HPP_USE_REFLECT )
119549       return this->reflect() == rhs.reflect();
119550 #  else
119551       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo );
119552 #  endif
119553     }
119554 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR119555     bool operator!=( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119556     {
119557       return !operator==( rhs );
119558     }
119559 #endif
119560 
119561   public:
119562     VULKAN_HPP_NAMESPACE::StructureType    sType             = StructureType::eVideoDecodeAv1DpbSlotInfoKHR;
119563     const void *                           pNext             = {};
119564     const StdVideoDecodeAV1ReferenceInfo * pStdReferenceInfo = {};
119565   };
119566 
119567   template <>
119568   struct CppType<StructureType, StructureType::eVideoDecodeAv1DpbSlotInfoKHR>
119569   {
119570     using Type = VideoDecodeAV1DpbSlotInfoKHR;
119571   };
119572 
119573   struct VideoDecodeAV1PictureInfoKHR
119574   {
119575     using NativeType = VkVideoDecodeAV1PictureInfoKHR;
119576 
119577     static const bool                                  allowDuplicate = false;
119578     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeAv1PictureInfoKHR;
119579 
119580 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeAV1PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119581     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR( const StdVideoDecodeAV1PictureInfo *                                   pStdPictureInfo_          = {},
119582                                                           std::array<int32_t, VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR> const & referenceNameSlotIndices_ = {},
119583                                                           uint32_t                                                               frameHeaderOffset_        = {},
119584                                                           uint32_t                                                               tileCount_                = {},
119585                                                           const uint32_t *                                                       pTileOffsets_             = {},
119586                                                           const uint32_t *                                                       pTileSizes_               = {},
119587                                                           const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
119588       : pNext{ pNext_ }
119589       , pStdPictureInfo{ pStdPictureInfo_ }
119590       , referenceNameSlotIndices{ referenceNameSlotIndices_ }
119591       , frameHeaderOffset{ frameHeaderOffset_ }
119592       , tileCount{ tileCount_ }
119593       , pTileOffsets{ pTileOffsets_ }
119594       , pTileSizes{ pTileSizes_ }
119595     {
119596     }
119597 
119598     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR( VideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119599 
VideoDecodeAV1PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119600     VideoDecodeAV1PictureInfoKHR( VkVideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119601       : VideoDecodeAV1PictureInfoKHR( *reinterpret_cast<VideoDecodeAV1PictureInfoKHR const *>( &rhs ) )
119602     {
119603     }
119604 
119605 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeAV1PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119606     VideoDecodeAV1PictureInfoKHR( const StdVideoDecodeAV1PictureInfo *                                   pStdPictureInfo_,
119607                                   std::array<int32_t, VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR> const & referenceNameSlotIndices_,
119608                                   uint32_t                                                               frameHeaderOffset_,
119609                                   VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &  tileOffsets_,
119610                                   VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &  tileSizes_ = {},
119611                                   const void *                                                           pNext_     = nullptr )
119612       : pNext( pNext_ )
119613       , pStdPictureInfo( pStdPictureInfo_ )
119614       , referenceNameSlotIndices( referenceNameSlotIndices_ )
119615       , frameHeaderOffset( frameHeaderOffset_ )
119616       , tileCount( static_cast<uint32_t>( tileOffsets_.size() ) )
119617       , pTileOffsets( tileOffsets_.data() )
119618       , pTileSizes( tileSizes_.data() )
119619     {
119620 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
119621       VULKAN_HPP_ASSERT( tileOffsets_.size() == tileSizes_.size() );
119622 #    else
119623       if ( tileOffsets_.size() != tileSizes_.size() )
119624       {
119625         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
119626                           "::VideoDecodeAV1PictureInfoKHR::VideoDecodeAV1PictureInfoKHR: tileOffsets_.size() != tileSizes_.size()" );
119627       }
119628 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
119629     }
119630 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
119631 
119632     VideoDecodeAV1PictureInfoKHR & operator=( VideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119633 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119634 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119635     VideoDecodeAV1PictureInfoKHR & operator=( VkVideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119636     {
119637       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR const *>( &rhs );
119638       return *this;
119639     }
119640 
119641 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119642     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119643     {
119644       pNext = pNext_;
119645       return *this;
119646     }
119647 
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119648     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPStdPictureInfo( const StdVideoDecodeAV1PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
119649     {
119650       pStdPictureInfo = pStdPictureInfo_;
119651       return *this;
119652     }
119653 
119654     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR &
setReferenceNameSlotIndicesVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119655       setReferenceNameSlotIndices( std::array<int32_t, VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR> referenceNameSlotIndices_ ) VULKAN_HPP_NOEXCEPT
119656     {
119657       referenceNameSlotIndices = referenceNameSlotIndices_;
119658       return *this;
119659     }
119660 
setFrameHeaderOffsetVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119661     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setFrameHeaderOffset( uint32_t frameHeaderOffset_ ) VULKAN_HPP_NOEXCEPT
119662     {
119663       frameHeaderOffset = frameHeaderOffset_;
119664       return *this;
119665     }
119666 
setTileCountVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119667     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setTileCount( uint32_t tileCount_ ) VULKAN_HPP_NOEXCEPT
119668     {
119669       tileCount = tileCount_;
119670       return *this;
119671     }
119672 
setPTileOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119673     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPTileOffsets( const uint32_t * pTileOffsets_ ) VULKAN_HPP_NOEXCEPT
119674     {
119675       pTileOffsets = pTileOffsets_;
119676       return *this;
119677     }
119678 
119679 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setTileOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119680     VideoDecodeAV1PictureInfoKHR & setTileOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & tileOffsets_ ) VULKAN_HPP_NOEXCEPT
119681     {
119682       tileCount    = static_cast<uint32_t>( tileOffsets_.size() );
119683       pTileOffsets = tileOffsets_.data();
119684       return *this;
119685     }
119686 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
119687 
setPTileSizesVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119688     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPTileSizes( const uint32_t * pTileSizes_ ) VULKAN_HPP_NOEXCEPT
119689     {
119690       pTileSizes = pTileSizes_;
119691       return *this;
119692     }
119693 
119694 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setTileSizesVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119695     VideoDecodeAV1PictureInfoKHR & setTileSizes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & tileSizes_ ) VULKAN_HPP_NOEXCEPT
119696     {
119697       tileCount  = static_cast<uint32_t>( tileSizes_.size() );
119698       pTileSizes = tileSizes_.data();
119699       return *this;
119700     }
119701 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
119702 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119703 
operator VkVideoDecodeAV1PictureInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119704     operator VkVideoDecodeAV1PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119705     {
119706       return *reinterpret_cast<const VkVideoDecodeAV1PictureInfoKHR *>( this );
119707     }
119708 
operator VkVideoDecodeAV1PictureInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119709     operator VkVideoDecodeAV1PictureInfoKHR &() VULKAN_HPP_NOEXCEPT
119710     {
119711       return *reinterpret_cast<VkVideoDecodeAV1PictureInfoKHR *>( this );
119712     }
119713 
119714 #if defined( VULKAN_HPP_USE_REFLECT )
119715 #  if 14 <= VULKAN_HPP_CPP_VERSION
119716     auto
119717 #  else
119718     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
119719                const void * const &,
119720                const StdVideoDecodeAV1PictureInfo * const &,
119721                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<int32_t, VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR> const &,
119722                uint32_t const &,
119723                uint32_t const &,
119724                const uint32_t * const &,
119725                const uint32_t * const &>
119726 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119727       reflect() const VULKAN_HPP_NOEXCEPT
119728     {
119729       return std::tie( sType, pNext, pStdPictureInfo, referenceNameSlotIndices, frameHeaderOffset, tileCount, pTileOffsets, pTileSizes );
119730     }
119731 #endif
119732 
119733 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119734     auto operator<=>( VideoDecodeAV1PictureInfoKHR const & ) const = default;
119735 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119736     bool operator==( VideoDecodeAV1PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119737     {
119738 #  if defined( VULKAN_HPP_USE_REFLECT )
119739       return this->reflect() == rhs.reflect();
119740 #  else
119741       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) &&
119742              ( referenceNameSlotIndices == rhs.referenceNameSlotIndices ) && ( frameHeaderOffset == rhs.frameHeaderOffset ) && ( tileCount == rhs.tileCount ) &&
119743              ( pTileOffsets == rhs.pTileOffsets ) && ( pTileSizes == rhs.pTileSizes );
119744 #  endif
119745     }
119746 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR119747     bool operator!=( VideoDecodeAV1PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119748     {
119749       return !operator==( rhs );
119750     }
119751 #endif
119752 
119753   public:
119754     VULKAN_HPP_NAMESPACE::StructureType                                                      sType           = StructureType::eVideoDecodeAv1PictureInfoKHR;
119755     const void *                                                                             pNext           = {};
119756     const StdVideoDecodeAV1PictureInfo *                                                     pStdPictureInfo = {};
119757     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<int32_t, VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR> referenceNameSlotIndices = {};
119758     uint32_t                                                                                 frameHeaderOffset        = {};
119759     uint32_t                                                                                 tileCount                = {};
119760     const uint32_t *                                                                         pTileOffsets             = {};
119761     const uint32_t *                                                                         pTileSizes               = {};
119762   };
119763 
119764   template <>
119765   struct CppType<StructureType, StructureType::eVideoDecodeAv1PictureInfoKHR>
119766   {
119767     using Type = VideoDecodeAV1PictureInfoKHR;
119768   };
119769 
119770   struct VideoDecodeAV1ProfileInfoKHR
119771   {
119772     using NativeType = VkVideoDecodeAV1ProfileInfoKHR;
119773 
119774     static const bool                                  allowDuplicate = false;
119775     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeAv1ProfileInfoKHR;
119776 
119777 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeAV1ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119778     VULKAN_HPP_CONSTEXPR VideoDecodeAV1ProfileInfoKHR( StdVideoAV1Profile           stdProfile_       = {},
119779                                                        VULKAN_HPP_NAMESPACE::Bool32 filmGrainSupport_ = {},
119780                                                        const void *                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
119781       : pNext{ pNext_ }
119782       , stdProfile{ stdProfile_ }
119783       , filmGrainSupport{ filmGrainSupport_ }
119784     {
119785     }
119786 
119787     VULKAN_HPP_CONSTEXPR VideoDecodeAV1ProfileInfoKHR( VideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119788 
VideoDecodeAV1ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119789     VideoDecodeAV1ProfileInfoKHR( VkVideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119790       : VideoDecodeAV1ProfileInfoKHR( *reinterpret_cast<VideoDecodeAV1ProfileInfoKHR const *>( &rhs ) )
119791     {
119792     }
119793 
119794     VideoDecodeAV1ProfileInfoKHR & operator=( VideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119795 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119796 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119797     VideoDecodeAV1ProfileInfoKHR & operator=( VkVideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119798     {
119799       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR const *>( &rhs );
119800       return *this;
119801     }
119802 
119803 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119804     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119805     {
119806       pNext = pNext_;
119807       return *this;
119808     }
119809 
setStdProfileVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119810     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR & setStdProfile( StdVideoAV1Profile stdProfile_ ) VULKAN_HPP_NOEXCEPT
119811     {
119812       stdProfile = stdProfile_;
119813       return *this;
119814     }
119815 
setFilmGrainSupportVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119816     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR & setFilmGrainSupport( VULKAN_HPP_NAMESPACE::Bool32 filmGrainSupport_ ) VULKAN_HPP_NOEXCEPT
119817     {
119818       filmGrainSupport = filmGrainSupport_;
119819       return *this;
119820     }
119821 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119822 
operator VkVideoDecodeAV1ProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119823     operator VkVideoDecodeAV1ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119824     {
119825       return *reinterpret_cast<const VkVideoDecodeAV1ProfileInfoKHR *>( this );
119826     }
119827 
operator VkVideoDecodeAV1ProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119828     operator VkVideoDecodeAV1ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
119829     {
119830       return *reinterpret_cast<VkVideoDecodeAV1ProfileInfoKHR *>( this );
119831     }
119832 
119833 #if defined( VULKAN_HPP_USE_REFLECT )
119834 #  if 14 <= VULKAN_HPP_CPP_VERSION
119835     auto
119836 #  else
119837     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoAV1Profile const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
119838 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119839       reflect() const VULKAN_HPP_NOEXCEPT
119840     {
119841       return std::tie( sType, pNext, stdProfile, filmGrainSupport );
119842     }
119843 #endif
119844 
119845 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119846     std::strong_ordering operator<=>( VideoDecodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119847     {
119848       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
119849         return cmp;
119850       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
119851         return cmp;
119852       if ( auto cmp = memcmp( &stdProfile, &rhs.stdProfile, sizeof( StdVideoAV1Profile ) ); cmp != 0 )
119853         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
119854       if ( auto cmp = filmGrainSupport <=> rhs.filmGrainSupport; cmp != 0 )
119855         return cmp;
119856 
119857       return std::strong_ordering::equivalent;
119858     }
119859 #endif
119860 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119861     bool operator==( VideoDecodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119862     {
119863       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfile, &rhs.stdProfile, sizeof( StdVideoAV1Profile ) ) == 0 ) &&
119864              ( filmGrainSupport == rhs.filmGrainSupport );
119865     }
119866 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR119867     bool operator!=( VideoDecodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119868     {
119869       return !operator==( rhs );
119870     }
119871 
119872   public:
119873     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eVideoDecodeAv1ProfileInfoKHR;
119874     const void *                        pNext            = {};
119875     StdVideoAV1Profile                  stdProfile       = {};
119876     VULKAN_HPP_NAMESPACE::Bool32        filmGrainSupport = {};
119877   };
119878 
119879   template <>
119880   struct CppType<StructureType, StructureType::eVideoDecodeAv1ProfileInfoKHR>
119881   {
119882     using Type = VideoDecodeAV1ProfileInfoKHR;
119883   };
119884 
119885   struct VideoDecodeAV1SessionParametersCreateInfoKHR
119886   {
119887     using NativeType = VkVideoDecodeAV1SessionParametersCreateInfoKHR;
119888 
119889     static const bool                                  allowDuplicate = false;
119890     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeAv1SessionParametersCreateInfoKHR;
119891 
119892 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeAV1SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR119893     VULKAN_HPP_CONSTEXPR VideoDecodeAV1SessionParametersCreateInfoKHR( const StdVideoAV1SequenceHeader * pStdSequenceHeader_ = {},
119894                                                                        const void *                      pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
119895       : pNext{ pNext_ }
119896       , pStdSequenceHeader{ pStdSequenceHeader_ }
119897     {
119898     }
119899 
119900     VULKAN_HPP_CONSTEXPR VideoDecodeAV1SessionParametersCreateInfoKHR( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119901 
VideoDecodeAV1SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR119902     VideoDecodeAV1SessionParametersCreateInfoKHR( VkVideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119903       : VideoDecodeAV1SessionParametersCreateInfoKHR( *reinterpret_cast<VideoDecodeAV1SessionParametersCreateInfoKHR const *>( &rhs ) )
119904     {
119905     }
119906 
119907     VideoDecodeAV1SessionParametersCreateInfoKHR & operator=( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119908 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119909 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR119910     VideoDecodeAV1SessionParametersCreateInfoKHR & operator=( VkVideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119911     {
119912       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR const *>( &rhs );
119913       return *this;
119914     }
119915 
119916 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR119917     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1SessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119918     {
119919       pNext = pNext_;
119920       return *this;
119921     }
119922 
119923     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1SessionParametersCreateInfoKHR &
setPStdSequenceHeaderVULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR119924       setPStdSequenceHeader( const StdVideoAV1SequenceHeader * pStdSequenceHeader_ ) VULKAN_HPP_NOEXCEPT
119925     {
119926       pStdSequenceHeader = pStdSequenceHeader_;
119927       return *this;
119928     }
119929 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119930 
operator VkVideoDecodeAV1SessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR119931     operator VkVideoDecodeAV1SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119932     {
119933       return *reinterpret_cast<const VkVideoDecodeAV1SessionParametersCreateInfoKHR *>( this );
119934     }
119935 
operator VkVideoDecodeAV1SessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR119936     operator VkVideoDecodeAV1SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
119937     {
119938       return *reinterpret_cast<VkVideoDecodeAV1SessionParametersCreateInfoKHR *>( this );
119939     }
119940 
119941 #if defined( VULKAN_HPP_USE_REFLECT )
119942 #  if 14 <= VULKAN_HPP_CPP_VERSION
119943     auto
119944 #  else
119945     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoAV1SequenceHeader * const &>
119946 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR119947       reflect() const VULKAN_HPP_NOEXCEPT
119948     {
119949       return std::tie( sType, pNext, pStdSequenceHeader );
119950     }
119951 #endif
119952 
119953 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119954     auto operator<=>( VideoDecodeAV1SessionParametersCreateInfoKHR const & ) const = default;
119955 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR119956     bool operator==( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119957     {
119958 #  if defined( VULKAN_HPP_USE_REFLECT )
119959       return this->reflect() == rhs.reflect();
119960 #  else
119961       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdSequenceHeader == rhs.pStdSequenceHeader );
119962 #  endif
119963     }
119964 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR119965     bool operator!=( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119966     {
119967       return !operator==( rhs );
119968     }
119969 #endif
119970 
119971   public:
119972     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eVideoDecodeAv1SessionParametersCreateInfoKHR;
119973     const void *                        pNext              = {};
119974     const StdVideoAV1SequenceHeader *   pStdSequenceHeader = {};
119975   };
119976 
119977   template <>
119978   struct CppType<StructureType, StructureType::eVideoDecodeAv1SessionParametersCreateInfoKHR>
119979   {
119980     using Type = VideoDecodeAV1SessionParametersCreateInfoKHR;
119981   };
119982 
119983   struct VideoDecodeCapabilitiesKHR
119984   {
119985     using NativeType = VkVideoDecodeCapabilitiesKHR;
119986 
119987     static const bool                                  allowDuplicate = false;
119988     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeCapabilitiesKHR;
119989 
119990 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR119991     VULKAN_HPP_CONSTEXPR VideoDecodeCapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoDecodeCapabilityFlagsKHR flags_ = {},
119992                                                      void *                                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
119993       : pNext{ pNext_ }
119994       , flags{ flags_ }
119995     {
119996     }
119997 
119998     VULKAN_HPP_CONSTEXPR VideoDecodeCapabilitiesKHR( VideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119999 
VideoDecodeCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR120000     VideoDecodeCapabilitiesKHR( VkVideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120001       : VideoDecodeCapabilitiesKHR( *reinterpret_cast<VideoDecodeCapabilitiesKHR const *>( &rhs ) )
120002     {
120003     }
120004 
120005     VideoDecodeCapabilitiesKHR & operator=( VideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120006 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120007 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR120008     VideoDecodeCapabilitiesKHR & operator=( VkVideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120009     {
120010       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR const *>( &rhs );
120011       return *this;
120012     }
120013 
operator VkVideoDecodeCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR120014     operator VkVideoDecodeCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
120015     {
120016       return *reinterpret_cast<const VkVideoDecodeCapabilitiesKHR *>( this );
120017     }
120018 
operator VkVideoDecodeCapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR120019     operator VkVideoDecodeCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
120020     {
120021       return *reinterpret_cast<VkVideoDecodeCapabilitiesKHR *>( this );
120022     }
120023 
120024 #if defined( VULKAN_HPP_USE_REFLECT )
120025 #  if 14 <= VULKAN_HPP_CPP_VERSION
120026     auto
120027 #  else
120028     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::VideoDecodeCapabilityFlagsKHR const &>
120029 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR120030       reflect() const VULKAN_HPP_NOEXCEPT
120031     {
120032       return std::tie( sType, pNext, flags );
120033     }
120034 #endif
120035 
120036 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120037     auto operator<=>( VideoDecodeCapabilitiesKHR const & ) const = default;
120038 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR120039     bool operator==( VideoDecodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120040     {
120041 #  if defined( VULKAN_HPP_USE_REFLECT )
120042       return this->reflect() == rhs.reflect();
120043 #  else
120044       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
120045 #  endif
120046     }
120047 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR120048     bool operator!=( VideoDecodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120049     {
120050       return !operator==( rhs );
120051     }
120052 #endif
120053 
120054   public:
120055     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::eVideoDecodeCapabilitiesKHR;
120056     void *                                              pNext = {};
120057     VULKAN_HPP_NAMESPACE::VideoDecodeCapabilityFlagsKHR flags = {};
120058   };
120059 
120060   template <>
120061   struct CppType<StructureType, StructureType::eVideoDecodeCapabilitiesKHR>
120062   {
120063     using Type = VideoDecodeCapabilitiesKHR;
120064   };
120065 
120066   struct VideoDecodeH264CapabilitiesKHR
120067   {
120068     using NativeType = VkVideoDecodeH264CapabilitiesKHR;
120069 
120070     static const bool                                  allowDuplicate = false;
120071     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264CapabilitiesKHR;
120072 
120073 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR120074     VULKAN_HPP_CONSTEXPR VideoDecodeH264CapabilitiesKHR( StdVideoH264LevelIdc           maxLevelIdc_            = {},
120075                                                          VULKAN_HPP_NAMESPACE::Offset2D fieldOffsetGranularity_ = {},
120076                                                          void *                         pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
120077       : pNext{ pNext_ }
120078       , maxLevelIdc{ maxLevelIdc_ }
120079       , fieldOffsetGranularity{ fieldOffsetGranularity_ }
120080     {
120081     }
120082 
120083     VULKAN_HPP_CONSTEXPR VideoDecodeH264CapabilitiesKHR( VideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120084 
VideoDecodeH264CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR120085     VideoDecodeH264CapabilitiesKHR( VkVideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120086       : VideoDecodeH264CapabilitiesKHR( *reinterpret_cast<VideoDecodeH264CapabilitiesKHR const *>( &rhs ) )
120087     {
120088     }
120089 
120090     VideoDecodeH264CapabilitiesKHR & operator=( VideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120091 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120092 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR120093     VideoDecodeH264CapabilitiesKHR & operator=( VkVideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120094     {
120095       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR const *>( &rhs );
120096       return *this;
120097     }
120098 
operator VkVideoDecodeH264CapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR120099     operator VkVideoDecodeH264CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
120100     {
120101       return *reinterpret_cast<const VkVideoDecodeH264CapabilitiesKHR *>( this );
120102     }
120103 
operator VkVideoDecodeH264CapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR120104     operator VkVideoDecodeH264CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
120105     {
120106       return *reinterpret_cast<VkVideoDecodeH264CapabilitiesKHR *>( this );
120107     }
120108 
120109 #if defined( VULKAN_HPP_USE_REFLECT )
120110 #  if 14 <= VULKAN_HPP_CPP_VERSION
120111     auto
120112 #  else
120113     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, StdVideoH264LevelIdc const &, VULKAN_HPP_NAMESPACE::Offset2D const &>
120114 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR120115       reflect() const VULKAN_HPP_NOEXCEPT
120116     {
120117       return std::tie( sType, pNext, maxLevelIdc, fieldOffsetGranularity );
120118     }
120119 #endif
120120 
120121 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR120122     std::strong_ordering operator<=>( VideoDecodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120123     {
120124       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
120125         return cmp;
120126       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
120127         return cmp;
120128       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ); cmp != 0 )
120129         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
120130       if ( auto cmp = fieldOffsetGranularity <=> rhs.fieldOffsetGranularity; cmp != 0 )
120131         return cmp;
120132 
120133       return std::strong_ordering::equivalent;
120134     }
120135 #endif
120136 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR120137     bool operator==( VideoDecodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120138     {
120139       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ) == 0 ) &&
120140              ( fieldOffsetGranularity == rhs.fieldOffsetGranularity );
120141     }
120142 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR120143     bool operator!=( VideoDecodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120144     {
120145       return !operator==( rhs );
120146     }
120147 
120148   public:
120149     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::eVideoDecodeH264CapabilitiesKHR;
120150     void *                              pNext                  = {};
120151     StdVideoH264LevelIdc                maxLevelIdc            = {};
120152     VULKAN_HPP_NAMESPACE::Offset2D      fieldOffsetGranularity = {};
120153   };
120154 
120155   template <>
120156   struct CppType<StructureType, StructureType::eVideoDecodeH264CapabilitiesKHR>
120157   {
120158     using Type = VideoDecodeH264CapabilitiesKHR;
120159   };
120160 
120161   struct VideoDecodeH264DpbSlotInfoKHR
120162   {
120163     using NativeType = VkVideoDecodeH264DpbSlotInfoKHR;
120164 
120165     static const bool                                  allowDuplicate = false;
120166     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264DpbSlotInfoKHR;
120167 
120168 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR120169     VULKAN_HPP_CONSTEXPR VideoDecodeH264DpbSlotInfoKHR( const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo_ = {},
120170                                                         const void *                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
120171       : pNext{ pNext_ }
120172       , pStdReferenceInfo{ pStdReferenceInfo_ }
120173     {
120174     }
120175 
120176     VULKAN_HPP_CONSTEXPR VideoDecodeH264DpbSlotInfoKHR( VideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120177 
VideoDecodeH264DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR120178     VideoDecodeH264DpbSlotInfoKHR( VkVideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120179       : VideoDecodeH264DpbSlotInfoKHR( *reinterpret_cast<VideoDecodeH264DpbSlotInfoKHR const *>( &rhs ) )
120180     {
120181     }
120182 
120183     VideoDecodeH264DpbSlotInfoKHR & operator=( VideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120184 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120185 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR120186     VideoDecodeH264DpbSlotInfoKHR & operator=( VkVideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120187     {
120188       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR const *>( &rhs );
120189       return *this;
120190     }
120191 
120192 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR120193     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120194     {
120195       pNext = pNext_;
120196       return *this;
120197     }
120198 
120199     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoKHR &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR120200       setPStdReferenceInfo( const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
120201     {
120202       pStdReferenceInfo = pStdReferenceInfo_;
120203       return *this;
120204     }
120205 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120206 
operator VkVideoDecodeH264DpbSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR120207     operator VkVideoDecodeH264DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120208     {
120209       return *reinterpret_cast<const VkVideoDecodeH264DpbSlotInfoKHR *>( this );
120210     }
120211 
operator VkVideoDecodeH264DpbSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR120212     operator VkVideoDecodeH264DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
120213     {
120214       return *reinterpret_cast<VkVideoDecodeH264DpbSlotInfoKHR *>( this );
120215     }
120216 
120217 #if defined( VULKAN_HPP_USE_REFLECT )
120218 #  if 14 <= VULKAN_HPP_CPP_VERSION
120219     auto
120220 #  else
120221     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoDecodeH264ReferenceInfo * const &>
120222 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR120223       reflect() const VULKAN_HPP_NOEXCEPT
120224     {
120225       return std::tie( sType, pNext, pStdReferenceInfo );
120226     }
120227 #endif
120228 
120229 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120230     auto operator<=>( VideoDecodeH264DpbSlotInfoKHR const & ) const = default;
120231 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR120232     bool operator==( VideoDecodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120233     {
120234 #  if defined( VULKAN_HPP_USE_REFLECT )
120235       return this->reflect() == rhs.reflect();
120236 #  else
120237       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo );
120238 #  endif
120239     }
120240 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR120241     bool operator!=( VideoDecodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120242     {
120243       return !operator==( rhs );
120244     }
120245 #endif
120246 
120247   public:
120248     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoDecodeH264DpbSlotInfoKHR;
120249     const void *                            pNext             = {};
120250     const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo = {};
120251   };
120252 
120253   template <>
120254   struct CppType<StructureType, StructureType::eVideoDecodeH264DpbSlotInfoKHR>
120255   {
120256     using Type = VideoDecodeH264DpbSlotInfoKHR;
120257   };
120258 
120259   struct VideoDecodeH264PictureInfoKHR
120260   {
120261     using NativeType = VkVideoDecodeH264PictureInfoKHR;
120262 
120263     static const bool                                  allowDuplicate = false;
120264     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264PictureInfoKHR;
120265 
120266 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120267     VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureInfoKHR( const StdVideoDecodeH264PictureInfo * pStdPictureInfo_ = {},
120268                                                         uint32_t                              sliceCount_      = {},
120269                                                         const uint32_t *                      pSliceOffsets_   = {},
120270                                                         const void *                          pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
120271       : pNext{ pNext_ }
120272       , pStdPictureInfo{ pStdPictureInfo_ }
120273       , sliceCount{ sliceCount_ }
120274       , pSliceOffsets{ pSliceOffsets_ }
120275     {
120276     }
120277 
120278     VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureInfoKHR( VideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120279 
VideoDecodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120280     VideoDecodeH264PictureInfoKHR( VkVideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120281       : VideoDecodeH264PictureInfoKHR( *reinterpret_cast<VideoDecodeH264PictureInfoKHR const *>( &rhs ) )
120282     {
120283     }
120284 
120285 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120286     VideoDecodeH264PictureInfoKHR( const StdVideoDecodeH264PictureInfo *                                 pStdPictureInfo_,
120287                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & sliceOffsets_,
120288                                    const void *                                                          pNext_ = nullptr )
120289       : pNext( pNext_ ), pStdPictureInfo( pStdPictureInfo_ ), sliceCount( static_cast<uint32_t>( sliceOffsets_.size() ) ), pSliceOffsets( sliceOffsets_.data() )
120290     {
120291     }
120292 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
120293 
120294     VideoDecodeH264PictureInfoKHR & operator=( VideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120295 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120296 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120297     VideoDecodeH264PictureInfoKHR & operator=( VkVideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120298     {
120299       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR const *>( &rhs );
120300       return *this;
120301     }
120302 
120303 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120304     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120305     {
120306       pNext = pNext_;
120307       return *this;
120308     }
120309 
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120310     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setPStdPictureInfo( const StdVideoDecodeH264PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
120311     {
120312       pStdPictureInfo = pStdPictureInfo_;
120313       return *this;
120314     }
120315 
setSliceCountVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120316     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setSliceCount( uint32_t sliceCount_ ) VULKAN_HPP_NOEXCEPT
120317     {
120318       sliceCount = sliceCount_;
120319       return *this;
120320     }
120321 
setPSliceOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120322     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setPSliceOffsets( const uint32_t * pSliceOffsets_ ) VULKAN_HPP_NOEXCEPT
120323     {
120324       pSliceOffsets = pSliceOffsets_;
120325       return *this;
120326     }
120327 
120328 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSliceOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120329     VideoDecodeH264PictureInfoKHR & setSliceOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & sliceOffsets_ ) VULKAN_HPP_NOEXCEPT
120330     {
120331       sliceCount    = static_cast<uint32_t>( sliceOffsets_.size() );
120332       pSliceOffsets = sliceOffsets_.data();
120333       return *this;
120334     }
120335 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
120336 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120337 
operator VkVideoDecodeH264PictureInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120338     operator VkVideoDecodeH264PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120339     {
120340       return *reinterpret_cast<const VkVideoDecodeH264PictureInfoKHR *>( this );
120341     }
120342 
operator VkVideoDecodeH264PictureInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120343     operator VkVideoDecodeH264PictureInfoKHR &() VULKAN_HPP_NOEXCEPT
120344     {
120345       return *reinterpret_cast<VkVideoDecodeH264PictureInfoKHR *>( this );
120346     }
120347 
120348 #if defined( VULKAN_HPP_USE_REFLECT )
120349 #  if 14 <= VULKAN_HPP_CPP_VERSION
120350     auto
120351 #  else
120352     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
120353                const void * const &,
120354                const StdVideoDecodeH264PictureInfo * const &,
120355                uint32_t const &,
120356                const uint32_t * const &>
120357 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120358       reflect() const VULKAN_HPP_NOEXCEPT
120359     {
120360       return std::tie( sType, pNext, pStdPictureInfo, sliceCount, pSliceOffsets );
120361     }
120362 #endif
120363 
120364 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120365     auto operator<=>( VideoDecodeH264PictureInfoKHR const & ) const = default;
120366 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120367     bool operator==( VideoDecodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120368     {
120369 #  if defined( VULKAN_HPP_USE_REFLECT )
120370       return this->reflect() == rhs.reflect();
120371 #  else
120372       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && ( sliceCount == rhs.sliceCount ) &&
120373              ( pSliceOffsets == rhs.pSliceOffsets );
120374 #  endif
120375     }
120376 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR120377     bool operator!=( VideoDecodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120378     {
120379       return !operator==( rhs );
120380     }
120381 #endif
120382 
120383   public:
120384     VULKAN_HPP_NAMESPACE::StructureType   sType           = StructureType::eVideoDecodeH264PictureInfoKHR;
120385     const void *                          pNext           = {};
120386     const StdVideoDecodeH264PictureInfo * pStdPictureInfo = {};
120387     uint32_t                              sliceCount      = {};
120388     const uint32_t *                      pSliceOffsets   = {};
120389   };
120390 
120391   template <>
120392   struct CppType<StructureType, StructureType::eVideoDecodeH264PictureInfoKHR>
120393   {
120394     using Type = VideoDecodeH264PictureInfoKHR;
120395   };
120396 
120397   struct VideoDecodeH264ProfileInfoKHR
120398   {
120399     using NativeType = VkVideoDecodeH264ProfileInfoKHR;
120400 
120401     static const bool                                  allowDuplicate = false;
120402     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264ProfileInfoKHR;
120403 
120404 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120405     VULKAN_HPP_CONSTEXPR VideoDecodeH264ProfileInfoKHR( StdVideoH264ProfileIdc                                        stdProfileIdc_ = {},
120406                                                         VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout_ =
120407                                                           VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR::eProgressive,
120408                                                         const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
120409       : pNext{ pNext_ }
120410       , stdProfileIdc{ stdProfileIdc_ }
120411       , pictureLayout{ pictureLayout_ }
120412     {
120413     }
120414 
120415     VULKAN_HPP_CONSTEXPR VideoDecodeH264ProfileInfoKHR( VideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120416 
VideoDecodeH264ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120417     VideoDecodeH264ProfileInfoKHR( VkVideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120418       : VideoDecodeH264ProfileInfoKHR( *reinterpret_cast<VideoDecodeH264ProfileInfoKHR const *>( &rhs ) )
120419     {
120420     }
120421 
120422     VideoDecodeH264ProfileInfoKHR & operator=( VideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120423 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120424 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120425     VideoDecodeH264ProfileInfoKHR & operator=( VkVideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120426     {
120427       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR const *>( &rhs );
120428       return *this;
120429     }
120430 
120431 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120432     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120433     {
120434       pNext = pNext_;
120435       return *this;
120436     }
120437 
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120438     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR & setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
120439     {
120440       stdProfileIdc = stdProfileIdc_;
120441       return *this;
120442     }
120443 
120444     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR &
setPictureLayoutVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120445       setPictureLayout( VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout_ ) VULKAN_HPP_NOEXCEPT
120446     {
120447       pictureLayout = pictureLayout_;
120448       return *this;
120449     }
120450 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120451 
operator VkVideoDecodeH264ProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120452     operator VkVideoDecodeH264ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120453     {
120454       return *reinterpret_cast<const VkVideoDecodeH264ProfileInfoKHR *>( this );
120455     }
120456 
operator VkVideoDecodeH264ProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120457     operator VkVideoDecodeH264ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
120458     {
120459       return *reinterpret_cast<VkVideoDecodeH264ProfileInfoKHR *>( this );
120460     }
120461 
120462 #if defined( VULKAN_HPP_USE_REFLECT )
120463 #  if 14 <= VULKAN_HPP_CPP_VERSION
120464     auto
120465 #  else
120466     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
120467                const void * const &,
120468                StdVideoH264ProfileIdc const &,
120469                VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR const &>
120470 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120471       reflect() const VULKAN_HPP_NOEXCEPT
120472     {
120473       return std::tie( sType, pNext, stdProfileIdc, pictureLayout );
120474     }
120475 #endif
120476 
120477 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120478     std::strong_ordering operator<=>( VideoDecodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120479     {
120480       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
120481         return cmp;
120482       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
120483         return cmp;
120484       if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ); cmp != 0 )
120485         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
120486       if ( auto cmp = pictureLayout <=> rhs.pictureLayout; cmp != 0 )
120487         return cmp;
120488 
120489       return std::strong_ordering::equivalent;
120490     }
120491 #endif
120492 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120493     bool operator==( VideoDecodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120494     {
120495       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ) == 0 ) &&
120496              ( pictureLayout == rhs.pictureLayout );
120497     }
120498 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR120499     bool operator!=( VideoDecodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120500     {
120501       return !operator==( rhs );
120502     }
120503 
120504   public:
120505     VULKAN_HPP_NAMESPACE::StructureType                           sType         = StructureType::eVideoDecodeH264ProfileInfoKHR;
120506     const void *                                                  pNext         = {};
120507     StdVideoH264ProfileIdc                                        stdProfileIdc = {};
120508     VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout = VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR::eProgressive;
120509   };
120510 
120511   template <>
120512   struct CppType<StructureType, StructureType::eVideoDecodeH264ProfileInfoKHR>
120513   {
120514     using Type = VideoDecodeH264ProfileInfoKHR;
120515   };
120516 
120517   struct VideoDecodeH264SessionParametersAddInfoKHR
120518   {
120519     using NativeType = VkVideoDecodeH264SessionParametersAddInfoKHR;
120520 
120521     static const bool                                  allowDuplicate = false;
120522     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264SessionParametersAddInfoKHR;
120523 
120524 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120525     VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersAddInfoKHR( uint32_t                                 stdSPSCount_ = {},
120526                                                                      const StdVideoH264SequenceParameterSet * pStdSPSs_    = {},
120527                                                                      uint32_t                                 stdPPSCount_ = {},
120528                                                                      const StdVideoH264PictureParameterSet *  pStdPPSs_    = {},
120529                                                                      const void *                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
120530       : pNext{ pNext_ }
120531       , stdSPSCount{ stdSPSCount_ }
120532       , pStdSPSs{ pStdSPSs_ }
120533       , stdPPSCount{ stdPPSCount_ }
120534       , pStdPPSs{ pStdPPSs_ }
120535     {
120536     }
120537 
120538     VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersAddInfoKHR( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120539 
VideoDecodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120540     VideoDecodeH264SessionParametersAddInfoKHR( VkVideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120541       : VideoDecodeH264SessionParametersAddInfoKHR( *reinterpret_cast<VideoDecodeH264SessionParametersAddInfoKHR const *>( &rhs ) )
120542     {
120543     }
120544 
120545 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120546     VideoDecodeH264SessionParametersAddInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & stdSPSs_,
120547                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const &  stdPPSs_ = {},
120548                                                 const void *                                                                                  pNext_ = nullptr )
120549       : pNext( pNext_ )
120550       , stdSPSCount( static_cast<uint32_t>( stdSPSs_.size() ) )
120551       , pStdSPSs( stdSPSs_.data() )
120552       , stdPPSCount( static_cast<uint32_t>( stdPPSs_.size() ) )
120553       , pStdPPSs( stdPPSs_.data() )
120554     {
120555     }
120556 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
120557 
120558     VideoDecodeH264SessionParametersAddInfoKHR & operator=( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120559 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120560 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120561     VideoDecodeH264SessionParametersAddInfoKHR & operator=( VkVideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120562     {
120563       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR const *>( &rhs );
120564       return *this;
120565     }
120566 
120567 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120568     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120569     {
120570       pNext = pNext_;
120571       return *this;
120572     }
120573 
setStdSPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120574     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) VULKAN_HPP_NOEXCEPT
120575     {
120576       stdSPSCount = stdSPSCount_;
120577       return *this;
120578     }
120579 
setPStdSPSsVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120580     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setPStdSPSs( const StdVideoH264SequenceParameterSet * pStdSPSs_ ) VULKAN_HPP_NOEXCEPT
120581     {
120582       pStdSPSs = pStdSPSs_;
120583       return *this;
120584     }
120585 
120586 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
120587     VideoDecodeH264SessionParametersAddInfoKHR &
setStdSPSsVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120588       setStdSPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT
120589     {
120590       stdSPSCount = static_cast<uint32_t>( stdSPSs_.size() );
120591       pStdSPSs    = stdSPSs_.data();
120592       return *this;
120593     }
120594 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
120595 
setStdPPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120596     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) VULKAN_HPP_NOEXCEPT
120597     {
120598       stdPPSCount = stdPPSCount_;
120599       return *this;
120600     }
120601 
setPStdPPSsVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120602     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setPStdPPSs( const StdVideoH264PictureParameterSet * pStdPPSs_ ) VULKAN_HPP_NOEXCEPT
120603     {
120604       pStdPPSs = pStdPPSs_;
120605       return *this;
120606     }
120607 
120608 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
120609     VideoDecodeH264SessionParametersAddInfoKHR &
setStdPPSsVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120610       setStdPPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT
120611     {
120612       stdPPSCount = static_cast<uint32_t>( stdPPSs_.size() );
120613       pStdPPSs    = stdPPSs_.data();
120614       return *this;
120615     }
120616 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
120617 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120618 
operator VkVideoDecodeH264SessionParametersAddInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120619     operator VkVideoDecodeH264SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120620     {
120621       return *reinterpret_cast<const VkVideoDecodeH264SessionParametersAddInfoKHR *>( this );
120622     }
120623 
operator VkVideoDecodeH264SessionParametersAddInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120624     operator VkVideoDecodeH264SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT
120625     {
120626       return *reinterpret_cast<VkVideoDecodeH264SessionParametersAddInfoKHR *>( this );
120627     }
120628 
120629 #if defined( VULKAN_HPP_USE_REFLECT )
120630 #  if 14 <= VULKAN_HPP_CPP_VERSION
120631     auto
120632 #  else
120633     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
120634                const void * const &,
120635                uint32_t const &,
120636                const StdVideoH264SequenceParameterSet * const &,
120637                uint32_t const &,
120638                const StdVideoH264PictureParameterSet * const &>
120639 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120640       reflect() const VULKAN_HPP_NOEXCEPT
120641     {
120642       return std::tie( sType, pNext, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs );
120643     }
120644 #endif
120645 
120646 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120647     auto operator<=>( VideoDecodeH264SessionParametersAddInfoKHR const & ) const = default;
120648 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120649     bool operator==( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120650     {
120651 #  if defined( VULKAN_HPP_USE_REFLECT )
120652       return this->reflect() == rhs.reflect();
120653 #  else
120654       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) &&
120655              ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs );
120656 #  endif
120657     }
120658 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR120659     bool operator!=( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120660     {
120661       return !operator==( rhs );
120662     }
120663 #endif
120664 
120665   public:
120666     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoDecodeH264SessionParametersAddInfoKHR;
120667     const void *                             pNext       = {};
120668     uint32_t                                 stdSPSCount = {};
120669     const StdVideoH264SequenceParameterSet * pStdSPSs    = {};
120670     uint32_t                                 stdPPSCount = {};
120671     const StdVideoH264PictureParameterSet *  pStdPPSs    = {};
120672   };
120673 
120674   template <>
120675   struct CppType<StructureType, StructureType::eVideoDecodeH264SessionParametersAddInfoKHR>
120676   {
120677     using Type = VideoDecodeH264SessionParametersAddInfoKHR;
120678   };
120679 
120680   struct VideoDecodeH264SessionParametersCreateInfoKHR
120681   {
120682     using NativeType = VkVideoDecodeH264SessionParametersCreateInfoKHR;
120683 
120684     static const bool                                  allowDuplicate = false;
120685     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264SessionParametersCreateInfoKHR;
120686 
120687 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
120688     VULKAN_HPP_CONSTEXPR
VideoDecodeH264SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120689       VideoDecodeH264SessionParametersCreateInfoKHR( uint32_t                                                                 maxStdSPSCount_     = {},
120690                                                      uint32_t                                                                 maxStdPPSCount_     = {},
120691                                                      const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR * pParametersAddInfo_ = {},
120692                                                      const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
120693       : pNext{ pNext_ }
120694       , maxStdSPSCount{ maxStdSPSCount_ }
120695       , maxStdPPSCount{ maxStdPPSCount_ }
120696       , pParametersAddInfo{ pParametersAddInfo_ }
120697     {
120698     }
120699 
120700     VULKAN_HPP_CONSTEXPR
120701       VideoDecodeH264SessionParametersCreateInfoKHR( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120702 
VideoDecodeH264SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120703     VideoDecodeH264SessionParametersCreateInfoKHR( VkVideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120704       : VideoDecodeH264SessionParametersCreateInfoKHR( *reinterpret_cast<VideoDecodeH264SessionParametersCreateInfoKHR const *>( &rhs ) )
120705     {
120706     }
120707 
120708     VideoDecodeH264SessionParametersCreateInfoKHR & operator=( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120709 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120710 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120711     VideoDecodeH264SessionParametersCreateInfoKHR & operator=( VkVideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120712     {
120713       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR const *>( &rhs );
120714       return *this;
120715     }
120716 
120717 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120718     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120719     {
120720       pNext = pNext_;
120721       return *this;
120722     }
120723 
setMaxStdSPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120724     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) VULKAN_HPP_NOEXCEPT
120725     {
120726       maxStdSPSCount = maxStdSPSCount_;
120727       return *this;
120728     }
120729 
setMaxStdPPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120730     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) VULKAN_HPP_NOEXCEPT
120731     {
120732       maxStdPPSCount = maxStdPPSCount_;
120733       return *this;
120734     }
120735 
120736     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR &
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120737       setPParametersAddInfo( const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
120738     {
120739       pParametersAddInfo = pParametersAddInfo_;
120740       return *this;
120741     }
120742 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120743 
operator VkVideoDecodeH264SessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120744     operator VkVideoDecodeH264SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120745     {
120746       return *reinterpret_cast<const VkVideoDecodeH264SessionParametersCreateInfoKHR *>( this );
120747     }
120748 
operator VkVideoDecodeH264SessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120749     operator VkVideoDecodeH264SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
120750     {
120751       return *reinterpret_cast<VkVideoDecodeH264SessionParametersCreateInfoKHR *>( this );
120752     }
120753 
120754 #if defined( VULKAN_HPP_USE_REFLECT )
120755 #  if 14 <= VULKAN_HPP_CPP_VERSION
120756     auto
120757 #  else
120758     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
120759                const void * const &,
120760                uint32_t const &,
120761                uint32_t const &,
120762                const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR * const &>
120763 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120764       reflect() const VULKAN_HPP_NOEXCEPT
120765     {
120766       return std::tie( sType, pNext, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo );
120767     }
120768 #endif
120769 
120770 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120771     auto operator<=>( VideoDecodeH264SessionParametersCreateInfoKHR const & ) const = default;
120772 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120773     bool operator==( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120774     {
120775 #  if defined( VULKAN_HPP_USE_REFLECT )
120776       return this->reflect() == rhs.reflect();
120777 #  else
120778       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) && ( maxStdPPSCount == rhs.maxStdPPSCount ) &&
120779              ( pParametersAddInfo == rhs.pParametersAddInfo );
120780 #  endif
120781     }
120782 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR120783     bool operator!=( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120784     {
120785       return !operator==( rhs );
120786     }
120787 #endif
120788 
120789   public:
120790     VULKAN_HPP_NAMESPACE::StructureType                                      sType              = StructureType::eVideoDecodeH264SessionParametersCreateInfoKHR;
120791     const void *                                                             pNext              = {};
120792     uint32_t                                                                 maxStdSPSCount     = {};
120793     uint32_t                                                                 maxStdPPSCount     = {};
120794     const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR * pParametersAddInfo = {};
120795   };
120796 
120797   template <>
120798   struct CppType<StructureType, StructureType::eVideoDecodeH264SessionParametersCreateInfoKHR>
120799   {
120800     using Type = VideoDecodeH264SessionParametersCreateInfoKHR;
120801   };
120802 
120803   struct VideoDecodeH265CapabilitiesKHR
120804   {
120805     using NativeType = VkVideoDecodeH265CapabilitiesKHR;
120806 
120807     static const bool                                  allowDuplicate = false;
120808     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265CapabilitiesKHR;
120809 
120810 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR120811     VULKAN_HPP_CONSTEXPR VideoDecodeH265CapabilitiesKHR( StdVideoH265LevelIdc maxLevelIdc_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
120812       : pNext{ pNext_ }
120813       , maxLevelIdc{ maxLevelIdc_ }
120814     {
120815     }
120816 
120817     VULKAN_HPP_CONSTEXPR VideoDecodeH265CapabilitiesKHR( VideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120818 
VideoDecodeH265CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR120819     VideoDecodeH265CapabilitiesKHR( VkVideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120820       : VideoDecodeH265CapabilitiesKHR( *reinterpret_cast<VideoDecodeH265CapabilitiesKHR const *>( &rhs ) )
120821     {
120822     }
120823 
120824     VideoDecodeH265CapabilitiesKHR & operator=( VideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120825 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120826 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR120827     VideoDecodeH265CapabilitiesKHR & operator=( VkVideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120828     {
120829       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR const *>( &rhs );
120830       return *this;
120831     }
120832 
operator VkVideoDecodeH265CapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR120833     operator VkVideoDecodeH265CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
120834     {
120835       return *reinterpret_cast<const VkVideoDecodeH265CapabilitiesKHR *>( this );
120836     }
120837 
operator VkVideoDecodeH265CapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR120838     operator VkVideoDecodeH265CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
120839     {
120840       return *reinterpret_cast<VkVideoDecodeH265CapabilitiesKHR *>( this );
120841     }
120842 
120843 #if defined( VULKAN_HPP_USE_REFLECT )
120844 #  if 14 <= VULKAN_HPP_CPP_VERSION
120845     auto
120846 #  else
120847     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, StdVideoH265LevelIdc const &>
120848 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR120849       reflect() const VULKAN_HPP_NOEXCEPT
120850     {
120851       return std::tie( sType, pNext, maxLevelIdc );
120852     }
120853 #endif
120854 
120855 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR120856     std::strong_ordering operator<=>( VideoDecodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120857     {
120858       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
120859         return cmp;
120860       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
120861         return cmp;
120862       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ); cmp != 0 )
120863         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
120864 
120865       return std::strong_ordering::equivalent;
120866     }
120867 #endif
120868 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR120869     bool operator==( VideoDecodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120870     {
120871       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ) == 0 );
120872     }
120873 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR120874     bool operator!=( VideoDecodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120875     {
120876       return !operator==( rhs );
120877     }
120878 
120879   public:
120880     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eVideoDecodeH265CapabilitiesKHR;
120881     void *                              pNext       = {};
120882     StdVideoH265LevelIdc                maxLevelIdc = {};
120883   };
120884 
120885   template <>
120886   struct CppType<StructureType, StructureType::eVideoDecodeH265CapabilitiesKHR>
120887   {
120888     using Type = VideoDecodeH265CapabilitiesKHR;
120889   };
120890 
120891   struct VideoDecodeH265DpbSlotInfoKHR
120892   {
120893     using NativeType = VkVideoDecodeH265DpbSlotInfoKHR;
120894 
120895     static const bool                                  allowDuplicate = false;
120896     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265DpbSlotInfoKHR;
120897 
120898 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR120899     VULKAN_HPP_CONSTEXPR VideoDecodeH265DpbSlotInfoKHR( const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo_ = {},
120900                                                         const void *                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
120901       : pNext{ pNext_ }
120902       , pStdReferenceInfo{ pStdReferenceInfo_ }
120903     {
120904     }
120905 
120906     VULKAN_HPP_CONSTEXPR VideoDecodeH265DpbSlotInfoKHR( VideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120907 
VideoDecodeH265DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR120908     VideoDecodeH265DpbSlotInfoKHR( VkVideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120909       : VideoDecodeH265DpbSlotInfoKHR( *reinterpret_cast<VideoDecodeH265DpbSlotInfoKHR const *>( &rhs ) )
120910     {
120911     }
120912 
120913     VideoDecodeH265DpbSlotInfoKHR & operator=( VideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120914 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120915 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR120916     VideoDecodeH265DpbSlotInfoKHR & operator=( VkVideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120917     {
120918       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR const *>( &rhs );
120919       return *this;
120920     }
120921 
120922 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR120923     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120924     {
120925       pNext = pNext_;
120926       return *this;
120927     }
120928 
120929     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoKHR &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR120930       setPStdReferenceInfo( const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
120931     {
120932       pStdReferenceInfo = pStdReferenceInfo_;
120933       return *this;
120934     }
120935 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120936 
operator VkVideoDecodeH265DpbSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR120937     operator VkVideoDecodeH265DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120938     {
120939       return *reinterpret_cast<const VkVideoDecodeH265DpbSlotInfoKHR *>( this );
120940     }
120941 
operator VkVideoDecodeH265DpbSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR120942     operator VkVideoDecodeH265DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
120943     {
120944       return *reinterpret_cast<VkVideoDecodeH265DpbSlotInfoKHR *>( this );
120945     }
120946 
120947 #if defined( VULKAN_HPP_USE_REFLECT )
120948 #  if 14 <= VULKAN_HPP_CPP_VERSION
120949     auto
120950 #  else
120951     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoDecodeH265ReferenceInfo * const &>
120952 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR120953       reflect() const VULKAN_HPP_NOEXCEPT
120954     {
120955       return std::tie( sType, pNext, pStdReferenceInfo );
120956     }
120957 #endif
120958 
120959 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120960     auto operator<=>( VideoDecodeH265DpbSlotInfoKHR const & ) const = default;
120961 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR120962     bool operator==( VideoDecodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120963     {
120964 #  if defined( VULKAN_HPP_USE_REFLECT )
120965       return this->reflect() == rhs.reflect();
120966 #  else
120967       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo );
120968 #  endif
120969     }
120970 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR120971     bool operator!=( VideoDecodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120972     {
120973       return !operator==( rhs );
120974     }
120975 #endif
120976 
120977   public:
120978     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoDecodeH265DpbSlotInfoKHR;
120979     const void *                            pNext             = {};
120980     const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo = {};
120981   };
120982 
120983   template <>
120984   struct CppType<StructureType, StructureType::eVideoDecodeH265DpbSlotInfoKHR>
120985   {
120986     using Type = VideoDecodeH265DpbSlotInfoKHR;
120987   };
120988 
120989   struct VideoDecodeH265PictureInfoKHR
120990   {
120991     using NativeType = VkVideoDecodeH265PictureInfoKHR;
120992 
120993     static const bool                                  allowDuplicate = false;
120994     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265PictureInfoKHR;
120995 
120996 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR120997     VULKAN_HPP_CONSTEXPR VideoDecodeH265PictureInfoKHR( const StdVideoDecodeH265PictureInfo * pStdPictureInfo_      = {},
120998                                                         uint32_t                              sliceSegmentCount_    = {},
120999                                                         const uint32_t *                      pSliceSegmentOffsets_ = {},
121000                                                         const void *                          pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
121001       : pNext{ pNext_ }
121002       , pStdPictureInfo{ pStdPictureInfo_ }
121003       , sliceSegmentCount{ sliceSegmentCount_ }
121004       , pSliceSegmentOffsets{ pSliceSegmentOffsets_ }
121005     {
121006     }
121007 
121008     VULKAN_HPP_CONSTEXPR VideoDecodeH265PictureInfoKHR( VideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121009 
VideoDecodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121010     VideoDecodeH265PictureInfoKHR( VkVideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121011       : VideoDecodeH265PictureInfoKHR( *reinterpret_cast<VideoDecodeH265PictureInfoKHR const *>( &rhs ) )
121012     {
121013     }
121014 
121015 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121016     VideoDecodeH265PictureInfoKHR( const StdVideoDecodeH265PictureInfo *                                 pStdPictureInfo_,
121017                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & sliceSegmentOffsets_,
121018                                    const void *                                                          pNext_ = nullptr )
121019       : pNext( pNext_ )
121020       , pStdPictureInfo( pStdPictureInfo_ )
121021       , sliceSegmentCount( static_cast<uint32_t>( sliceSegmentOffsets_.size() ) )
121022       , pSliceSegmentOffsets( sliceSegmentOffsets_.data() )
121023     {
121024     }
121025 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
121026 
121027     VideoDecodeH265PictureInfoKHR & operator=( VideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121028 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121029 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121030     VideoDecodeH265PictureInfoKHR & operator=( VkVideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121031     {
121032       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR const *>( &rhs );
121033       return *this;
121034     }
121035 
121036 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121037     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121038     {
121039       pNext = pNext_;
121040       return *this;
121041     }
121042 
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121043     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setPStdPictureInfo( const StdVideoDecodeH265PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
121044     {
121045       pStdPictureInfo = pStdPictureInfo_;
121046       return *this;
121047     }
121048 
setSliceSegmentCountVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121049     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setSliceSegmentCount( uint32_t sliceSegmentCount_ ) VULKAN_HPP_NOEXCEPT
121050     {
121051       sliceSegmentCount = sliceSegmentCount_;
121052       return *this;
121053     }
121054 
setPSliceSegmentOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121055     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setPSliceSegmentOffsets( const uint32_t * pSliceSegmentOffsets_ ) VULKAN_HPP_NOEXCEPT
121056     {
121057       pSliceSegmentOffsets = pSliceSegmentOffsets_;
121058       return *this;
121059     }
121060 
121061 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
121062     VideoDecodeH265PictureInfoKHR &
setSliceSegmentOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121063       setSliceSegmentOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & sliceSegmentOffsets_ ) VULKAN_HPP_NOEXCEPT
121064     {
121065       sliceSegmentCount    = static_cast<uint32_t>( sliceSegmentOffsets_.size() );
121066       pSliceSegmentOffsets = sliceSegmentOffsets_.data();
121067       return *this;
121068     }
121069 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
121070 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121071 
operator VkVideoDecodeH265PictureInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121072     operator VkVideoDecodeH265PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121073     {
121074       return *reinterpret_cast<const VkVideoDecodeH265PictureInfoKHR *>( this );
121075     }
121076 
operator VkVideoDecodeH265PictureInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121077     operator VkVideoDecodeH265PictureInfoKHR &() VULKAN_HPP_NOEXCEPT
121078     {
121079       return *reinterpret_cast<VkVideoDecodeH265PictureInfoKHR *>( this );
121080     }
121081 
121082 #if defined( VULKAN_HPP_USE_REFLECT )
121083 #  if 14 <= VULKAN_HPP_CPP_VERSION
121084     auto
121085 #  else
121086     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
121087                const void * const &,
121088                const StdVideoDecodeH265PictureInfo * const &,
121089                uint32_t const &,
121090                const uint32_t * const &>
121091 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121092       reflect() const VULKAN_HPP_NOEXCEPT
121093     {
121094       return std::tie( sType, pNext, pStdPictureInfo, sliceSegmentCount, pSliceSegmentOffsets );
121095     }
121096 #endif
121097 
121098 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121099     auto operator<=>( VideoDecodeH265PictureInfoKHR const & ) const = default;
121100 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121101     bool operator==( VideoDecodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121102     {
121103 #  if defined( VULKAN_HPP_USE_REFLECT )
121104       return this->reflect() == rhs.reflect();
121105 #  else
121106       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && ( sliceSegmentCount == rhs.sliceSegmentCount ) &&
121107              ( pSliceSegmentOffsets == rhs.pSliceSegmentOffsets );
121108 #  endif
121109     }
121110 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR121111     bool operator!=( VideoDecodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121112     {
121113       return !operator==( rhs );
121114     }
121115 #endif
121116 
121117   public:
121118     VULKAN_HPP_NAMESPACE::StructureType   sType                = StructureType::eVideoDecodeH265PictureInfoKHR;
121119     const void *                          pNext                = {};
121120     const StdVideoDecodeH265PictureInfo * pStdPictureInfo      = {};
121121     uint32_t                              sliceSegmentCount    = {};
121122     const uint32_t *                      pSliceSegmentOffsets = {};
121123   };
121124 
121125   template <>
121126   struct CppType<StructureType, StructureType::eVideoDecodeH265PictureInfoKHR>
121127   {
121128     using Type = VideoDecodeH265PictureInfoKHR;
121129   };
121130 
121131   struct VideoDecodeH265ProfileInfoKHR
121132   {
121133     using NativeType = VkVideoDecodeH265ProfileInfoKHR;
121134 
121135     static const bool                                  allowDuplicate = false;
121136     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265ProfileInfoKHR;
121137 
121138 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121139     VULKAN_HPP_CONSTEXPR VideoDecodeH265ProfileInfoKHR( StdVideoH265ProfileIdc stdProfileIdc_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
121140       : pNext{ pNext_ }
121141       , stdProfileIdc{ stdProfileIdc_ }
121142     {
121143     }
121144 
121145     VULKAN_HPP_CONSTEXPR VideoDecodeH265ProfileInfoKHR( VideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121146 
VideoDecodeH265ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121147     VideoDecodeH265ProfileInfoKHR( VkVideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121148       : VideoDecodeH265ProfileInfoKHR( *reinterpret_cast<VideoDecodeH265ProfileInfoKHR const *>( &rhs ) )
121149     {
121150     }
121151 
121152     VideoDecodeH265ProfileInfoKHR & operator=( VideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121153 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121154 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121155     VideoDecodeH265ProfileInfoKHR & operator=( VkVideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121156     {
121157       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR const *>( &rhs );
121158       return *this;
121159     }
121160 
121161 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121162     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121163     {
121164       pNext = pNext_;
121165       return *this;
121166     }
121167 
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121168     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileInfoKHR & setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
121169     {
121170       stdProfileIdc = stdProfileIdc_;
121171       return *this;
121172     }
121173 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121174 
operator VkVideoDecodeH265ProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121175     operator VkVideoDecodeH265ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121176     {
121177       return *reinterpret_cast<const VkVideoDecodeH265ProfileInfoKHR *>( this );
121178     }
121179 
operator VkVideoDecodeH265ProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121180     operator VkVideoDecodeH265ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
121181     {
121182       return *reinterpret_cast<VkVideoDecodeH265ProfileInfoKHR *>( this );
121183     }
121184 
121185 #if defined( VULKAN_HPP_USE_REFLECT )
121186 #  if 14 <= VULKAN_HPP_CPP_VERSION
121187     auto
121188 #  else
121189     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoH265ProfileIdc const &>
121190 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121191       reflect() const VULKAN_HPP_NOEXCEPT
121192     {
121193       return std::tie( sType, pNext, stdProfileIdc );
121194     }
121195 #endif
121196 
121197 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121198     std::strong_ordering operator<=>( VideoDecodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121199     {
121200       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
121201         return cmp;
121202       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
121203         return cmp;
121204       if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ); cmp != 0 )
121205         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
121206 
121207       return std::strong_ordering::equivalent;
121208     }
121209 #endif
121210 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121211     bool operator==( VideoDecodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121212     {
121213       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ) == 0 );
121214     }
121215 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR121216     bool operator!=( VideoDecodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121217     {
121218       return !operator==( rhs );
121219     }
121220 
121221   public:
121222     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eVideoDecodeH265ProfileInfoKHR;
121223     const void *                        pNext         = {};
121224     StdVideoH265ProfileIdc              stdProfileIdc = {};
121225   };
121226 
121227   template <>
121228   struct CppType<StructureType, StructureType::eVideoDecodeH265ProfileInfoKHR>
121229   {
121230     using Type = VideoDecodeH265ProfileInfoKHR;
121231   };
121232 
121233   struct VideoDecodeH265SessionParametersAddInfoKHR
121234   {
121235     using NativeType = VkVideoDecodeH265SessionParametersAddInfoKHR;
121236 
121237     static const bool                                  allowDuplicate = false;
121238     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265SessionParametersAddInfoKHR;
121239 
121240 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121241     VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersAddInfoKHR( uint32_t                                 stdVPSCount_ = {},
121242                                                                      const StdVideoH265VideoParameterSet *    pStdVPSs_    = {},
121243                                                                      uint32_t                                 stdSPSCount_ = {},
121244                                                                      const StdVideoH265SequenceParameterSet * pStdSPSs_    = {},
121245                                                                      uint32_t                                 stdPPSCount_ = {},
121246                                                                      const StdVideoH265PictureParameterSet *  pStdPPSs_    = {},
121247                                                                      const void *                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
121248       : pNext{ pNext_ }
121249       , stdVPSCount{ stdVPSCount_ }
121250       , pStdVPSs{ pStdVPSs_ }
121251       , stdSPSCount{ stdSPSCount_ }
121252       , pStdSPSs{ pStdSPSs_ }
121253       , stdPPSCount{ stdPPSCount_ }
121254       , pStdPPSs{ pStdPPSs_ }
121255     {
121256     }
121257 
121258     VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersAddInfoKHR( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121259 
VideoDecodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121260     VideoDecodeH265SessionParametersAddInfoKHR( VkVideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121261       : VideoDecodeH265SessionParametersAddInfoKHR( *reinterpret_cast<VideoDecodeH265SessionParametersAddInfoKHR const *>( &rhs ) )
121262     {
121263     }
121264 
121265 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121266     VideoDecodeH265SessionParametersAddInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265VideoParameterSet> const &    stdVPSs_,
121267                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & stdSPSs_ = {},
121268                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const &  stdPPSs_ = {},
121269                                                 const void *                                                                                  pNext_ = nullptr )
121270       : pNext( pNext_ )
121271       , stdVPSCount( static_cast<uint32_t>( stdVPSs_.size() ) )
121272       , pStdVPSs( stdVPSs_.data() )
121273       , stdSPSCount( static_cast<uint32_t>( stdSPSs_.size() ) )
121274       , pStdSPSs( stdSPSs_.data() )
121275       , stdPPSCount( static_cast<uint32_t>( stdPPSs_.size() ) )
121276       , pStdPPSs( stdPPSs_.data() )
121277     {
121278     }
121279 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
121280 
121281     VideoDecodeH265SessionParametersAddInfoKHR & operator=( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121282 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121283 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121284     VideoDecodeH265SessionParametersAddInfoKHR & operator=( VkVideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121285     {
121286       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR const *>( &rhs );
121287       return *this;
121288     }
121289 
121290 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121291     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121292     {
121293       pNext = pNext_;
121294       return *this;
121295     }
121296 
setStdVPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121297     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setStdVPSCount( uint32_t stdVPSCount_ ) VULKAN_HPP_NOEXCEPT
121298     {
121299       stdVPSCount = stdVPSCount_;
121300       return *this;
121301     }
121302 
setPStdVPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121303     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPStdVPSs( const StdVideoH265VideoParameterSet * pStdVPSs_ ) VULKAN_HPP_NOEXCEPT
121304     {
121305       pStdVPSs = pStdVPSs_;
121306       return *this;
121307     }
121308 
121309 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
121310     VideoDecodeH265SessionParametersAddInfoKHR &
setStdVPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121311       setStdVPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265VideoParameterSet> const & stdVPSs_ ) VULKAN_HPP_NOEXCEPT
121312     {
121313       stdVPSCount = static_cast<uint32_t>( stdVPSs_.size() );
121314       pStdVPSs    = stdVPSs_.data();
121315       return *this;
121316     }
121317 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
121318 
setStdSPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121319     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) VULKAN_HPP_NOEXCEPT
121320     {
121321       stdSPSCount = stdSPSCount_;
121322       return *this;
121323     }
121324 
setPStdSPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121325     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPStdSPSs( const StdVideoH265SequenceParameterSet * pStdSPSs_ ) VULKAN_HPP_NOEXCEPT
121326     {
121327       pStdSPSs = pStdSPSs_;
121328       return *this;
121329     }
121330 
121331 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
121332     VideoDecodeH265SessionParametersAddInfoKHR &
setStdSPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121333       setStdSPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT
121334     {
121335       stdSPSCount = static_cast<uint32_t>( stdSPSs_.size() );
121336       pStdSPSs    = stdSPSs_.data();
121337       return *this;
121338     }
121339 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
121340 
setStdPPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121341     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) VULKAN_HPP_NOEXCEPT
121342     {
121343       stdPPSCount = stdPPSCount_;
121344       return *this;
121345     }
121346 
setPStdPPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121347     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPStdPPSs( const StdVideoH265PictureParameterSet * pStdPPSs_ ) VULKAN_HPP_NOEXCEPT
121348     {
121349       pStdPPSs = pStdPPSs_;
121350       return *this;
121351     }
121352 
121353 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
121354     VideoDecodeH265SessionParametersAddInfoKHR &
setStdPPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121355       setStdPPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT
121356     {
121357       stdPPSCount = static_cast<uint32_t>( stdPPSs_.size() );
121358       pStdPPSs    = stdPPSs_.data();
121359       return *this;
121360     }
121361 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
121362 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121363 
operator VkVideoDecodeH265SessionParametersAddInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121364     operator VkVideoDecodeH265SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121365     {
121366       return *reinterpret_cast<const VkVideoDecodeH265SessionParametersAddInfoKHR *>( this );
121367     }
121368 
operator VkVideoDecodeH265SessionParametersAddInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121369     operator VkVideoDecodeH265SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT
121370     {
121371       return *reinterpret_cast<VkVideoDecodeH265SessionParametersAddInfoKHR *>( this );
121372     }
121373 
121374 #if defined( VULKAN_HPP_USE_REFLECT )
121375 #  if 14 <= VULKAN_HPP_CPP_VERSION
121376     auto
121377 #  else
121378     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
121379                const void * const &,
121380                uint32_t const &,
121381                const StdVideoH265VideoParameterSet * const &,
121382                uint32_t const &,
121383                const StdVideoH265SequenceParameterSet * const &,
121384                uint32_t const &,
121385                const StdVideoH265PictureParameterSet * const &>
121386 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121387       reflect() const VULKAN_HPP_NOEXCEPT
121388     {
121389       return std::tie( sType, pNext, stdVPSCount, pStdVPSs, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs );
121390     }
121391 #endif
121392 
121393 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121394     auto operator<=>( VideoDecodeH265SessionParametersAddInfoKHR const & ) const = default;
121395 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121396     bool operator==( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121397     {
121398 #  if defined( VULKAN_HPP_USE_REFLECT )
121399       return this->reflect() == rhs.reflect();
121400 #  else
121401       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdVPSCount == rhs.stdVPSCount ) && ( pStdVPSs == rhs.pStdVPSs ) &&
121402              ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) && ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs );
121403 #  endif
121404     }
121405 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR121406     bool operator!=( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121407     {
121408       return !operator==( rhs );
121409     }
121410 #endif
121411 
121412   public:
121413     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoDecodeH265SessionParametersAddInfoKHR;
121414     const void *                             pNext       = {};
121415     uint32_t                                 stdVPSCount = {};
121416     const StdVideoH265VideoParameterSet *    pStdVPSs    = {};
121417     uint32_t                                 stdSPSCount = {};
121418     const StdVideoH265SequenceParameterSet * pStdSPSs    = {};
121419     uint32_t                                 stdPPSCount = {};
121420     const StdVideoH265PictureParameterSet *  pStdPPSs    = {};
121421   };
121422 
121423   template <>
121424   struct CppType<StructureType, StructureType::eVideoDecodeH265SessionParametersAddInfoKHR>
121425   {
121426     using Type = VideoDecodeH265SessionParametersAddInfoKHR;
121427   };
121428 
121429   struct VideoDecodeH265SessionParametersCreateInfoKHR
121430   {
121431     using NativeType = VkVideoDecodeH265SessionParametersCreateInfoKHR;
121432 
121433     static const bool                                  allowDuplicate = false;
121434     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265SessionParametersCreateInfoKHR;
121435 
121436 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
121437     VULKAN_HPP_CONSTEXPR
VideoDecodeH265SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121438       VideoDecodeH265SessionParametersCreateInfoKHR( uint32_t                                                                 maxStdVPSCount_     = {},
121439                                                      uint32_t                                                                 maxStdSPSCount_     = {},
121440                                                      uint32_t                                                                 maxStdPPSCount_     = {},
121441                                                      const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR * pParametersAddInfo_ = {},
121442                                                      const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
121443       : pNext{ pNext_ }
121444       , maxStdVPSCount{ maxStdVPSCount_ }
121445       , maxStdSPSCount{ maxStdSPSCount_ }
121446       , maxStdPPSCount{ maxStdPPSCount_ }
121447       , pParametersAddInfo{ pParametersAddInfo_ }
121448     {
121449     }
121450 
121451     VULKAN_HPP_CONSTEXPR
121452       VideoDecodeH265SessionParametersCreateInfoKHR( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121453 
VideoDecodeH265SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121454     VideoDecodeH265SessionParametersCreateInfoKHR( VkVideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121455       : VideoDecodeH265SessionParametersCreateInfoKHR( *reinterpret_cast<VideoDecodeH265SessionParametersCreateInfoKHR const *>( &rhs ) )
121456     {
121457     }
121458 
121459     VideoDecodeH265SessionParametersCreateInfoKHR & operator=( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121460 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121461 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121462     VideoDecodeH265SessionParametersCreateInfoKHR & operator=( VkVideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121463     {
121464       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR const *>( &rhs );
121465       return *this;
121466     }
121467 
121468 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121469     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121470     {
121471       pNext = pNext_;
121472       return *this;
121473     }
121474 
setMaxStdVPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121475     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setMaxStdVPSCount( uint32_t maxStdVPSCount_ ) VULKAN_HPP_NOEXCEPT
121476     {
121477       maxStdVPSCount = maxStdVPSCount_;
121478       return *this;
121479     }
121480 
setMaxStdSPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121481     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) VULKAN_HPP_NOEXCEPT
121482     {
121483       maxStdSPSCount = maxStdSPSCount_;
121484       return *this;
121485     }
121486 
setMaxStdPPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121487     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) VULKAN_HPP_NOEXCEPT
121488     {
121489       maxStdPPSCount = maxStdPPSCount_;
121490       return *this;
121491     }
121492 
121493     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR &
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121494       setPParametersAddInfo( const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
121495     {
121496       pParametersAddInfo = pParametersAddInfo_;
121497       return *this;
121498     }
121499 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121500 
operator VkVideoDecodeH265SessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121501     operator VkVideoDecodeH265SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121502     {
121503       return *reinterpret_cast<const VkVideoDecodeH265SessionParametersCreateInfoKHR *>( this );
121504     }
121505 
operator VkVideoDecodeH265SessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121506     operator VkVideoDecodeH265SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
121507     {
121508       return *reinterpret_cast<VkVideoDecodeH265SessionParametersCreateInfoKHR *>( this );
121509     }
121510 
121511 #if defined( VULKAN_HPP_USE_REFLECT )
121512 #  if 14 <= VULKAN_HPP_CPP_VERSION
121513     auto
121514 #  else
121515     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
121516                const void * const &,
121517                uint32_t const &,
121518                uint32_t const &,
121519                uint32_t const &,
121520                const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR * const &>
121521 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121522       reflect() const VULKAN_HPP_NOEXCEPT
121523     {
121524       return std::tie( sType, pNext, maxStdVPSCount, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo );
121525     }
121526 #endif
121527 
121528 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121529     auto operator<=>( VideoDecodeH265SessionParametersCreateInfoKHR const & ) const = default;
121530 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121531     bool operator==( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121532     {
121533 #  if defined( VULKAN_HPP_USE_REFLECT )
121534       return this->reflect() == rhs.reflect();
121535 #  else
121536       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdVPSCount == rhs.maxStdVPSCount ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) &&
121537              ( maxStdPPSCount == rhs.maxStdPPSCount ) && ( pParametersAddInfo == rhs.pParametersAddInfo );
121538 #  endif
121539     }
121540 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR121541     bool operator!=( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121542     {
121543       return !operator==( rhs );
121544     }
121545 #endif
121546 
121547   public:
121548     VULKAN_HPP_NAMESPACE::StructureType                                      sType              = StructureType::eVideoDecodeH265SessionParametersCreateInfoKHR;
121549     const void *                                                             pNext              = {};
121550     uint32_t                                                                 maxStdVPSCount     = {};
121551     uint32_t                                                                 maxStdSPSCount     = {};
121552     uint32_t                                                                 maxStdPPSCount     = {};
121553     const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR * pParametersAddInfo = {};
121554   };
121555 
121556   template <>
121557   struct CppType<StructureType, StructureType::eVideoDecodeH265SessionParametersCreateInfoKHR>
121558   {
121559     using Type = VideoDecodeH265SessionParametersCreateInfoKHR;
121560   };
121561 
121562   struct VideoDecodeInfoKHR
121563   {
121564     using NativeType = VkVideoDecodeInfoKHR;
121565 
121566     static const bool                                  allowDuplicate = false;
121567     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeInfoKHR;
121568 
121569 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121570     VULKAN_HPP_CONSTEXPR VideoDecodeInfoKHR( VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR               flags_               = {},
121571                                              VULKAN_HPP_NAMESPACE::Buffer                            srcBuffer_           = {},
121572                                              VULKAN_HPP_NAMESPACE::DeviceSize                        srcBufferOffset_     = {},
121573                                              VULKAN_HPP_NAMESPACE::DeviceSize                        srcBufferRange_      = {},
121574                                              VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR       dstPictureResource_  = {},
121575                                              const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot_ = {},
121576                                              uint32_t                                                referenceSlotCount_  = {},
121577                                              const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_     = {},
121578                                              const void *                                            pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
121579       : pNext{ pNext_ }
121580       , flags{ flags_ }
121581       , srcBuffer{ srcBuffer_ }
121582       , srcBufferOffset{ srcBufferOffset_ }
121583       , srcBufferRange{ srcBufferRange_ }
121584       , dstPictureResource{ dstPictureResource_ }
121585       , pSetupReferenceSlot{ pSetupReferenceSlot_ }
121586       , referenceSlotCount{ referenceSlotCount_ }
121587       , pReferenceSlots{ pReferenceSlots_ }
121588     {
121589     }
121590 
121591     VULKAN_HPP_CONSTEXPR VideoDecodeInfoKHR( VideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121592 
VideoDecodeInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121593     VideoDecodeInfoKHR( VkVideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : VideoDecodeInfoKHR( *reinterpret_cast<VideoDecodeInfoKHR const *>( &rhs ) ) {}
121594 
121595 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121596     VideoDecodeInfoKHR( VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR                                                                    flags_,
121597                         VULKAN_HPP_NAMESPACE::Buffer                                                                                 srcBuffer_,
121598                         VULKAN_HPP_NAMESPACE::DeviceSize                                                                             srcBufferOffset_,
121599                         VULKAN_HPP_NAMESPACE::DeviceSize                                                                             srcBufferRange_,
121600                         VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR                                                            dstPictureResource_,
121601                         const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR *                                                      pSetupReferenceSlot_,
121602                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_,
121603                         const void *                                                                                                 pNext_ = nullptr )
121604       : pNext( pNext_ )
121605       , flags( flags_ )
121606       , srcBuffer( srcBuffer_ )
121607       , srcBufferOffset( srcBufferOffset_ )
121608       , srcBufferRange( srcBufferRange_ )
121609       , dstPictureResource( dstPictureResource_ )
121610       , pSetupReferenceSlot( pSetupReferenceSlot_ )
121611       , referenceSlotCount( static_cast<uint32_t>( referenceSlots_.size() ) )
121612       , pReferenceSlots( referenceSlots_.data() )
121613     {
121614     }
121615 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
121616 
121617     VideoDecodeInfoKHR & operator=( VideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121618 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121619 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121620     VideoDecodeInfoKHR & operator=( VkVideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121621     {
121622       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR const *>( &rhs );
121623       return *this;
121624     }
121625 
121626 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121627     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121628     {
121629       pNext = pNext_;
121630       return *this;
121631     }
121632 
setFlagsVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121633     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
121634     {
121635       flags = flags_;
121636       return *this;
121637     }
121638 
setSrcBufferVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121639     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
121640     {
121641       srcBuffer = srcBuffer_;
121642       return *this;
121643     }
121644 
setSrcBufferOffsetVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121645     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setSrcBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcBufferOffset_ ) VULKAN_HPP_NOEXCEPT
121646     {
121647       srcBufferOffset = srcBufferOffset_;
121648       return *this;
121649     }
121650 
setSrcBufferRangeVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121651     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setSrcBufferRange( VULKAN_HPP_NAMESPACE::DeviceSize srcBufferRange_ ) VULKAN_HPP_NOEXCEPT
121652     {
121653       srcBufferRange = srcBufferRange_;
121654       return *this;
121655     }
121656 
121657     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setDstPictureResourceVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121658       setDstPictureResource( VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const & dstPictureResource_ ) VULKAN_HPP_NOEXCEPT
121659     {
121660       dstPictureResource = dstPictureResource_;
121661       return *this;
121662     }
121663 
121664     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setPSetupReferenceSlotVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121665       setPSetupReferenceSlot( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot_ ) VULKAN_HPP_NOEXCEPT
121666     {
121667       pSetupReferenceSlot = pSetupReferenceSlot_;
121668       return *this;
121669     }
121670 
setReferenceSlotCountVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121671     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT
121672     {
121673       referenceSlotCount = referenceSlotCount_;
121674       return *this;
121675     }
121676 
121677     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setPReferenceSlotsVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121678       setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT
121679     {
121680       pReferenceSlots = pReferenceSlots_;
121681       return *this;
121682     }
121683 
121684 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceSlotsVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121685     VideoDecodeInfoKHR & setReferenceSlots(
121686       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_ ) VULKAN_HPP_NOEXCEPT
121687     {
121688       referenceSlotCount = static_cast<uint32_t>( referenceSlots_.size() );
121689       pReferenceSlots    = referenceSlots_.data();
121690       return *this;
121691     }
121692 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
121693 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121694 
operator VkVideoDecodeInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121695     operator VkVideoDecodeInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121696     {
121697       return *reinterpret_cast<const VkVideoDecodeInfoKHR *>( this );
121698     }
121699 
operator VkVideoDecodeInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121700     operator VkVideoDecodeInfoKHR &() VULKAN_HPP_NOEXCEPT
121701     {
121702       return *reinterpret_cast<VkVideoDecodeInfoKHR *>( this );
121703     }
121704 
121705 #if defined( VULKAN_HPP_USE_REFLECT )
121706 #  if 14 <= VULKAN_HPP_CPP_VERSION
121707     auto
121708 #  else
121709     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
121710                const void * const &,
121711                VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR const &,
121712                VULKAN_HPP_NAMESPACE::Buffer const &,
121713                VULKAN_HPP_NAMESPACE::DeviceSize const &,
121714                VULKAN_HPP_NAMESPACE::DeviceSize const &,
121715                VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const &,
121716                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * const &,
121717                uint32_t const &,
121718                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * const &>
121719 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121720       reflect() const VULKAN_HPP_NOEXCEPT
121721     {
121722       return std::tie(
121723         sType, pNext, flags, srcBuffer, srcBufferOffset, srcBufferRange, dstPictureResource, pSetupReferenceSlot, referenceSlotCount, pReferenceSlots );
121724     }
121725 #endif
121726 
121727 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121728     auto operator<=>( VideoDecodeInfoKHR const & ) const = default;
121729 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121730     bool operator==( VideoDecodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121731     {
121732 #  if defined( VULKAN_HPP_USE_REFLECT )
121733       return this->reflect() == rhs.reflect();
121734 #  else
121735       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( srcBuffer == rhs.srcBuffer ) &&
121736              ( srcBufferOffset == rhs.srcBufferOffset ) && ( srcBufferRange == rhs.srcBufferRange ) && ( dstPictureResource == rhs.dstPictureResource ) &&
121737              ( pSetupReferenceSlot == rhs.pSetupReferenceSlot ) && ( referenceSlotCount == rhs.referenceSlotCount ) &&
121738              ( pReferenceSlots == rhs.pReferenceSlots );
121739 #  endif
121740     }
121741 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR121742     bool operator!=( VideoDecodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121743     {
121744       return !operator==( rhs );
121745     }
121746 #endif
121747 
121748   public:
121749     VULKAN_HPP_NAMESPACE::StructureType                     sType               = StructureType::eVideoDecodeInfoKHR;
121750     const void *                                            pNext               = {};
121751     VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR               flags               = {};
121752     VULKAN_HPP_NAMESPACE::Buffer                            srcBuffer           = {};
121753     VULKAN_HPP_NAMESPACE::DeviceSize                        srcBufferOffset     = {};
121754     VULKAN_HPP_NAMESPACE::DeviceSize                        srcBufferRange      = {};
121755     VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR       dstPictureResource  = {};
121756     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot = {};
121757     uint32_t                                                referenceSlotCount  = {};
121758     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots     = {};
121759   };
121760 
121761   template <>
121762   struct CppType<StructureType, StructureType::eVideoDecodeInfoKHR>
121763   {
121764     using Type = VideoDecodeInfoKHR;
121765   };
121766 
121767   struct VideoDecodeUsageInfoKHR
121768   {
121769     using NativeType = VkVideoDecodeUsageInfoKHR;
121770 
121771     static const bool                                  allowDuplicate = false;
121772     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeUsageInfoKHR;
121773 
121774 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeUsageInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR121775     VULKAN_HPP_CONSTEXPR VideoDecodeUsageInfoKHR( VULKAN_HPP_NAMESPACE::VideoDecodeUsageFlagsKHR videoUsageHints_ = {},
121776                                                   const void *                                   pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
121777       : pNext{ pNext_ }
121778       , videoUsageHints{ videoUsageHints_ }
121779     {
121780     }
121781 
121782     VULKAN_HPP_CONSTEXPR VideoDecodeUsageInfoKHR( VideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121783 
VideoDecodeUsageInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR121784     VideoDecodeUsageInfoKHR( VkVideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121785       : VideoDecodeUsageInfoKHR( *reinterpret_cast<VideoDecodeUsageInfoKHR const *>( &rhs ) )
121786     {
121787     }
121788 
121789     VideoDecodeUsageInfoKHR & operator=( VideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121790 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121791 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR121792     VideoDecodeUsageInfoKHR & operator=( VkVideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121793     {
121794       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR const *>( &rhs );
121795       return *this;
121796     }
121797 
121798 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR121799     VULKAN_HPP_CONSTEXPR_14 VideoDecodeUsageInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121800     {
121801       pNext = pNext_;
121802       return *this;
121803     }
121804 
setVideoUsageHintsVULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR121805     VULKAN_HPP_CONSTEXPR_14 VideoDecodeUsageInfoKHR & setVideoUsageHints( VULKAN_HPP_NAMESPACE::VideoDecodeUsageFlagsKHR videoUsageHints_ ) VULKAN_HPP_NOEXCEPT
121806     {
121807       videoUsageHints = videoUsageHints_;
121808       return *this;
121809     }
121810 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121811 
operator VkVideoDecodeUsageInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR121812     operator VkVideoDecodeUsageInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121813     {
121814       return *reinterpret_cast<const VkVideoDecodeUsageInfoKHR *>( this );
121815     }
121816 
operator VkVideoDecodeUsageInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR121817     operator VkVideoDecodeUsageInfoKHR &() VULKAN_HPP_NOEXCEPT
121818     {
121819       return *reinterpret_cast<VkVideoDecodeUsageInfoKHR *>( this );
121820     }
121821 
121822 #if defined( VULKAN_HPP_USE_REFLECT )
121823 #  if 14 <= VULKAN_HPP_CPP_VERSION
121824     auto
121825 #  else
121826     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::VideoDecodeUsageFlagsKHR const &>
121827 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR121828       reflect() const VULKAN_HPP_NOEXCEPT
121829     {
121830       return std::tie( sType, pNext, videoUsageHints );
121831     }
121832 #endif
121833 
121834 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121835     auto operator<=>( VideoDecodeUsageInfoKHR const & ) const = default;
121836 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR121837     bool operator==( VideoDecodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121838     {
121839 #  if defined( VULKAN_HPP_USE_REFLECT )
121840       return this->reflect() == rhs.reflect();
121841 #  else
121842       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoUsageHints == rhs.videoUsageHints );
121843 #  endif
121844     }
121845 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR121846     bool operator!=( VideoDecodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121847     {
121848       return !operator==( rhs );
121849     }
121850 #endif
121851 
121852   public:
121853     VULKAN_HPP_NAMESPACE::StructureType            sType           = StructureType::eVideoDecodeUsageInfoKHR;
121854     const void *                                   pNext           = {};
121855     VULKAN_HPP_NAMESPACE::VideoDecodeUsageFlagsKHR videoUsageHints = {};
121856   };
121857 
121858   template <>
121859   struct CppType<StructureType, StructureType::eVideoDecodeUsageInfoKHR>
121860   {
121861     using Type = VideoDecodeUsageInfoKHR;
121862   };
121863 
121864   struct VideoEncodeCapabilitiesKHR
121865   {
121866     using NativeType = VkVideoEncodeCapabilitiesKHR;
121867 
121868     static const bool                                  allowDuplicate = false;
121869     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeCapabilitiesKHR;
121870 
121871 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR121872     VULKAN_HPP_CONSTEXPR VideoEncodeCapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeCapabilityFlagsKHR      flags_                         = {},
121873                                                      VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagsKHR rateControlModes_              = {},
121874                                                      uint32_t                                                 maxRateControlLayers_          = {},
121875                                                      uint64_t                                                 maxBitrate_                    = {},
121876                                                      uint32_t                                                 maxQualityLevels_              = {},
121877                                                      VULKAN_HPP_NAMESPACE::Extent2D                           encodeInputPictureGranularity_ = {},
121878                                                      VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR        supportedEncodeFeedbackFlags_  = {},
121879                                                      void *                                                   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
121880       : pNext{ pNext_ }
121881       , flags{ flags_ }
121882       , rateControlModes{ rateControlModes_ }
121883       , maxRateControlLayers{ maxRateControlLayers_ }
121884       , maxBitrate{ maxBitrate_ }
121885       , maxQualityLevels{ maxQualityLevels_ }
121886       , encodeInputPictureGranularity{ encodeInputPictureGranularity_ }
121887       , supportedEncodeFeedbackFlags{ supportedEncodeFeedbackFlags_ }
121888     {
121889     }
121890 
121891     VULKAN_HPP_CONSTEXPR VideoEncodeCapabilitiesKHR( VideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121892 
VideoEncodeCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR121893     VideoEncodeCapabilitiesKHR( VkVideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121894       : VideoEncodeCapabilitiesKHR( *reinterpret_cast<VideoEncodeCapabilitiesKHR const *>( &rhs ) )
121895     {
121896     }
121897 
121898     VideoEncodeCapabilitiesKHR & operator=( VideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121899 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121900 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR121901     VideoEncodeCapabilitiesKHR & operator=( VkVideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121902     {
121903       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR const *>( &rhs );
121904       return *this;
121905     }
121906 
operator VkVideoEncodeCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR121907     operator VkVideoEncodeCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
121908     {
121909       return *reinterpret_cast<const VkVideoEncodeCapabilitiesKHR *>( this );
121910     }
121911 
operator VkVideoEncodeCapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR121912     operator VkVideoEncodeCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
121913     {
121914       return *reinterpret_cast<VkVideoEncodeCapabilitiesKHR *>( this );
121915     }
121916 
121917 #if defined( VULKAN_HPP_USE_REFLECT )
121918 #  if 14 <= VULKAN_HPP_CPP_VERSION
121919     auto
121920 #  else
121921     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
121922                void * const &,
121923                VULKAN_HPP_NAMESPACE::VideoEncodeCapabilityFlagsKHR const &,
121924                VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagsKHR const &,
121925                uint32_t const &,
121926                uint64_t const &,
121927                uint32_t const &,
121928                VULKAN_HPP_NAMESPACE::Extent2D const &,
121929                VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR const &>
121930 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR121931       reflect() const VULKAN_HPP_NOEXCEPT
121932     {
121933       return std::tie( sType,
121934                        pNext,
121935                        flags,
121936                        rateControlModes,
121937                        maxRateControlLayers,
121938                        maxBitrate,
121939                        maxQualityLevels,
121940                        encodeInputPictureGranularity,
121941                        supportedEncodeFeedbackFlags );
121942     }
121943 #endif
121944 
121945 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121946     auto operator<=>( VideoEncodeCapabilitiesKHR const & ) const = default;
121947 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR121948     bool operator==( VideoEncodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121949     {
121950 #  if defined( VULKAN_HPP_USE_REFLECT )
121951       return this->reflect() == rhs.reflect();
121952 #  else
121953       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rateControlModes == rhs.rateControlModes ) &&
121954              ( maxRateControlLayers == rhs.maxRateControlLayers ) && ( maxBitrate == rhs.maxBitrate ) && ( maxQualityLevels == rhs.maxQualityLevels ) &&
121955              ( encodeInputPictureGranularity == rhs.encodeInputPictureGranularity ) && ( supportedEncodeFeedbackFlags == rhs.supportedEncodeFeedbackFlags );
121956 #  endif
121957     }
121958 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR121959     bool operator!=( VideoEncodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121960     {
121961       return !operator==( rhs );
121962     }
121963 #endif
121964 
121965   public:
121966     VULKAN_HPP_NAMESPACE::StructureType                      sType                         = StructureType::eVideoEncodeCapabilitiesKHR;
121967     void *                                                   pNext                         = {};
121968     VULKAN_HPP_NAMESPACE::VideoEncodeCapabilityFlagsKHR      flags                         = {};
121969     VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagsKHR rateControlModes              = {};
121970     uint32_t                                                 maxRateControlLayers          = {};
121971     uint64_t                                                 maxBitrate                    = {};
121972     uint32_t                                                 maxQualityLevels              = {};
121973     VULKAN_HPP_NAMESPACE::Extent2D                           encodeInputPictureGranularity = {};
121974     VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR        supportedEncodeFeedbackFlags  = {};
121975   };
121976 
121977   template <>
121978   struct CppType<StructureType, StructureType::eVideoEncodeCapabilitiesKHR>
121979   {
121980     using Type = VideoEncodeCapabilitiesKHR;
121981   };
121982 
121983   struct VideoEncodeH264CapabilitiesKHR
121984   {
121985     using NativeType = VkVideoEncodeH264CapabilitiesKHR;
121986 
121987     static const bool                                  allowDuplicate = false;
121988     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264CapabilitiesKHR;
121989 
121990 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR121991     VULKAN_HPP_CONSTEXPR VideoEncodeH264CapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsKHR flags_                            = {},
121992                                                          StdVideoH264LevelIdc                                    maxLevelIdc_                      = {},
121993                                                          uint32_t                                                maxSliceCount_                    = {},
121994                                                          uint32_t                                                maxPPictureL0ReferenceCount_      = {},
121995                                                          uint32_t                                                maxBPictureL0ReferenceCount_      = {},
121996                                                          uint32_t                                                maxL1ReferenceCount_              = {},
121997                                                          uint32_t                                                maxTemporalLayerCount_            = {},
121998                                                          VULKAN_HPP_NAMESPACE::Bool32                            expectDyadicTemporalLayerPattern_ = {},
121999                                                          int32_t                                                 minQp_                            = {},
122000                                                          int32_t                                                 maxQp_                            = {},
122001                                                          VULKAN_HPP_NAMESPACE::Bool32                            prefersGopRemainingFrames_        = {},
122002                                                          VULKAN_HPP_NAMESPACE::Bool32                            requiresGopRemainingFrames_       = {},
122003                                                          VULKAN_HPP_NAMESPACE::VideoEncodeH264StdFlagsKHR        stdSyntaxFlags_                   = {},
122004                                                          void *                                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
122005       : pNext{ pNext_ }
122006       , flags{ flags_ }
122007       , maxLevelIdc{ maxLevelIdc_ }
122008       , maxSliceCount{ maxSliceCount_ }
122009       , maxPPictureL0ReferenceCount{ maxPPictureL0ReferenceCount_ }
122010       , maxBPictureL0ReferenceCount{ maxBPictureL0ReferenceCount_ }
122011       , maxL1ReferenceCount{ maxL1ReferenceCount_ }
122012       , maxTemporalLayerCount{ maxTemporalLayerCount_ }
122013       , expectDyadicTemporalLayerPattern{ expectDyadicTemporalLayerPattern_ }
122014       , minQp{ minQp_ }
122015       , maxQp{ maxQp_ }
122016       , prefersGopRemainingFrames{ prefersGopRemainingFrames_ }
122017       , requiresGopRemainingFrames{ requiresGopRemainingFrames_ }
122018       , stdSyntaxFlags{ stdSyntaxFlags_ }
122019     {
122020     }
122021 
122022     VULKAN_HPP_CONSTEXPR VideoEncodeH264CapabilitiesKHR( VideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122023 
VideoEncodeH264CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR122024     VideoEncodeH264CapabilitiesKHR( VkVideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122025       : VideoEncodeH264CapabilitiesKHR( *reinterpret_cast<VideoEncodeH264CapabilitiesKHR const *>( &rhs ) )
122026     {
122027     }
122028 
122029     VideoEncodeH264CapabilitiesKHR & operator=( VideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122030 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122031 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR122032     VideoEncodeH264CapabilitiesKHR & operator=( VkVideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122033     {
122034       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR const *>( &rhs );
122035       return *this;
122036     }
122037 
operator VkVideoEncodeH264CapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR122038     operator VkVideoEncodeH264CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
122039     {
122040       return *reinterpret_cast<const VkVideoEncodeH264CapabilitiesKHR *>( this );
122041     }
122042 
operator VkVideoEncodeH264CapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR122043     operator VkVideoEncodeH264CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
122044     {
122045       return *reinterpret_cast<VkVideoEncodeH264CapabilitiesKHR *>( this );
122046     }
122047 
122048 #if defined( VULKAN_HPP_USE_REFLECT )
122049 #  if 14 <= VULKAN_HPP_CPP_VERSION
122050     auto
122051 #  else
122052     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
122053                void * const &,
122054                VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsKHR const &,
122055                StdVideoH264LevelIdc const &,
122056                uint32_t const &,
122057                uint32_t const &,
122058                uint32_t const &,
122059                uint32_t const &,
122060                uint32_t const &,
122061                VULKAN_HPP_NAMESPACE::Bool32 const &,
122062                int32_t const &,
122063                int32_t const &,
122064                VULKAN_HPP_NAMESPACE::Bool32 const &,
122065                VULKAN_HPP_NAMESPACE::Bool32 const &,
122066                VULKAN_HPP_NAMESPACE::VideoEncodeH264StdFlagsKHR const &>
122067 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR122068       reflect() const VULKAN_HPP_NOEXCEPT
122069     {
122070       return std::tie( sType,
122071                        pNext,
122072                        flags,
122073                        maxLevelIdc,
122074                        maxSliceCount,
122075                        maxPPictureL0ReferenceCount,
122076                        maxBPictureL0ReferenceCount,
122077                        maxL1ReferenceCount,
122078                        maxTemporalLayerCount,
122079                        expectDyadicTemporalLayerPattern,
122080                        minQp,
122081                        maxQp,
122082                        prefersGopRemainingFrames,
122083                        requiresGopRemainingFrames,
122084                        stdSyntaxFlags );
122085     }
122086 #endif
122087 
122088 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR122089     std::strong_ordering operator<=>( VideoEncodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122090     {
122091       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
122092         return cmp;
122093       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
122094         return cmp;
122095       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
122096         return cmp;
122097       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ); cmp != 0 )
122098         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
122099       if ( auto cmp = maxSliceCount <=> rhs.maxSliceCount; cmp != 0 )
122100         return cmp;
122101       if ( auto cmp = maxPPictureL0ReferenceCount <=> rhs.maxPPictureL0ReferenceCount; cmp != 0 )
122102         return cmp;
122103       if ( auto cmp = maxBPictureL0ReferenceCount <=> rhs.maxBPictureL0ReferenceCount; cmp != 0 )
122104         return cmp;
122105       if ( auto cmp = maxL1ReferenceCount <=> rhs.maxL1ReferenceCount; cmp != 0 )
122106         return cmp;
122107       if ( auto cmp = maxTemporalLayerCount <=> rhs.maxTemporalLayerCount; cmp != 0 )
122108         return cmp;
122109       if ( auto cmp = expectDyadicTemporalLayerPattern <=> rhs.expectDyadicTemporalLayerPattern; cmp != 0 )
122110         return cmp;
122111       if ( auto cmp = minQp <=> rhs.minQp; cmp != 0 )
122112         return cmp;
122113       if ( auto cmp = maxQp <=> rhs.maxQp; cmp != 0 )
122114         return cmp;
122115       if ( auto cmp = prefersGopRemainingFrames <=> rhs.prefersGopRemainingFrames; cmp != 0 )
122116         return cmp;
122117       if ( auto cmp = requiresGopRemainingFrames <=> rhs.requiresGopRemainingFrames; cmp != 0 )
122118         return cmp;
122119       if ( auto cmp = stdSyntaxFlags <=> rhs.stdSyntaxFlags; cmp != 0 )
122120         return cmp;
122121 
122122       return std::strong_ordering::equivalent;
122123     }
122124 #endif
122125 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR122126     bool operator==( VideoEncodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122127     {
122128       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
122129              ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ) == 0 ) && ( maxSliceCount == rhs.maxSliceCount ) &&
122130              ( maxPPictureL0ReferenceCount == rhs.maxPPictureL0ReferenceCount ) && ( maxBPictureL0ReferenceCount == rhs.maxBPictureL0ReferenceCount ) &&
122131              ( maxL1ReferenceCount == rhs.maxL1ReferenceCount ) && ( maxTemporalLayerCount == rhs.maxTemporalLayerCount ) &&
122132              ( expectDyadicTemporalLayerPattern == rhs.expectDyadicTemporalLayerPattern ) && ( minQp == rhs.minQp ) && ( maxQp == rhs.maxQp ) &&
122133              ( prefersGopRemainingFrames == rhs.prefersGopRemainingFrames ) && ( requiresGopRemainingFrames == rhs.requiresGopRemainingFrames ) &&
122134              ( stdSyntaxFlags == rhs.stdSyntaxFlags );
122135     }
122136 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR122137     bool operator!=( VideoEncodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122138     {
122139       return !operator==( rhs );
122140     }
122141 
122142   public:
122143     VULKAN_HPP_NAMESPACE::StructureType                     sType                            = StructureType::eVideoEncodeH264CapabilitiesKHR;
122144     void *                                                  pNext                            = {};
122145     VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsKHR flags                            = {};
122146     StdVideoH264LevelIdc                                    maxLevelIdc                      = {};
122147     uint32_t                                                maxSliceCount                    = {};
122148     uint32_t                                                maxPPictureL0ReferenceCount      = {};
122149     uint32_t                                                maxBPictureL0ReferenceCount      = {};
122150     uint32_t                                                maxL1ReferenceCount              = {};
122151     uint32_t                                                maxTemporalLayerCount            = {};
122152     VULKAN_HPP_NAMESPACE::Bool32                            expectDyadicTemporalLayerPattern = {};
122153     int32_t                                                 minQp                            = {};
122154     int32_t                                                 maxQp                            = {};
122155     VULKAN_HPP_NAMESPACE::Bool32                            prefersGopRemainingFrames        = {};
122156     VULKAN_HPP_NAMESPACE::Bool32                            requiresGopRemainingFrames       = {};
122157     VULKAN_HPP_NAMESPACE::VideoEncodeH264StdFlagsKHR        stdSyntaxFlags                   = {};
122158   };
122159 
122160   template <>
122161   struct CppType<StructureType, StructureType::eVideoEncodeH264CapabilitiesKHR>
122162   {
122163     using Type = VideoEncodeH264CapabilitiesKHR;
122164   };
122165 
122166   struct VideoEncodeH264DpbSlotInfoKHR
122167   {
122168     using NativeType = VkVideoEncodeH264DpbSlotInfoKHR;
122169 
122170     static const bool                                  allowDuplicate = false;
122171     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264DpbSlotInfoKHR;
122172 
122173 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR122174     VULKAN_HPP_CONSTEXPR VideoEncodeH264DpbSlotInfoKHR( const StdVideoEncodeH264ReferenceInfo * pStdReferenceInfo_ = {},
122175                                                         const void *                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
122176       : pNext{ pNext_ }
122177       , pStdReferenceInfo{ pStdReferenceInfo_ }
122178     {
122179     }
122180 
122181     VULKAN_HPP_CONSTEXPR VideoEncodeH264DpbSlotInfoKHR( VideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122182 
VideoEncodeH264DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR122183     VideoEncodeH264DpbSlotInfoKHR( VkVideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122184       : VideoEncodeH264DpbSlotInfoKHR( *reinterpret_cast<VideoEncodeH264DpbSlotInfoKHR const *>( &rhs ) )
122185     {
122186     }
122187 
122188     VideoEncodeH264DpbSlotInfoKHR & operator=( VideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122189 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122190 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR122191     VideoEncodeH264DpbSlotInfoKHR & operator=( VkVideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122192     {
122193       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR const *>( &rhs );
122194       return *this;
122195     }
122196 
122197 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR122198     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
122199     {
122200       pNext = pNext_;
122201       return *this;
122202     }
122203 
122204     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoKHR &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR122205       setPStdReferenceInfo( const StdVideoEncodeH264ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
122206     {
122207       pStdReferenceInfo = pStdReferenceInfo_;
122208       return *this;
122209     }
122210 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122211 
operator VkVideoEncodeH264DpbSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR122212     operator VkVideoEncodeH264DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122213     {
122214       return *reinterpret_cast<const VkVideoEncodeH264DpbSlotInfoKHR *>( this );
122215     }
122216 
operator VkVideoEncodeH264DpbSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR122217     operator VkVideoEncodeH264DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
122218     {
122219       return *reinterpret_cast<VkVideoEncodeH264DpbSlotInfoKHR *>( this );
122220     }
122221 
122222 #if defined( VULKAN_HPP_USE_REFLECT )
122223 #  if 14 <= VULKAN_HPP_CPP_VERSION
122224     auto
122225 #  else
122226     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoEncodeH264ReferenceInfo * const &>
122227 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR122228       reflect() const VULKAN_HPP_NOEXCEPT
122229     {
122230       return std::tie( sType, pNext, pStdReferenceInfo );
122231     }
122232 #endif
122233 
122234 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122235     auto operator<=>( VideoEncodeH264DpbSlotInfoKHR const & ) const = default;
122236 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR122237     bool operator==( VideoEncodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122238     {
122239 #  if defined( VULKAN_HPP_USE_REFLECT )
122240       return this->reflect() == rhs.reflect();
122241 #  else
122242       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo );
122243 #  endif
122244     }
122245 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR122246     bool operator!=( VideoEncodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122247     {
122248       return !operator==( rhs );
122249     }
122250 #endif
122251 
122252   public:
122253     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoEncodeH264DpbSlotInfoKHR;
122254     const void *                            pNext             = {};
122255     const StdVideoEncodeH264ReferenceInfo * pStdReferenceInfo = {};
122256   };
122257 
122258   template <>
122259   struct CppType<StructureType, StructureType::eVideoEncodeH264DpbSlotInfoKHR>
122260   {
122261     using Type = VideoEncodeH264DpbSlotInfoKHR;
122262   };
122263 
122264   struct VideoEncodeH264FrameSizeKHR
122265   {
122266     using NativeType = VkVideoEncodeH264FrameSizeKHR;
122267 
122268 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264FrameSizeKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122269     VULKAN_HPP_CONSTEXPR VideoEncodeH264FrameSizeKHR( uint32_t frameISize_ = {}, uint32_t framePSize_ = {}, uint32_t frameBSize_ = {} ) VULKAN_HPP_NOEXCEPT
122270       : frameISize{ frameISize_ }
122271       , framePSize{ framePSize_ }
122272       , frameBSize{ frameBSize_ }
122273     {
122274     }
122275 
122276     VULKAN_HPP_CONSTEXPR VideoEncodeH264FrameSizeKHR( VideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122277 
VideoEncodeH264FrameSizeKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122278     VideoEncodeH264FrameSizeKHR( VkVideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122279       : VideoEncodeH264FrameSizeKHR( *reinterpret_cast<VideoEncodeH264FrameSizeKHR const *>( &rhs ) )
122280     {
122281     }
122282 
122283     VideoEncodeH264FrameSizeKHR & operator=( VideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122284 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122285 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122286     VideoEncodeH264FrameSizeKHR & operator=( VkVideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122287     {
122288       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR const *>( &rhs );
122289       return *this;
122290     }
122291 
122292 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFrameISizeVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122293     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR & setFrameISize( uint32_t frameISize_ ) VULKAN_HPP_NOEXCEPT
122294     {
122295       frameISize = frameISize_;
122296       return *this;
122297     }
122298 
setFramePSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122299     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR & setFramePSize( uint32_t framePSize_ ) VULKAN_HPP_NOEXCEPT
122300     {
122301       framePSize = framePSize_;
122302       return *this;
122303     }
122304 
setFrameBSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122305     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR & setFrameBSize( uint32_t frameBSize_ ) VULKAN_HPP_NOEXCEPT
122306     {
122307       frameBSize = frameBSize_;
122308       return *this;
122309     }
122310 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122311 
operator VkVideoEncodeH264FrameSizeKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122312     operator VkVideoEncodeH264FrameSizeKHR const &() const VULKAN_HPP_NOEXCEPT
122313     {
122314       return *reinterpret_cast<const VkVideoEncodeH264FrameSizeKHR *>( this );
122315     }
122316 
operator VkVideoEncodeH264FrameSizeKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122317     operator VkVideoEncodeH264FrameSizeKHR &() VULKAN_HPP_NOEXCEPT
122318     {
122319       return *reinterpret_cast<VkVideoEncodeH264FrameSizeKHR *>( this );
122320     }
122321 
122322 #if defined( VULKAN_HPP_USE_REFLECT )
122323 #  if 14 <= VULKAN_HPP_CPP_VERSION
122324     auto
122325 #  else
122326     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
122327 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122328       reflect() const VULKAN_HPP_NOEXCEPT
122329     {
122330       return std::tie( frameISize, framePSize, frameBSize );
122331     }
122332 #endif
122333 
122334 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122335     auto operator<=>( VideoEncodeH264FrameSizeKHR const & ) const = default;
122336 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122337     bool operator==( VideoEncodeH264FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122338     {
122339 #  if defined( VULKAN_HPP_USE_REFLECT )
122340       return this->reflect() == rhs.reflect();
122341 #  else
122342       return ( frameISize == rhs.frameISize ) && ( framePSize == rhs.framePSize ) && ( frameBSize == rhs.frameBSize );
122343 #  endif
122344     }
122345 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR122346     bool operator!=( VideoEncodeH264FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122347     {
122348       return !operator==( rhs );
122349     }
122350 #endif
122351 
122352   public:
122353     uint32_t frameISize = {};
122354     uint32_t framePSize = {};
122355     uint32_t frameBSize = {};
122356   };
122357 
122358   struct VideoEncodeH264GopRemainingFrameInfoKHR
122359   {
122360     using NativeType = VkVideoEncodeH264GopRemainingFrameInfoKHR;
122361 
122362     static const bool                                  allowDuplicate = false;
122363     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264GopRemainingFrameInfoKHR;
122364 
122365 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264GopRemainingFrameInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122366     VULKAN_HPP_CONSTEXPR VideoEncodeH264GopRemainingFrameInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 useGopRemainingFrames_ = {},
122367                                                                   uint32_t                     gopRemainingI_         = {},
122368                                                                   uint32_t                     gopRemainingP_         = {},
122369                                                                   uint32_t                     gopRemainingB_         = {},
122370                                                                   const void *                 pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
122371       : pNext{ pNext_ }
122372       , useGopRemainingFrames{ useGopRemainingFrames_ }
122373       , gopRemainingI{ gopRemainingI_ }
122374       , gopRemainingP{ gopRemainingP_ }
122375       , gopRemainingB{ gopRemainingB_ }
122376     {
122377     }
122378 
122379     VULKAN_HPP_CONSTEXPR VideoEncodeH264GopRemainingFrameInfoKHR( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122380 
VideoEncodeH264GopRemainingFrameInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122381     VideoEncodeH264GopRemainingFrameInfoKHR( VkVideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122382       : VideoEncodeH264GopRemainingFrameInfoKHR( *reinterpret_cast<VideoEncodeH264GopRemainingFrameInfoKHR const *>( &rhs ) )
122383     {
122384     }
122385 
122386     VideoEncodeH264GopRemainingFrameInfoKHR & operator=( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122387 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122388 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122389     VideoEncodeH264GopRemainingFrameInfoKHR & operator=( VkVideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122390     {
122391       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR const *>( &rhs );
122392       return *this;
122393     }
122394 
122395 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122396     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
122397     {
122398       pNext = pNext_;
122399       return *this;
122400     }
122401 
122402     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR &
setUseGopRemainingFramesVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122403       setUseGopRemainingFrames( VULKAN_HPP_NAMESPACE::Bool32 useGopRemainingFrames_ ) VULKAN_HPP_NOEXCEPT
122404     {
122405       useGopRemainingFrames = useGopRemainingFrames_;
122406       return *this;
122407     }
122408 
setGopRemainingIVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122409     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setGopRemainingI( uint32_t gopRemainingI_ ) VULKAN_HPP_NOEXCEPT
122410     {
122411       gopRemainingI = gopRemainingI_;
122412       return *this;
122413     }
122414 
setGopRemainingPVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122415     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setGopRemainingP( uint32_t gopRemainingP_ ) VULKAN_HPP_NOEXCEPT
122416     {
122417       gopRemainingP = gopRemainingP_;
122418       return *this;
122419     }
122420 
setGopRemainingBVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122421     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setGopRemainingB( uint32_t gopRemainingB_ ) VULKAN_HPP_NOEXCEPT
122422     {
122423       gopRemainingB = gopRemainingB_;
122424       return *this;
122425     }
122426 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122427 
operator VkVideoEncodeH264GopRemainingFrameInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122428     operator VkVideoEncodeH264GopRemainingFrameInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122429     {
122430       return *reinterpret_cast<const VkVideoEncodeH264GopRemainingFrameInfoKHR *>( this );
122431     }
122432 
operator VkVideoEncodeH264GopRemainingFrameInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122433     operator VkVideoEncodeH264GopRemainingFrameInfoKHR &() VULKAN_HPP_NOEXCEPT
122434     {
122435       return *reinterpret_cast<VkVideoEncodeH264GopRemainingFrameInfoKHR *>( this );
122436     }
122437 
122438 #if defined( VULKAN_HPP_USE_REFLECT )
122439 #  if 14 <= VULKAN_HPP_CPP_VERSION
122440     auto
122441 #  else
122442     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
122443                const void * const &,
122444                VULKAN_HPP_NAMESPACE::Bool32 const &,
122445                uint32_t const &,
122446                uint32_t const &,
122447                uint32_t const &>
122448 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122449       reflect() const VULKAN_HPP_NOEXCEPT
122450     {
122451       return std::tie( sType, pNext, useGopRemainingFrames, gopRemainingI, gopRemainingP, gopRemainingB );
122452     }
122453 #endif
122454 
122455 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122456     auto operator<=>( VideoEncodeH264GopRemainingFrameInfoKHR const & ) const = default;
122457 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122458     bool operator==( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122459     {
122460 #  if defined( VULKAN_HPP_USE_REFLECT )
122461       return this->reflect() == rhs.reflect();
122462 #  else
122463       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useGopRemainingFrames == rhs.useGopRemainingFrames ) &&
122464              ( gopRemainingI == rhs.gopRemainingI ) && ( gopRemainingP == rhs.gopRemainingP ) && ( gopRemainingB == rhs.gopRemainingB );
122465 #  endif
122466     }
122467 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR122468     bool operator!=( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122469     {
122470       return !operator==( rhs );
122471     }
122472 #endif
122473 
122474   public:
122475     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::eVideoEncodeH264GopRemainingFrameInfoKHR;
122476     const void *                        pNext                 = {};
122477     VULKAN_HPP_NAMESPACE::Bool32        useGopRemainingFrames = {};
122478     uint32_t                            gopRemainingI         = {};
122479     uint32_t                            gopRemainingP         = {};
122480     uint32_t                            gopRemainingB         = {};
122481   };
122482 
122483   template <>
122484   struct CppType<StructureType, StructureType::eVideoEncodeH264GopRemainingFrameInfoKHR>
122485   {
122486     using Type = VideoEncodeH264GopRemainingFrameInfoKHR;
122487   };
122488 
122489   struct VideoEncodeH264NaluSliceInfoKHR
122490   {
122491     using NativeType = VkVideoEncodeH264NaluSliceInfoKHR;
122492 
122493     static const bool                                  allowDuplicate = false;
122494     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264NaluSliceInfoKHR;
122495 
122496 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264NaluSliceInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122497     VULKAN_HPP_CONSTEXPR VideoEncodeH264NaluSliceInfoKHR( int32_t                               constantQp_      = {},
122498                                                           const StdVideoEncodeH264SliceHeader * pStdSliceHeader_ = {},
122499                                                           const void *                          pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
122500       : pNext{ pNext_ }
122501       , constantQp{ constantQp_ }
122502       , pStdSliceHeader{ pStdSliceHeader_ }
122503     {
122504     }
122505 
122506     VULKAN_HPP_CONSTEXPR VideoEncodeH264NaluSliceInfoKHR( VideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122507 
VideoEncodeH264NaluSliceInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122508     VideoEncodeH264NaluSliceInfoKHR( VkVideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122509       : VideoEncodeH264NaluSliceInfoKHR( *reinterpret_cast<VideoEncodeH264NaluSliceInfoKHR const *>( &rhs ) )
122510     {
122511     }
122512 
122513     VideoEncodeH264NaluSliceInfoKHR & operator=( VideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122514 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122515 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122516     VideoEncodeH264NaluSliceInfoKHR & operator=( VkVideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122517     {
122518       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR const *>( &rhs );
122519       return *this;
122520     }
122521 
122522 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122523     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
122524     {
122525       pNext = pNext_;
122526       return *this;
122527     }
122528 
setConstantQpVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122529     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR & setConstantQp( int32_t constantQp_ ) VULKAN_HPP_NOEXCEPT
122530     {
122531       constantQp = constantQp_;
122532       return *this;
122533     }
122534 
setPStdSliceHeaderVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122535     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR & setPStdSliceHeader( const StdVideoEncodeH264SliceHeader * pStdSliceHeader_ ) VULKAN_HPP_NOEXCEPT
122536     {
122537       pStdSliceHeader = pStdSliceHeader_;
122538       return *this;
122539     }
122540 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122541 
operator VkVideoEncodeH264NaluSliceInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122542     operator VkVideoEncodeH264NaluSliceInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122543     {
122544       return *reinterpret_cast<const VkVideoEncodeH264NaluSliceInfoKHR *>( this );
122545     }
122546 
operator VkVideoEncodeH264NaluSliceInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122547     operator VkVideoEncodeH264NaluSliceInfoKHR &() VULKAN_HPP_NOEXCEPT
122548     {
122549       return *reinterpret_cast<VkVideoEncodeH264NaluSliceInfoKHR *>( this );
122550     }
122551 
122552 #if defined( VULKAN_HPP_USE_REFLECT )
122553 #  if 14 <= VULKAN_HPP_CPP_VERSION
122554     auto
122555 #  else
122556     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, int32_t const &, const StdVideoEncodeH264SliceHeader * const &>
122557 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122558       reflect() const VULKAN_HPP_NOEXCEPT
122559     {
122560       return std::tie( sType, pNext, constantQp, pStdSliceHeader );
122561     }
122562 #endif
122563 
122564 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122565     auto operator<=>( VideoEncodeH264NaluSliceInfoKHR const & ) const = default;
122566 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122567     bool operator==( VideoEncodeH264NaluSliceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122568     {
122569 #  if defined( VULKAN_HPP_USE_REFLECT )
122570       return this->reflect() == rhs.reflect();
122571 #  else
122572       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( constantQp == rhs.constantQp ) && ( pStdSliceHeader == rhs.pStdSliceHeader );
122573 #  endif
122574     }
122575 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR122576     bool operator!=( VideoEncodeH264NaluSliceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122577     {
122578       return !operator==( rhs );
122579     }
122580 #endif
122581 
122582   public:
122583     VULKAN_HPP_NAMESPACE::StructureType   sType           = StructureType::eVideoEncodeH264NaluSliceInfoKHR;
122584     const void *                          pNext           = {};
122585     int32_t                               constantQp      = {};
122586     const StdVideoEncodeH264SliceHeader * pStdSliceHeader = {};
122587   };
122588 
122589   template <>
122590   struct CppType<StructureType, StructureType::eVideoEncodeH264NaluSliceInfoKHR>
122591   {
122592     using Type = VideoEncodeH264NaluSliceInfoKHR;
122593   };
122594 
122595   struct VideoEncodeH264PictureInfoKHR
122596   {
122597     using NativeType = VkVideoEncodeH264PictureInfoKHR;
122598 
122599     static const bool                                  allowDuplicate = false;
122600     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264PictureInfoKHR;
122601 
122602 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122603     VULKAN_HPP_CONSTEXPR VideoEncodeH264PictureInfoKHR( uint32_t                                                      naluSliceEntryCount_ = {},
122604                                                         const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR * pNaluSliceEntries_   = {},
122605                                                         const StdVideoEncodeH264PictureInfo *                         pStdPictureInfo_     = {},
122606                                                         VULKAN_HPP_NAMESPACE::Bool32                                  generatePrefixNalu_  = {},
122607                                                         const void *                                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
122608       : pNext{ pNext_ }
122609       , naluSliceEntryCount{ naluSliceEntryCount_ }
122610       , pNaluSliceEntries{ pNaluSliceEntries_ }
122611       , pStdPictureInfo{ pStdPictureInfo_ }
122612       , generatePrefixNalu{ generatePrefixNalu_ }
122613     {
122614     }
122615 
122616     VULKAN_HPP_CONSTEXPR VideoEncodeH264PictureInfoKHR( VideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122617 
VideoEncodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122618     VideoEncodeH264PictureInfoKHR( VkVideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122619       : VideoEncodeH264PictureInfoKHR( *reinterpret_cast<VideoEncodeH264PictureInfoKHR const *>( &rhs ) )
122620     {
122621     }
122622 
122623 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122624     VideoEncodeH264PictureInfoKHR(
122625       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR> const & naluSliceEntries_,
122626       const StdVideoEncodeH264PictureInfo *                                                                              pStdPictureInfo_    = {},
122627       VULKAN_HPP_NAMESPACE::Bool32                                                                                       generatePrefixNalu_ = {},
122628       const void *                                                                                                       pNext_              = nullptr )
122629       : pNext( pNext_ )
122630       , naluSliceEntryCount( static_cast<uint32_t>( naluSliceEntries_.size() ) )
122631       , pNaluSliceEntries( naluSliceEntries_.data() )
122632       , pStdPictureInfo( pStdPictureInfo_ )
122633       , generatePrefixNalu( generatePrefixNalu_ )
122634     {
122635     }
122636 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
122637 
122638     VideoEncodeH264PictureInfoKHR & operator=( VideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122639 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122640 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122641     VideoEncodeH264PictureInfoKHR & operator=( VkVideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122642     {
122643       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR const *>( &rhs );
122644       return *this;
122645     }
122646 
122647 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122648     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
122649     {
122650       pNext = pNext_;
122651       return *this;
122652     }
122653 
setNaluSliceEntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122654     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setNaluSliceEntryCount( uint32_t naluSliceEntryCount_ ) VULKAN_HPP_NOEXCEPT
122655     {
122656       naluSliceEntryCount = naluSliceEntryCount_;
122657       return *this;
122658     }
122659 
122660     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR &
setPNaluSliceEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122661       setPNaluSliceEntries( const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR * pNaluSliceEntries_ ) VULKAN_HPP_NOEXCEPT
122662     {
122663       pNaluSliceEntries = pNaluSliceEntries_;
122664       return *this;
122665     }
122666 
122667 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setNaluSliceEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122668     VideoEncodeH264PictureInfoKHR & setNaluSliceEntries(
122669       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR> const & naluSliceEntries_ ) VULKAN_HPP_NOEXCEPT
122670     {
122671       naluSliceEntryCount = static_cast<uint32_t>( naluSliceEntries_.size() );
122672       pNaluSliceEntries   = naluSliceEntries_.data();
122673       return *this;
122674     }
122675 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
122676 
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122677     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setPStdPictureInfo( const StdVideoEncodeH264PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
122678     {
122679       pStdPictureInfo = pStdPictureInfo_;
122680       return *this;
122681     }
122682 
setGeneratePrefixNaluVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122683     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setGeneratePrefixNalu( VULKAN_HPP_NAMESPACE::Bool32 generatePrefixNalu_ ) VULKAN_HPP_NOEXCEPT
122684     {
122685       generatePrefixNalu = generatePrefixNalu_;
122686       return *this;
122687     }
122688 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122689 
operator VkVideoEncodeH264PictureInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122690     operator VkVideoEncodeH264PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122691     {
122692       return *reinterpret_cast<const VkVideoEncodeH264PictureInfoKHR *>( this );
122693     }
122694 
operator VkVideoEncodeH264PictureInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122695     operator VkVideoEncodeH264PictureInfoKHR &() VULKAN_HPP_NOEXCEPT
122696     {
122697       return *reinterpret_cast<VkVideoEncodeH264PictureInfoKHR *>( this );
122698     }
122699 
122700 #if defined( VULKAN_HPP_USE_REFLECT )
122701 #  if 14 <= VULKAN_HPP_CPP_VERSION
122702     auto
122703 #  else
122704     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
122705                const void * const &,
122706                uint32_t const &,
122707                const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR * const &,
122708                const StdVideoEncodeH264PictureInfo * const &,
122709                VULKAN_HPP_NAMESPACE::Bool32 const &>
122710 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122711       reflect() const VULKAN_HPP_NOEXCEPT
122712     {
122713       return std::tie( sType, pNext, naluSliceEntryCount, pNaluSliceEntries, pStdPictureInfo, generatePrefixNalu );
122714     }
122715 #endif
122716 
122717 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122718     auto operator<=>( VideoEncodeH264PictureInfoKHR const & ) const = default;
122719 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122720     bool operator==( VideoEncodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122721     {
122722 #  if defined( VULKAN_HPP_USE_REFLECT )
122723       return this->reflect() == rhs.reflect();
122724 #  else
122725       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( naluSliceEntryCount == rhs.naluSliceEntryCount ) &&
122726              ( pNaluSliceEntries == rhs.pNaluSliceEntries ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && ( generatePrefixNalu == rhs.generatePrefixNalu );
122727 #  endif
122728     }
122729 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR122730     bool operator!=( VideoEncodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122731     {
122732       return !operator==( rhs );
122733     }
122734 #endif
122735 
122736   public:
122737     VULKAN_HPP_NAMESPACE::StructureType                           sType               = StructureType::eVideoEncodeH264PictureInfoKHR;
122738     const void *                                                  pNext               = {};
122739     uint32_t                                                      naluSliceEntryCount = {};
122740     const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR * pNaluSliceEntries   = {};
122741     const StdVideoEncodeH264PictureInfo *                         pStdPictureInfo     = {};
122742     VULKAN_HPP_NAMESPACE::Bool32                                  generatePrefixNalu  = {};
122743   };
122744 
122745   template <>
122746   struct CppType<StructureType, StructureType::eVideoEncodeH264PictureInfoKHR>
122747   {
122748     using Type = VideoEncodeH264PictureInfoKHR;
122749   };
122750 
122751   struct VideoEncodeH264ProfileInfoKHR
122752   {
122753     using NativeType = VkVideoEncodeH264ProfileInfoKHR;
122754 
122755     static const bool                                  allowDuplicate = false;
122756     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264ProfileInfoKHR;
122757 
122758 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122759     VULKAN_HPP_CONSTEXPR VideoEncodeH264ProfileInfoKHR( StdVideoH264ProfileIdc stdProfileIdc_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
122760       : pNext{ pNext_ }
122761       , stdProfileIdc{ stdProfileIdc_ }
122762     {
122763     }
122764 
122765     VULKAN_HPP_CONSTEXPR VideoEncodeH264ProfileInfoKHR( VideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122766 
VideoEncodeH264ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122767     VideoEncodeH264ProfileInfoKHR( VkVideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122768       : VideoEncodeH264ProfileInfoKHR( *reinterpret_cast<VideoEncodeH264ProfileInfoKHR const *>( &rhs ) )
122769     {
122770     }
122771 
122772     VideoEncodeH264ProfileInfoKHR & operator=( VideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122773 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122774 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122775     VideoEncodeH264ProfileInfoKHR & operator=( VkVideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122776     {
122777       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR const *>( &rhs );
122778       return *this;
122779     }
122780 
122781 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122782     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
122783     {
122784       pNext = pNext_;
122785       return *this;
122786     }
122787 
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122788     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileInfoKHR & setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
122789     {
122790       stdProfileIdc = stdProfileIdc_;
122791       return *this;
122792     }
122793 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122794 
operator VkVideoEncodeH264ProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122795     operator VkVideoEncodeH264ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122796     {
122797       return *reinterpret_cast<const VkVideoEncodeH264ProfileInfoKHR *>( this );
122798     }
122799 
operator VkVideoEncodeH264ProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122800     operator VkVideoEncodeH264ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
122801     {
122802       return *reinterpret_cast<VkVideoEncodeH264ProfileInfoKHR *>( this );
122803     }
122804 
122805 #if defined( VULKAN_HPP_USE_REFLECT )
122806 #  if 14 <= VULKAN_HPP_CPP_VERSION
122807     auto
122808 #  else
122809     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoH264ProfileIdc const &>
122810 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122811       reflect() const VULKAN_HPP_NOEXCEPT
122812     {
122813       return std::tie( sType, pNext, stdProfileIdc );
122814     }
122815 #endif
122816 
122817 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122818     std::strong_ordering operator<=>( VideoEncodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122819     {
122820       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
122821         return cmp;
122822       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
122823         return cmp;
122824       if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ); cmp != 0 )
122825         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
122826 
122827       return std::strong_ordering::equivalent;
122828     }
122829 #endif
122830 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122831     bool operator==( VideoEncodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122832     {
122833       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ) == 0 );
122834     }
122835 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR122836     bool operator!=( VideoEncodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122837     {
122838       return !operator==( rhs );
122839     }
122840 
122841   public:
122842     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eVideoEncodeH264ProfileInfoKHR;
122843     const void *                        pNext         = {};
122844     StdVideoH264ProfileIdc              stdProfileIdc = {};
122845   };
122846 
122847   template <>
122848   struct CppType<StructureType, StructureType::eVideoEncodeH264ProfileInfoKHR>
122849   {
122850     using Type = VideoEncodeH264ProfileInfoKHR;
122851   };
122852 
122853   struct VideoEncodeH264QpKHR
122854   {
122855     using NativeType = VkVideoEncodeH264QpKHR;
122856 
122857 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264QpKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122858     VULKAN_HPP_CONSTEXPR VideoEncodeH264QpKHR( int32_t qpI_ = {}, int32_t qpP_ = {}, int32_t qpB_ = {} ) VULKAN_HPP_NOEXCEPT
122859       : qpI{ qpI_ }
122860       , qpP{ qpP_ }
122861       , qpB{ qpB_ }
122862     {
122863     }
122864 
122865     VULKAN_HPP_CONSTEXPR VideoEncodeH264QpKHR( VideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122866 
VideoEncodeH264QpKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122867     VideoEncodeH264QpKHR( VkVideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122868       : VideoEncodeH264QpKHR( *reinterpret_cast<VideoEncodeH264QpKHR const *>( &rhs ) )
122869     {
122870     }
122871 
122872     VideoEncodeH264QpKHR & operator=( VideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122873 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122874 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122875     VideoEncodeH264QpKHR & operator=( VkVideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122876     {
122877       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const *>( &rhs );
122878       return *this;
122879     }
122880 
122881 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setQpIVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122882     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR & setQpI( int32_t qpI_ ) VULKAN_HPP_NOEXCEPT
122883     {
122884       qpI = qpI_;
122885       return *this;
122886     }
122887 
setQpPVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122888     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR & setQpP( int32_t qpP_ ) VULKAN_HPP_NOEXCEPT
122889     {
122890       qpP = qpP_;
122891       return *this;
122892     }
122893 
setQpBVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122894     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR & setQpB( int32_t qpB_ ) VULKAN_HPP_NOEXCEPT
122895     {
122896       qpB = qpB_;
122897       return *this;
122898     }
122899 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122900 
operator VkVideoEncodeH264QpKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122901     operator VkVideoEncodeH264QpKHR const &() const VULKAN_HPP_NOEXCEPT
122902     {
122903       return *reinterpret_cast<const VkVideoEncodeH264QpKHR *>( this );
122904     }
122905 
operator VkVideoEncodeH264QpKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122906     operator VkVideoEncodeH264QpKHR &() VULKAN_HPP_NOEXCEPT
122907     {
122908       return *reinterpret_cast<VkVideoEncodeH264QpKHR *>( this );
122909     }
122910 
122911 #if defined( VULKAN_HPP_USE_REFLECT )
122912 #  if 14 <= VULKAN_HPP_CPP_VERSION
122913     auto
122914 #  else
122915     std::tuple<int32_t const &, int32_t const &, int32_t const &>
122916 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122917       reflect() const VULKAN_HPP_NOEXCEPT
122918     {
122919       return std::tie( qpI, qpP, qpB );
122920     }
122921 #endif
122922 
122923 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122924     auto operator<=>( VideoEncodeH264QpKHR const & ) const = default;
122925 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122926     bool operator==( VideoEncodeH264QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122927     {
122928 #  if defined( VULKAN_HPP_USE_REFLECT )
122929       return this->reflect() == rhs.reflect();
122930 #  else
122931       return ( qpI == rhs.qpI ) && ( qpP == rhs.qpP ) && ( qpB == rhs.qpB );
122932 #  endif
122933     }
122934 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR122935     bool operator!=( VideoEncodeH264QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122936     {
122937       return !operator==( rhs );
122938     }
122939 #endif
122940 
122941   public:
122942     int32_t qpI = {};
122943     int32_t qpP = {};
122944     int32_t qpB = {};
122945   };
122946 
122947   struct VideoEncodeH264QualityLevelPropertiesKHR
122948   {
122949     using NativeType = VkVideoEncodeH264QualityLevelPropertiesKHR;
122950 
122951     static const bool                                  allowDuplicate = false;
122952     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264QualityLevelPropertiesKHR;
122953 
122954 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264QualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR122955     VULKAN_HPP_CONSTEXPR VideoEncodeH264QualityLevelPropertiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR preferredRateControlFlags_ = {},
122956                                                                    uint32_t                                                 preferredGopFrameCount_    = {},
122957                                                                    uint32_t                                                 preferredIdrPeriod_        = {},
122958                                                                    uint32_t                                   preferredConsecutiveBFrameCount_         = {},
122959                                                                    uint32_t                                   preferredTemporalLayerCount_             = {},
122960                                                                    VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR preferredConstantQp_                     = {},
122961                                                                    uint32_t                                   preferredMaxL0ReferenceCount_            = {},
122962                                                                    uint32_t                                   preferredMaxL1ReferenceCount_            = {},
122963                                                                    VULKAN_HPP_NAMESPACE::Bool32               preferredStdEntropyCodingModeFlag_       = {},
122964                                                                    void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
122965       : pNext{ pNext_ }
122966       , preferredRateControlFlags{ preferredRateControlFlags_ }
122967       , preferredGopFrameCount{ preferredGopFrameCount_ }
122968       , preferredIdrPeriod{ preferredIdrPeriod_ }
122969       , preferredConsecutiveBFrameCount{ preferredConsecutiveBFrameCount_ }
122970       , preferredTemporalLayerCount{ preferredTemporalLayerCount_ }
122971       , preferredConstantQp{ preferredConstantQp_ }
122972       , preferredMaxL0ReferenceCount{ preferredMaxL0ReferenceCount_ }
122973       , preferredMaxL1ReferenceCount{ preferredMaxL1ReferenceCount_ }
122974       , preferredStdEntropyCodingModeFlag{ preferredStdEntropyCodingModeFlag_ }
122975     {
122976     }
122977 
122978     VULKAN_HPP_CONSTEXPR VideoEncodeH264QualityLevelPropertiesKHR( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122979 
VideoEncodeH264QualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR122980     VideoEncodeH264QualityLevelPropertiesKHR( VkVideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122981       : VideoEncodeH264QualityLevelPropertiesKHR( *reinterpret_cast<VideoEncodeH264QualityLevelPropertiesKHR const *>( &rhs ) )
122982     {
122983     }
122984 
122985     VideoEncodeH264QualityLevelPropertiesKHR & operator=( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122986 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122987 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR122988     VideoEncodeH264QualityLevelPropertiesKHR & operator=( VkVideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122989     {
122990       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR const *>( &rhs );
122991       return *this;
122992     }
122993 
operator VkVideoEncodeH264QualityLevelPropertiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR122994     operator VkVideoEncodeH264QualityLevelPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
122995     {
122996       return *reinterpret_cast<const VkVideoEncodeH264QualityLevelPropertiesKHR *>( this );
122997     }
122998 
operator VkVideoEncodeH264QualityLevelPropertiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR122999     operator VkVideoEncodeH264QualityLevelPropertiesKHR &() VULKAN_HPP_NOEXCEPT
123000     {
123001       return *reinterpret_cast<VkVideoEncodeH264QualityLevelPropertiesKHR *>( this );
123002     }
123003 
123004 #if defined( VULKAN_HPP_USE_REFLECT )
123005 #  if 14 <= VULKAN_HPP_CPP_VERSION
123006     auto
123007 #  else
123008     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
123009                void * const &,
123010                VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR const &,
123011                uint32_t const &,
123012                uint32_t const &,
123013                uint32_t const &,
123014                uint32_t const &,
123015                VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const &,
123016                uint32_t const &,
123017                uint32_t const &,
123018                VULKAN_HPP_NAMESPACE::Bool32 const &>
123019 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR123020       reflect() const VULKAN_HPP_NOEXCEPT
123021     {
123022       return std::tie( sType,
123023                        pNext,
123024                        preferredRateControlFlags,
123025                        preferredGopFrameCount,
123026                        preferredIdrPeriod,
123027                        preferredConsecutiveBFrameCount,
123028                        preferredTemporalLayerCount,
123029                        preferredConstantQp,
123030                        preferredMaxL0ReferenceCount,
123031                        preferredMaxL1ReferenceCount,
123032                        preferredStdEntropyCodingModeFlag );
123033     }
123034 #endif
123035 
123036 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123037     auto operator<=>( VideoEncodeH264QualityLevelPropertiesKHR const & ) const = default;
123038 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR123039     bool operator==( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123040     {
123041 #  if defined( VULKAN_HPP_USE_REFLECT )
123042       return this->reflect() == rhs.reflect();
123043 #  else
123044       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredRateControlFlags == rhs.preferredRateControlFlags ) &&
123045              ( preferredGopFrameCount == rhs.preferredGopFrameCount ) && ( preferredIdrPeriod == rhs.preferredIdrPeriod ) &&
123046              ( preferredConsecutiveBFrameCount == rhs.preferredConsecutiveBFrameCount ) && ( preferredTemporalLayerCount == rhs.preferredTemporalLayerCount ) &&
123047              ( preferredConstantQp == rhs.preferredConstantQp ) && ( preferredMaxL0ReferenceCount == rhs.preferredMaxL0ReferenceCount ) &&
123048              ( preferredMaxL1ReferenceCount == rhs.preferredMaxL1ReferenceCount ) &&
123049              ( preferredStdEntropyCodingModeFlag == rhs.preferredStdEntropyCodingModeFlag );
123050 #  endif
123051     }
123052 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR123053     bool operator!=( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123054     {
123055       return !operator==( rhs );
123056     }
123057 #endif
123058 
123059   public:
123060     VULKAN_HPP_NAMESPACE::StructureType                      sType                             = StructureType::eVideoEncodeH264QualityLevelPropertiesKHR;
123061     void *                                                   pNext                             = {};
123062     VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR preferredRateControlFlags         = {};
123063     uint32_t                                                 preferredGopFrameCount            = {};
123064     uint32_t                                                 preferredIdrPeriod                = {};
123065     uint32_t                                                 preferredConsecutiveBFrameCount   = {};
123066     uint32_t                                                 preferredTemporalLayerCount       = {};
123067     VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR               preferredConstantQp               = {};
123068     uint32_t                                                 preferredMaxL0ReferenceCount      = {};
123069     uint32_t                                                 preferredMaxL1ReferenceCount      = {};
123070     VULKAN_HPP_NAMESPACE::Bool32                             preferredStdEntropyCodingModeFlag = {};
123071   };
123072 
123073   template <>
123074   struct CppType<StructureType, StructureType::eVideoEncodeH264QualityLevelPropertiesKHR>
123075   {
123076     using Type = VideoEncodeH264QualityLevelPropertiesKHR;
123077   };
123078 
123079   struct VideoEncodeH264RateControlInfoKHR
123080   {
123081     using NativeType = VkVideoEncodeH264RateControlInfoKHR;
123082 
123083     static const bool                                  allowDuplicate = false;
123084     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264RateControlInfoKHR;
123085 
123086 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264RateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123087     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR flags_                  = {},
123088                                                             uint32_t                                                 gopFrameCount_          = {},
123089                                                             uint32_t                                                 idrPeriod_              = {},
123090                                                             uint32_t                                                 consecutiveBFrameCount_ = {},
123091                                                             uint32_t                                                 temporalLayerCount_     = {},
123092                                                             const void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
123093       : pNext{ pNext_ }
123094       , flags{ flags_ }
123095       , gopFrameCount{ gopFrameCount_ }
123096       , idrPeriod{ idrPeriod_ }
123097       , consecutiveBFrameCount{ consecutiveBFrameCount_ }
123098       , temporalLayerCount{ temporalLayerCount_ }
123099     {
123100     }
123101 
123102     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlInfoKHR( VideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123103 
VideoEncodeH264RateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123104     VideoEncodeH264RateControlInfoKHR( VkVideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123105       : VideoEncodeH264RateControlInfoKHR( *reinterpret_cast<VideoEncodeH264RateControlInfoKHR const *>( &rhs ) )
123106     {
123107     }
123108 
123109     VideoEncodeH264RateControlInfoKHR & operator=( VideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123110 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123111 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123112     VideoEncodeH264RateControlInfoKHR & operator=( VkVideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123113     {
123114       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR const *>( &rhs );
123115       return *this;
123116     }
123117 
123118 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123119     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123120     {
123121       pNext = pNext_;
123122       return *this;
123123     }
123124 
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123125     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
123126     {
123127       flags = flags_;
123128       return *this;
123129     }
123130 
setGopFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123131     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setGopFrameCount( uint32_t gopFrameCount_ ) VULKAN_HPP_NOEXCEPT
123132     {
123133       gopFrameCount = gopFrameCount_;
123134       return *this;
123135     }
123136 
setIdrPeriodVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123137     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setIdrPeriod( uint32_t idrPeriod_ ) VULKAN_HPP_NOEXCEPT
123138     {
123139       idrPeriod = idrPeriod_;
123140       return *this;
123141     }
123142 
setConsecutiveBFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123143     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) VULKAN_HPP_NOEXCEPT
123144     {
123145       consecutiveBFrameCount = consecutiveBFrameCount_;
123146       return *this;
123147     }
123148 
setTemporalLayerCountVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123149     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setTemporalLayerCount( uint32_t temporalLayerCount_ ) VULKAN_HPP_NOEXCEPT
123150     {
123151       temporalLayerCount = temporalLayerCount_;
123152       return *this;
123153     }
123154 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123155 
operator VkVideoEncodeH264RateControlInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123156     operator VkVideoEncodeH264RateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123157     {
123158       return *reinterpret_cast<const VkVideoEncodeH264RateControlInfoKHR *>( this );
123159     }
123160 
operator VkVideoEncodeH264RateControlInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123161     operator VkVideoEncodeH264RateControlInfoKHR &() VULKAN_HPP_NOEXCEPT
123162     {
123163       return *reinterpret_cast<VkVideoEncodeH264RateControlInfoKHR *>( this );
123164     }
123165 
123166 #if defined( VULKAN_HPP_USE_REFLECT )
123167 #  if 14 <= VULKAN_HPP_CPP_VERSION
123168     auto
123169 #  else
123170     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
123171                const void * const &,
123172                VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR const &,
123173                uint32_t const &,
123174                uint32_t const &,
123175                uint32_t const &,
123176                uint32_t const &>
123177 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123178       reflect() const VULKAN_HPP_NOEXCEPT
123179     {
123180       return std::tie( sType, pNext, flags, gopFrameCount, idrPeriod, consecutiveBFrameCount, temporalLayerCount );
123181     }
123182 #endif
123183 
123184 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123185     auto operator<=>( VideoEncodeH264RateControlInfoKHR const & ) const = default;
123186 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123187     bool operator==( VideoEncodeH264RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123188     {
123189 #  if defined( VULKAN_HPP_USE_REFLECT )
123190       return this->reflect() == rhs.reflect();
123191 #  else
123192       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( gopFrameCount == rhs.gopFrameCount ) &&
123193              ( idrPeriod == rhs.idrPeriod ) && ( consecutiveBFrameCount == rhs.consecutiveBFrameCount ) && ( temporalLayerCount == rhs.temporalLayerCount );
123194 #  endif
123195     }
123196 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR123197     bool operator!=( VideoEncodeH264RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123198     {
123199       return !operator==( rhs );
123200     }
123201 #endif
123202 
123203   public:
123204     VULKAN_HPP_NAMESPACE::StructureType                      sType                  = StructureType::eVideoEncodeH264RateControlInfoKHR;
123205     const void *                                             pNext                  = {};
123206     VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR flags                  = {};
123207     uint32_t                                                 gopFrameCount          = {};
123208     uint32_t                                                 idrPeriod              = {};
123209     uint32_t                                                 consecutiveBFrameCount = {};
123210     uint32_t                                                 temporalLayerCount     = {};
123211   };
123212 
123213   template <>
123214   struct CppType<StructureType, StructureType::eVideoEncodeH264RateControlInfoKHR>
123215   {
123216     using Type = VideoEncodeH264RateControlInfoKHR;
123217   };
123218 
123219   struct VideoEncodeH264RateControlLayerInfoKHR
123220   {
123221     using NativeType = VkVideoEncodeH264RateControlLayerInfoKHR;
123222 
123223     static const bool                                  allowDuplicate = false;
123224     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264RateControlLayerInfoKHR;
123225 
123226 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264RateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123227     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlLayerInfoKHR( VULKAN_HPP_NAMESPACE::Bool32                      useMinQp_        = {},
123228                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR        minQp_           = {},
123229                                                                  VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp_        = {},
123230                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR        maxQp_           = {},
123231                                                                  VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize_ = {},
123232                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR maxFrameSize_    = {},
123233                                                                  const void *                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
123234       : pNext{ pNext_ }
123235       , useMinQp{ useMinQp_ }
123236       , minQp{ minQp_ }
123237       , useMaxQp{ useMaxQp_ }
123238       , maxQp{ maxQp_ }
123239       , useMaxFrameSize{ useMaxFrameSize_ }
123240       , maxFrameSize{ maxFrameSize_ }
123241     {
123242     }
123243 
123244     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlLayerInfoKHR( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123245 
VideoEncodeH264RateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123246     VideoEncodeH264RateControlLayerInfoKHR( VkVideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123247       : VideoEncodeH264RateControlLayerInfoKHR( *reinterpret_cast<VideoEncodeH264RateControlLayerInfoKHR const *>( &rhs ) )
123248     {
123249     }
123250 
123251     VideoEncodeH264RateControlLayerInfoKHR & operator=( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123252 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123253 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123254     VideoEncodeH264RateControlLayerInfoKHR & operator=( VkVideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123255     {
123256       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR const *>( &rhs );
123257       return *this;
123258     }
123259 
123260 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123261     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123262     {
123263       pNext = pNext_;
123264       return *this;
123265     }
123266 
setUseMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123267     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setUseMinQp( VULKAN_HPP_NAMESPACE::Bool32 useMinQp_ ) VULKAN_HPP_NOEXCEPT
123268     {
123269       useMinQp = useMinQp_;
123270       return *this;
123271     }
123272 
setMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123273     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setMinQp( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const & minQp_ ) VULKAN_HPP_NOEXCEPT
123274     {
123275       minQp = minQp_;
123276       return *this;
123277     }
123278 
setUseMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123279     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setUseMaxQp( VULKAN_HPP_NAMESPACE::Bool32 useMaxQp_ ) VULKAN_HPP_NOEXCEPT
123280     {
123281       useMaxQp = useMaxQp_;
123282       return *this;
123283     }
123284 
setMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123285     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setMaxQp( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const & maxQp_ ) VULKAN_HPP_NOEXCEPT
123286     {
123287       maxQp = maxQp_;
123288       return *this;
123289     }
123290 
setUseMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123291     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setUseMaxFrameSize( VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize_ ) VULKAN_HPP_NOEXCEPT
123292     {
123293       useMaxFrameSize = useMaxFrameSize_;
123294       return *this;
123295     }
123296 
123297     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR &
setMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123298       setMaxFrameSize( VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR const & maxFrameSize_ ) VULKAN_HPP_NOEXCEPT
123299     {
123300       maxFrameSize = maxFrameSize_;
123301       return *this;
123302     }
123303 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123304 
operator VkVideoEncodeH264RateControlLayerInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123305     operator VkVideoEncodeH264RateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123306     {
123307       return *reinterpret_cast<const VkVideoEncodeH264RateControlLayerInfoKHR *>( this );
123308     }
123309 
operator VkVideoEncodeH264RateControlLayerInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123310     operator VkVideoEncodeH264RateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT
123311     {
123312       return *reinterpret_cast<VkVideoEncodeH264RateControlLayerInfoKHR *>( this );
123313     }
123314 
123315 #if defined( VULKAN_HPP_USE_REFLECT )
123316 #  if 14 <= VULKAN_HPP_CPP_VERSION
123317     auto
123318 #  else
123319     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
123320                const void * const &,
123321                VULKAN_HPP_NAMESPACE::Bool32 const &,
123322                VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const &,
123323                VULKAN_HPP_NAMESPACE::Bool32 const &,
123324                VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const &,
123325                VULKAN_HPP_NAMESPACE::Bool32 const &,
123326                VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR const &>
123327 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123328       reflect() const VULKAN_HPP_NOEXCEPT
123329     {
123330       return std::tie( sType, pNext, useMinQp, minQp, useMaxQp, maxQp, useMaxFrameSize, maxFrameSize );
123331     }
123332 #endif
123333 
123334 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123335     auto operator<=>( VideoEncodeH264RateControlLayerInfoKHR const & ) const = default;
123336 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123337     bool operator==( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123338     {
123339 #  if defined( VULKAN_HPP_USE_REFLECT )
123340       return this->reflect() == rhs.reflect();
123341 #  else
123342       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMinQp == rhs.useMinQp ) && ( minQp == rhs.minQp ) && ( useMaxQp == rhs.useMaxQp ) &&
123343              ( maxQp == rhs.maxQp ) && ( useMaxFrameSize == rhs.useMaxFrameSize ) && ( maxFrameSize == rhs.maxFrameSize );
123344 #  endif
123345     }
123346 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR123347     bool operator!=( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123348     {
123349       return !operator==( rhs );
123350     }
123351 #endif
123352 
123353   public:
123354     VULKAN_HPP_NAMESPACE::StructureType               sType           = StructureType::eVideoEncodeH264RateControlLayerInfoKHR;
123355     const void *                                      pNext           = {};
123356     VULKAN_HPP_NAMESPACE::Bool32                      useMinQp        = {};
123357     VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR        minQp           = {};
123358     VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp        = {};
123359     VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR        maxQp           = {};
123360     VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize = {};
123361     VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR maxFrameSize    = {};
123362   };
123363 
123364   template <>
123365   struct CppType<StructureType, StructureType::eVideoEncodeH264RateControlLayerInfoKHR>
123366   {
123367     using Type = VideoEncodeH264RateControlLayerInfoKHR;
123368   };
123369 
123370   struct VideoEncodeH264SessionCreateInfoKHR
123371   {
123372     using NativeType = VkVideoEncodeH264SessionCreateInfoKHR;
123373 
123374     static const bool                                  allowDuplicate = false;
123375     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264SessionCreateInfoKHR;
123376 
123377 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123378     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionCreateInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 useMaxLevelIdc_ = {},
123379                                                               StdVideoH264LevelIdc         maxLevelIdc_    = {},
123380                                                               const void *                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
123381       : pNext{ pNext_ }
123382       , useMaxLevelIdc{ useMaxLevelIdc_ }
123383       , maxLevelIdc{ maxLevelIdc_ }
123384     {
123385     }
123386 
123387     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionCreateInfoKHR( VideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123388 
VideoEncodeH264SessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123389     VideoEncodeH264SessionCreateInfoKHR( VkVideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123390       : VideoEncodeH264SessionCreateInfoKHR( *reinterpret_cast<VideoEncodeH264SessionCreateInfoKHR const *>( &rhs ) )
123391     {
123392     }
123393 
123394     VideoEncodeH264SessionCreateInfoKHR & operator=( VideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123395 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123396 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123397     VideoEncodeH264SessionCreateInfoKHR & operator=( VkVideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123398     {
123399       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR const *>( &rhs );
123400       return *this;
123401     }
123402 
123403 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123404     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123405     {
123406       pNext = pNext_;
123407       return *this;
123408     }
123409 
setUseMaxLevelIdcVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123410     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR & setUseMaxLevelIdc( VULKAN_HPP_NAMESPACE::Bool32 useMaxLevelIdc_ ) VULKAN_HPP_NOEXCEPT
123411     {
123412       useMaxLevelIdc = useMaxLevelIdc_;
123413       return *this;
123414     }
123415 
setMaxLevelIdcVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123416     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR & setMaxLevelIdc( StdVideoH264LevelIdc maxLevelIdc_ ) VULKAN_HPP_NOEXCEPT
123417     {
123418       maxLevelIdc = maxLevelIdc_;
123419       return *this;
123420     }
123421 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123422 
operator VkVideoEncodeH264SessionCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123423     operator VkVideoEncodeH264SessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123424     {
123425       return *reinterpret_cast<const VkVideoEncodeH264SessionCreateInfoKHR *>( this );
123426     }
123427 
operator VkVideoEncodeH264SessionCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123428     operator VkVideoEncodeH264SessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
123429     {
123430       return *reinterpret_cast<VkVideoEncodeH264SessionCreateInfoKHR *>( this );
123431     }
123432 
123433 #if defined( VULKAN_HPP_USE_REFLECT )
123434 #  if 14 <= VULKAN_HPP_CPP_VERSION
123435     auto
123436 #  else
123437     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, StdVideoH264LevelIdc const &>
123438 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123439       reflect() const VULKAN_HPP_NOEXCEPT
123440     {
123441       return std::tie( sType, pNext, useMaxLevelIdc, maxLevelIdc );
123442     }
123443 #endif
123444 
123445 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123446     std::strong_ordering operator<=>( VideoEncodeH264SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123447     {
123448       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
123449         return cmp;
123450       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
123451         return cmp;
123452       if ( auto cmp = useMaxLevelIdc <=> rhs.useMaxLevelIdc; cmp != 0 )
123453         return cmp;
123454       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ); cmp != 0 )
123455         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
123456 
123457       return std::strong_ordering::equivalent;
123458     }
123459 #endif
123460 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123461     bool operator==( VideoEncodeH264SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123462     {
123463       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMaxLevelIdc == rhs.useMaxLevelIdc ) &&
123464              ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ) == 0 );
123465     }
123466 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR123467     bool operator!=( VideoEncodeH264SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123468     {
123469       return !operator==( rhs );
123470     }
123471 
123472   public:
123473     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eVideoEncodeH264SessionCreateInfoKHR;
123474     const void *                        pNext          = {};
123475     VULKAN_HPP_NAMESPACE::Bool32        useMaxLevelIdc = {};
123476     StdVideoH264LevelIdc                maxLevelIdc    = {};
123477   };
123478 
123479   template <>
123480   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionCreateInfoKHR>
123481   {
123482     using Type = VideoEncodeH264SessionCreateInfoKHR;
123483   };
123484 
123485   struct VideoEncodeH264SessionParametersAddInfoKHR
123486   {
123487     using NativeType = VkVideoEncodeH264SessionParametersAddInfoKHR;
123488 
123489     static const bool                                  allowDuplicate = false;
123490     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264SessionParametersAddInfoKHR;
123491 
123492 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123493     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersAddInfoKHR( uint32_t                                 stdSPSCount_ = {},
123494                                                                      const StdVideoH264SequenceParameterSet * pStdSPSs_    = {},
123495                                                                      uint32_t                                 stdPPSCount_ = {},
123496                                                                      const StdVideoH264PictureParameterSet *  pStdPPSs_    = {},
123497                                                                      const void *                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
123498       : pNext{ pNext_ }
123499       , stdSPSCount{ stdSPSCount_ }
123500       , pStdSPSs{ pStdSPSs_ }
123501       , stdPPSCount{ stdPPSCount_ }
123502       , pStdPPSs{ pStdPPSs_ }
123503     {
123504     }
123505 
123506     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersAddInfoKHR( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123507 
VideoEncodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123508     VideoEncodeH264SessionParametersAddInfoKHR( VkVideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123509       : VideoEncodeH264SessionParametersAddInfoKHR( *reinterpret_cast<VideoEncodeH264SessionParametersAddInfoKHR const *>( &rhs ) )
123510     {
123511     }
123512 
123513 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123514     VideoEncodeH264SessionParametersAddInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & stdSPSs_,
123515                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const &  stdPPSs_ = {},
123516                                                 const void *                                                                                  pNext_ = nullptr )
123517       : pNext( pNext_ )
123518       , stdSPSCount( static_cast<uint32_t>( stdSPSs_.size() ) )
123519       , pStdSPSs( stdSPSs_.data() )
123520       , stdPPSCount( static_cast<uint32_t>( stdPPSs_.size() ) )
123521       , pStdPPSs( stdPPSs_.data() )
123522     {
123523     }
123524 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
123525 
123526     VideoEncodeH264SessionParametersAddInfoKHR & operator=( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123527 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123528 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123529     VideoEncodeH264SessionParametersAddInfoKHR & operator=( VkVideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123530     {
123531       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR const *>( &rhs );
123532       return *this;
123533     }
123534 
123535 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123536     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123537     {
123538       pNext = pNext_;
123539       return *this;
123540     }
123541 
setStdSPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123542     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) VULKAN_HPP_NOEXCEPT
123543     {
123544       stdSPSCount = stdSPSCount_;
123545       return *this;
123546     }
123547 
setPStdSPSsVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123548     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setPStdSPSs( const StdVideoH264SequenceParameterSet * pStdSPSs_ ) VULKAN_HPP_NOEXCEPT
123549     {
123550       pStdSPSs = pStdSPSs_;
123551       return *this;
123552     }
123553 
123554 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
123555     VideoEncodeH264SessionParametersAddInfoKHR &
setStdSPSsVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123556       setStdSPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT
123557     {
123558       stdSPSCount = static_cast<uint32_t>( stdSPSs_.size() );
123559       pStdSPSs    = stdSPSs_.data();
123560       return *this;
123561     }
123562 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
123563 
setStdPPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123564     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) VULKAN_HPP_NOEXCEPT
123565     {
123566       stdPPSCount = stdPPSCount_;
123567       return *this;
123568     }
123569 
setPStdPPSsVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123570     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setPStdPPSs( const StdVideoH264PictureParameterSet * pStdPPSs_ ) VULKAN_HPP_NOEXCEPT
123571     {
123572       pStdPPSs = pStdPPSs_;
123573       return *this;
123574     }
123575 
123576 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
123577     VideoEncodeH264SessionParametersAddInfoKHR &
setStdPPSsVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123578       setStdPPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT
123579     {
123580       stdPPSCount = static_cast<uint32_t>( stdPPSs_.size() );
123581       pStdPPSs    = stdPPSs_.data();
123582       return *this;
123583     }
123584 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
123585 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123586 
operator VkVideoEncodeH264SessionParametersAddInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123587     operator VkVideoEncodeH264SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123588     {
123589       return *reinterpret_cast<const VkVideoEncodeH264SessionParametersAddInfoKHR *>( this );
123590     }
123591 
operator VkVideoEncodeH264SessionParametersAddInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123592     operator VkVideoEncodeH264SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT
123593     {
123594       return *reinterpret_cast<VkVideoEncodeH264SessionParametersAddInfoKHR *>( this );
123595     }
123596 
123597 #if defined( VULKAN_HPP_USE_REFLECT )
123598 #  if 14 <= VULKAN_HPP_CPP_VERSION
123599     auto
123600 #  else
123601     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
123602                const void * const &,
123603                uint32_t const &,
123604                const StdVideoH264SequenceParameterSet * const &,
123605                uint32_t const &,
123606                const StdVideoH264PictureParameterSet * const &>
123607 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123608       reflect() const VULKAN_HPP_NOEXCEPT
123609     {
123610       return std::tie( sType, pNext, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs );
123611     }
123612 #endif
123613 
123614 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123615     auto operator<=>( VideoEncodeH264SessionParametersAddInfoKHR const & ) const = default;
123616 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123617     bool operator==( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123618     {
123619 #  if defined( VULKAN_HPP_USE_REFLECT )
123620       return this->reflect() == rhs.reflect();
123621 #  else
123622       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) &&
123623              ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs );
123624 #  endif
123625     }
123626 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR123627     bool operator!=( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123628     {
123629       return !operator==( rhs );
123630     }
123631 #endif
123632 
123633   public:
123634     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoEncodeH264SessionParametersAddInfoKHR;
123635     const void *                             pNext       = {};
123636     uint32_t                                 stdSPSCount = {};
123637     const StdVideoH264SequenceParameterSet * pStdSPSs    = {};
123638     uint32_t                                 stdPPSCount = {};
123639     const StdVideoH264PictureParameterSet *  pStdPPSs    = {};
123640   };
123641 
123642   template <>
123643   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionParametersAddInfoKHR>
123644   {
123645     using Type = VideoEncodeH264SessionParametersAddInfoKHR;
123646   };
123647 
123648   struct VideoEncodeH264SessionParametersCreateInfoKHR
123649   {
123650     using NativeType = VkVideoEncodeH264SessionParametersCreateInfoKHR;
123651 
123652     static const bool                                  allowDuplicate = false;
123653     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264SessionParametersCreateInfoKHR;
123654 
123655 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
123656     VULKAN_HPP_CONSTEXPR
VideoEncodeH264SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123657       VideoEncodeH264SessionParametersCreateInfoKHR( uint32_t                                                                 maxStdSPSCount_     = {},
123658                                                      uint32_t                                                                 maxStdPPSCount_     = {},
123659                                                      const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR * pParametersAddInfo_ = {},
123660                                                      const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
123661       : pNext{ pNext_ }
123662       , maxStdSPSCount{ maxStdSPSCount_ }
123663       , maxStdPPSCount{ maxStdPPSCount_ }
123664       , pParametersAddInfo{ pParametersAddInfo_ }
123665     {
123666     }
123667 
123668     VULKAN_HPP_CONSTEXPR
123669       VideoEncodeH264SessionParametersCreateInfoKHR( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123670 
VideoEncodeH264SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123671     VideoEncodeH264SessionParametersCreateInfoKHR( VkVideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123672       : VideoEncodeH264SessionParametersCreateInfoKHR( *reinterpret_cast<VideoEncodeH264SessionParametersCreateInfoKHR const *>( &rhs ) )
123673     {
123674     }
123675 
123676     VideoEncodeH264SessionParametersCreateInfoKHR & operator=( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123677 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123678 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123679     VideoEncodeH264SessionParametersCreateInfoKHR & operator=( VkVideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123680     {
123681       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR const *>( &rhs );
123682       return *this;
123683     }
123684 
123685 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123686     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123687     {
123688       pNext = pNext_;
123689       return *this;
123690     }
123691 
setMaxStdSPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123692     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) VULKAN_HPP_NOEXCEPT
123693     {
123694       maxStdSPSCount = maxStdSPSCount_;
123695       return *this;
123696     }
123697 
setMaxStdPPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123698     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) VULKAN_HPP_NOEXCEPT
123699     {
123700       maxStdPPSCount = maxStdPPSCount_;
123701       return *this;
123702     }
123703 
123704     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR &
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123705       setPParametersAddInfo( const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
123706     {
123707       pParametersAddInfo = pParametersAddInfo_;
123708       return *this;
123709     }
123710 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123711 
operator VkVideoEncodeH264SessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123712     operator VkVideoEncodeH264SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123713     {
123714       return *reinterpret_cast<const VkVideoEncodeH264SessionParametersCreateInfoKHR *>( this );
123715     }
123716 
operator VkVideoEncodeH264SessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123717     operator VkVideoEncodeH264SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
123718     {
123719       return *reinterpret_cast<VkVideoEncodeH264SessionParametersCreateInfoKHR *>( this );
123720     }
123721 
123722 #if defined( VULKAN_HPP_USE_REFLECT )
123723 #  if 14 <= VULKAN_HPP_CPP_VERSION
123724     auto
123725 #  else
123726     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
123727                const void * const &,
123728                uint32_t const &,
123729                uint32_t const &,
123730                const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR * const &>
123731 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123732       reflect() const VULKAN_HPP_NOEXCEPT
123733     {
123734       return std::tie( sType, pNext, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo );
123735     }
123736 #endif
123737 
123738 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123739     auto operator<=>( VideoEncodeH264SessionParametersCreateInfoKHR const & ) const = default;
123740 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123741     bool operator==( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123742     {
123743 #  if defined( VULKAN_HPP_USE_REFLECT )
123744       return this->reflect() == rhs.reflect();
123745 #  else
123746       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) && ( maxStdPPSCount == rhs.maxStdPPSCount ) &&
123747              ( pParametersAddInfo == rhs.pParametersAddInfo );
123748 #  endif
123749     }
123750 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR123751     bool operator!=( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123752     {
123753       return !operator==( rhs );
123754     }
123755 #endif
123756 
123757   public:
123758     VULKAN_HPP_NAMESPACE::StructureType                                      sType              = StructureType::eVideoEncodeH264SessionParametersCreateInfoKHR;
123759     const void *                                                             pNext              = {};
123760     uint32_t                                                                 maxStdSPSCount     = {};
123761     uint32_t                                                                 maxStdPPSCount     = {};
123762     const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR * pParametersAddInfo = {};
123763   };
123764 
123765   template <>
123766   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionParametersCreateInfoKHR>
123767   {
123768     using Type = VideoEncodeH264SessionParametersCreateInfoKHR;
123769   };
123770 
123771   struct VideoEncodeH264SessionParametersFeedbackInfoKHR
123772   {
123773     using NativeType = VkVideoEncodeH264SessionParametersFeedbackInfoKHR;
123774 
123775     static const bool                                  allowDuplicate = false;
123776     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264SessionParametersFeedbackInfoKHR;
123777 
123778 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR123779     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersFeedbackInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 hasStdSPSOverrides_ = {},
123780                                                                           VULKAN_HPP_NAMESPACE::Bool32 hasStdPPSOverrides_ = {},
123781                                                                           void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
123782       : pNext{ pNext_ }
123783       , hasStdSPSOverrides{ hasStdSPSOverrides_ }
123784       , hasStdPPSOverrides{ hasStdPPSOverrides_ }
123785     {
123786     }
123787 
123788     VULKAN_HPP_CONSTEXPR
123789       VideoEncodeH264SessionParametersFeedbackInfoKHR( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123790 
VideoEncodeH264SessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR123791     VideoEncodeH264SessionParametersFeedbackInfoKHR( VkVideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123792       : VideoEncodeH264SessionParametersFeedbackInfoKHR( *reinterpret_cast<VideoEncodeH264SessionParametersFeedbackInfoKHR const *>( &rhs ) )
123793     {
123794     }
123795 
123796     VideoEncodeH264SessionParametersFeedbackInfoKHR & operator=( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123797 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123798 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR123799     VideoEncodeH264SessionParametersFeedbackInfoKHR & operator=( VkVideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123800     {
123801       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR const *>( &rhs );
123802       return *this;
123803     }
123804 
operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR123805     operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123806     {
123807       return *reinterpret_cast<const VkVideoEncodeH264SessionParametersFeedbackInfoKHR *>( this );
123808     }
123809 
operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR123810     operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR &() VULKAN_HPP_NOEXCEPT
123811     {
123812       return *reinterpret_cast<VkVideoEncodeH264SessionParametersFeedbackInfoKHR *>( this );
123813     }
123814 
123815 #if defined( VULKAN_HPP_USE_REFLECT )
123816 #  if 14 <= VULKAN_HPP_CPP_VERSION
123817     auto
123818 #  else
123819     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
123820 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR123821       reflect() const VULKAN_HPP_NOEXCEPT
123822     {
123823       return std::tie( sType, pNext, hasStdSPSOverrides, hasStdPPSOverrides );
123824     }
123825 #endif
123826 
123827 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123828     auto operator<=>( VideoEncodeH264SessionParametersFeedbackInfoKHR const & ) const = default;
123829 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR123830     bool operator==( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123831     {
123832 #  if defined( VULKAN_HPP_USE_REFLECT )
123833       return this->reflect() == rhs.reflect();
123834 #  else
123835       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasStdSPSOverrides == rhs.hasStdSPSOverrides ) &&
123836              ( hasStdPPSOverrides == rhs.hasStdPPSOverrides );
123837 #  endif
123838     }
123839 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR123840     bool operator!=( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123841     {
123842       return !operator==( rhs );
123843     }
123844 #endif
123845 
123846   public:
123847     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eVideoEncodeH264SessionParametersFeedbackInfoKHR;
123848     void *                              pNext              = {};
123849     VULKAN_HPP_NAMESPACE::Bool32        hasStdSPSOverrides = {};
123850     VULKAN_HPP_NAMESPACE::Bool32        hasStdPPSOverrides = {};
123851   };
123852 
123853   template <>
123854   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionParametersFeedbackInfoKHR>
123855   {
123856     using Type = VideoEncodeH264SessionParametersFeedbackInfoKHR;
123857   };
123858 
123859   struct VideoEncodeH264SessionParametersGetInfoKHR
123860   {
123861     using NativeType = VkVideoEncodeH264SessionParametersGetInfoKHR;
123862 
123863     static const bool                                  allowDuplicate = false;
123864     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264SessionParametersGetInfoKHR;
123865 
123866 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123867     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersGetInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 writeStdSPS_ = {},
123868                                                                      VULKAN_HPP_NAMESPACE::Bool32 writeStdPPS_ = {},
123869                                                                      uint32_t                     stdSPSId_    = {},
123870                                                                      uint32_t                     stdPPSId_    = {},
123871                                                                      const void *                 pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
123872       : pNext{ pNext_ }
123873       , writeStdSPS{ writeStdSPS_ }
123874       , writeStdPPS{ writeStdPPS_ }
123875       , stdSPSId{ stdSPSId_ }
123876       , stdPPSId{ stdPPSId_ }
123877     {
123878     }
123879 
123880     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersGetInfoKHR( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123881 
VideoEncodeH264SessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123882     VideoEncodeH264SessionParametersGetInfoKHR( VkVideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123883       : VideoEncodeH264SessionParametersGetInfoKHR( *reinterpret_cast<VideoEncodeH264SessionParametersGetInfoKHR const *>( &rhs ) )
123884     {
123885     }
123886 
123887     VideoEncodeH264SessionParametersGetInfoKHR & operator=( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123888 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123889 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123890     VideoEncodeH264SessionParametersGetInfoKHR & operator=( VkVideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123891     {
123892       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR const *>( &rhs );
123893       return *this;
123894     }
123895 
123896 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123897     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123898     {
123899       pNext = pNext_;
123900       return *this;
123901     }
123902 
setWriteStdSPSVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123903     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setWriteStdSPS( VULKAN_HPP_NAMESPACE::Bool32 writeStdSPS_ ) VULKAN_HPP_NOEXCEPT
123904     {
123905       writeStdSPS = writeStdSPS_;
123906       return *this;
123907     }
123908 
setWriteStdPPSVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123909     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setWriteStdPPS( VULKAN_HPP_NAMESPACE::Bool32 writeStdPPS_ ) VULKAN_HPP_NOEXCEPT
123910     {
123911       writeStdPPS = writeStdPPS_;
123912       return *this;
123913     }
123914 
setStdSPSIdVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123915     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setStdSPSId( uint32_t stdSPSId_ ) VULKAN_HPP_NOEXCEPT
123916     {
123917       stdSPSId = stdSPSId_;
123918       return *this;
123919     }
123920 
setStdPPSIdVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123921     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setStdPPSId( uint32_t stdPPSId_ ) VULKAN_HPP_NOEXCEPT
123922     {
123923       stdPPSId = stdPPSId_;
123924       return *this;
123925     }
123926 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123927 
operator VkVideoEncodeH264SessionParametersGetInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123928     operator VkVideoEncodeH264SessionParametersGetInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123929     {
123930       return *reinterpret_cast<const VkVideoEncodeH264SessionParametersGetInfoKHR *>( this );
123931     }
123932 
operator VkVideoEncodeH264SessionParametersGetInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123933     operator VkVideoEncodeH264SessionParametersGetInfoKHR &() VULKAN_HPP_NOEXCEPT
123934     {
123935       return *reinterpret_cast<VkVideoEncodeH264SessionParametersGetInfoKHR *>( this );
123936     }
123937 
123938 #if defined( VULKAN_HPP_USE_REFLECT )
123939 #  if 14 <= VULKAN_HPP_CPP_VERSION
123940     auto
123941 #  else
123942     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
123943                const void * const &,
123944                VULKAN_HPP_NAMESPACE::Bool32 const &,
123945                VULKAN_HPP_NAMESPACE::Bool32 const &,
123946                uint32_t const &,
123947                uint32_t const &>
123948 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123949       reflect() const VULKAN_HPP_NOEXCEPT
123950     {
123951       return std::tie( sType, pNext, writeStdSPS, writeStdPPS, stdSPSId, stdPPSId );
123952     }
123953 #endif
123954 
123955 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123956     auto operator<=>( VideoEncodeH264SessionParametersGetInfoKHR const & ) const = default;
123957 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123958     bool operator==( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123959     {
123960 #  if defined( VULKAN_HPP_USE_REFLECT )
123961       return this->reflect() == rhs.reflect();
123962 #  else
123963       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( writeStdSPS == rhs.writeStdSPS ) && ( writeStdPPS == rhs.writeStdPPS ) &&
123964              ( stdSPSId == rhs.stdSPSId ) && ( stdPPSId == rhs.stdPPSId );
123965 #  endif
123966     }
123967 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR123968     bool operator!=( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123969     {
123970       return !operator==( rhs );
123971     }
123972 #endif
123973 
123974   public:
123975     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eVideoEncodeH264SessionParametersGetInfoKHR;
123976     const void *                        pNext       = {};
123977     VULKAN_HPP_NAMESPACE::Bool32        writeStdSPS = {};
123978     VULKAN_HPP_NAMESPACE::Bool32        writeStdPPS = {};
123979     uint32_t                            stdSPSId    = {};
123980     uint32_t                            stdPPSId    = {};
123981   };
123982 
123983   template <>
123984   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionParametersGetInfoKHR>
123985   {
123986     using Type = VideoEncodeH264SessionParametersGetInfoKHR;
123987   };
123988 
123989   struct VideoEncodeH265CapabilitiesKHR
123990   {
123991     using NativeType = VkVideoEncodeH265CapabilitiesKHR;
123992 
123993     static const bool                                  allowDuplicate = false;
123994     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265CapabilitiesKHR;
123995 
123996 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR123997     VULKAN_HPP_CONSTEXPR VideoEncodeH265CapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsKHR         flags_                       = {},
123998                                                          StdVideoH265LevelIdc                                            maxLevelIdc_                 = {},
123999                                                          uint32_t                                                        maxSliceSegmentCount_        = {},
124000                                                          VULKAN_HPP_NAMESPACE::Extent2D                                  maxTiles_                    = {},
124001                                                          VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsKHR            ctbSizes_                    = {},
124002                                                          VULKAN_HPP_NAMESPACE::VideoEncodeH265TransformBlockSizeFlagsKHR transformBlockSizes_         = {},
124003                                                          uint32_t                                                        maxPPictureL0ReferenceCount_ = {},
124004                                                          uint32_t                                                        maxBPictureL0ReferenceCount_ = {},
124005                                                          uint32_t                                                        maxL1ReferenceCount_         = {},
124006                                                          uint32_t                                                        maxSubLayerCount_            = {},
124007                                                          VULKAN_HPP_NAMESPACE::Bool32                     expectDyadicTemporalSubLayerPattern_        = {},
124008                                                          int32_t                                          minQp_                                      = {},
124009                                                          int32_t                                          maxQp_                                      = {},
124010                                                          VULKAN_HPP_NAMESPACE::Bool32                     prefersGopRemainingFrames_                  = {},
124011                                                          VULKAN_HPP_NAMESPACE::Bool32                     requiresGopRemainingFrames_                 = {},
124012                                                          VULKAN_HPP_NAMESPACE::VideoEncodeH265StdFlagsKHR stdSyntaxFlags_                             = {},
124013                                                          void *                                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
124014       : pNext{ pNext_ }
124015       , flags{ flags_ }
124016       , maxLevelIdc{ maxLevelIdc_ }
124017       , maxSliceSegmentCount{ maxSliceSegmentCount_ }
124018       , maxTiles{ maxTiles_ }
124019       , ctbSizes{ ctbSizes_ }
124020       , transformBlockSizes{ transformBlockSizes_ }
124021       , maxPPictureL0ReferenceCount{ maxPPictureL0ReferenceCount_ }
124022       , maxBPictureL0ReferenceCount{ maxBPictureL0ReferenceCount_ }
124023       , maxL1ReferenceCount{ maxL1ReferenceCount_ }
124024       , maxSubLayerCount{ maxSubLayerCount_ }
124025       , expectDyadicTemporalSubLayerPattern{ expectDyadicTemporalSubLayerPattern_ }
124026       , minQp{ minQp_ }
124027       , maxQp{ maxQp_ }
124028       , prefersGopRemainingFrames{ prefersGopRemainingFrames_ }
124029       , requiresGopRemainingFrames{ requiresGopRemainingFrames_ }
124030       , stdSyntaxFlags{ stdSyntaxFlags_ }
124031     {
124032     }
124033 
124034     VULKAN_HPP_CONSTEXPR VideoEncodeH265CapabilitiesKHR( VideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124035 
VideoEncodeH265CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR124036     VideoEncodeH265CapabilitiesKHR( VkVideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124037       : VideoEncodeH265CapabilitiesKHR( *reinterpret_cast<VideoEncodeH265CapabilitiesKHR const *>( &rhs ) )
124038     {
124039     }
124040 
124041     VideoEncodeH265CapabilitiesKHR & operator=( VideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124042 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124043 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR124044     VideoEncodeH265CapabilitiesKHR & operator=( VkVideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124045     {
124046       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR const *>( &rhs );
124047       return *this;
124048     }
124049 
operator VkVideoEncodeH265CapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR124050     operator VkVideoEncodeH265CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
124051     {
124052       return *reinterpret_cast<const VkVideoEncodeH265CapabilitiesKHR *>( this );
124053     }
124054 
operator VkVideoEncodeH265CapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR124055     operator VkVideoEncodeH265CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
124056     {
124057       return *reinterpret_cast<VkVideoEncodeH265CapabilitiesKHR *>( this );
124058     }
124059 
124060 #if defined( VULKAN_HPP_USE_REFLECT )
124061 #  if 14 <= VULKAN_HPP_CPP_VERSION
124062     auto
124063 #  else
124064     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
124065                void * const &,
124066                VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsKHR const &,
124067                StdVideoH265LevelIdc const &,
124068                uint32_t const &,
124069                VULKAN_HPP_NAMESPACE::Extent2D const &,
124070                VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsKHR const &,
124071                VULKAN_HPP_NAMESPACE::VideoEncodeH265TransformBlockSizeFlagsKHR const &,
124072                uint32_t const &,
124073                uint32_t const &,
124074                uint32_t const &,
124075                uint32_t const &,
124076                VULKAN_HPP_NAMESPACE::Bool32 const &,
124077                int32_t const &,
124078                int32_t const &,
124079                VULKAN_HPP_NAMESPACE::Bool32 const &,
124080                VULKAN_HPP_NAMESPACE::Bool32 const &,
124081                VULKAN_HPP_NAMESPACE::VideoEncodeH265StdFlagsKHR const &>
124082 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR124083       reflect() const VULKAN_HPP_NOEXCEPT
124084     {
124085       return std::tie( sType,
124086                        pNext,
124087                        flags,
124088                        maxLevelIdc,
124089                        maxSliceSegmentCount,
124090                        maxTiles,
124091                        ctbSizes,
124092                        transformBlockSizes,
124093                        maxPPictureL0ReferenceCount,
124094                        maxBPictureL0ReferenceCount,
124095                        maxL1ReferenceCount,
124096                        maxSubLayerCount,
124097                        expectDyadicTemporalSubLayerPattern,
124098                        minQp,
124099                        maxQp,
124100                        prefersGopRemainingFrames,
124101                        requiresGopRemainingFrames,
124102                        stdSyntaxFlags );
124103     }
124104 #endif
124105 
124106 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR124107     std::strong_ordering operator<=>( VideoEncodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124108     {
124109       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
124110         return cmp;
124111       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
124112         return cmp;
124113       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
124114         return cmp;
124115       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ); cmp != 0 )
124116         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
124117       if ( auto cmp = maxSliceSegmentCount <=> rhs.maxSliceSegmentCount; cmp != 0 )
124118         return cmp;
124119       if ( auto cmp = maxTiles <=> rhs.maxTiles; cmp != 0 )
124120         return cmp;
124121       if ( auto cmp = ctbSizes <=> rhs.ctbSizes; cmp != 0 )
124122         return cmp;
124123       if ( auto cmp = transformBlockSizes <=> rhs.transformBlockSizes; cmp != 0 )
124124         return cmp;
124125       if ( auto cmp = maxPPictureL0ReferenceCount <=> rhs.maxPPictureL0ReferenceCount; cmp != 0 )
124126         return cmp;
124127       if ( auto cmp = maxBPictureL0ReferenceCount <=> rhs.maxBPictureL0ReferenceCount; cmp != 0 )
124128         return cmp;
124129       if ( auto cmp = maxL1ReferenceCount <=> rhs.maxL1ReferenceCount; cmp != 0 )
124130         return cmp;
124131       if ( auto cmp = maxSubLayerCount <=> rhs.maxSubLayerCount; cmp != 0 )
124132         return cmp;
124133       if ( auto cmp = expectDyadicTemporalSubLayerPattern <=> rhs.expectDyadicTemporalSubLayerPattern; cmp != 0 )
124134         return cmp;
124135       if ( auto cmp = minQp <=> rhs.minQp; cmp != 0 )
124136         return cmp;
124137       if ( auto cmp = maxQp <=> rhs.maxQp; cmp != 0 )
124138         return cmp;
124139       if ( auto cmp = prefersGopRemainingFrames <=> rhs.prefersGopRemainingFrames; cmp != 0 )
124140         return cmp;
124141       if ( auto cmp = requiresGopRemainingFrames <=> rhs.requiresGopRemainingFrames; cmp != 0 )
124142         return cmp;
124143       if ( auto cmp = stdSyntaxFlags <=> rhs.stdSyntaxFlags; cmp != 0 )
124144         return cmp;
124145 
124146       return std::strong_ordering::equivalent;
124147     }
124148 #endif
124149 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR124150     bool operator==( VideoEncodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124151     {
124152       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
124153              ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ) == 0 ) && ( maxSliceSegmentCount == rhs.maxSliceSegmentCount ) &&
124154              ( maxTiles == rhs.maxTiles ) && ( ctbSizes == rhs.ctbSizes ) && ( transformBlockSizes == rhs.transformBlockSizes ) &&
124155              ( maxPPictureL0ReferenceCount == rhs.maxPPictureL0ReferenceCount ) && ( maxBPictureL0ReferenceCount == rhs.maxBPictureL0ReferenceCount ) &&
124156              ( maxL1ReferenceCount == rhs.maxL1ReferenceCount ) && ( maxSubLayerCount == rhs.maxSubLayerCount ) &&
124157              ( expectDyadicTemporalSubLayerPattern == rhs.expectDyadicTemporalSubLayerPattern ) && ( minQp == rhs.minQp ) && ( maxQp == rhs.maxQp ) &&
124158              ( prefersGopRemainingFrames == rhs.prefersGopRemainingFrames ) && ( requiresGopRemainingFrames == rhs.requiresGopRemainingFrames ) &&
124159              ( stdSyntaxFlags == rhs.stdSyntaxFlags );
124160     }
124161 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR124162     bool operator!=( VideoEncodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124163     {
124164       return !operator==( rhs );
124165     }
124166 
124167   public:
124168     VULKAN_HPP_NAMESPACE::StructureType                             sType                               = StructureType::eVideoEncodeH265CapabilitiesKHR;
124169     void *                                                          pNext                               = {};
124170     VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsKHR         flags                               = {};
124171     StdVideoH265LevelIdc                                            maxLevelIdc                         = {};
124172     uint32_t                                                        maxSliceSegmentCount                = {};
124173     VULKAN_HPP_NAMESPACE::Extent2D                                  maxTiles                            = {};
124174     VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsKHR            ctbSizes                            = {};
124175     VULKAN_HPP_NAMESPACE::VideoEncodeH265TransformBlockSizeFlagsKHR transformBlockSizes                 = {};
124176     uint32_t                                                        maxPPictureL0ReferenceCount         = {};
124177     uint32_t                                                        maxBPictureL0ReferenceCount         = {};
124178     uint32_t                                                        maxL1ReferenceCount                 = {};
124179     uint32_t                                                        maxSubLayerCount                    = {};
124180     VULKAN_HPP_NAMESPACE::Bool32                                    expectDyadicTemporalSubLayerPattern = {};
124181     int32_t                                                         minQp                               = {};
124182     int32_t                                                         maxQp                               = {};
124183     VULKAN_HPP_NAMESPACE::Bool32                                    prefersGopRemainingFrames           = {};
124184     VULKAN_HPP_NAMESPACE::Bool32                                    requiresGopRemainingFrames          = {};
124185     VULKAN_HPP_NAMESPACE::VideoEncodeH265StdFlagsKHR                stdSyntaxFlags                      = {};
124186   };
124187 
124188   template <>
124189   struct CppType<StructureType, StructureType::eVideoEncodeH265CapabilitiesKHR>
124190   {
124191     using Type = VideoEncodeH265CapabilitiesKHR;
124192   };
124193 
124194   struct VideoEncodeH265DpbSlotInfoKHR
124195   {
124196     using NativeType = VkVideoEncodeH265DpbSlotInfoKHR;
124197 
124198     static const bool                                  allowDuplicate = false;
124199     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265DpbSlotInfoKHR;
124200 
124201 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR124202     VULKAN_HPP_CONSTEXPR VideoEncodeH265DpbSlotInfoKHR( const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo_ = {},
124203                                                         const void *                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
124204       : pNext{ pNext_ }
124205       , pStdReferenceInfo{ pStdReferenceInfo_ }
124206     {
124207     }
124208 
124209     VULKAN_HPP_CONSTEXPR VideoEncodeH265DpbSlotInfoKHR( VideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124210 
VideoEncodeH265DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR124211     VideoEncodeH265DpbSlotInfoKHR( VkVideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124212       : VideoEncodeH265DpbSlotInfoKHR( *reinterpret_cast<VideoEncodeH265DpbSlotInfoKHR const *>( &rhs ) )
124213     {
124214     }
124215 
124216     VideoEncodeH265DpbSlotInfoKHR & operator=( VideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124217 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124218 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR124219     VideoEncodeH265DpbSlotInfoKHR & operator=( VkVideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124220     {
124221       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR const *>( &rhs );
124222       return *this;
124223     }
124224 
124225 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR124226     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124227     {
124228       pNext = pNext_;
124229       return *this;
124230     }
124231 
124232     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoKHR &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR124233       setPStdReferenceInfo( const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
124234     {
124235       pStdReferenceInfo = pStdReferenceInfo_;
124236       return *this;
124237     }
124238 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124239 
operator VkVideoEncodeH265DpbSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR124240     operator VkVideoEncodeH265DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124241     {
124242       return *reinterpret_cast<const VkVideoEncodeH265DpbSlotInfoKHR *>( this );
124243     }
124244 
operator VkVideoEncodeH265DpbSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR124245     operator VkVideoEncodeH265DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
124246     {
124247       return *reinterpret_cast<VkVideoEncodeH265DpbSlotInfoKHR *>( this );
124248     }
124249 
124250 #if defined( VULKAN_HPP_USE_REFLECT )
124251 #  if 14 <= VULKAN_HPP_CPP_VERSION
124252     auto
124253 #  else
124254     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoEncodeH265ReferenceInfo * const &>
124255 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR124256       reflect() const VULKAN_HPP_NOEXCEPT
124257     {
124258       return std::tie( sType, pNext, pStdReferenceInfo );
124259     }
124260 #endif
124261 
124262 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124263     auto operator<=>( VideoEncodeH265DpbSlotInfoKHR const & ) const = default;
124264 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR124265     bool operator==( VideoEncodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124266     {
124267 #  if defined( VULKAN_HPP_USE_REFLECT )
124268       return this->reflect() == rhs.reflect();
124269 #  else
124270       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo );
124271 #  endif
124272     }
124273 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR124274     bool operator!=( VideoEncodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124275     {
124276       return !operator==( rhs );
124277     }
124278 #endif
124279 
124280   public:
124281     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoEncodeH265DpbSlotInfoKHR;
124282     const void *                            pNext             = {};
124283     const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo = {};
124284   };
124285 
124286   template <>
124287   struct CppType<StructureType, StructureType::eVideoEncodeH265DpbSlotInfoKHR>
124288   {
124289     using Type = VideoEncodeH265DpbSlotInfoKHR;
124290   };
124291 
124292   struct VideoEncodeH265FrameSizeKHR
124293   {
124294     using NativeType = VkVideoEncodeH265FrameSizeKHR;
124295 
124296 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265FrameSizeKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124297     VULKAN_HPP_CONSTEXPR VideoEncodeH265FrameSizeKHR( uint32_t frameISize_ = {}, uint32_t framePSize_ = {}, uint32_t frameBSize_ = {} ) VULKAN_HPP_NOEXCEPT
124298       : frameISize{ frameISize_ }
124299       , framePSize{ framePSize_ }
124300       , frameBSize{ frameBSize_ }
124301     {
124302     }
124303 
124304     VULKAN_HPP_CONSTEXPR VideoEncodeH265FrameSizeKHR( VideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124305 
VideoEncodeH265FrameSizeKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124306     VideoEncodeH265FrameSizeKHR( VkVideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124307       : VideoEncodeH265FrameSizeKHR( *reinterpret_cast<VideoEncodeH265FrameSizeKHR const *>( &rhs ) )
124308     {
124309     }
124310 
124311     VideoEncodeH265FrameSizeKHR & operator=( VideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124312 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124313 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124314     VideoEncodeH265FrameSizeKHR & operator=( VkVideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124315     {
124316       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR const *>( &rhs );
124317       return *this;
124318     }
124319 
124320 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFrameISizeVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124321     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR & setFrameISize( uint32_t frameISize_ ) VULKAN_HPP_NOEXCEPT
124322     {
124323       frameISize = frameISize_;
124324       return *this;
124325     }
124326 
setFramePSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124327     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR & setFramePSize( uint32_t framePSize_ ) VULKAN_HPP_NOEXCEPT
124328     {
124329       framePSize = framePSize_;
124330       return *this;
124331     }
124332 
setFrameBSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124333     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR & setFrameBSize( uint32_t frameBSize_ ) VULKAN_HPP_NOEXCEPT
124334     {
124335       frameBSize = frameBSize_;
124336       return *this;
124337     }
124338 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124339 
operator VkVideoEncodeH265FrameSizeKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124340     operator VkVideoEncodeH265FrameSizeKHR const &() const VULKAN_HPP_NOEXCEPT
124341     {
124342       return *reinterpret_cast<const VkVideoEncodeH265FrameSizeKHR *>( this );
124343     }
124344 
operator VkVideoEncodeH265FrameSizeKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124345     operator VkVideoEncodeH265FrameSizeKHR &() VULKAN_HPP_NOEXCEPT
124346     {
124347       return *reinterpret_cast<VkVideoEncodeH265FrameSizeKHR *>( this );
124348     }
124349 
124350 #if defined( VULKAN_HPP_USE_REFLECT )
124351 #  if 14 <= VULKAN_HPP_CPP_VERSION
124352     auto
124353 #  else
124354     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
124355 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124356       reflect() const VULKAN_HPP_NOEXCEPT
124357     {
124358       return std::tie( frameISize, framePSize, frameBSize );
124359     }
124360 #endif
124361 
124362 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124363     auto operator<=>( VideoEncodeH265FrameSizeKHR const & ) const = default;
124364 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124365     bool operator==( VideoEncodeH265FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124366     {
124367 #  if defined( VULKAN_HPP_USE_REFLECT )
124368       return this->reflect() == rhs.reflect();
124369 #  else
124370       return ( frameISize == rhs.frameISize ) && ( framePSize == rhs.framePSize ) && ( frameBSize == rhs.frameBSize );
124371 #  endif
124372     }
124373 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR124374     bool operator!=( VideoEncodeH265FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124375     {
124376       return !operator==( rhs );
124377     }
124378 #endif
124379 
124380   public:
124381     uint32_t frameISize = {};
124382     uint32_t framePSize = {};
124383     uint32_t frameBSize = {};
124384   };
124385 
124386   struct VideoEncodeH265GopRemainingFrameInfoKHR
124387   {
124388     using NativeType = VkVideoEncodeH265GopRemainingFrameInfoKHR;
124389 
124390     static const bool                                  allowDuplicate = false;
124391     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265GopRemainingFrameInfoKHR;
124392 
124393 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265GopRemainingFrameInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124394     VULKAN_HPP_CONSTEXPR VideoEncodeH265GopRemainingFrameInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 useGopRemainingFrames_ = {},
124395                                                                   uint32_t                     gopRemainingI_         = {},
124396                                                                   uint32_t                     gopRemainingP_         = {},
124397                                                                   uint32_t                     gopRemainingB_         = {},
124398                                                                   const void *                 pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
124399       : pNext{ pNext_ }
124400       , useGopRemainingFrames{ useGopRemainingFrames_ }
124401       , gopRemainingI{ gopRemainingI_ }
124402       , gopRemainingP{ gopRemainingP_ }
124403       , gopRemainingB{ gopRemainingB_ }
124404     {
124405     }
124406 
124407     VULKAN_HPP_CONSTEXPR VideoEncodeH265GopRemainingFrameInfoKHR( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124408 
VideoEncodeH265GopRemainingFrameInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124409     VideoEncodeH265GopRemainingFrameInfoKHR( VkVideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124410       : VideoEncodeH265GopRemainingFrameInfoKHR( *reinterpret_cast<VideoEncodeH265GopRemainingFrameInfoKHR const *>( &rhs ) )
124411     {
124412     }
124413 
124414     VideoEncodeH265GopRemainingFrameInfoKHR & operator=( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124415 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124416 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124417     VideoEncodeH265GopRemainingFrameInfoKHR & operator=( VkVideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124418     {
124419       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR const *>( &rhs );
124420       return *this;
124421     }
124422 
124423 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124424     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124425     {
124426       pNext = pNext_;
124427       return *this;
124428     }
124429 
124430     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR &
setUseGopRemainingFramesVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124431       setUseGopRemainingFrames( VULKAN_HPP_NAMESPACE::Bool32 useGopRemainingFrames_ ) VULKAN_HPP_NOEXCEPT
124432     {
124433       useGopRemainingFrames = useGopRemainingFrames_;
124434       return *this;
124435     }
124436 
setGopRemainingIVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124437     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setGopRemainingI( uint32_t gopRemainingI_ ) VULKAN_HPP_NOEXCEPT
124438     {
124439       gopRemainingI = gopRemainingI_;
124440       return *this;
124441     }
124442 
setGopRemainingPVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124443     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setGopRemainingP( uint32_t gopRemainingP_ ) VULKAN_HPP_NOEXCEPT
124444     {
124445       gopRemainingP = gopRemainingP_;
124446       return *this;
124447     }
124448 
setGopRemainingBVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124449     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setGopRemainingB( uint32_t gopRemainingB_ ) VULKAN_HPP_NOEXCEPT
124450     {
124451       gopRemainingB = gopRemainingB_;
124452       return *this;
124453     }
124454 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124455 
operator VkVideoEncodeH265GopRemainingFrameInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124456     operator VkVideoEncodeH265GopRemainingFrameInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124457     {
124458       return *reinterpret_cast<const VkVideoEncodeH265GopRemainingFrameInfoKHR *>( this );
124459     }
124460 
operator VkVideoEncodeH265GopRemainingFrameInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124461     operator VkVideoEncodeH265GopRemainingFrameInfoKHR &() VULKAN_HPP_NOEXCEPT
124462     {
124463       return *reinterpret_cast<VkVideoEncodeH265GopRemainingFrameInfoKHR *>( this );
124464     }
124465 
124466 #if defined( VULKAN_HPP_USE_REFLECT )
124467 #  if 14 <= VULKAN_HPP_CPP_VERSION
124468     auto
124469 #  else
124470     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
124471                const void * const &,
124472                VULKAN_HPP_NAMESPACE::Bool32 const &,
124473                uint32_t const &,
124474                uint32_t const &,
124475                uint32_t const &>
124476 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124477       reflect() const VULKAN_HPP_NOEXCEPT
124478     {
124479       return std::tie( sType, pNext, useGopRemainingFrames, gopRemainingI, gopRemainingP, gopRemainingB );
124480     }
124481 #endif
124482 
124483 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124484     auto operator<=>( VideoEncodeH265GopRemainingFrameInfoKHR const & ) const = default;
124485 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124486     bool operator==( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124487     {
124488 #  if defined( VULKAN_HPP_USE_REFLECT )
124489       return this->reflect() == rhs.reflect();
124490 #  else
124491       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useGopRemainingFrames == rhs.useGopRemainingFrames ) &&
124492              ( gopRemainingI == rhs.gopRemainingI ) && ( gopRemainingP == rhs.gopRemainingP ) && ( gopRemainingB == rhs.gopRemainingB );
124493 #  endif
124494     }
124495 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR124496     bool operator!=( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124497     {
124498       return !operator==( rhs );
124499     }
124500 #endif
124501 
124502   public:
124503     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::eVideoEncodeH265GopRemainingFrameInfoKHR;
124504     const void *                        pNext                 = {};
124505     VULKAN_HPP_NAMESPACE::Bool32        useGopRemainingFrames = {};
124506     uint32_t                            gopRemainingI         = {};
124507     uint32_t                            gopRemainingP         = {};
124508     uint32_t                            gopRemainingB         = {};
124509   };
124510 
124511   template <>
124512   struct CppType<StructureType, StructureType::eVideoEncodeH265GopRemainingFrameInfoKHR>
124513   {
124514     using Type = VideoEncodeH265GopRemainingFrameInfoKHR;
124515   };
124516 
124517   struct VideoEncodeH265NaluSliceSegmentInfoKHR
124518   {
124519     using NativeType = VkVideoEncodeH265NaluSliceSegmentInfoKHR;
124520 
124521     static const bool                                  allowDuplicate = false;
124522     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265NaluSliceSegmentInfoKHR;
124523 
124524 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265NaluSliceSegmentInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124525     VULKAN_HPP_CONSTEXPR VideoEncodeH265NaluSliceSegmentInfoKHR( int32_t                                      constantQp_             = {},
124526                                                                  const StdVideoEncodeH265SliceSegmentHeader * pStdSliceSegmentHeader_ = {},
124527                                                                  const void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
124528       : pNext{ pNext_ }
124529       , constantQp{ constantQp_ }
124530       , pStdSliceSegmentHeader{ pStdSliceSegmentHeader_ }
124531     {
124532     }
124533 
124534     VULKAN_HPP_CONSTEXPR VideoEncodeH265NaluSliceSegmentInfoKHR( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124535 
VideoEncodeH265NaluSliceSegmentInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124536     VideoEncodeH265NaluSliceSegmentInfoKHR( VkVideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124537       : VideoEncodeH265NaluSliceSegmentInfoKHR( *reinterpret_cast<VideoEncodeH265NaluSliceSegmentInfoKHR const *>( &rhs ) )
124538     {
124539     }
124540 
124541     VideoEncodeH265NaluSliceSegmentInfoKHR & operator=( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124542 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124543 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124544     VideoEncodeH265NaluSliceSegmentInfoKHR & operator=( VkVideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124545     {
124546       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR const *>( &rhs );
124547       return *this;
124548     }
124549 
124550 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124551     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124552     {
124553       pNext = pNext_;
124554       return *this;
124555     }
124556 
setConstantQpVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124557     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR & setConstantQp( int32_t constantQp_ ) VULKAN_HPP_NOEXCEPT
124558     {
124559       constantQp = constantQp_;
124560       return *this;
124561     }
124562 
124563     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR &
setPStdSliceSegmentHeaderVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124564       setPStdSliceSegmentHeader( const StdVideoEncodeH265SliceSegmentHeader * pStdSliceSegmentHeader_ ) VULKAN_HPP_NOEXCEPT
124565     {
124566       pStdSliceSegmentHeader = pStdSliceSegmentHeader_;
124567       return *this;
124568     }
124569 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124570 
operator VkVideoEncodeH265NaluSliceSegmentInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124571     operator VkVideoEncodeH265NaluSliceSegmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124572     {
124573       return *reinterpret_cast<const VkVideoEncodeH265NaluSliceSegmentInfoKHR *>( this );
124574     }
124575 
operator VkVideoEncodeH265NaluSliceSegmentInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124576     operator VkVideoEncodeH265NaluSliceSegmentInfoKHR &() VULKAN_HPP_NOEXCEPT
124577     {
124578       return *reinterpret_cast<VkVideoEncodeH265NaluSliceSegmentInfoKHR *>( this );
124579     }
124580 
124581 #if defined( VULKAN_HPP_USE_REFLECT )
124582 #  if 14 <= VULKAN_HPP_CPP_VERSION
124583     auto
124584 #  else
124585     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, int32_t const &, const StdVideoEncodeH265SliceSegmentHeader * const &>
124586 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124587       reflect() const VULKAN_HPP_NOEXCEPT
124588     {
124589       return std::tie( sType, pNext, constantQp, pStdSliceSegmentHeader );
124590     }
124591 #endif
124592 
124593 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124594     auto operator<=>( VideoEncodeH265NaluSliceSegmentInfoKHR const & ) const = default;
124595 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124596     bool operator==( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124597     {
124598 #  if defined( VULKAN_HPP_USE_REFLECT )
124599       return this->reflect() == rhs.reflect();
124600 #  else
124601       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( constantQp == rhs.constantQp ) && ( pStdSliceSegmentHeader == rhs.pStdSliceSegmentHeader );
124602 #  endif
124603     }
124604 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR124605     bool operator!=( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124606     {
124607       return !operator==( rhs );
124608     }
124609 #endif
124610 
124611   public:
124612     VULKAN_HPP_NAMESPACE::StructureType          sType                  = StructureType::eVideoEncodeH265NaluSliceSegmentInfoKHR;
124613     const void *                                 pNext                  = {};
124614     int32_t                                      constantQp             = {};
124615     const StdVideoEncodeH265SliceSegmentHeader * pStdSliceSegmentHeader = {};
124616   };
124617 
124618   template <>
124619   struct CppType<StructureType, StructureType::eVideoEncodeH265NaluSliceSegmentInfoKHR>
124620   {
124621     using Type = VideoEncodeH265NaluSliceSegmentInfoKHR;
124622   };
124623 
124624   struct VideoEncodeH265PictureInfoKHR
124625   {
124626     using NativeType = VkVideoEncodeH265PictureInfoKHR;
124627 
124628     static const bool                                  allowDuplicate = false;
124629     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265PictureInfoKHR;
124630 
124631 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124632     VULKAN_HPP_CONSTEXPR VideoEncodeH265PictureInfoKHR( uint32_t                                                             naluSliceSegmentEntryCount_ = {},
124633                                                         const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR * pNaluSliceSegmentEntries_   = {},
124634                                                         const StdVideoEncodeH265PictureInfo *                                pStdPictureInfo_            = {},
124635                                                         const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
124636       : pNext{ pNext_ }
124637       , naluSliceSegmentEntryCount{ naluSliceSegmentEntryCount_ }
124638       , pNaluSliceSegmentEntries{ pNaluSliceSegmentEntries_ }
124639       , pStdPictureInfo{ pStdPictureInfo_ }
124640     {
124641     }
124642 
124643     VULKAN_HPP_CONSTEXPR VideoEncodeH265PictureInfoKHR( VideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124644 
VideoEncodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124645     VideoEncodeH265PictureInfoKHR( VkVideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124646       : VideoEncodeH265PictureInfoKHR( *reinterpret_cast<VideoEncodeH265PictureInfoKHR const *>( &rhs ) )
124647     {
124648     }
124649 
124650 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124651     VideoEncodeH265PictureInfoKHR(
124652       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR> const & naluSliceSegmentEntries_,
124653       const StdVideoEncodeH265PictureInfo *                                                                                     pStdPictureInfo_ = {},
124654       const void *                                                                                                              pNext_           = nullptr )
124655       : pNext( pNext_ )
124656       , naluSliceSegmentEntryCount( static_cast<uint32_t>( naluSliceSegmentEntries_.size() ) )
124657       , pNaluSliceSegmentEntries( naluSliceSegmentEntries_.data() )
124658       , pStdPictureInfo( pStdPictureInfo_ )
124659     {
124660     }
124661 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
124662 
124663     VideoEncodeH265PictureInfoKHR & operator=( VideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124664 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124665 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124666     VideoEncodeH265PictureInfoKHR & operator=( VkVideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124667     {
124668       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR const *>( &rhs );
124669       return *this;
124670     }
124671 
124672 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124673     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124674     {
124675       pNext = pNext_;
124676       return *this;
124677     }
124678 
setNaluSliceSegmentEntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124679     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR & setNaluSliceSegmentEntryCount( uint32_t naluSliceSegmentEntryCount_ ) VULKAN_HPP_NOEXCEPT
124680     {
124681       naluSliceSegmentEntryCount = naluSliceSegmentEntryCount_;
124682       return *this;
124683     }
124684 
124685     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR &
setPNaluSliceSegmentEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124686       setPNaluSliceSegmentEntries( const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR * pNaluSliceSegmentEntries_ ) VULKAN_HPP_NOEXCEPT
124687     {
124688       pNaluSliceSegmentEntries = pNaluSliceSegmentEntries_;
124689       return *this;
124690     }
124691 
124692 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setNaluSliceSegmentEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124693     VideoEncodeH265PictureInfoKHR & setNaluSliceSegmentEntries(
124694       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR> const & naluSliceSegmentEntries_ )
124695       VULKAN_HPP_NOEXCEPT
124696     {
124697       naluSliceSegmentEntryCount = static_cast<uint32_t>( naluSliceSegmentEntries_.size() );
124698       pNaluSliceSegmentEntries   = naluSliceSegmentEntries_.data();
124699       return *this;
124700     }
124701 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
124702 
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124703     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR & setPStdPictureInfo( const StdVideoEncodeH265PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
124704     {
124705       pStdPictureInfo = pStdPictureInfo_;
124706       return *this;
124707     }
124708 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124709 
operator VkVideoEncodeH265PictureInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124710     operator VkVideoEncodeH265PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124711     {
124712       return *reinterpret_cast<const VkVideoEncodeH265PictureInfoKHR *>( this );
124713     }
124714 
operator VkVideoEncodeH265PictureInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124715     operator VkVideoEncodeH265PictureInfoKHR &() VULKAN_HPP_NOEXCEPT
124716     {
124717       return *reinterpret_cast<VkVideoEncodeH265PictureInfoKHR *>( this );
124718     }
124719 
124720 #if defined( VULKAN_HPP_USE_REFLECT )
124721 #  if 14 <= VULKAN_HPP_CPP_VERSION
124722     auto
124723 #  else
124724     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
124725                const void * const &,
124726                uint32_t const &,
124727                const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR * const &,
124728                const StdVideoEncodeH265PictureInfo * const &>
124729 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124730       reflect() const VULKAN_HPP_NOEXCEPT
124731     {
124732       return std::tie( sType, pNext, naluSliceSegmentEntryCount, pNaluSliceSegmentEntries, pStdPictureInfo );
124733     }
124734 #endif
124735 
124736 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124737     auto operator<=>( VideoEncodeH265PictureInfoKHR const & ) const = default;
124738 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124739     bool operator==( VideoEncodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124740     {
124741 #  if defined( VULKAN_HPP_USE_REFLECT )
124742       return this->reflect() == rhs.reflect();
124743 #  else
124744       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( naluSliceSegmentEntryCount == rhs.naluSliceSegmentEntryCount ) &&
124745              ( pNaluSliceSegmentEntries == rhs.pNaluSliceSegmentEntries ) && ( pStdPictureInfo == rhs.pStdPictureInfo );
124746 #  endif
124747     }
124748 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR124749     bool operator!=( VideoEncodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124750     {
124751       return !operator==( rhs );
124752     }
124753 #endif
124754 
124755   public:
124756     VULKAN_HPP_NAMESPACE::StructureType                                  sType                      = StructureType::eVideoEncodeH265PictureInfoKHR;
124757     const void *                                                         pNext                      = {};
124758     uint32_t                                                             naluSliceSegmentEntryCount = {};
124759     const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR * pNaluSliceSegmentEntries   = {};
124760     const StdVideoEncodeH265PictureInfo *                                pStdPictureInfo            = {};
124761   };
124762 
124763   template <>
124764   struct CppType<StructureType, StructureType::eVideoEncodeH265PictureInfoKHR>
124765   {
124766     using Type = VideoEncodeH265PictureInfoKHR;
124767   };
124768 
124769   struct VideoEncodeH265ProfileInfoKHR
124770   {
124771     using NativeType = VkVideoEncodeH265ProfileInfoKHR;
124772 
124773     static const bool                                  allowDuplicate = false;
124774     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265ProfileInfoKHR;
124775 
124776 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124777     VULKAN_HPP_CONSTEXPR VideoEncodeH265ProfileInfoKHR( StdVideoH265ProfileIdc stdProfileIdc_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
124778       : pNext{ pNext_ }
124779       , stdProfileIdc{ stdProfileIdc_ }
124780     {
124781     }
124782 
124783     VULKAN_HPP_CONSTEXPR VideoEncodeH265ProfileInfoKHR( VideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124784 
VideoEncodeH265ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124785     VideoEncodeH265ProfileInfoKHR( VkVideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124786       : VideoEncodeH265ProfileInfoKHR( *reinterpret_cast<VideoEncodeH265ProfileInfoKHR const *>( &rhs ) )
124787     {
124788     }
124789 
124790     VideoEncodeH265ProfileInfoKHR & operator=( VideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124791 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124792 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124793     VideoEncodeH265ProfileInfoKHR & operator=( VkVideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124794     {
124795       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR const *>( &rhs );
124796       return *this;
124797     }
124798 
124799 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124800     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124801     {
124802       pNext = pNext_;
124803       return *this;
124804     }
124805 
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124806     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileInfoKHR & setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
124807     {
124808       stdProfileIdc = stdProfileIdc_;
124809       return *this;
124810     }
124811 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124812 
operator VkVideoEncodeH265ProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124813     operator VkVideoEncodeH265ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124814     {
124815       return *reinterpret_cast<const VkVideoEncodeH265ProfileInfoKHR *>( this );
124816     }
124817 
operator VkVideoEncodeH265ProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124818     operator VkVideoEncodeH265ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
124819     {
124820       return *reinterpret_cast<VkVideoEncodeH265ProfileInfoKHR *>( this );
124821     }
124822 
124823 #if defined( VULKAN_HPP_USE_REFLECT )
124824 #  if 14 <= VULKAN_HPP_CPP_VERSION
124825     auto
124826 #  else
124827     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoH265ProfileIdc const &>
124828 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124829       reflect() const VULKAN_HPP_NOEXCEPT
124830     {
124831       return std::tie( sType, pNext, stdProfileIdc );
124832     }
124833 #endif
124834 
124835 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124836     std::strong_ordering operator<=>( VideoEncodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124837     {
124838       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
124839         return cmp;
124840       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
124841         return cmp;
124842       if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ); cmp != 0 )
124843         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
124844 
124845       return std::strong_ordering::equivalent;
124846     }
124847 #endif
124848 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124849     bool operator==( VideoEncodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124850     {
124851       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ) == 0 );
124852     }
124853 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR124854     bool operator!=( VideoEncodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124855     {
124856       return !operator==( rhs );
124857     }
124858 
124859   public:
124860     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eVideoEncodeH265ProfileInfoKHR;
124861     const void *                        pNext         = {};
124862     StdVideoH265ProfileIdc              stdProfileIdc = {};
124863   };
124864 
124865   template <>
124866   struct CppType<StructureType, StructureType::eVideoEncodeH265ProfileInfoKHR>
124867   {
124868     using Type = VideoEncodeH265ProfileInfoKHR;
124869   };
124870 
124871   struct VideoEncodeH265QpKHR
124872   {
124873     using NativeType = VkVideoEncodeH265QpKHR;
124874 
124875 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265QpKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124876     VULKAN_HPP_CONSTEXPR VideoEncodeH265QpKHR( int32_t qpI_ = {}, int32_t qpP_ = {}, int32_t qpB_ = {} ) VULKAN_HPP_NOEXCEPT
124877       : qpI{ qpI_ }
124878       , qpP{ qpP_ }
124879       , qpB{ qpB_ }
124880     {
124881     }
124882 
124883     VULKAN_HPP_CONSTEXPR VideoEncodeH265QpKHR( VideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124884 
VideoEncodeH265QpKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124885     VideoEncodeH265QpKHR( VkVideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124886       : VideoEncodeH265QpKHR( *reinterpret_cast<VideoEncodeH265QpKHR const *>( &rhs ) )
124887     {
124888     }
124889 
124890     VideoEncodeH265QpKHR & operator=( VideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124891 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124892 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124893     VideoEncodeH265QpKHR & operator=( VkVideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124894     {
124895       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const *>( &rhs );
124896       return *this;
124897     }
124898 
124899 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setQpIVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124900     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR & setQpI( int32_t qpI_ ) VULKAN_HPP_NOEXCEPT
124901     {
124902       qpI = qpI_;
124903       return *this;
124904     }
124905 
setQpPVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124906     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR & setQpP( int32_t qpP_ ) VULKAN_HPP_NOEXCEPT
124907     {
124908       qpP = qpP_;
124909       return *this;
124910     }
124911 
setQpBVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124912     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR & setQpB( int32_t qpB_ ) VULKAN_HPP_NOEXCEPT
124913     {
124914       qpB = qpB_;
124915       return *this;
124916     }
124917 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124918 
operator VkVideoEncodeH265QpKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124919     operator VkVideoEncodeH265QpKHR const &() const VULKAN_HPP_NOEXCEPT
124920     {
124921       return *reinterpret_cast<const VkVideoEncodeH265QpKHR *>( this );
124922     }
124923 
operator VkVideoEncodeH265QpKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124924     operator VkVideoEncodeH265QpKHR &() VULKAN_HPP_NOEXCEPT
124925     {
124926       return *reinterpret_cast<VkVideoEncodeH265QpKHR *>( this );
124927     }
124928 
124929 #if defined( VULKAN_HPP_USE_REFLECT )
124930 #  if 14 <= VULKAN_HPP_CPP_VERSION
124931     auto
124932 #  else
124933     std::tuple<int32_t const &, int32_t const &, int32_t const &>
124934 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124935       reflect() const VULKAN_HPP_NOEXCEPT
124936     {
124937       return std::tie( qpI, qpP, qpB );
124938     }
124939 #endif
124940 
124941 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124942     auto operator<=>( VideoEncodeH265QpKHR const & ) const = default;
124943 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124944     bool operator==( VideoEncodeH265QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124945     {
124946 #  if defined( VULKAN_HPP_USE_REFLECT )
124947       return this->reflect() == rhs.reflect();
124948 #  else
124949       return ( qpI == rhs.qpI ) && ( qpP == rhs.qpP ) && ( qpB == rhs.qpB );
124950 #  endif
124951     }
124952 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR124953     bool operator!=( VideoEncodeH265QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124954     {
124955       return !operator==( rhs );
124956     }
124957 #endif
124958 
124959   public:
124960     int32_t qpI = {};
124961     int32_t qpP = {};
124962     int32_t qpB = {};
124963   };
124964 
124965   struct VideoEncodeH265QualityLevelPropertiesKHR
124966   {
124967     using NativeType = VkVideoEncodeH265QualityLevelPropertiesKHR;
124968 
124969     static const bool                                  allowDuplicate = false;
124970     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265QualityLevelPropertiesKHR;
124971 
124972 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265QualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR124973     VULKAN_HPP_CONSTEXPR VideoEncodeH265QualityLevelPropertiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR preferredRateControlFlags_ = {},
124974                                                                    uint32_t                                                 preferredGopFrameCount_    = {},
124975                                                                    uint32_t                                                 preferredIdrPeriod_        = {},
124976                                                                    uint32_t                                   preferredConsecutiveBFrameCount_         = {},
124977                                                                    uint32_t                                   preferredSubLayerCount_                  = {},
124978                                                                    VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR preferredConstantQp_                     = {},
124979                                                                    uint32_t                                   preferredMaxL0ReferenceCount_            = {},
124980                                                                    uint32_t                                   preferredMaxL1ReferenceCount_            = {},
124981                                                                    void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
124982       : pNext{ pNext_ }
124983       , preferredRateControlFlags{ preferredRateControlFlags_ }
124984       , preferredGopFrameCount{ preferredGopFrameCount_ }
124985       , preferredIdrPeriod{ preferredIdrPeriod_ }
124986       , preferredConsecutiveBFrameCount{ preferredConsecutiveBFrameCount_ }
124987       , preferredSubLayerCount{ preferredSubLayerCount_ }
124988       , preferredConstantQp{ preferredConstantQp_ }
124989       , preferredMaxL0ReferenceCount{ preferredMaxL0ReferenceCount_ }
124990       , preferredMaxL1ReferenceCount{ preferredMaxL1ReferenceCount_ }
124991     {
124992     }
124993 
124994     VULKAN_HPP_CONSTEXPR VideoEncodeH265QualityLevelPropertiesKHR( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124995 
VideoEncodeH265QualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR124996     VideoEncodeH265QualityLevelPropertiesKHR( VkVideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124997       : VideoEncodeH265QualityLevelPropertiesKHR( *reinterpret_cast<VideoEncodeH265QualityLevelPropertiesKHR const *>( &rhs ) )
124998     {
124999     }
125000 
125001     VideoEncodeH265QualityLevelPropertiesKHR & operator=( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125002 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125003 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR125004     VideoEncodeH265QualityLevelPropertiesKHR & operator=( VkVideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125005     {
125006       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR const *>( &rhs );
125007       return *this;
125008     }
125009 
operator VkVideoEncodeH265QualityLevelPropertiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR125010     operator VkVideoEncodeH265QualityLevelPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
125011     {
125012       return *reinterpret_cast<const VkVideoEncodeH265QualityLevelPropertiesKHR *>( this );
125013     }
125014 
operator VkVideoEncodeH265QualityLevelPropertiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR125015     operator VkVideoEncodeH265QualityLevelPropertiesKHR &() VULKAN_HPP_NOEXCEPT
125016     {
125017       return *reinterpret_cast<VkVideoEncodeH265QualityLevelPropertiesKHR *>( this );
125018     }
125019 
125020 #if defined( VULKAN_HPP_USE_REFLECT )
125021 #  if 14 <= VULKAN_HPP_CPP_VERSION
125022     auto
125023 #  else
125024     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
125025                void * const &,
125026                VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR const &,
125027                uint32_t const &,
125028                uint32_t const &,
125029                uint32_t const &,
125030                uint32_t const &,
125031                VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const &,
125032                uint32_t const &,
125033                uint32_t const &>
125034 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR125035       reflect() const VULKAN_HPP_NOEXCEPT
125036     {
125037       return std::tie( sType,
125038                        pNext,
125039                        preferredRateControlFlags,
125040                        preferredGopFrameCount,
125041                        preferredIdrPeriod,
125042                        preferredConsecutiveBFrameCount,
125043                        preferredSubLayerCount,
125044                        preferredConstantQp,
125045                        preferredMaxL0ReferenceCount,
125046                        preferredMaxL1ReferenceCount );
125047     }
125048 #endif
125049 
125050 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125051     auto operator<=>( VideoEncodeH265QualityLevelPropertiesKHR const & ) const = default;
125052 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR125053     bool operator==( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125054     {
125055 #  if defined( VULKAN_HPP_USE_REFLECT )
125056       return this->reflect() == rhs.reflect();
125057 #  else
125058       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredRateControlFlags == rhs.preferredRateControlFlags ) &&
125059              ( preferredGopFrameCount == rhs.preferredGopFrameCount ) && ( preferredIdrPeriod == rhs.preferredIdrPeriod ) &&
125060              ( preferredConsecutiveBFrameCount == rhs.preferredConsecutiveBFrameCount ) && ( preferredSubLayerCount == rhs.preferredSubLayerCount ) &&
125061              ( preferredConstantQp == rhs.preferredConstantQp ) && ( preferredMaxL0ReferenceCount == rhs.preferredMaxL0ReferenceCount ) &&
125062              ( preferredMaxL1ReferenceCount == rhs.preferredMaxL1ReferenceCount );
125063 #  endif
125064     }
125065 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR125066     bool operator!=( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125067     {
125068       return !operator==( rhs );
125069     }
125070 #endif
125071 
125072   public:
125073     VULKAN_HPP_NAMESPACE::StructureType                      sType                           = StructureType::eVideoEncodeH265QualityLevelPropertiesKHR;
125074     void *                                                   pNext                           = {};
125075     VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR preferredRateControlFlags       = {};
125076     uint32_t                                                 preferredGopFrameCount          = {};
125077     uint32_t                                                 preferredIdrPeriod              = {};
125078     uint32_t                                                 preferredConsecutiveBFrameCount = {};
125079     uint32_t                                                 preferredSubLayerCount          = {};
125080     VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR               preferredConstantQp             = {};
125081     uint32_t                                                 preferredMaxL0ReferenceCount    = {};
125082     uint32_t                                                 preferredMaxL1ReferenceCount    = {};
125083   };
125084 
125085   template <>
125086   struct CppType<StructureType, StructureType::eVideoEncodeH265QualityLevelPropertiesKHR>
125087   {
125088     using Type = VideoEncodeH265QualityLevelPropertiesKHR;
125089   };
125090 
125091   struct VideoEncodeH265RateControlInfoKHR
125092   {
125093     using NativeType = VkVideoEncodeH265RateControlInfoKHR;
125094 
125095     static const bool                                  allowDuplicate = false;
125096     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265RateControlInfoKHR;
125097 
125098 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265RateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125099     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR flags_                  = {},
125100                                                             uint32_t                                                 gopFrameCount_          = {},
125101                                                             uint32_t                                                 idrPeriod_              = {},
125102                                                             uint32_t                                                 consecutiveBFrameCount_ = {},
125103                                                             uint32_t                                                 subLayerCount_          = {},
125104                                                             const void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
125105       : pNext{ pNext_ }
125106       , flags{ flags_ }
125107       , gopFrameCount{ gopFrameCount_ }
125108       , idrPeriod{ idrPeriod_ }
125109       , consecutiveBFrameCount{ consecutiveBFrameCount_ }
125110       , subLayerCount{ subLayerCount_ }
125111     {
125112     }
125113 
125114     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlInfoKHR( VideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125115 
VideoEncodeH265RateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125116     VideoEncodeH265RateControlInfoKHR( VkVideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125117       : VideoEncodeH265RateControlInfoKHR( *reinterpret_cast<VideoEncodeH265RateControlInfoKHR const *>( &rhs ) )
125118     {
125119     }
125120 
125121     VideoEncodeH265RateControlInfoKHR & operator=( VideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125122 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125123 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125124     VideoEncodeH265RateControlInfoKHR & operator=( VkVideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125125     {
125126       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR const *>( &rhs );
125127       return *this;
125128     }
125129 
125130 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125131     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125132     {
125133       pNext = pNext_;
125134       return *this;
125135     }
125136 
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125137     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
125138     {
125139       flags = flags_;
125140       return *this;
125141     }
125142 
setGopFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125143     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setGopFrameCount( uint32_t gopFrameCount_ ) VULKAN_HPP_NOEXCEPT
125144     {
125145       gopFrameCount = gopFrameCount_;
125146       return *this;
125147     }
125148 
setIdrPeriodVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125149     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setIdrPeriod( uint32_t idrPeriod_ ) VULKAN_HPP_NOEXCEPT
125150     {
125151       idrPeriod = idrPeriod_;
125152       return *this;
125153     }
125154 
setConsecutiveBFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125155     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) VULKAN_HPP_NOEXCEPT
125156     {
125157       consecutiveBFrameCount = consecutiveBFrameCount_;
125158       return *this;
125159     }
125160 
setSubLayerCountVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125161     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setSubLayerCount( uint32_t subLayerCount_ ) VULKAN_HPP_NOEXCEPT
125162     {
125163       subLayerCount = subLayerCount_;
125164       return *this;
125165     }
125166 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
125167 
operator VkVideoEncodeH265RateControlInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125168     operator VkVideoEncodeH265RateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT
125169     {
125170       return *reinterpret_cast<const VkVideoEncodeH265RateControlInfoKHR *>( this );
125171     }
125172 
operator VkVideoEncodeH265RateControlInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125173     operator VkVideoEncodeH265RateControlInfoKHR &() VULKAN_HPP_NOEXCEPT
125174     {
125175       return *reinterpret_cast<VkVideoEncodeH265RateControlInfoKHR *>( this );
125176     }
125177 
125178 #if defined( VULKAN_HPP_USE_REFLECT )
125179 #  if 14 <= VULKAN_HPP_CPP_VERSION
125180     auto
125181 #  else
125182     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
125183                const void * const &,
125184                VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR const &,
125185                uint32_t const &,
125186                uint32_t const &,
125187                uint32_t const &,
125188                uint32_t const &>
125189 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125190       reflect() const VULKAN_HPP_NOEXCEPT
125191     {
125192       return std::tie( sType, pNext, flags, gopFrameCount, idrPeriod, consecutiveBFrameCount, subLayerCount );
125193     }
125194 #endif
125195 
125196 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125197     auto operator<=>( VideoEncodeH265RateControlInfoKHR const & ) const = default;
125198 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125199     bool operator==( VideoEncodeH265RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125200     {
125201 #  if defined( VULKAN_HPP_USE_REFLECT )
125202       return this->reflect() == rhs.reflect();
125203 #  else
125204       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( gopFrameCount == rhs.gopFrameCount ) &&
125205              ( idrPeriod == rhs.idrPeriod ) && ( consecutiveBFrameCount == rhs.consecutiveBFrameCount ) && ( subLayerCount == rhs.subLayerCount );
125206 #  endif
125207     }
125208 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR125209     bool operator!=( VideoEncodeH265RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125210     {
125211       return !operator==( rhs );
125212     }
125213 #endif
125214 
125215   public:
125216     VULKAN_HPP_NAMESPACE::StructureType                      sType                  = StructureType::eVideoEncodeH265RateControlInfoKHR;
125217     const void *                                             pNext                  = {};
125218     VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR flags                  = {};
125219     uint32_t                                                 gopFrameCount          = {};
125220     uint32_t                                                 idrPeriod              = {};
125221     uint32_t                                                 consecutiveBFrameCount = {};
125222     uint32_t                                                 subLayerCount          = {};
125223   };
125224 
125225   template <>
125226   struct CppType<StructureType, StructureType::eVideoEncodeH265RateControlInfoKHR>
125227   {
125228     using Type = VideoEncodeH265RateControlInfoKHR;
125229   };
125230 
125231   struct VideoEncodeH265RateControlLayerInfoKHR
125232   {
125233     using NativeType = VkVideoEncodeH265RateControlLayerInfoKHR;
125234 
125235     static const bool                                  allowDuplicate = false;
125236     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265RateControlLayerInfoKHR;
125237 
125238 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265RateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125239     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlLayerInfoKHR( VULKAN_HPP_NAMESPACE::Bool32                      useMinQp_        = {},
125240                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR        minQp_           = {},
125241                                                                  VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp_        = {},
125242                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR        maxQp_           = {},
125243                                                                  VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize_ = {},
125244                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR maxFrameSize_    = {},
125245                                                                  const void *                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
125246       : pNext{ pNext_ }
125247       , useMinQp{ useMinQp_ }
125248       , minQp{ minQp_ }
125249       , useMaxQp{ useMaxQp_ }
125250       , maxQp{ maxQp_ }
125251       , useMaxFrameSize{ useMaxFrameSize_ }
125252       , maxFrameSize{ maxFrameSize_ }
125253     {
125254     }
125255 
125256     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlLayerInfoKHR( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125257 
VideoEncodeH265RateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125258     VideoEncodeH265RateControlLayerInfoKHR( VkVideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125259       : VideoEncodeH265RateControlLayerInfoKHR( *reinterpret_cast<VideoEncodeH265RateControlLayerInfoKHR const *>( &rhs ) )
125260     {
125261     }
125262 
125263     VideoEncodeH265RateControlLayerInfoKHR & operator=( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125264 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125265 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125266     VideoEncodeH265RateControlLayerInfoKHR & operator=( VkVideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125267     {
125268       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR const *>( &rhs );
125269       return *this;
125270     }
125271 
125272 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125273     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125274     {
125275       pNext = pNext_;
125276       return *this;
125277     }
125278 
setUseMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125279     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setUseMinQp( VULKAN_HPP_NAMESPACE::Bool32 useMinQp_ ) VULKAN_HPP_NOEXCEPT
125280     {
125281       useMinQp = useMinQp_;
125282       return *this;
125283     }
125284 
setMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125285     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setMinQp( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const & minQp_ ) VULKAN_HPP_NOEXCEPT
125286     {
125287       minQp = minQp_;
125288       return *this;
125289     }
125290 
setUseMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125291     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setUseMaxQp( VULKAN_HPP_NAMESPACE::Bool32 useMaxQp_ ) VULKAN_HPP_NOEXCEPT
125292     {
125293       useMaxQp = useMaxQp_;
125294       return *this;
125295     }
125296 
setMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125297     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setMaxQp( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const & maxQp_ ) VULKAN_HPP_NOEXCEPT
125298     {
125299       maxQp = maxQp_;
125300       return *this;
125301     }
125302 
setUseMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125303     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setUseMaxFrameSize( VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize_ ) VULKAN_HPP_NOEXCEPT
125304     {
125305       useMaxFrameSize = useMaxFrameSize_;
125306       return *this;
125307     }
125308 
125309     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR &
setMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125310       setMaxFrameSize( VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR const & maxFrameSize_ ) VULKAN_HPP_NOEXCEPT
125311     {
125312       maxFrameSize = maxFrameSize_;
125313       return *this;
125314     }
125315 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
125316 
operator VkVideoEncodeH265RateControlLayerInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125317     operator VkVideoEncodeH265RateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT
125318     {
125319       return *reinterpret_cast<const VkVideoEncodeH265RateControlLayerInfoKHR *>( this );
125320     }
125321 
operator VkVideoEncodeH265RateControlLayerInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125322     operator VkVideoEncodeH265RateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT
125323     {
125324       return *reinterpret_cast<VkVideoEncodeH265RateControlLayerInfoKHR *>( this );
125325     }
125326 
125327 #if defined( VULKAN_HPP_USE_REFLECT )
125328 #  if 14 <= VULKAN_HPP_CPP_VERSION
125329     auto
125330 #  else
125331     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
125332                const void * const &,
125333                VULKAN_HPP_NAMESPACE::Bool32 const &,
125334                VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const &,
125335                VULKAN_HPP_NAMESPACE::Bool32 const &,
125336                VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const &,
125337                VULKAN_HPP_NAMESPACE::Bool32 const &,
125338                VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR const &>
125339 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125340       reflect() const VULKAN_HPP_NOEXCEPT
125341     {
125342       return std::tie( sType, pNext, useMinQp, minQp, useMaxQp, maxQp, useMaxFrameSize, maxFrameSize );
125343     }
125344 #endif
125345 
125346 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125347     auto operator<=>( VideoEncodeH265RateControlLayerInfoKHR const & ) const = default;
125348 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125349     bool operator==( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125350     {
125351 #  if defined( VULKAN_HPP_USE_REFLECT )
125352       return this->reflect() == rhs.reflect();
125353 #  else
125354       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMinQp == rhs.useMinQp ) && ( minQp == rhs.minQp ) && ( useMaxQp == rhs.useMaxQp ) &&
125355              ( maxQp == rhs.maxQp ) && ( useMaxFrameSize == rhs.useMaxFrameSize ) && ( maxFrameSize == rhs.maxFrameSize );
125356 #  endif
125357     }
125358 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR125359     bool operator!=( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125360     {
125361       return !operator==( rhs );
125362     }
125363 #endif
125364 
125365   public:
125366     VULKAN_HPP_NAMESPACE::StructureType               sType           = StructureType::eVideoEncodeH265RateControlLayerInfoKHR;
125367     const void *                                      pNext           = {};
125368     VULKAN_HPP_NAMESPACE::Bool32                      useMinQp        = {};
125369     VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR        minQp           = {};
125370     VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp        = {};
125371     VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR        maxQp           = {};
125372     VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize = {};
125373     VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR maxFrameSize    = {};
125374   };
125375 
125376   template <>
125377   struct CppType<StructureType, StructureType::eVideoEncodeH265RateControlLayerInfoKHR>
125378   {
125379     using Type = VideoEncodeH265RateControlLayerInfoKHR;
125380   };
125381 
125382   struct VideoEncodeH265SessionCreateInfoKHR
125383   {
125384     using NativeType = VkVideoEncodeH265SessionCreateInfoKHR;
125385 
125386     static const bool                                  allowDuplicate = false;
125387     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265SessionCreateInfoKHR;
125388 
125389 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125390     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionCreateInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 useMaxLevelIdc_ = {},
125391                                                               StdVideoH265LevelIdc         maxLevelIdc_    = {},
125392                                                               const void *                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
125393       : pNext{ pNext_ }
125394       , useMaxLevelIdc{ useMaxLevelIdc_ }
125395       , maxLevelIdc{ maxLevelIdc_ }
125396     {
125397     }
125398 
125399     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionCreateInfoKHR( VideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125400 
VideoEncodeH265SessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125401     VideoEncodeH265SessionCreateInfoKHR( VkVideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125402       : VideoEncodeH265SessionCreateInfoKHR( *reinterpret_cast<VideoEncodeH265SessionCreateInfoKHR const *>( &rhs ) )
125403     {
125404     }
125405 
125406     VideoEncodeH265SessionCreateInfoKHR & operator=( VideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125407 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125408 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125409     VideoEncodeH265SessionCreateInfoKHR & operator=( VkVideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125410     {
125411       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR const *>( &rhs );
125412       return *this;
125413     }
125414 
125415 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125416     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125417     {
125418       pNext = pNext_;
125419       return *this;
125420     }
125421 
setUseMaxLevelIdcVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125422     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR & setUseMaxLevelIdc( VULKAN_HPP_NAMESPACE::Bool32 useMaxLevelIdc_ ) VULKAN_HPP_NOEXCEPT
125423     {
125424       useMaxLevelIdc = useMaxLevelIdc_;
125425       return *this;
125426     }
125427 
setMaxLevelIdcVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125428     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR & setMaxLevelIdc( StdVideoH265LevelIdc maxLevelIdc_ ) VULKAN_HPP_NOEXCEPT
125429     {
125430       maxLevelIdc = maxLevelIdc_;
125431       return *this;
125432     }
125433 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
125434 
operator VkVideoEncodeH265SessionCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125435     operator VkVideoEncodeH265SessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
125436     {
125437       return *reinterpret_cast<const VkVideoEncodeH265SessionCreateInfoKHR *>( this );
125438     }
125439 
operator VkVideoEncodeH265SessionCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125440     operator VkVideoEncodeH265SessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
125441     {
125442       return *reinterpret_cast<VkVideoEncodeH265SessionCreateInfoKHR *>( this );
125443     }
125444 
125445 #if defined( VULKAN_HPP_USE_REFLECT )
125446 #  if 14 <= VULKAN_HPP_CPP_VERSION
125447     auto
125448 #  else
125449     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, StdVideoH265LevelIdc const &>
125450 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125451       reflect() const VULKAN_HPP_NOEXCEPT
125452     {
125453       return std::tie( sType, pNext, useMaxLevelIdc, maxLevelIdc );
125454     }
125455 #endif
125456 
125457 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125458     std::strong_ordering operator<=>( VideoEncodeH265SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125459     {
125460       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
125461         return cmp;
125462       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
125463         return cmp;
125464       if ( auto cmp = useMaxLevelIdc <=> rhs.useMaxLevelIdc; cmp != 0 )
125465         return cmp;
125466       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ); cmp != 0 )
125467         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
125468 
125469       return std::strong_ordering::equivalent;
125470     }
125471 #endif
125472 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125473     bool operator==( VideoEncodeH265SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125474     {
125475       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMaxLevelIdc == rhs.useMaxLevelIdc ) &&
125476              ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ) == 0 );
125477     }
125478 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR125479     bool operator!=( VideoEncodeH265SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125480     {
125481       return !operator==( rhs );
125482     }
125483 
125484   public:
125485     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eVideoEncodeH265SessionCreateInfoKHR;
125486     const void *                        pNext          = {};
125487     VULKAN_HPP_NAMESPACE::Bool32        useMaxLevelIdc = {};
125488     StdVideoH265LevelIdc                maxLevelIdc    = {};
125489   };
125490 
125491   template <>
125492   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionCreateInfoKHR>
125493   {
125494     using Type = VideoEncodeH265SessionCreateInfoKHR;
125495   };
125496 
125497   struct VideoEncodeH265SessionParametersAddInfoKHR
125498   {
125499     using NativeType = VkVideoEncodeH265SessionParametersAddInfoKHR;
125500 
125501     static const bool                                  allowDuplicate = false;
125502     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265SessionParametersAddInfoKHR;
125503 
125504 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125505     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersAddInfoKHR( uint32_t                                 stdVPSCount_ = {},
125506                                                                      const StdVideoH265VideoParameterSet *    pStdVPSs_    = {},
125507                                                                      uint32_t                                 stdSPSCount_ = {},
125508                                                                      const StdVideoH265SequenceParameterSet * pStdSPSs_    = {},
125509                                                                      uint32_t                                 stdPPSCount_ = {},
125510                                                                      const StdVideoH265PictureParameterSet *  pStdPPSs_    = {},
125511                                                                      const void *                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
125512       : pNext{ pNext_ }
125513       , stdVPSCount{ stdVPSCount_ }
125514       , pStdVPSs{ pStdVPSs_ }
125515       , stdSPSCount{ stdSPSCount_ }
125516       , pStdSPSs{ pStdSPSs_ }
125517       , stdPPSCount{ stdPPSCount_ }
125518       , pStdPPSs{ pStdPPSs_ }
125519     {
125520     }
125521 
125522     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersAddInfoKHR( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125523 
VideoEncodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125524     VideoEncodeH265SessionParametersAddInfoKHR( VkVideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125525       : VideoEncodeH265SessionParametersAddInfoKHR( *reinterpret_cast<VideoEncodeH265SessionParametersAddInfoKHR const *>( &rhs ) )
125526     {
125527     }
125528 
125529 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125530     VideoEncodeH265SessionParametersAddInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265VideoParameterSet> const &    stdVPSs_,
125531                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & stdSPSs_ = {},
125532                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const &  stdPPSs_ = {},
125533                                                 const void *                                                                                  pNext_ = nullptr )
125534       : pNext( pNext_ )
125535       , stdVPSCount( static_cast<uint32_t>( stdVPSs_.size() ) )
125536       , pStdVPSs( stdVPSs_.data() )
125537       , stdSPSCount( static_cast<uint32_t>( stdSPSs_.size() ) )
125538       , pStdSPSs( stdSPSs_.data() )
125539       , stdPPSCount( static_cast<uint32_t>( stdPPSs_.size() ) )
125540       , pStdPPSs( stdPPSs_.data() )
125541     {
125542     }
125543 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125544 
125545     VideoEncodeH265SessionParametersAddInfoKHR & operator=( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125546 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125547 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125548     VideoEncodeH265SessionParametersAddInfoKHR & operator=( VkVideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125549     {
125550       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR const *>( &rhs );
125551       return *this;
125552     }
125553 
125554 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125555     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125556     {
125557       pNext = pNext_;
125558       return *this;
125559     }
125560 
setStdVPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125561     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setStdVPSCount( uint32_t stdVPSCount_ ) VULKAN_HPP_NOEXCEPT
125562     {
125563       stdVPSCount = stdVPSCount_;
125564       return *this;
125565     }
125566 
setPStdVPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125567     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPStdVPSs( const StdVideoH265VideoParameterSet * pStdVPSs_ ) VULKAN_HPP_NOEXCEPT
125568     {
125569       pStdVPSs = pStdVPSs_;
125570       return *this;
125571     }
125572 
125573 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125574     VideoEncodeH265SessionParametersAddInfoKHR &
setStdVPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125575       setStdVPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265VideoParameterSet> const & stdVPSs_ ) VULKAN_HPP_NOEXCEPT
125576     {
125577       stdVPSCount = static_cast<uint32_t>( stdVPSs_.size() );
125578       pStdVPSs    = stdVPSs_.data();
125579       return *this;
125580     }
125581 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125582 
setStdSPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125583     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) VULKAN_HPP_NOEXCEPT
125584     {
125585       stdSPSCount = stdSPSCount_;
125586       return *this;
125587     }
125588 
setPStdSPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125589     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPStdSPSs( const StdVideoH265SequenceParameterSet * pStdSPSs_ ) VULKAN_HPP_NOEXCEPT
125590     {
125591       pStdSPSs = pStdSPSs_;
125592       return *this;
125593     }
125594 
125595 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125596     VideoEncodeH265SessionParametersAddInfoKHR &
setStdSPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125597       setStdSPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT
125598     {
125599       stdSPSCount = static_cast<uint32_t>( stdSPSs_.size() );
125600       pStdSPSs    = stdSPSs_.data();
125601       return *this;
125602     }
125603 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125604 
setStdPPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125605     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) VULKAN_HPP_NOEXCEPT
125606     {
125607       stdPPSCount = stdPPSCount_;
125608       return *this;
125609     }
125610 
setPStdPPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125611     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPStdPPSs( const StdVideoH265PictureParameterSet * pStdPPSs_ ) VULKAN_HPP_NOEXCEPT
125612     {
125613       pStdPPSs = pStdPPSs_;
125614       return *this;
125615     }
125616 
125617 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125618     VideoEncodeH265SessionParametersAddInfoKHR &
setStdPPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125619       setStdPPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT
125620     {
125621       stdPPSCount = static_cast<uint32_t>( stdPPSs_.size() );
125622       pStdPPSs    = stdPPSs_.data();
125623       return *this;
125624     }
125625 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125626 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
125627 
operator VkVideoEncodeH265SessionParametersAddInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125628     operator VkVideoEncodeH265SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT
125629     {
125630       return *reinterpret_cast<const VkVideoEncodeH265SessionParametersAddInfoKHR *>( this );
125631     }
125632 
operator VkVideoEncodeH265SessionParametersAddInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125633     operator VkVideoEncodeH265SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT
125634     {
125635       return *reinterpret_cast<VkVideoEncodeH265SessionParametersAddInfoKHR *>( this );
125636     }
125637 
125638 #if defined( VULKAN_HPP_USE_REFLECT )
125639 #  if 14 <= VULKAN_HPP_CPP_VERSION
125640     auto
125641 #  else
125642     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
125643                const void * const &,
125644                uint32_t const &,
125645                const StdVideoH265VideoParameterSet * const &,
125646                uint32_t const &,
125647                const StdVideoH265SequenceParameterSet * const &,
125648                uint32_t const &,
125649                const StdVideoH265PictureParameterSet * const &>
125650 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125651       reflect() const VULKAN_HPP_NOEXCEPT
125652     {
125653       return std::tie( sType, pNext, stdVPSCount, pStdVPSs, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs );
125654     }
125655 #endif
125656 
125657 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125658     auto operator<=>( VideoEncodeH265SessionParametersAddInfoKHR const & ) const = default;
125659 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125660     bool operator==( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125661     {
125662 #  if defined( VULKAN_HPP_USE_REFLECT )
125663       return this->reflect() == rhs.reflect();
125664 #  else
125665       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdVPSCount == rhs.stdVPSCount ) && ( pStdVPSs == rhs.pStdVPSs ) &&
125666              ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) && ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs );
125667 #  endif
125668     }
125669 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR125670     bool operator!=( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125671     {
125672       return !operator==( rhs );
125673     }
125674 #endif
125675 
125676   public:
125677     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoEncodeH265SessionParametersAddInfoKHR;
125678     const void *                             pNext       = {};
125679     uint32_t                                 stdVPSCount = {};
125680     const StdVideoH265VideoParameterSet *    pStdVPSs    = {};
125681     uint32_t                                 stdSPSCount = {};
125682     const StdVideoH265SequenceParameterSet * pStdSPSs    = {};
125683     uint32_t                                 stdPPSCount = {};
125684     const StdVideoH265PictureParameterSet *  pStdPPSs    = {};
125685   };
125686 
125687   template <>
125688   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionParametersAddInfoKHR>
125689   {
125690     using Type = VideoEncodeH265SessionParametersAddInfoKHR;
125691   };
125692 
125693   struct VideoEncodeH265SessionParametersCreateInfoKHR
125694   {
125695     using NativeType = VkVideoEncodeH265SessionParametersCreateInfoKHR;
125696 
125697     static const bool                                  allowDuplicate = false;
125698     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265SessionParametersCreateInfoKHR;
125699 
125700 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
125701     VULKAN_HPP_CONSTEXPR
VideoEncodeH265SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125702       VideoEncodeH265SessionParametersCreateInfoKHR( uint32_t                                                                 maxStdVPSCount_     = {},
125703                                                      uint32_t                                                                 maxStdSPSCount_     = {},
125704                                                      uint32_t                                                                 maxStdPPSCount_     = {},
125705                                                      const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR * pParametersAddInfo_ = {},
125706                                                      const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
125707       : pNext{ pNext_ }
125708       , maxStdVPSCount{ maxStdVPSCount_ }
125709       , maxStdSPSCount{ maxStdSPSCount_ }
125710       , maxStdPPSCount{ maxStdPPSCount_ }
125711       , pParametersAddInfo{ pParametersAddInfo_ }
125712     {
125713     }
125714 
125715     VULKAN_HPP_CONSTEXPR
125716       VideoEncodeH265SessionParametersCreateInfoKHR( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125717 
VideoEncodeH265SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125718     VideoEncodeH265SessionParametersCreateInfoKHR( VkVideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125719       : VideoEncodeH265SessionParametersCreateInfoKHR( *reinterpret_cast<VideoEncodeH265SessionParametersCreateInfoKHR const *>( &rhs ) )
125720     {
125721     }
125722 
125723     VideoEncodeH265SessionParametersCreateInfoKHR & operator=( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125724 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125725 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125726     VideoEncodeH265SessionParametersCreateInfoKHR & operator=( VkVideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125727     {
125728       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR const *>( &rhs );
125729       return *this;
125730     }
125731 
125732 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125733     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125734     {
125735       pNext = pNext_;
125736       return *this;
125737     }
125738 
setMaxStdVPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125739     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setMaxStdVPSCount( uint32_t maxStdVPSCount_ ) VULKAN_HPP_NOEXCEPT
125740     {
125741       maxStdVPSCount = maxStdVPSCount_;
125742       return *this;
125743     }
125744 
setMaxStdSPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125745     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) VULKAN_HPP_NOEXCEPT
125746     {
125747       maxStdSPSCount = maxStdSPSCount_;
125748       return *this;
125749     }
125750 
setMaxStdPPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125751     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) VULKAN_HPP_NOEXCEPT
125752     {
125753       maxStdPPSCount = maxStdPPSCount_;
125754       return *this;
125755     }
125756 
125757     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR &
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125758       setPParametersAddInfo( const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
125759     {
125760       pParametersAddInfo = pParametersAddInfo_;
125761       return *this;
125762     }
125763 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
125764 
operator VkVideoEncodeH265SessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125765     operator VkVideoEncodeH265SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
125766     {
125767       return *reinterpret_cast<const VkVideoEncodeH265SessionParametersCreateInfoKHR *>( this );
125768     }
125769 
operator VkVideoEncodeH265SessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125770     operator VkVideoEncodeH265SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
125771     {
125772       return *reinterpret_cast<VkVideoEncodeH265SessionParametersCreateInfoKHR *>( this );
125773     }
125774 
125775 #if defined( VULKAN_HPP_USE_REFLECT )
125776 #  if 14 <= VULKAN_HPP_CPP_VERSION
125777     auto
125778 #  else
125779     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
125780                const void * const &,
125781                uint32_t const &,
125782                uint32_t const &,
125783                uint32_t const &,
125784                const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR * const &>
125785 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125786       reflect() const VULKAN_HPP_NOEXCEPT
125787     {
125788       return std::tie( sType, pNext, maxStdVPSCount, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo );
125789     }
125790 #endif
125791 
125792 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125793     auto operator<=>( VideoEncodeH265SessionParametersCreateInfoKHR const & ) const = default;
125794 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125795     bool operator==( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125796     {
125797 #  if defined( VULKAN_HPP_USE_REFLECT )
125798       return this->reflect() == rhs.reflect();
125799 #  else
125800       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdVPSCount == rhs.maxStdVPSCount ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) &&
125801              ( maxStdPPSCount == rhs.maxStdPPSCount ) && ( pParametersAddInfo == rhs.pParametersAddInfo );
125802 #  endif
125803     }
125804 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR125805     bool operator!=( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125806     {
125807       return !operator==( rhs );
125808     }
125809 #endif
125810 
125811   public:
125812     VULKAN_HPP_NAMESPACE::StructureType                                      sType              = StructureType::eVideoEncodeH265SessionParametersCreateInfoKHR;
125813     const void *                                                             pNext              = {};
125814     uint32_t                                                                 maxStdVPSCount     = {};
125815     uint32_t                                                                 maxStdSPSCount     = {};
125816     uint32_t                                                                 maxStdPPSCount     = {};
125817     const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR * pParametersAddInfo = {};
125818   };
125819 
125820   template <>
125821   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionParametersCreateInfoKHR>
125822   {
125823     using Type = VideoEncodeH265SessionParametersCreateInfoKHR;
125824   };
125825 
125826   struct VideoEncodeH265SessionParametersFeedbackInfoKHR
125827   {
125828     using NativeType = VkVideoEncodeH265SessionParametersFeedbackInfoKHR;
125829 
125830     static const bool                                  allowDuplicate = false;
125831     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265SessionParametersFeedbackInfoKHR;
125832 
125833 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR125834     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersFeedbackInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 hasStdVPSOverrides_ = {},
125835                                                                           VULKAN_HPP_NAMESPACE::Bool32 hasStdSPSOverrides_ = {},
125836                                                                           VULKAN_HPP_NAMESPACE::Bool32 hasStdPPSOverrides_ = {},
125837                                                                           void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
125838       : pNext{ pNext_ }
125839       , hasStdVPSOverrides{ hasStdVPSOverrides_ }
125840       , hasStdSPSOverrides{ hasStdSPSOverrides_ }
125841       , hasStdPPSOverrides{ hasStdPPSOverrides_ }
125842     {
125843     }
125844 
125845     VULKAN_HPP_CONSTEXPR
125846       VideoEncodeH265SessionParametersFeedbackInfoKHR( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125847 
VideoEncodeH265SessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR125848     VideoEncodeH265SessionParametersFeedbackInfoKHR( VkVideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125849       : VideoEncodeH265SessionParametersFeedbackInfoKHR( *reinterpret_cast<VideoEncodeH265SessionParametersFeedbackInfoKHR const *>( &rhs ) )
125850     {
125851     }
125852 
125853     VideoEncodeH265SessionParametersFeedbackInfoKHR & operator=( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125854 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125855 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR125856     VideoEncodeH265SessionParametersFeedbackInfoKHR & operator=( VkVideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125857     {
125858       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR const *>( &rhs );
125859       return *this;
125860     }
125861 
operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR125862     operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR const &() const VULKAN_HPP_NOEXCEPT
125863     {
125864       return *reinterpret_cast<const VkVideoEncodeH265SessionParametersFeedbackInfoKHR *>( this );
125865     }
125866 
operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR125867     operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR &() VULKAN_HPP_NOEXCEPT
125868     {
125869       return *reinterpret_cast<VkVideoEncodeH265SessionParametersFeedbackInfoKHR *>( this );
125870     }
125871 
125872 #if defined( VULKAN_HPP_USE_REFLECT )
125873 #  if 14 <= VULKAN_HPP_CPP_VERSION
125874     auto
125875 #  else
125876     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
125877                void * const &,
125878                VULKAN_HPP_NAMESPACE::Bool32 const &,
125879                VULKAN_HPP_NAMESPACE::Bool32 const &,
125880                VULKAN_HPP_NAMESPACE::Bool32 const &>
125881 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR125882       reflect() const VULKAN_HPP_NOEXCEPT
125883     {
125884       return std::tie( sType, pNext, hasStdVPSOverrides, hasStdSPSOverrides, hasStdPPSOverrides );
125885     }
125886 #endif
125887 
125888 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125889     auto operator<=>( VideoEncodeH265SessionParametersFeedbackInfoKHR const & ) const = default;
125890 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR125891     bool operator==( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125892     {
125893 #  if defined( VULKAN_HPP_USE_REFLECT )
125894       return this->reflect() == rhs.reflect();
125895 #  else
125896       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasStdVPSOverrides == rhs.hasStdVPSOverrides ) &&
125897              ( hasStdSPSOverrides == rhs.hasStdSPSOverrides ) && ( hasStdPPSOverrides == rhs.hasStdPPSOverrides );
125898 #  endif
125899     }
125900 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR125901     bool operator!=( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125902     {
125903       return !operator==( rhs );
125904     }
125905 #endif
125906 
125907   public:
125908     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eVideoEncodeH265SessionParametersFeedbackInfoKHR;
125909     void *                              pNext              = {};
125910     VULKAN_HPP_NAMESPACE::Bool32        hasStdVPSOverrides = {};
125911     VULKAN_HPP_NAMESPACE::Bool32        hasStdSPSOverrides = {};
125912     VULKAN_HPP_NAMESPACE::Bool32        hasStdPPSOverrides = {};
125913   };
125914 
125915   template <>
125916   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionParametersFeedbackInfoKHR>
125917   {
125918     using Type = VideoEncodeH265SessionParametersFeedbackInfoKHR;
125919   };
125920 
125921   struct VideoEncodeH265SessionParametersGetInfoKHR
125922   {
125923     using NativeType = VkVideoEncodeH265SessionParametersGetInfoKHR;
125924 
125925     static const bool                                  allowDuplicate = false;
125926     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265SessionParametersGetInfoKHR;
125927 
125928 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR125929     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersGetInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 writeStdVPS_ = {},
125930                                                                      VULKAN_HPP_NAMESPACE::Bool32 writeStdSPS_ = {},
125931                                                                      VULKAN_HPP_NAMESPACE::Bool32 writeStdPPS_ = {},
125932                                                                      uint32_t                     stdVPSId_    = {},
125933                                                                      uint32_t                     stdSPSId_    = {},
125934                                                                      uint32_t                     stdPPSId_    = {},
125935                                                                      const void *                 pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
125936       : pNext{ pNext_ }
125937       , writeStdVPS{ writeStdVPS_ }
125938       , writeStdSPS{ writeStdSPS_ }
125939       , writeStdPPS{ writeStdPPS_ }
125940       , stdVPSId{ stdVPSId_ }
125941       , stdSPSId{ stdSPSId_ }
125942       , stdPPSId{ stdPPSId_ }
125943     {
125944     }
125945 
125946     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersGetInfoKHR( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125947 
VideoEncodeH265SessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR125948     VideoEncodeH265SessionParametersGetInfoKHR( VkVideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125949       : VideoEncodeH265SessionParametersGetInfoKHR( *reinterpret_cast<VideoEncodeH265SessionParametersGetInfoKHR const *>( &rhs ) )
125950     {
125951     }
125952 
125953     VideoEncodeH265SessionParametersGetInfoKHR & operator=( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125954 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125955 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR125956     VideoEncodeH265SessionParametersGetInfoKHR & operator=( VkVideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125957     {
125958       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR const *>( &rhs );
125959       return *this;
125960     }
125961 
125962 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR125963     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125964     {
125965       pNext = pNext_;
125966       return *this;
125967     }
125968 
setWriteStdVPSVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR125969     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setWriteStdVPS( VULKAN_HPP_NAMESPACE::Bool32 writeStdVPS_ ) VULKAN_HPP_NOEXCEPT
125970     {
125971       writeStdVPS = writeStdVPS_;
125972       return *this;
125973     }
125974 
setWriteStdSPSVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR125975     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setWriteStdSPS( VULKAN_HPP_NAMESPACE::Bool32 writeStdSPS_ ) VULKAN_HPP_NOEXCEPT
125976     {
125977       writeStdSPS = writeStdSPS_;
125978       return *this;
125979     }
125980 
setWriteStdPPSVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR125981     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setWriteStdPPS( VULKAN_HPP_NAMESPACE::Bool32 writeStdPPS_ ) VULKAN_HPP_NOEXCEPT
125982     {
125983       writeStdPPS = writeStdPPS_;
125984       return *this;
125985     }
125986 
setStdVPSIdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR125987     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setStdVPSId( uint32_t stdVPSId_ ) VULKAN_HPP_NOEXCEPT
125988     {
125989       stdVPSId = stdVPSId_;
125990       return *this;
125991     }
125992 
setStdSPSIdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR125993     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setStdSPSId( uint32_t stdSPSId_ ) VULKAN_HPP_NOEXCEPT
125994     {
125995       stdSPSId = stdSPSId_;
125996       return *this;
125997     }
125998 
setStdPPSIdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR125999     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setStdPPSId( uint32_t stdPPSId_ ) VULKAN_HPP_NOEXCEPT
126000     {
126001       stdPPSId = stdPPSId_;
126002       return *this;
126003     }
126004 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126005 
operator VkVideoEncodeH265SessionParametersGetInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR126006     operator VkVideoEncodeH265SessionParametersGetInfoKHR const &() const VULKAN_HPP_NOEXCEPT
126007     {
126008       return *reinterpret_cast<const VkVideoEncodeH265SessionParametersGetInfoKHR *>( this );
126009     }
126010 
operator VkVideoEncodeH265SessionParametersGetInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR126011     operator VkVideoEncodeH265SessionParametersGetInfoKHR &() VULKAN_HPP_NOEXCEPT
126012     {
126013       return *reinterpret_cast<VkVideoEncodeH265SessionParametersGetInfoKHR *>( this );
126014     }
126015 
126016 #if defined( VULKAN_HPP_USE_REFLECT )
126017 #  if 14 <= VULKAN_HPP_CPP_VERSION
126018     auto
126019 #  else
126020     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
126021                const void * const &,
126022                VULKAN_HPP_NAMESPACE::Bool32 const &,
126023                VULKAN_HPP_NAMESPACE::Bool32 const &,
126024                VULKAN_HPP_NAMESPACE::Bool32 const &,
126025                uint32_t const &,
126026                uint32_t const &,
126027                uint32_t const &>
126028 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR126029       reflect() const VULKAN_HPP_NOEXCEPT
126030     {
126031       return std::tie( sType, pNext, writeStdVPS, writeStdSPS, writeStdPPS, stdVPSId, stdSPSId, stdPPSId );
126032     }
126033 #endif
126034 
126035 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126036     auto operator<=>( VideoEncodeH265SessionParametersGetInfoKHR const & ) const = default;
126037 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR126038     bool operator==( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126039     {
126040 #  if defined( VULKAN_HPP_USE_REFLECT )
126041       return this->reflect() == rhs.reflect();
126042 #  else
126043       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( writeStdVPS == rhs.writeStdVPS ) && ( writeStdSPS == rhs.writeStdSPS ) &&
126044              ( writeStdPPS == rhs.writeStdPPS ) && ( stdVPSId == rhs.stdVPSId ) && ( stdSPSId == rhs.stdSPSId ) && ( stdPPSId == rhs.stdPPSId );
126045 #  endif
126046     }
126047 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR126048     bool operator!=( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126049     {
126050       return !operator==( rhs );
126051     }
126052 #endif
126053 
126054   public:
126055     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eVideoEncodeH265SessionParametersGetInfoKHR;
126056     const void *                        pNext       = {};
126057     VULKAN_HPP_NAMESPACE::Bool32        writeStdVPS = {};
126058     VULKAN_HPP_NAMESPACE::Bool32        writeStdSPS = {};
126059     VULKAN_HPP_NAMESPACE::Bool32        writeStdPPS = {};
126060     uint32_t                            stdVPSId    = {};
126061     uint32_t                            stdSPSId    = {};
126062     uint32_t                            stdPPSId    = {};
126063   };
126064 
126065   template <>
126066   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionParametersGetInfoKHR>
126067   {
126068     using Type = VideoEncodeH265SessionParametersGetInfoKHR;
126069   };
126070 
126071   struct VideoEncodeInfoKHR
126072   {
126073     using NativeType = VkVideoEncodeInfoKHR;
126074 
126075     static const bool                                  allowDuplicate = false;
126076     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeInfoKHR;
126077 
126078 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126079     VULKAN_HPP_CONSTEXPR VideoEncodeInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR               flags_                           = {},
126080                                              VULKAN_HPP_NAMESPACE::Buffer                            dstBuffer_                       = {},
126081                                              VULKAN_HPP_NAMESPACE::DeviceSize                        dstBufferOffset_                 = {},
126082                                              VULKAN_HPP_NAMESPACE::DeviceSize                        dstBufferRange_                  = {},
126083                                              VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR       srcPictureResource_              = {},
126084                                              const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot_             = {},
126085                                              uint32_t                                                referenceSlotCount_              = {},
126086                                              const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_                 = {},
126087                                              uint32_t                                                precedingExternallyEncodedBytes_ = {},
126088                                              const void *                                            pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
126089       : pNext{ pNext_ }
126090       , flags{ flags_ }
126091       , dstBuffer{ dstBuffer_ }
126092       , dstBufferOffset{ dstBufferOffset_ }
126093       , dstBufferRange{ dstBufferRange_ }
126094       , srcPictureResource{ srcPictureResource_ }
126095       , pSetupReferenceSlot{ pSetupReferenceSlot_ }
126096       , referenceSlotCount{ referenceSlotCount_ }
126097       , pReferenceSlots{ pReferenceSlots_ }
126098       , precedingExternallyEncodedBytes{ precedingExternallyEncodedBytes_ }
126099     {
126100     }
126101 
126102     VULKAN_HPP_CONSTEXPR VideoEncodeInfoKHR( VideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126103 
VideoEncodeInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126104     VideoEncodeInfoKHR( VkVideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : VideoEncodeInfoKHR( *reinterpret_cast<VideoEncodeInfoKHR const *>( &rhs ) ) {}
126105 
126106 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126107     VideoEncodeInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR                                                                    flags_,
126108                         VULKAN_HPP_NAMESPACE::Buffer                                                                                 dstBuffer_,
126109                         VULKAN_HPP_NAMESPACE::DeviceSize                                                                             dstBufferOffset_,
126110                         VULKAN_HPP_NAMESPACE::DeviceSize                                                                             dstBufferRange_,
126111                         VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR                                                            srcPictureResource_,
126112                         const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR *                                                      pSetupReferenceSlot_,
126113                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_,
126114                         uint32_t     precedingExternallyEncodedBytes_ = {},
126115                         const void * pNext_                           = nullptr )
126116       : pNext( pNext_ )
126117       , flags( flags_ )
126118       , dstBuffer( dstBuffer_ )
126119       , dstBufferOffset( dstBufferOffset_ )
126120       , dstBufferRange( dstBufferRange_ )
126121       , srcPictureResource( srcPictureResource_ )
126122       , pSetupReferenceSlot( pSetupReferenceSlot_ )
126123       , referenceSlotCount( static_cast<uint32_t>( referenceSlots_.size() ) )
126124       , pReferenceSlots( referenceSlots_.data() )
126125       , precedingExternallyEncodedBytes( precedingExternallyEncodedBytes_ )
126126     {
126127     }
126128 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
126129 
126130     VideoEncodeInfoKHR & operator=( VideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126131 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126132 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126133     VideoEncodeInfoKHR & operator=( VkVideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126134     {
126135       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR const *>( &rhs );
126136       return *this;
126137     }
126138 
126139 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126140     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126141     {
126142       pNext = pNext_;
126143       return *this;
126144     }
126145 
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126146     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
126147     {
126148       flags = flags_;
126149       return *this;
126150     }
126151 
setDstBufferVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126152     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT
126153     {
126154       dstBuffer = dstBuffer_;
126155       return *this;
126156     }
126157 
setDstBufferOffsetVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126158     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setDstBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstBufferOffset_ ) VULKAN_HPP_NOEXCEPT
126159     {
126160       dstBufferOffset = dstBufferOffset_;
126161       return *this;
126162     }
126163 
setDstBufferRangeVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126164     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setDstBufferRange( VULKAN_HPP_NAMESPACE::DeviceSize dstBufferRange_ ) VULKAN_HPP_NOEXCEPT
126165     {
126166       dstBufferRange = dstBufferRange_;
126167       return *this;
126168     }
126169 
126170     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setSrcPictureResourceVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126171       setSrcPictureResource( VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const & srcPictureResource_ ) VULKAN_HPP_NOEXCEPT
126172     {
126173       srcPictureResource = srcPictureResource_;
126174       return *this;
126175     }
126176 
126177     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setPSetupReferenceSlotVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126178       setPSetupReferenceSlot( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot_ ) VULKAN_HPP_NOEXCEPT
126179     {
126180       pSetupReferenceSlot = pSetupReferenceSlot_;
126181       return *this;
126182     }
126183 
setReferenceSlotCountVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126184     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT
126185     {
126186       referenceSlotCount = referenceSlotCount_;
126187       return *this;
126188     }
126189 
126190     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setPReferenceSlotsVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126191       setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT
126192     {
126193       pReferenceSlots = pReferenceSlots_;
126194       return *this;
126195     }
126196 
126197 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceSlotsVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126198     VideoEncodeInfoKHR & setReferenceSlots(
126199       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_ ) VULKAN_HPP_NOEXCEPT
126200     {
126201       referenceSlotCount = static_cast<uint32_t>( referenceSlots_.size() );
126202       pReferenceSlots    = referenceSlots_.data();
126203       return *this;
126204     }
126205 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
126206 
setPrecedingExternallyEncodedBytesVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126207     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPrecedingExternallyEncodedBytes( uint32_t precedingExternallyEncodedBytes_ ) VULKAN_HPP_NOEXCEPT
126208     {
126209       precedingExternallyEncodedBytes = precedingExternallyEncodedBytes_;
126210       return *this;
126211     }
126212 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126213 
operator VkVideoEncodeInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126214     operator VkVideoEncodeInfoKHR const &() const VULKAN_HPP_NOEXCEPT
126215     {
126216       return *reinterpret_cast<const VkVideoEncodeInfoKHR *>( this );
126217     }
126218 
operator VkVideoEncodeInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126219     operator VkVideoEncodeInfoKHR &() VULKAN_HPP_NOEXCEPT
126220     {
126221       return *reinterpret_cast<VkVideoEncodeInfoKHR *>( this );
126222     }
126223 
126224 #if defined( VULKAN_HPP_USE_REFLECT )
126225 #  if 14 <= VULKAN_HPP_CPP_VERSION
126226     auto
126227 #  else
126228     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
126229                const void * const &,
126230                VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR const &,
126231                VULKAN_HPP_NAMESPACE::Buffer const &,
126232                VULKAN_HPP_NAMESPACE::DeviceSize const &,
126233                VULKAN_HPP_NAMESPACE::DeviceSize const &,
126234                VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const &,
126235                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * const &,
126236                uint32_t const &,
126237                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * const &,
126238                uint32_t const &>
126239 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126240       reflect() const VULKAN_HPP_NOEXCEPT
126241     {
126242       return std::tie( sType,
126243                        pNext,
126244                        flags,
126245                        dstBuffer,
126246                        dstBufferOffset,
126247                        dstBufferRange,
126248                        srcPictureResource,
126249                        pSetupReferenceSlot,
126250                        referenceSlotCount,
126251                        pReferenceSlots,
126252                        precedingExternallyEncodedBytes );
126253     }
126254 #endif
126255 
126256 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126257     auto operator<=>( VideoEncodeInfoKHR const & ) const = default;
126258 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126259     bool operator==( VideoEncodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126260     {
126261 #  if defined( VULKAN_HPP_USE_REFLECT )
126262       return this->reflect() == rhs.reflect();
126263 #  else
126264       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dstBuffer == rhs.dstBuffer ) &&
126265              ( dstBufferOffset == rhs.dstBufferOffset ) && ( dstBufferRange == rhs.dstBufferRange ) && ( srcPictureResource == rhs.srcPictureResource ) &&
126266              ( pSetupReferenceSlot == rhs.pSetupReferenceSlot ) && ( referenceSlotCount == rhs.referenceSlotCount ) &&
126267              ( pReferenceSlots == rhs.pReferenceSlots ) && ( precedingExternallyEncodedBytes == rhs.precedingExternallyEncodedBytes );
126268 #  endif
126269     }
126270 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR126271     bool operator!=( VideoEncodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126272     {
126273       return !operator==( rhs );
126274     }
126275 #endif
126276 
126277   public:
126278     VULKAN_HPP_NAMESPACE::StructureType                     sType                           = StructureType::eVideoEncodeInfoKHR;
126279     const void *                                            pNext                           = {};
126280     VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR               flags                           = {};
126281     VULKAN_HPP_NAMESPACE::Buffer                            dstBuffer                       = {};
126282     VULKAN_HPP_NAMESPACE::DeviceSize                        dstBufferOffset                 = {};
126283     VULKAN_HPP_NAMESPACE::DeviceSize                        dstBufferRange                  = {};
126284     VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR       srcPictureResource              = {};
126285     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot             = {};
126286     uint32_t                                                referenceSlotCount              = {};
126287     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots                 = {};
126288     uint32_t                                                precedingExternallyEncodedBytes = {};
126289   };
126290 
126291   template <>
126292   struct CppType<StructureType, StructureType::eVideoEncodeInfoKHR>
126293   {
126294     using Type = VideoEncodeInfoKHR;
126295   };
126296 
126297   struct VideoEncodeQualityLevelInfoKHR
126298   {
126299     using NativeType = VkVideoEncodeQualityLevelInfoKHR;
126300 
126301     static const bool                                  allowDuplicate = false;
126302     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeQualityLevelInfoKHR;
126303 
126304 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeQualityLevelInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR126305     VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelInfoKHR( uint32_t qualityLevel_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
126306       : pNext{ pNext_ }
126307       , qualityLevel{ qualityLevel_ }
126308     {
126309     }
126310 
126311     VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelInfoKHR( VideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126312 
VideoEncodeQualityLevelInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR126313     VideoEncodeQualityLevelInfoKHR( VkVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126314       : VideoEncodeQualityLevelInfoKHR( *reinterpret_cast<VideoEncodeQualityLevelInfoKHR const *>( &rhs ) )
126315     {
126316     }
126317 
126318     VideoEncodeQualityLevelInfoKHR & operator=( VideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126319 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126320 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR126321     VideoEncodeQualityLevelInfoKHR & operator=( VkVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126322     {
126323       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR const *>( &rhs );
126324       return *this;
126325     }
126326 
126327 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR126328     VULKAN_HPP_CONSTEXPR_14 VideoEncodeQualityLevelInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126329     {
126330       pNext = pNext_;
126331       return *this;
126332     }
126333 
setQualityLevelVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR126334     VULKAN_HPP_CONSTEXPR_14 VideoEncodeQualityLevelInfoKHR & setQualityLevel( uint32_t qualityLevel_ ) VULKAN_HPP_NOEXCEPT
126335     {
126336       qualityLevel = qualityLevel_;
126337       return *this;
126338     }
126339 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126340 
operator VkVideoEncodeQualityLevelInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR126341     operator VkVideoEncodeQualityLevelInfoKHR const &() const VULKAN_HPP_NOEXCEPT
126342     {
126343       return *reinterpret_cast<const VkVideoEncodeQualityLevelInfoKHR *>( this );
126344     }
126345 
operator VkVideoEncodeQualityLevelInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR126346     operator VkVideoEncodeQualityLevelInfoKHR &() VULKAN_HPP_NOEXCEPT
126347     {
126348       return *reinterpret_cast<VkVideoEncodeQualityLevelInfoKHR *>( this );
126349     }
126350 
126351 #if defined( VULKAN_HPP_USE_REFLECT )
126352 #  if 14 <= VULKAN_HPP_CPP_VERSION
126353     auto
126354 #  else
126355     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
126356 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR126357       reflect() const VULKAN_HPP_NOEXCEPT
126358     {
126359       return std::tie( sType, pNext, qualityLevel );
126360     }
126361 #endif
126362 
126363 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126364     auto operator<=>( VideoEncodeQualityLevelInfoKHR const & ) const = default;
126365 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR126366     bool operator==( VideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126367     {
126368 #  if defined( VULKAN_HPP_USE_REFLECT )
126369       return this->reflect() == rhs.reflect();
126370 #  else
126371       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( qualityLevel == rhs.qualityLevel );
126372 #  endif
126373     }
126374 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR126375     bool operator!=( VideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126376     {
126377       return !operator==( rhs );
126378     }
126379 #endif
126380 
126381   public:
126382     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eVideoEncodeQualityLevelInfoKHR;
126383     const void *                        pNext        = {};
126384     uint32_t                            qualityLevel = {};
126385   };
126386 
126387   template <>
126388   struct CppType<StructureType, StructureType::eVideoEncodeQualityLevelInfoKHR>
126389   {
126390     using Type = VideoEncodeQualityLevelInfoKHR;
126391   };
126392 
126393   struct VideoEncodeQualityLevelPropertiesKHR
126394   {
126395     using NativeType = VkVideoEncodeQualityLevelPropertiesKHR;
126396 
126397     static const bool                                  allowDuplicate = false;
126398     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeQualityLevelPropertiesKHR;
126399 
126400 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeQualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR126401     VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelPropertiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode_ =
126402                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eDefault,
126403                                                                uint32_t preferredRateControlLayerCount_ = {},
126404                                                                void *   pNext_                          = nullptr ) VULKAN_HPP_NOEXCEPT
126405       : pNext{ pNext_ }
126406       , preferredRateControlMode{ preferredRateControlMode_ }
126407       , preferredRateControlLayerCount{ preferredRateControlLayerCount_ }
126408     {
126409     }
126410 
126411     VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelPropertiesKHR( VideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126412 
VideoEncodeQualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR126413     VideoEncodeQualityLevelPropertiesKHR( VkVideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126414       : VideoEncodeQualityLevelPropertiesKHR( *reinterpret_cast<VideoEncodeQualityLevelPropertiesKHR const *>( &rhs ) )
126415     {
126416     }
126417 
126418     VideoEncodeQualityLevelPropertiesKHR & operator=( VideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126419 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126420 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR126421     VideoEncodeQualityLevelPropertiesKHR & operator=( VkVideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126422     {
126423       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR const *>( &rhs );
126424       return *this;
126425     }
126426 
operator VkVideoEncodeQualityLevelPropertiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR126427     operator VkVideoEncodeQualityLevelPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
126428     {
126429       return *reinterpret_cast<const VkVideoEncodeQualityLevelPropertiesKHR *>( this );
126430     }
126431 
operator VkVideoEncodeQualityLevelPropertiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR126432     operator VkVideoEncodeQualityLevelPropertiesKHR &() VULKAN_HPP_NOEXCEPT
126433     {
126434       return *reinterpret_cast<VkVideoEncodeQualityLevelPropertiesKHR *>( this );
126435     }
126436 
126437 #if defined( VULKAN_HPP_USE_REFLECT )
126438 #  if 14 <= VULKAN_HPP_CPP_VERSION
126439     auto
126440 #  else
126441     std::
126442       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR const &, uint32_t const &>
126443 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR126444       reflect() const VULKAN_HPP_NOEXCEPT
126445     {
126446       return std::tie( sType, pNext, preferredRateControlMode, preferredRateControlLayerCount );
126447     }
126448 #endif
126449 
126450 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126451     auto operator<=>( VideoEncodeQualityLevelPropertiesKHR const & ) const = default;
126452 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR126453     bool operator==( VideoEncodeQualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126454     {
126455 #  if defined( VULKAN_HPP_USE_REFLECT )
126456       return this->reflect() == rhs.reflect();
126457 #  else
126458       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredRateControlMode == rhs.preferredRateControlMode ) &&
126459              ( preferredRateControlLayerCount == rhs.preferredRateControlLayerCount );
126460 #  endif
126461     }
126462 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR126463     bool operator!=( VideoEncodeQualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126464     {
126465       return !operator==( rhs );
126466     }
126467 #endif
126468 
126469   public:
126470     VULKAN_HPP_NAMESPACE::StructureType                         sType = StructureType::eVideoEncodeQualityLevelPropertiesKHR;
126471     void *                                                      pNext = {};
126472     VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode =
126473       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eDefault;
126474     uint32_t preferredRateControlLayerCount = {};
126475   };
126476 
126477   template <>
126478   struct CppType<StructureType, StructureType::eVideoEncodeQualityLevelPropertiesKHR>
126479   {
126480     using Type = VideoEncodeQualityLevelPropertiesKHR;
126481   };
126482 
126483   struct VideoEncodeRateControlLayerInfoKHR
126484   {
126485     using NativeType = VkVideoEncodeRateControlLayerInfoKHR;
126486 
126487     static const bool                                  allowDuplicate = false;
126488     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeRateControlLayerInfoKHR;
126489 
126490 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeRateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126491     VULKAN_HPP_CONSTEXPR VideoEncodeRateControlLayerInfoKHR( uint64_t     averageBitrate_       = {},
126492                                                              uint64_t     maxBitrate_           = {},
126493                                                              uint32_t     frameRateNumerator_   = {},
126494                                                              uint32_t     frameRateDenominator_ = {},
126495                                                              const void * pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
126496       : pNext{ pNext_ }
126497       , averageBitrate{ averageBitrate_ }
126498       , maxBitrate{ maxBitrate_ }
126499       , frameRateNumerator{ frameRateNumerator_ }
126500       , frameRateDenominator{ frameRateDenominator_ }
126501     {
126502     }
126503 
126504     VULKAN_HPP_CONSTEXPR VideoEncodeRateControlLayerInfoKHR( VideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126505 
VideoEncodeRateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126506     VideoEncodeRateControlLayerInfoKHR( VkVideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126507       : VideoEncodeRateControlLayerInfoKHR( *reinterpret_cast<VideoEncodeRateControlLayerInfoKHR const *>( &rhs ) )
126508     {
126509     }
126510 
126511     VideoEncodeRateControlLayerInfoKHR & operator=( VideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126512 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126513 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126514     VideoEncodeRateControlLayerInfoKHR & operator=( VkVideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126515     {
126516       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR const *>( &rhs );
126517       return *this;
126518     }
126519 
126520 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126521     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126522     {
126523       pNext = pNext_;
126524       return *this;
126525     }
126526 
setAverageBitrateVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126527     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setAverageBitrate( uint64_t averageBitrate_ ) VULKAN_HPP_NOEXCEPT
126528     {
126529       averageBitrate = averageBitrate_;
126530       return *this;
126531     }
126532 
setMaxBitrateVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126533     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setMaxBitrate( uint64_t maxBitrate_ ) VULKAN_HPP_NOEXCEPT
126534     {
126535       maxBitrate = maxBitrate_;
126536       return *this;
126537     }
126538 
setFrameRateNumeratorVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126539     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setFrameRateNumerator( uint32_t frameRateNumerator_ ) VULKAN_HPP_NOEXCEPT
126540     {
126541       frameRateNumerator = frameRateNumerator_;
126542       return *this;
126543     }
126544 
setFrameRateDenominatorVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126545     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setFrameRateDenominator( uint32_t frameRateDenominator_ ) VULKAN_HPP_NOEXCEPT
126546     {
126547       frameRateDenominator = frameRateDenominator_;
126548       return *this;
126549     }
126550 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126551 
operator VkVideoEncodeRateControlLayerInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126552     operator VkVideoEncodeRateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT
126553     {
126554       return *reinterpret_cast<const VkVideoEncodeRateControlLayerInfoKHR *>( this );
126555     }
126556 
operator VkVideoEncodeRateControlLayerInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126557     operator VkVideoEncodeRateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT
126558     {
126559       return *reinterpret_cast<VkVideoEncodeRateControlLayerInfoKHR *>( this );
126560     }
126561 
126562 #if defined( VULKAN_HPP_USE_REFLECT )
126563 #  if 14 <= VULKAN_HPP_CPP_VERSION
126564     auto
126565 #  else
126566     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &, uint64_t const &, uint32_t const &, uint32_t const &>
126567 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126568       reflect() const VULKAN_HPP_NOEXCEPT
126569     {
126570       return std::tie( sType, pNext, averageBitrate, maxBitrate, frameRateNumerator, frameRateDenominator );
126571     }
126572 #endif
126573 
126574 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126575     auto operator<=>( VideoEncodeRateControlLayerInfoKHR const & ) const = default;
126576 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126577     bool operator==( VideoEncodeRateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126578     {
126579 #  if defined( VULKAN_HPP_USE_REFLECT )
126580       return this->reflect() == rhs.reflect();
126581 #  else
126582       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( averageBitrate == rhs.averageBitrate ) && ( maxBitrate == rhs.maxBitrate ) &&
126583              ( frameRateNumerator == rhs.frameRateNumerator ) && ( frameRateDenominator == rhs.frameRateDenominator );
126584 #  endif
126585     }
126586 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR126587     bool operator!=( VideoEncodeRateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126588     {
126589       return !operator==( rhs );
126590     }
126591 #endif
126592 
126593   public:
126594     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eVideoEncodeRateControlLayerInfoKHR;
126595     const void *                        pNext                = {};
126596     uint64_t                            averageBitrate       = {};
126597     uint64_t                            maxBitrate           = {};
126598     uint32_t                            frameRateNumerator   = {};
126599     uint32_t                            frameRateDenominator = {};
126600   };
126601 
126602   template <>
126603   struct CppType<StructureType, StructureType::eVideoEncodeRateControlLayerInfoKHR>
126604   {
126605     using Type = VideoEncodeRateControlLayerInfoKHR;
126606   };
126607 
126608   struct VideoEncodeRateControlInfoKHR
126609   {
126610     using NativeType = VkVideoEncodeRateControlInfoKHR;
126611 
126612     static const bool                                  allowDuplicate = false;
126613     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeRateControlInfoKHR;
126614 
126615 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeRateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126616     VULKAN_HPP_CONSTEXPR VideoEncodeRateControlInfoKHR(
126617       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR             flags_           = {},
126618       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR      rateControlMode_ = VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eDefault,
126619       uint32_t                                                         layerCount_      = {},
126620       const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayers_         = {},
126621       uint32_t                                                         virtualBufferSizeInMs_        = {},
126622       uint32_t                                                         initialVirtualBufferSizeInMs_ = {},
126623       const void *                                                     pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
126624       : pNext{ pNext_ }
126625       , flags{ flags_ }
126626       , rateControlMode{ rateControlMode_ }
126627       , layerCount{ layerCount_ }
126628       , pLayers{ pLayers_ }
126629       , virtualBufferSizeInMs{ virtualBufferSizeInMs_ }
126630       , initialVirtualBufferSizeInMs{ initialVirtualBufferSizeInMs_ }
126631     {
126632     }
126633 
126634     VULKAN_HPP_CONSTEXPR VideoEncodeRateControlInfoKHR( VideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126635 
VideoEncodeRateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126636     VideoEncodeRateControlInfoKHR( VkVideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126637       : VideoEncodeRateControlInfoKHR( *reinterpret_cast<VideoEncodeRateControlInfoKHR const *>( &rhs ) )
126638     {
126639     }
126640 
126641 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeRateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126642     VideoEncodeRateControlInfoKHR(
126643       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR                                                                  flags_,
126644       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR                                                           rateControlMode_,
126645       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR> const & layers_,
126646       uint32_t                                                                                                              virtualBufferSizeInMs_        = {},
126647       uint32_t                                                                                                              initialVirtualBufferSizeInMs_ = {},
126648       const void *                                                                                                          pNext_ = nullptr )
126649       : pNext( pNext_ )
126650       , flags( flags_ )
126651       , rateControlMode( rateControlMode_ )
126652       , layerCount( static_cast<uint32_t>( layers_.size() ) )
126653       , pLayers( layers_.data() )
126654       , virtualBufferSizeInMs( virtualBufferSizeInMs_ )
126655       , initialVirtualBufferSizeInMs( initialVirtualBufferSizeInMs_ )
126656     {
126657     }
126658 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
126659 
126660     VideoEncodeRateControlInfoKHR & operator=( VideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126661 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126662 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126663     VideoEncodeRateControlInfoKHR & operator=( VkVideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126664     {
126665       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR const *>( &rhs );
126666       return *this;
126667     }
126668 
126669 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126670     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126671     {
126672       pNext = pNext_;
126673       return *this;
126674     }
126675 
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126676     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
126677     {
126678       flags = flags_;
126679       return *this;
126680     }
126681 
126682     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR &
setRateControlModeVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126683       setRateControlMode( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR rateControlMode_ ) VULKAN_HPP_NOEXCEPT
126684     {
126685       rateControlMode = rateControlMode_;
126686       return *this;
126687     }
126688 
setLayerCountVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126689     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
126690     {
126691       layerCount = layerCount_;
126692       return *this;
126693     }
126694 
126695     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR &
setPLayersVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126696       setPLayers( const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayers_ ) VULKAN_HPP_NOEXCEPT
126697     {
126698       pLayers = pLayers_;
126699       return *this;
126700     }
126701 
126702 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setLayersVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126703     VideoEncodeRateControlInfoKHR & setLayers(
126704       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR> const & layers_ ) VULKAN_HPP_NOEXCEPT
126705     {
126706       layerCount = static_cast<uint32_t>( layers_.size() );
126707       pLayers    = layers_.data();
126708       return *this;
126709     }
126710 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
126711 
setVirtualBufferSizeInMsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126712     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setVirtualBufferSizeInMs( uint32_t virtualBufferSizeInMs_ ) VULKAN_HPP_NOEXCEPT
126713     {
126714       virtualBufferSizeInMs = virtualBufferSizeInMs_;
126715       return *this;
126716     }
126717 
setInitialVirtualBufferSizeInMsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126718     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setInitialVirtualBufferSizeInMs( uint32_t initialVirtualBufferSizeInMs_ ) VULKAN_HPP_NOEXCEPT
126719     {
126720       initialVirtualBufferSizeInMs = initialVirtualBufferSizeInMs_;
126721       return *this;
126722     }
126723 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126724 
operator VkVideoEncodeRateControlInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126725     operator VkVideoEncodeRateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT
126726     {
126727       return *reinterpret_cast<const VkVideoEncodeRateControlInfoKHR *>( this );
126728     }
126729 
operator VkVideoEncodeRateControlInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126730     operator VkVideoEncodeRateControlInfoKHR &() VULKAN_HPP_NOEXCEPT
126731     {
126732       return *reinterpret_cast<VkVideoEncodeRateControlInfoKHR *>( this );
126733     }
126734 
126735 #if defined( VULKAN_HPP_USE_REFLECT )
126736 #  if 14 <= VULKAN_HPP_CPP_VERSION
126737     auto
126738 #  else
126739     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
126740                const void * const &,
126741                VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR const &,
126742                VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR const &,
126743                uint32_t const &,
126744                const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * const &,
126745                uint32_t const &,
126746                uint32_t const &>
126747 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126748       reflect() const VULKAN_HPP_NOEXCEPT
126749     {
126750       return std::tie( sType, pNext, flags, rateControlMode, layerCount, pLayers, virtualBufferSizeInMs, initialVirtualBufferSizeInMs );
126751     }
126752 #endif
126753 
126754 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126755     auto operator<=>( VideoEncodeRateControlInfoKHR const & ) const = default;
126756 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126757     bool operator==( VideoEncodeRateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126758     {
126759 #  if defined( VULKAN_HPP_USE_REFLECT )
126760       return this->reflect() == rhs.reflect();
126761 #  else
126762       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rateControlMode == rhs.rateControlMode ) &&
126763              ( layerCount == rhs.layerCount ) && ( pLayers == rhs.pLayers ) && ( virtualBufferSizeInMs == rhs.virtualBufferSizeInMs ) &&
126764              ( initialVirtualBufferSizeInMs == rhs.initialVirtualBufferSizeInMs );
126765 #  endif
126766     }
126767 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR126768     bool operator!=( VideoEncodeRateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126769     {
126770       return !operator==( rhs );
126771     }
126772 #endif
126773 
126774   public:
126775     VULKAN_HPP_NAMESPACE::StructureType                              sType           = StructureType::eVideoEncodeRateControlInfoKHR;
126776     const void *                                                     pNext           = {};
126777     VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR             flags           = {};
126778     VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR      rateControlMode = VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eDefault;
126779     uint32_t                                                         layerCount      = {};
126780     const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayers         = {};
126781     uint32_t                                                         virtualBufferSizeInMs        = {};
126782     uint32_t                                                         initialVirtualBufferSizeInMs = {};
126783   };
126784 
126785   template <>
126786   struct CppType<StructureType, StructureType::eVideoEncodeRateControlInfoKHR>
126787   {
126788     using Type = VideoEncodeRateControlInfoKHR;
126789   };
126790 
126791   struct VideoEncodeSessionParametersFeedbackInfoKHR
126792   {
126793     using NativeType = VkVideoEncodeSessionParametersFeedbackInfoKHR;
126794 
126795     static const bool                                  allowDuplicate = false;
126796     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeSessionParametersFeedbackInfoKHR;
126797 
126798 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeSessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR126799     VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersFeedbackInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 hasOverrides_ = {},
126800                                                                       void *                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
126801       : pNext{ pNext_ }
126802       , hasOverrides{ hasOverrides_ }
126803     {
126804     }
126805 
126806     VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersFeedbackInfoKHR( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126807 
VideoEncodeSessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR126808     VideoEncodeSessionParametersFeedbackInfoKHR( VkVideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126809       : VideoEncodeSessionParametersFeedbackInfoKHR( *reinterpret_cast<VideoEncodeSessionParametersFeedbackInfoKHR const *>( &rhs ) )
126810     {
126811     }
126812 
126813     VideoEncodeSessionParametersFeedbackInfoKHR & operator=( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126814 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126815 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR126816     VideoEncodeSessionParametersFeedbackInfoKHR & operator=( VkVideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126817     {
126818       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR const *>( &rhs );
126819       return *this;
126820     }
126821 
operator VkVideoEncodeSessionParametersFeedbackInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR126822     operator VkVideoEncodeSessionParametersFeedbackInfoKHR const &() const VULKAN_HPP_NOEXCEPT
126823     {
126824       return *reinterpret_cast<const VkVideoEncodeSessionParametersFeedbackInfoKHR *>( this );
126825     }
126826 
operator VkVideoEncodeSessionParametersFeedbackInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR126827     operator VkVideoEncodeSessionParametersFeedbackInfoKHR &() VULKAN_HPP_NOEXCEPT
126828     {
126829       return *reinterpret_cast<VkVideoEncodeSessionParametersFeedbackInfoKHR *>( this );
126830     }
126831 
126832 #if defined( VULKAN_HPP_USE_REFLECT )
126833 #  if 14 <= VULKAN_HPP_CPP_VERSION
126834     auto
126835 #  else
126836     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
126837 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR126838       reflect() const VULKAN_HPP_NOEXCEPT
126839     {
126840       return std::tie( sType, pNext, hasOverrides );
126841     }
126842 #endif
126843 
126844 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126845     auto operator<=>( VideoEncodeSessionParametersFeedbackInfoKHR const & ) const = default;
126846 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR126847     bool operator==( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126848     {
126849 #  if defined( VULKAN_HPP_USE_REFLECT )
126850       return this->reflect() == rhs.reflect();
126851 #  else
126852       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasOverrides == rhs.hasOverrides );
126853 #  endif
126854     }
126855 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR126856     bool operator!=( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126857     {
126858       return !operator==( rhs );
126859     }
126860 #endif
126861 
126862   public:
126863     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eVideoEncodeSessionParametersFeedbackInfoKHR;
126864     void *                              pNext        = {};
126865     VULKAN_HPP_NAMESPACE::Bool32        hasOverrides = {};
126866   };
126867 
126868   template <>
126869   struct CppType<StructureType, StructureType::eVideoEncodeSessionParametersFeedbackInfoKHR>
126870   {
126871     using Type = VideoEncodeSessionParametersFeedbackInfoKHR;
126872   };
126873 
126874   struct VideoEncodeSessionParametersGetInfoKHR
126875   {
126876     using NativeType = VkVideoEncodeSessionParametersGetInfoKHR;
126877 
126878     static const bool                                  allowDuplicate = false;
126879     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeSessionParametersGetInfoKHR;
126880 
126881 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeSessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR126882     VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersGetInfoKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_ = {},
126883                                                                  const void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
126884       : pNext{ pNext_ }
126885       , videoSessionParameters{ videoSessionParameters_ }
126886     {
126887     }
126888 
126889     VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersGetInfoKHR( VideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126890 
VideoEncodeSessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR126891     VideoEncodeSessionParametersGetInfoKHR( VkVideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126892       : VideoEncodeSessionParametersGetInfoKHR( *reinterpret_cast<VideoEncodeSessionParametersGetInfoKHR const *>( &rhs ) )
126893     {
126894     }
126895 
126896     VideoEncodeSessionParametersGetInfoKHR & operator=( VideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126897 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126898 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR126899     VideoEncodeSessionParametersGetInfoKHR & operator=( VkVideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126900     {
126901       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR const *>( &rhs );
126902       return *this;
126903     }
126904 
126905 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR126906     VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionParametersGetInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126907     {
126908       pNext = pNext_;
126909       return *this;
126910     }
126911 
126912     VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionParametersGetInfoKHR &
setVideoSessionParametersVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR126913       setVideoSessionParameters( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_ ) VULKAN_HPP_NOEXCEPT
126914     {
126915       videoSessionParameters = videoSessionParameters_;
126916       return *this;
126917     }
126918 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126919 
operator VkVideoEncodeSessionParametersGetInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR126920     operator VkVideoEncodeSessionParametersGetInfoKHR const &() const VULKAN_HPP_NOEXCEPT
126921     {
126922       return *reinterpret_cast<const VkVideoEncodeSessionParametersGetInfoKHR *>( this );
126923     }
126924 
operator VkVideoEncodeSessionParametersGetInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR126925     operator VkVideoEncodeSessionParametersGetInfoKHR &() VULKAN_HPP_NOEXCEPT
126926     {
126927       return *reinterpret_cast<VkVideoEncodeSessionParametersGetInfoKHR *>( this );
126928     }
126929 
126930 #if defined( VULKAN_HPP_USE_REFLECT )
126931 #  if 14 <= VULKAN_HPP_CPP_VERSION
126932     auto
126933 #  else
126934     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const &>
126935 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR126936       reflect() const VULKAN_HPP_NOEXCEPT
126937     {
126938       return std::tie( sType, pNext, videoSessionParameters );
126939     }
126940 #endif
126941 
126942 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126943     auto operator<=>( VideoEncodeSessionParametersGetInfoKHR const & ) const = default;
126944 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR126945     bool operator==( VideoEncodeSessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126946     {
126947 #  if defined( VULKAN_HPP_USE_REFLECT )
126948       return this->reflect() == rhs.reflect();
126949 #  else
126950       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoSessionParameters == rhs.videoSessionParameters );
126951 #  endif
126952     }
126953 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR126954     bool operator!=( VideoEncodeSessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126955     {
126956       return !operator==( rhs );
126957     }
126958 #endif
126959 
126960   public:
126961     VULKAN_HPP_NAMESPACE::StructureType             sType                  = StructureType::eVideoEncodeSessionParametersGetInfoKHR;
126962     const void *                                    pNext                  = {};
126963     VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters = {};
126964   };
126965 
126966   template <>
126967   struct CppType<StructureType, StructureType::eVideoEncodeSessionParametersGetInfoKHR>
126968   {
126969     using Type = VideoEncodeSessionParametersGetInfoKHR;
126970   };
126971 
126972   struct VideoEncodeUsageInfoKHR
126973   {
126974     using NativeType = VkVideoEncodeUsageInfoKHR;
126975 
126976     static const bool                                  allowDuplicate = false;
126977     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeUsageInfoKHR;
126978 
126979 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
126980     VULKAN_HPP_CONSTEXPR
VideoEncodeUsageInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR126981       VideoEncodeUsageInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeUsageFlagsKHR   videoUsageHints_   = {},
126982                                VULKAN_HPP_NAMESPACE::VideoEncodeContentFlagsKHR videoContentHints_ = {},
126983                                VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR   tuningMode_        = VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR::eDefault,
126984                                const void *                                     pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
126985       : pNext{ pNext_ }
126986       , videoUsageHints{ videoUsageHints_ }
126987       , videoContentHints{ videoContentHints_ }
126988       , tuningMode{ tuningMode_ }
126989     {
126990     }
126991 
126992     VULKAN_HPP_CONSTEXPR VideoEncodeUsageInfoKHR( VideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126993 
VideoEncodeUsageInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR126994     VideoEncodeUsageInfoKHR( VkVideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126995       : VideoEncodeUsageInfoKHR( *reinterpret_cast<VideoEncodeUsageInfoKHR const *>( &rhs ) )
126996     {
126997     }
126998 
126999     VideoEncodeUsageInfoKHR & operator=( VideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127000 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
127001 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR127002     VideoEncodeUsageInfoKHR & operator=( VkVideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127003     {
127004       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR const *>( &rhs );
127005       return *this;
127006     }
127007 
127008 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR127009     VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
127010     {
127011       pNext = pNext_;
127012       return *this;
127013     }
127014 
setVideoUsageHintsVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR127015     VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR & setVideoUsageHints( VULKAN_HPP_NAMESPACE::VideoEncodeUsageFlagsKHR videoUsageHints_ ) VULKAN_HPP_NOEXCEPT
127016     {
127017       videoUsageHints = videoUsageHints_;
127018       return *this;
127019     }
127020 
127021     VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR &
setVideoContentHintsVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR127022       setVideoContentHints( VULKAN_HPP_NAMESPACE::VideoEncodeContentFlagsKHR videoContentHints_ ) VULKAN_HPP_NOEXCEPT
127023     {
127024       videoContentHints = videoContentHints_;
127025       return *this;
127026     }
127027 
setTuningModeVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR127028     VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR & setTuningMode( VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR tuningMode_ ) VULKAN_HPP_NOEXCEPT
127029     {
127030       tuningMode = tuningMode_;
127031       return *this;
127032     }
127033 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
127034 
operator VkVideoEncodeUsageInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR127035     operator VkVideoEncodeUsageInfoKHR const &() const VULKAN_HPP_NOEXCEPT
127036     {
127037       return *reinterpret_cast<const VkVideoEncodeUsageInfoKHR *>( this );
127038     }
127039 
operator VkVideoEncodeUsageInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR127040     operator VkVideoEncodeUsageInfoKHR &() VULKAN_HPP_NOEXCEPT
127041     {
127042       return *reinterpret_cast<VkVideoEncodeUsageInfoKHR *>( this );
127043     }
127044 
127045 #if defined( VULKAN_HPP_USE_REFLECT )
127046 #  if 14 <= VULKAN_HPP_CPP_VERSION
127047     auto
127048 #  else
127049     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
127050                const void * const &,
127051                VULKAN_HPP_NAMESPACE::VideoEncodeUsageFlagsKHR const &,
127052                VULKAN_HPP_NAMESPACE::VideoEncodeContentFlagsKHR const &,
127053                VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR const &>
127054 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR127055       reflect() const VULKAN_HPP_NOEXCEPT
127056     {
127057       return std::tie( sType, pNext, videoUsageHints, videoContentHints, tuningMode );
127058     }
127059 #endif
127060 
127061 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
127062     auto operator<=>( VideoEncodeUsageInfoKHR const & ) const = default;
127063 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR127064     bool operator==( VideoEncodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127065     {
127066 #  if defined( VULKAN_HPP_USE_REFLECT )
127067       return this->reflect() == rhs.reflect();
127068 #  else
127069       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoUsageHints == rhs.videoUsageHints ) && ( videoContentHints == rhs.videoContentHints ) &&
127070              ( tuningMode == rhs.tuningMode );
127071 #  endif
127072     }
127073 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR127074     bool operator!=( VideoEncodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127075     {
127076       return !operator==( rhs );
127077     }
127078 #endif
127079 
127080   public:
127081     VULKAN_HPP_NAMESPACE::StructureType              sType             = StructureType::eVideoEncodeUsageInfoKHR;
127082     const void *                                     pNext             = {};
127083     VULKAN_HPP_NAMESPACE::VideoEncodeUsageFlagsKHR   videoUsageHints   = {};
127084     VULKAN_HPP_NAMESPACE::VideoEncodeContentFlagsKHR videoContentHints = {};
127085     VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR   tuningMode        = VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR::eDefault;
127086   };
127087 
127088   template <>
127089   struct CppType<StructureType, StructureType::eVideoEncodeUsageInfoKHR>
127090   {
127091     using Type = VideoEncodeUsageInfoKHR;
127092   };
127093 
127094   struct VideoEndCodingInfoKHR
127095   {
127096     using NativeType = VkVideoEndCodingInfoKHR;
127097 
127098     static const bool                                  allowDuplicate = false;
127099     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEndCodingInfoKHR;
127100 
127101 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEndCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR127102     VULKAN_HPP_CONSTEXPR VideoEndCodingInfoKHR( VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
127103       : pNext{ pNext_ }
127104       , flags{ flags_ }
127105     {
127106     }
127107 
127108     VULKAN_HPP_CONSTEXPR VideoEndCodingInfoKHR( VideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127109 
VideoEndCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR127110     VideoEndCodingInfoKHR( VkVideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127111       : VideoEndCodingInfoKHR( *reinterpret_cast<VideoEndCodingInfoKHR const *>( &rhs ) )
127112     {
127113     }
127114 
127115     VideoEndCodingInfoKHR & operator=( VideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127116 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
127117 
operator =VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR127118     VideoEndCodingInfoKHR & operator=( VkVideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127119     {
127120       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR const *>( &rhs );
127121       return *this;
127122     }
127123 
127124 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR127125     VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
127126     {
127127       pNext = pNext_;
127128       return *this;
127129     }
127130 
setFlagsVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR127131     VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
127132     {
127133       flags = flags_;
127134       return *this;
127135     }
127136 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
127137 
operator VkVideoEndCodingInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR127138     operator VkVideoEndCodingInfoKHR const &() const VULKAN_HPP_NOEXCEPT
127139     {
127140       return *reinterpret_cast<const VkVideoEndCodingInfoKHR *>( this );
127141     }
127142 
operator VkVideoEndCodingInfoKHR&VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR127143     operator VkVideoEndCodingInfoKHR &() VULKAN_HPP_NOEXCEPT
127144     {
127145       return *reinterpret_cast<VkVideoEndCodingInfoKHR *>( this );
127146     }
127147 
127148 #if defined( VULKAN_HPP_USE_REFLECT )
127149 #  if 14 <= VULKAN_HPP_CPP_VERSION
127150     auto
127151 #  else
127152     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR const &>
127153 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR127154       reflect() const VULKAN_HPP_NOEXCEPT
127155     {
127156       return std::tie( sType, pNext, flags );
127157     }
127158 #endif
127159 
127160 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
127161     auto operator<=>( VideoEndCodingInfoKHR const & ) const = default;
127162 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR127163     bool operator==( VideoEndCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127164     {
127165 #  if defined( VULKAN_HPP_USE_REFLECT )
127166       return this->reflect() == rhs.reflect();
127167 #  else
127168       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
127169 #  endif
127170     }
127171 
operator !=VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR127172     bool operator!=( VideoEndCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127173     {
127174       return !operator==( rhs );
127175     }
127176 #endif
127177 
127178   public:
127179     VULKAN_HPP_NAMESPACE::StructureType          sType = StructureType::eVideoEndCodingInfoKHR;
127180     const void *                                 pNext = {};
127181     VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags = {};
127182   };
127183 
127184   template <>
127185   struct CppType<StructureType, StructureType::eVideoEndCodingInfoKHR>
127186   {
127187     using Type = VideoEndCodingInfoKHR;
127188   };
127189 
127190   struct VideoFormatPropertiesKHR
127191   {
127192     using NativeType = VkVideoFormatPropertiesKHR;
127193 
127194     static const bool                                  allowDuplicate = false;
127195     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoFormatPropertiesKHR;
127196 
127197 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoFormatPropertiesKHRVULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR127198     VULKAN_HPP_CONSTEXPR VideoFormatPropertiesKHR( VULKAN_HPP_NAMESPACE::Format           format_           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
127199                                                    VULKAN_HPP_NAMESPACE::ComponentMapping componentMapping_ = {},
127200                                                    VULKAN_HPP_NAMESPACE::ImageCreateFlags imageCreateFlags_ = {},
127201                                                    VULKAN_HPP_NAMESPACE::ImageType        imageType_        = VULKAN_HPP_NAMESPACE::ImageType::e1D,
127202                                                    VULKAN_HPP_NAMESPACE::ImageTiling      imageTiling_      = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal,
127203                                                    VULKAN_HPP_NAMESPACE::ImageUsageFlags  imageUsageFlags_  = {},
127204                                                    void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
127205       : pNext{ pNext_ }
127206       , format{ format_ }
127207       , componentMapping{ componentMapping_ }
127208       , imageCreateFlags{ imageCreateFlags_ }
127209       , imageType{ imageType_ }
127210       , imageTiling{ imageTiling_ }
127211       , imageUsageFlags{ imageUsageFlags_ }
127212     {
127213     }
127214 
127215     VULKAN_HPP_CONSTEXPR VideoFormatPropertiesKHR( VideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127216 
VideoFormatPropertiesKHRVULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR127217     VideoFormatPropertiesKHR( VkVideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127218       : VideoFormatPropertiesKHR( *reinterpret_cast<VideoFormatPropertiesKHR const *>( &rhs ) )
127219     {
127220     }
127221 
127222     VideoFormatPropertiesKHR & operator=( VideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127223 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
127224 
operator =VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR127225     VideoFormatPropertiesKHR & operator=( VkVideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127226     {
127227       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR const *>( &rhs );
127228       return *this;
127229     }
127230 
operator VkVideoFormatPropertiesKHR const&VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR127231     operator VkVideoFormatPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
127232     {
127233       return *reinterpret_cast<const VkVideoFormatPropertiesKHR *>( this );
127234     }
127235 
operator VkVideoFormatPropertiesKHR&VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR127236     operator VkVideoFormatPropertiesKHR &() VULKAN_HPP_NOEXCEPT
127237     {
127238       return *reinterpret_cast<VkVideoFormatPropertiesKHR *>( this );
127239     }
127240 
127241 #if defined( VULKAN_HPP_USE_REFLECT )
127242 #  if 14 <= VULKAN_HPP_CPP_VERSION
127243     auto
127244 #  else
127245     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
127246                void * const &,
127247                VULKAN_HPP_NAMESPACE::Format const &,
127248                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
127249                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &,
127250                VULKAN_HPP_NAMESPACE::ImageType const &,
127251                VULKAN_HPP_NAMESPACE::ImageTiling const &,
127252                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
127253 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR127254       reflect() const VULKAN_HPP_NOEXCEPT
127255     {
127256       return std::tie( sType, pNext, format, componentMapping, imageCreateFlags, imageType, imageTiling, imageUsageFlags );
127257     }
127258 #endif
127259 
127260 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
127261     auto operator<=>( VideoFormatPropertiesKHR const & ) const = default;
127262 #else
operator ==VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR127263     bool operator==( VideoFormatPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127264     {
127265 #  if defined( VULKAN_HPP_USE_REFLECT )
127266       return this->reflect() == rhs.reflect();
127267 #  else
127268       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( componentMapping == rhs.componentMapping ) &&
127269              ( imageCreateFlags == rhs.imageCreateFlags ) && ( imageType == rhs.imageType ) && ( imageTiling == rhs.imageTiling ) &&
127270              ( imageUsageFlags == rhs.imageUsageFlags );
127271 #  endif
127272     }
127273 
operator !=VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR127274     bool operator!=( VideoFormatPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127275     {
127276       return !operator==( rhs );
127277     }
127278 #endif
127279 
127280   public:
127281     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eVideoFormatPropertiesKHR;
127282     void *                                 pNext            = {};
127283     VULKAN_HPP_NAMESPACE::Format           format           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
127284     VULKAN_HPP_NAMESPACE::ComponentMapping componentMapping = {};
127285     VULKAN_HPP_NAMESPACE::ImageCreateFlags imageCreateFlags = {};
127286     VULKAN_HPP_NAMESPACE::ImageType        imageType        = VULKAN_HPP_NAMESPACE::ImageType::e1D;
127287     VULKAN_HPP_NAMESPACE::ImageTiling      imageTiling      = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
127288     VULKAN_HPP_NAMESPACE::ImageUsageFlags  imageUsageFlags  = {};
127289   };
127290 
127291   template <>
127292   struct CppType<StructureType, StructureType::eVideoFormatPropertiesKHR>
127293   {
127294     using Type = VideoFormatPropertiesKHR;
127295   };
127296 
127297   struct VideoInlineQueryInfoKHR
127298   {
127299     using NativeType = VkVideoInlineQueryInfoKHR;
127300 
127301     static const bool                                  allowDuplicate = false;
127302     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoInlineQueryInfoKHR;
127303 
127304 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoInlineQueryInfoKHRVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127305     VULKAN_HPP_CONSTEXPR VideoInlineQueryInfoKHR( VULKAN_HPP_NAMESPACE::QueryPool queryPool_  = {},
127306                                                   uint32_t                        firstQuery_ = {},
127307                                                   uint32_t                        queryCount_ = {},
127308                                                   const void *                    pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
127309       : pNext{ pNext_ }
127310       , queryPool{ queryPool_ }
127311       , firstQuery{ firstQuery_ }
127312       , queryCount{ queryCount_ }
127313     {
127314     }
127315 
127316     VULKAN_HPP_CONSTEXPR VideoInlineQueryInfoKHR( VideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127317 
VideoInlineQueryInfoKHRVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127318     VideoInlineQueryInfoKHR( VkVideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127319       : VideoInlineQueryInfoKHR( *reinterpret_cast<VideoInlineQueryInfoKHR const *>( &rhs ) )
127320     {
127321     }
127322 
127323     VideoInlineQueryInfoKHR & operator=( VideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127324 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
127325 
operator =VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127326     VideoInlineQueryInfoKHR & operator=( VkVideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127327     {
127328       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR const *>( &rhs );
127329       return *this;
127330     }
127331 
127332 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127333     VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
127334     {
127335       pNext = pNext_;
127336       return *this;
127337     }
127338 
setQueryPoolVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127339     VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool_ ) VULKAN_HPP_NOEXCEPT
127340     {
127341       queryPool = queryPool_;
127342       return *this;
127343     }
127344 
setFirstQueryVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127345     VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setFirstQuery( uint32_t firstQuery_ ) VULKAN_HPP_NOEXCEPT
127346     {
127347       firstQuery = firstQuery_;
127348       return *this;
127349     }
127350 
setQueryCountVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127351     VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setQueryCount( uint32_t queryCount_ ) VULKAN_HPP_NOEXCEPT
127352     {
127353       queryCount = queryCount_;
127354       return *this;
127355     }
127356 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
127357 
operator VkVideoInlineQueryInfoKHR const&VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127358     operator VkVideoInlineQueryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
127359     {
127360       return *reinterpret_cast<const VkVideoInlineQueryInfoKHR *>( this );
127361     }
127362 
operator VkVideoInlineQueryInfoKHR&VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127363     operator VkVideoInlineQueryInfoKHR &() VULKAN_HPP_NOEXCEPT
127364     {
127365       return *reinterpret_cast<VkVideoInlineQueryInfoKHR *>( this );
127366     }
127367 
127368 #if defined( VULKAN_HPP_USE_REFLECT )
127369 #  if 14 <= VULKAN_HPP_CPP_VERSION
127370     auto
127371 #  else
127372     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::QueryPool const &, uint32_t const &, uint32_t const &>
127373 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127374       reflect() const VULKAN_HPP_NOEXCEPT
127375     {
127376       return std::tie( sType, pNext, queryPool, firstQuery, queryCount );
127377     }
127378 #endif
127379 
127380 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
127381     auto operator<=>( VideoInlineQueryInfoKHR const & ) const = default;
127382 #else
operator ==VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127383     bool operator==( VideoInlineQueryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127384     {
127385 #  if defined( VULKAN_HPP_USE_REFLECT )
127386       return this->reflect() == rhs.reflect();
127387 #  else
127388       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queryPool == rhs.queryPool ) && ( firstQuery == rhs.firstQuery ) &&
127389              ( queryCount == rhs.queryCount );
127390 #  endif
127391     }
127392 
operator !=VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR127393     bool operator!=( VideoInlineQueryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127394     {
127395       return !operator==( rhs );
127396     }
127397 #endif
127398 
127399   public:
127400     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eVideoInlineQueryInfoKHR;
127401     const void *                        pNext      = {};
127402     VULKAN_HPP_NAMESPACE::QueryPool     queryPool  = {};
127403     uint32_t                            firstQuery = {};
127404     uint32_t                            queryCount = {};
127405   };
127406 
127407   template <>
127408   struct CppType<StructureType, StructureType::eVideoInlineQueryInfoKHR>
127409   {
127410     using Type = VideoInlineQueryInfoKHR;
127411   };
127412 
127413   struct VideoProfileListInfoKHR
127414   {
127415     using NativeType = VkVideoProfileListInfoKHR;
127416 
127417     static const bool                                  allowDuplicate = false;
127418     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoProfileListInfoKHR;
127419 
127420 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoProfileListInfoKHRVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127421     VULKAN_HPP_CONSTEXPR VideoProfileListInfoKHR( uint32_t                                          profileCount_ = {},
127422                                                   const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pProfiles_    = {},
127423                                                   const void *                                      pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
127424       : pNext{ pNext_ }
127425       , profileCount{ profileCount_ }
127426       , pProfiles{ pProfiles_ }
127427     {
127428     }
127429 
127430     VULKAN_HPP_CONSTEXPR VideoProfileListInfoKHR( VideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127431 
VideoProfileListInfoKHRVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127432     VideoProfileListInfoKHR( VkVideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127433       : VideoProfileListInfoKHR( *reinterpret_cast<VideoProfileListInfoKHR const *>( &rhs ) )
127434     {
127435     }
127436 
127437 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoProfileListInfoKHRVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127438     VideoProfileListInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR> const & profiles_,
127439                              const void *                                                                                           pNext_ = nullptr )
127440       : pNext( pNext_ ), profileCount( static_cast<uint32_t>( profiles_.size() ) ), pProfiles( profiles_.data() )
127441     {
127442     }
127443 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
127444 
127445     VideoProfileListInfoKHR & operator=( VideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127446 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
127447 
operator =VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127448     VideoProfileListInfoKHR & operator=( VkVideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127449     {
127450       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR const *>( &rhs );
127451       return *this;
127452     }
127453 
127454 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127455     VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
127456     {
127457       pNext = pNext_;
127458       return *this;
127459     }
127460 
setProfileCountVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127461     VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR & setProfileCount( uint32_t profileCount_ ) VULKAN_HPP_NOEXCEPT
127462     {
127463       profileCount = profileCount_;
127464       return *this;
127465     }
127466 
setPProfilesVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127467     VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR & setPProfiles( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pProfiles_ ) VULKAN_HPP_NOEXCEPT
127468     {
127469       pProfiles = pProfiles_;
127470       return *this;
127471     }
127472 
127473 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
127474     VideoProfileListInfoKHR &
setProfilesVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127475       setProfiles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR> const & profiles_ ) VULKAN_HPP_NOEXCEPT
127476     {
127477       profileCount = static_cast<uint32_t>( profiles_.size() );
127478       pProfiles    = profiles_.data();
127479       return *this;
127480     }
127481 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
127482 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
127483 
operator VkVideoProfileListInfoKHR const&VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127484     operator VkVideoProfileListInfoKHR const &() const VULKAN_HPP_NOEXCEPT
127485     {
127486       return *reinterpret_cast<const VkVideoProfileListInfoKHR *>( this );
127487     }
127488 
operator VkVideoProfileListInfoKHR&VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127489     operator VkVideoProfileListInfoKHR &() VULKAN_HPP_NOEXCEPT
127490     {
127491       return *reinterpret_cast<VkVideoProfileListInfoKHR *>( this );
127492     }
127493 
127494 #if defined( VULKAN_HPP_USE_REFLECT )
127495 #  if 14 <= VULKAN_HPP_CPP_VERSION
127496     auto
127497 #  else
127498     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * const &>
127499 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127500       reflect() const VULKAN_HPP_NOEXCEPT
127501     {
127502       return std::tie( sType, pNext, profileCount, pProfiles );
127503     }
127504 #endif
127505 
127506 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
127507     auto operator<=>( VideoProfileListInfoKHR const & ) const = default;
127508 #else
operator ==VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127509     bool operator==( VideoProfileListInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127510     {
127511 #  if defined( VULKAN_HPP_USE_REFLECT )
127512       return this->reflect() == rhs.reflect();
127513 #  else
127514       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( profileCount == rhs.profileCount ) && ( pProfiles == rhs.pProfiles );
127515 #  endif
127516     }
127517 
operator !=VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR127518     bool operator!=( VideoProfileListInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127519     {
127520       return !operator==( rhs );
127521     }
127522 #endif
127523 
127524   public:
127525     VULKAN_HPP_NAMESPACE::StructureType               sType        = StructureType::eVideoProfileListInfoKHR;
127526     const void *                                      pNext        = {};
127527     uint32_t                                          profileCount = {};
127528     const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pProfiles    = {};
127529   };
127530 
127531   template <>
127532   struct CppType<StructureType, StructureType::eVideoProfileListInfoKHR>
127533   {
127534     using Type = VideoProfileListInfoKHR;
127535   };
127536 
127537   struct VideoSessionCreateInfoKHR
127538   {
127539     using NativeType = VkVideoSessionCreateInfoKHR;
127540 
127541     static const bool                                  allowDuplicate = false;
127542     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoSessionCreateInfoKHR;
127543 
127544 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127545     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR( uint32_t                                          queueFamilyIndex_ = {},
127546                                                        VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR  flags_            = {},
127547                                                        const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile_    = {},
127548                                                        VULKAN_HPP_NAMESPACE::Format   pictureFormat_              = VULKAN_HPP_NAMESPACE::Format::eUndefined,
127549                                                        VULKAN_HPP_NAMESPACE::Extent2D maxCodedExtent_             = {},
127550                                                        VULKAN_HPP_NAMESPACE::Format   referencePictureFormat_     = VULKAN_HPP_NAMESPACE::Format::eUndefined,
127551                                                        uint32_t                       maxDpbSlots_                = {},
127552                                                        uint32_t                       maxActiveReferencePictures_ = {},
127553                                                        const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdHeaderVersion_ = {},
127554                                                        const void *                                      pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
127555       : pNext{ pNext_ }
127556       , queueFamilyIndex{ queueFamilyIndex_ }
127557       , flags{ flags_ }
127558       , pVideoProfile{ pVideoProfile_ }
127559       , pictureFormat{ pictureFormat_ }
127560       , maxCodedExtent{ maxCodedExtent_ }
127561       , referencePictureFormat{ referencePictureFormat_ }
127562       , maxDpbSlots{ maxDpbSlots_ }
127563       , maxActiveReferencePictures{ maxActiveReferencePictures_ }
127564       , pStdHeaderVersion{ pStdHeaderVersion_ }
127565     {
127566     }
127567 
127568     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR( VideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127569 
VideoSessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127570     VideoSessionCreateInfoKHR( VkVideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127571       : VideoSessionCreateInfoKHR( *reinterpret_cast<VideoSessionCreateInfoKHR const *>( &rhs ) )
127572     {
127573     }
127574 
127575     VideoSessionCreateInfoKHR & operator=( VideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127576 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
127577 
operator =VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127578     VideoSessionCreateInfoKHR & operator=( VkVideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127579     {
127580       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const *>( &rhs );
127581       return *this;
127582     }
127583 
127584 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127585     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
127586     {
127587       pNext = pNext_;
127588       return *this;
127589     }
127590 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127591     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
127592     {
127593       queueFamilyIndex = queueFamilyIndex_;
127594       return *this;
127595     }
127596 
setFlagsVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127597     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
127598     {
127599       flags = flags_;
127600       return *this;
127601     }
127602 
setPVideoProfileVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127603     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPVideoProfile( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile_ ) VULKAN_HPP_NOEXCEPT
127604     {
127605       pVideoProfile = pVideoProfile_;
127606       return *this;
127607     }
127608 
setPictureFormatVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127609     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPictureFormat( VULKAN_HPP_NAMESPACE::Format pictureFormat_ ) VULKAN_HPP_NOEXCEPT
127610     {
127611       pictureFormat = pictureFormat_;
127612       return *this;
127613     }
127614 
setMaxCodedExtentVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127615     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setMaxCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & maxCodedExtent_ ) VULKAN_HPP_NOEXCEPT
127616     {
127617       maxCodedExtent = maxCodedExtent_;
127618       return *this;
127619     }
127620 
setReferencePictureFormatVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127621     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setReferencePictureFormat( VULKAN_HPP_NAMESPACE::Format referencePictureFormat_ ) VULKAN_HPP_NOEXCEPT
127622     {
127623       referencePictureFormat = referencePictureFormat_;
127624       return *this;
127625     }
127626 
setMaxDpbSlotsVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127627     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setMaxDpbSlots( uint32_t maxDpbSlots_ ) VULKAN_HPP_NOEXCEPT
127628     {
127629       maxDpbSlots = maxDpbSlots_;
127630       return *this;
127631     }
127632 
setMaxActiveReferencePicturesVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127633     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setMaxActiveReferencePictures( uint32_t maxActiveReferencePictures_ ) VULKAN_HPP_NOEXCEPT
127634     {
127635       maxActiveReferencePictures = maxActiveReferencePictures_;
127636       return *this;
127637     }
127638 
127639     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR &
setPStdHeaderVersionVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127640       setPStdHeaderVersion( const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdHeaderVersion_ ) VULKAN_HPP_NOEXCEPT
127641     {
127642       pStdHeaderVersion = pStdHeaderVersion_;
127643       return *this;
127644     }
127645 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
127646 
operator VkVideoSessionCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127647     operator VkVideoSessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
127648     {
127649       return *reinterpret_cast<const VkVideoSessionCreateInfoKHR *>( this );
127650     }
127651 
operator VkVideoSessionCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127652     operator VkVideoSessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
127653     {
127654       return *reinterpret_cast<VkVideoSessionCreateInfoKHR *>( this );
127655     }
127656 
127657 #if defined( VULKAN_HPP_USE_REFLECT )
127658 #  if 14 <= VULKAN_HPP_CPP_VERSION
127659     auto
127660 #  else
127661     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
127662                const void * const &,
127663                uint32_t const &,
127664                VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR const &,
127665                const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * const &,
127666                VULKAN_HPP_NAMESPACE::Format const &,
127667                VULKAN_HPP_NAMESPACE::Extent2D const &,
127668                VULKAN_HPP_NAMESPACE::Format const &,
127669                uint32_t const &,
127670                uint32_t const &,
127671                const VULKAN_HPP_NAMESPACE::ExtensionProperties * const &>
127672 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127673       reflect() const VULKAN_HPP_NOEXCEPT
127674     {
127675       return std::tie( sType,
127676                        pNext,
127677                        queueFamilyIndex,
127678                        flags,
127679                        pVideoProfile,
127680                        pictureFormat,
127681                        maxCodedExtent,
127682                        referencePictureFormat,
127683                        maxDpbSlots,
127684                        maxActiveReferencePictures,
127685                        pStdHeaderVersion );
127686     }
127687 #endif
127688 
127689 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
127690     auto operator<=>( VideoSessionCreateInfoKHR const & ) const = default;
127691 #else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127692     bool operator==( VideoSessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127693     {
127694 #  if defined( VULKAN_HPP_USE_REFLECT )
127695       return this->reflect() == rhs.reflect();
127696 #  else
127697       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) && ( flags == rhs.flags ) &&
127698              ( pVideoProfile == rhs.pVideoProfile ) && ( pictureFormat == rhs.pictureFormat ) && ( maxCodedExtent == rhs.maxCodedExtent ) &&
127699              ( referencePictureFormat == rhs.referencePictureFormat ) && ( maxDpbSlots == rhs.maxDpbSlots ) &&
127700              ( maxActiveReferencePictures == rhs.maxActiveReferencePictures ) && ( pStdHeaderVersion == rhs.pStdHeaderVersion );
127701 #  endif
127702     }
127703 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR127704     bool operator!=( VideoSessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127705     {
127706       return !operator==( rhs );
127707     }
127708 #endif
127709 
127710   public:
127711     VULKAN_HPP_NAMESPACE::StructureType               sType                      = StructureType::eVideoSessionCreateInfoKHR;
127712     const void *                                      pNext                      = {};
127713     uint32_t                                          queueFamilyIndex           = {};
127714     VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR  flags                      = {};
127715     const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile              = {};
127716     VULKAN_HPP_NAMESPACE::Format                      pictureFormat              = VULKAN_HPP_NAMESPACE::Format::eUndefined;
127717     VULKAN_HPP_NAMESPACE::Extent2D                    maxCodedExtent             = {};
127718     VULKAN_HPP_NAMESPACE::Format                      referencePictureFormat     = VULKAN_HPP_NAMESPACE::Format::eUndefined;
127719     uint32_t                                          maxDpbSlots                = {};
127720     uint32_t                                          maxActiveReferencePictures = {};
127721     const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdHeaderVersion          = {};
127722   };
127723 
127724   template <>
127725   struct CppType<StructureType, StructureType::eVideoSessionCreateInfoKHR>
127726   {
127727     using Type = VideoSessionCreateInfoKHR;
127728   };
127729 
127730   struct VideoSessionMemoryRequirementsKHR
127731   {
127732     using NativeType = VkVideoSessionMemoryRequirementsKHR;
127733 
127734     static const bool                                  allowDuplicate = false;
127735     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoSessionMemoryRequirementsKHR;
127736 
127737 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionMemoryRequirementsKHRVULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR127738     VULKAN_HPP_CONSTEXPR VideoSessionMemoryRequirementsKHR( uint32_t                                 memoryBindIndex_    = {},
127739                                                             VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements_ = {},
127740                                                             void *                                   pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
127741       : pNext{ pNext_ }
127742       , memoryBindIndex{ memoryBindIndex_ }
127743       , memoryRequirements{ memoryRequirements_ }
127744     {
127745     }
127746 
127747     VULKAN_HPP_CONSTEXPR VideoSessionMemoryRequirementsKHR( VideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127748 
VideoSessionMemoryRequirementsKHRVULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR127749     VideoSessionMemoryRequirementsKHR( VkVideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127750       : VideoSessionMemoryRequirementsKHR( *reinterpret_cast<VideoSessionMemoryRequirementsKHR const *>( &rhs ) )
127751     {
127752     }
127753 
127754     VideoSessionMemoryRequirementsKHR & operator=( VideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127755 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
127756 
operator =VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR127757     VideoSessionMemoryRequirementsKHR & operator=( VkVideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127758     {
127759       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR const *>( &rhs );
127760       return *this;
127761     }
127762 
operator VkVideoSessionMemoryRequirementsKHR const&VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR127763     operator VkVideoSessionMemoryRequirementsKHR const &() const VULKAN_HPP_NOEXCEPT
127764     {
127765       return *reinterpret_cast<const VkVideoSessionMemoryRequirementsKHR *>( this );
127766     }
127767 
operator VkVideoSessionMemoryRequirementsKHR&VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR127768     operator VkVideoSessionMemoryRequirementsKHR &() VULKAN_HPP_NOEXCEPT
127769     {
127770       return *reinterpret_cast<VkVideoSessionMemoryRequirementsKHR *>( this );
127771     }
127772 
127773 #if defined( VULKAN_HPP_USE_REFLECT )
127774 #  if 14 <= VULKAN_HPP_CPP_VERSION
127775     auto
127776 #  else
127777     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::MemoryRequirements const &>
127778 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR127779       reflect() const VULKAN_HPP_NOEXCEPT
127780     {
127781       return std::tie( sType, pNext, memoryBindIndex, memoryRequirements );
127782     }
127783 #endif
127784 
127785 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
127786     auto operator<=>( VideoSessionMemoryRequirementsKHR const & ) const = default;
127787 #else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR127788     bool operator==( VideoSessionMemoryRequirementsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127789     {
127790 #  if defined( VULKAN_HPP_USE_REFLECT )
127791       return this->reflect() == rhs.reflect();
127792 #  else
127793       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryBindIndex == rhs.memoryBindIndex ) && ( memoryRequirements == rhs.memoryRequirements );
127794 #  endif
127795     }
127796 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR127797     bool operator!=( VideoSessionMemoryRequirementsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127798     {
127799       return !operator==( rhs );
127800     }
127801 #endif
127802 
127803   public:
127804     VULKAN_HPP_NAMESPACE::StructureType      sType              = StructureType::eVideoSessionMemoryRequirementsKHR;
127805     void *                                   pNext              = {};
127806     uint32_t                                 memoryBindIndex    = {};
127807     VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements = {};
127808   };
127809 
127810   template <>
127811   struct CppType<StructureType, StructureType::eVideoSessionMemoryRequirementsKHR>
127812   {
127813     using Type = VideoSessionMemoryRequirementsKHR;
127814   };
127815 
127816   struct VideoSessionParametersCreateInfoKHR
127817   {
127818     using NativeType = VkVideoSessionParametersCreateInfoKHR;
127819 
127820     static const bool                                  allowDuplicate = false;
127821     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoSessionParametersCreateInfoKHR;
127822 
127823 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127824     VULKAN_HPP_CONSTEXPR VideoSessionParametersCreateInfoKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateFlagsKHR flags_                          = {},
127825                                                               VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR            videoSessionParametersTemplate_ = {},
127826                                                               VULKAN_HPP_NAMESPACE::VideoSessionKHR                      videoSession_                   = {},
127827                                                               const void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
127828       : pNext{ pNext_ }
127829       , flags{ flags_ }
127830       , videoSessionParametersTemplate{ videoSessionParametersTemplate_ }
127831       , videoSession{ videoSession_ }
127832     {
127833     }
127834 
127835     VULKAN_HPP_CONSTEXPR VideoSessionParametersCreateInfoKHR( VideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127836 
VideoSessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127837     VideoSessionParametersCreateInfoKHR( VkVideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127838       : VideoSessionParametersCreateInfoKHR( *reinterpret_cast<VideoSessionParametersCreateInfoKHR const *>( &rhs ) )
127839     {
127840     }
127841 
127842     VideoSessionParametersCreateInfoKHR & operator=( VideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127843 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
127844 
operator =VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127845     VideoSessionParametersCreateInfoKHR & operator=( VkVideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127846     {
127847       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const *>( &rhs );
127848       return *this;
127849     }
127850 
127851 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127852     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
127853     {
127854       pNext = pNext_;
127855       return *this;
127856     }
127857 
127858     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127859       setFlags( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
127860     {
127861       flags = flags_;
127862       return *this;
127863     }
127864 
127865     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR &
setVideoSessionParametersTemplateVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127866       setVideoSessionParametersTemplate( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParametersTemplate_ ) VULKAN_HPP_NOEXCEPT
127867     {
127868       videoSessionParametersTemplate = videoSessionParametersTemplate_;
127869       return *this;
127870     }
127871 
setVideoSessionVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127872     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setVideoSession( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_ ) VULKAN_HPP_NOEXCEPT
127873     {
127874       videoSession = videoSession_;
127875       return *this;
127876     }
127877 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
127878 
operator VkVideoSessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127879     operator VkVideoSessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
127880     {
127881       return *reinterpret_cast<const VkVideoSessionParametersCreateInfoKHR *>( this );
127882     }
127883 
operator VkVideoSessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127884     operator VkVideoSessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
127885     {
127886       return *reinterpret_cast<VkVideoSessionParametersCreateInfoKHR *>( this );
127887     }
127888 
127889 #if defined( VULKAN_HPP_USE_REFLECT )
127890 #  if 14 <= VULKAN_HPP_CPP_VERSION
127891     auto
127892 #  else
127893     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
127894                const void * const &,
127895                VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateFlagsKHR const &,
127896                VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const &,
127897                VULKAN_HPP_NAMESPACE::VideoSessionKHR const &>
127898 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127899       reflect() const VULKAN_HPP_NOEXCEPT
127900     {
127901       return std::tie( sType, pNext, flags, videoSessionParametersTemplate, videoSession );
127902     }
127903 #endif
127904 
127905 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
127906     auto operator<=>( VideoSessionParametersCreateInfoKHR const & ) const = default;
127907 #else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127908     bool operator==( VideoSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127909     {
127910 #  if defined( VULKAN_HPP_USE_REFLECT )
127911       return this->reflect() == rhs.reflect();
127912 #  else
127913       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
127914              ( videoSessionParametersTemplate == rhs.videoSessionParametersTemplate ) && ( videoSession == rhs.videoSession );
127915 #  endif
127916     }
127917 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR127918     bool operator!=( VideoSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
127919     {
127920       return !operator==( rhs );
127921     }
127922 #endif
127923 
127924   public:
127925     VULKAN_HPP_NAMESPACE::StructureType                        sType                          = StructureType::eVideoSessionParametersCreateInfoKHR;
127926     const void *                                               pNext                          = {};
127927     VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateFlagsKHR flags                          = {};
127928     VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR            videoSessionParametersTemplate = {};
127929     VULKAN_HPP_NAMESPACE::VideoSessionKHR                      videoSession                   = {};
127930   };
127931 
127932   template <>
127933   struct CppType<StructureType, StructureType::eVideoSessionParametersCreateInfoKHR>
127934   {
127935     using Type = VideoSessionParametersCreateInfoKHR;
127936   };
127937 
127938   struct VideoSessionParametersUpdateInfoKHR
127939   {
127940     using NativeType = VkVideoSessionParametersUpdateInfoKHR;
127941 
127942     static const bool                                  allowDuplicate = false;
127943     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoSessionParametersUpdateInfoKHR;
127944 
127945 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionParametersUpdateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR127946     VULKAN_HPP_CONSTEXPR VideoSessionParametersUpdateInfoKHR( uint32_t updateSequenceCount_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
127947       : pNext{ pNext_ }
127948       , updateSequenceCount{ updateSequenceCount_ }
127949     {
127950     }
127951 
127952     VULKAN_HPP_CONSTEXPR VideoSessionParametersUpdateInfoKHR( VideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127953 
VideoSessionParametersUpdateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR127954     VideoSessionParametersUpdateInfoKHR( VkVideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127955       : VideoSessionParametersUpdateInfoKHR( *reinterpret_cast<VideoSessionParametersUpdateInfoKHR const *>( &rhs ) )
127956     {
127957     }
127958 
127959     VideoSessionParametersUpdateInfoKHR & operator=( VideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
127960 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
127961 
operator =VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR127962     VideoSessionParametersUpdateInfoKHR & operator=( VkVideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
127963     {
127964       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR const *>( &rhs );
127965       return *this;
127966     }
127967 
127968 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR127969     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
127970     {
127971       pNext = pNext_;
127972       return *this;
127973     }
127974 
setUpdateSequenceCountVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR127975     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR & setUpdateSequenceCount( uint32_t updateSequenceCount_ ) VULKAN_HPP_NOEXCEPT
127976     {
127977       updateSequenceCount = updateSequenceCount_;
127978       return *this;
127979     }
127980 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
127981 
operator VkVideoSessionParametersUpdateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR127982     operator VkVideoSessionParametersUpdateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
127983     {
127984       return *reinterpret_cast<const VkVideoSessionParametersUpdateInfoKHR *>( this );
127985     }
127986 
operator VkVideoSessionParametersUpdateInfoKHR&VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR127987     operator VkVideoSessionParametersUpdateInfoKHR &() VULKAN_HPP_NOEXCEPT
127988     {
127989       return *reinterpret_cast<VkVideoSessionParametersUpdateInfoKHR *>( this );
127990     }
127991 
127992 #if defined( VULKAN_HPP_USE_REFLECT )
127993 #  if 14 <= VULKAN_HPP_CPP_VERSION
127994     auto
127995 #  else
127996     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
127997 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR127998       reflect() const VULKAN_HPP_NOEXCEPT
127999     {
128000       return std::tie( sType, pNext, updateSequenceCount );
128001     }
128002 #endif
128003 
128004 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
128005     auto operator<=>( VideoSessionParametersUpdateInfoKHR const & ) const = default;
128006 #else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR128007     bool operator==( VideoSessionParametersUpdateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
128008     {
128009 #  if defined( VULKAN_HPP_USE_REFLECT )
128010       return this->reflect() == rhs.reflect();
128011 #  else
128012       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( updateSequenceCount == rhs.updateSequenceCount );
128013 #  endif
128014     }
128015 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR128016     bool operator!=( VideoSessionParametersUpdateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
128017     {
128018       return !operator==( rhs );
128019     }
128020 #endif
128021 
128022   public:
128023     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eVideoSessionParametersUpdateInfoKHR;
128024     const void *                        pNext               = {};
128025     uint32_t                            updateSequenceCount = {};
128026   };
128027 
128028   template <>
128029   struct CppType<StructureType, StructureType::eVideoSessionParametersUpdateInfoKHR>
128030   {
128031     using Type = VideoSessionParametersUpdateInfoKHR;
128032   };
128033 
128034 #if defined( VK_USE_PLATFORM_WAYLAND_KHR )
128035   struct WaylandSurfaceCreateInfoKHR
128036   {
128037     using NativeType = VkWaylandSurfaceCreateInfoKHR;
128038 
128039     static const bool                                  allowDuplicate = false;
128040     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWaylandSurfaceCreateInfoKHR;
128041 
128042 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WaylandSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128043     VULKAN_HPP_CONSTEXPR WaylandSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags_   = {},
128044                                                       struct wl_display *                                display_ = {},
128045                                                       struct wl_surface *                                surface_ = {},
128046                                                       const void *                                       pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
128047       : pNext{ pNext_ }
128048       , flags{ flags_ }
128049       , display{ display_ }
128050       , surface{ surface_ }
128051     {
128052     }
128053 
128054     VULKAN_HPP_CONSTEXPR WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128055 
WaylandSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128056     WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
128057       : WaylandSurfaceCreateInfoKHR( *reinterpret_cast<WaylandSurfaceCreateInfoKHR const *>( &rhs ) )
128058     {
128059     }
128060 
128061     WaylandSurfaceCreateInfoKHR & operator=( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128062 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
128063 
operator =VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128064     WaylandSurfaceCreateInfoKHR & operator=( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
128065     {
128066       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const *>( &rhs );
128067       return *this;
128068     }
128069 
128070 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128071     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
128072     {
128073       pNext = pNext_;
128074       return *this;
128075     }
128076 
setFlagsVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128077     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
128078     {
128079       flags = flags_;
128080       return *this;
128081     }
128082 
setDisplayVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128083     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setDisplay( struct wl_display * display_ ) VULKAN_HPP_NOEXCEPT
128084     {
128085       display = display_;
128086       return *this;
128087     }
128088 
setSurfaceVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128089     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setSurface( struct wl_surface * surface_ ) VULKAN_HPP_NOEXCEPT
128090     {
128091       surface = surface_;
128092       return *this;
128093     }
128094 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
128095 
operator VkWaylandSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128096     operator VkWaylandSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
128097     {
128098       return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR *>( this );
128099     }
128100 
operator VkWaylandSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128101     operator VkWaylandSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
128102     {
128103       return *reinterpret_cast<VkWaylandSurfaceCreateInfoKHR *>( this );
128104     }
128105 
128106 #  if defined( VULKAN_HPP_USE_REFLECT )
128107 #    if 14 <= VULKAN_HPP_CPP_VERSION
128108     auto
128109 #    else
128110     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
128111                const void * const &,
128112                VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR const &,
128113                struct wl_display * const &,
128114                struct wl_surface * const &>
128115 #    endif
reflectVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128116       reflect() const VULKAN_HPP_NOEXCEPT
128117     {
128118       return std::tie( sType, pNext, flags, display, surface );
128119     }
128120 #  endif
128121 
128122 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
128123     auto operator<=>( WaylandSurfaceCreateInfoKHR const & ) const = default;
128124 #  else
operator ==VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128125     bool operator==( WaylandSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
128126     {
128127 #    if defined( VULKAN_HPP_USE_REFLECT )
128128       return this->reflect() == rhs.reflect();
128129 #    else
128130       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( display == rhs.display ) && ( surface == rhs.surface );
128131 #    endif
128132     }
128133 
operator !=VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR128134     bool operator!=( WaylandSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
128135     {
128136       return !operator==( rhs );
128137     }
128138 #  endif
128139 
128140   public:
128141     VULKAN_HPP_NAMESPACE::StructureType                sType   = StructureType::eWaylandSurfaceCreateInfoKHR;
128142     const void *                                       pNext   = {};
128143     VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags   = {};
128144     struct wl_display *                                display = {};
128145     struct wl_surface *                                surface = {};
128146   };
128147 
128148   template <>
128149   struct CppType<StructureType, StructureType::eWaylandSurfaceCreateInfoKHR>
128150   {
128151     using Type = WaylandSurfaceCreateInfoKHR;
128152   };
128153 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
128154 
128155 #if defined( VK_USE_PLATFORM_WIN32_KHR )
128156   struct Win32KeyedMutexAcquireReleaseInfoKHR
128157   {
128158     using NativeType = VkWin32KeyedMutexAcquireReleaseInfoKHR;
128159 
128160     static const bool                                  allowDuplicate = false;
128161     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
128162 
128163 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Win32KeyedMutexAcquireReleaseInfoKHRVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128164     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t                                   acquireCount_     = {},
128165                                                                const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_    = {},
128166                                                                const uint64_t *                           pAcquireKeys_     = {},
128167                                                                const uint32_t *                           pAcquireTimeouts_ = {},
128168                                                                uint32_t                                   releaseCount_     = {},
128169                                                                const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_    = {},
128170                                                                const uint64_t *                           pReleaseKeys_     = {},
128171                                                                const void *                               pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
128172       : pNext{ pNext_ }
128173       , acquireCount{ acquireCount_ }
128174       , pAcquireSyncs{ pAcquireSyncs_ }
128175       , pAcquireKeys{ pAcquireKeys_ }
128176       , pAcquireTimeouts{ pAcquireTimeouts_ }
128177       , releaseCount{ releaseCount_ }
128178       , pReleaseSyncs{ pReleaseSyncs_ }
128179       , pReleaseKeys{ pReleaseKeys_ }
128180     {
128181     }
128182 
128183     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoKHR( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128184 
Win32KeyedMutexAcquireReleaseInfoKHRVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128185     Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
128186       : Win32KeyedMutexAcquireReleaseInfoKHR( *reinterpret_cast<Win32KeyedMutexAcquireReleaseInfoKHR const *>( &rhs ) )
128187     {
128188     }
128189 
128190 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
Win32KeyedMutexAcquireReleaseInfoKHRVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128191     Win32KeyedMutexAcquireReleaseInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_,
128192                                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                           acquireKeys_     = {},
128193                                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                           acquireTimeouts_ = {},
128194                                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_    = {},
128195                                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                           releaseKeys_     = {},
128196                                           const void *                                                                                    pNext_ = nullptr )
128197       : pNext( pNext_ )
128198       , acquireCount( static_cast<uint32_t>( acquireSyncs_.size() ) )
128199       , pAcquireSyncs( acquireSyncs_.data() )
128200       , pAcquireKeys( acquireKeys_.data() )
128201       , pAcquireTimeouts( acquireTimeouts_.data() )
128202       , releaseCount( static_cast<uint32_t>( releaseSyncs_.size() ) )
128203       , pReleaseSyncs( releaseSyncs_.data() )
128204       , pReleaseKeys( releaseKeys_.data() )
128205     {
128206 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
128207       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireKeys_.size() );
128208       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireTimeouts_.size() );
128209       VULKAN_HPP_ASSERT( acquireKeys_.size() == acquireTimeouts_.size() );
128210 #      else
128211       if ( acquireSyncs_.size() != acquireKeys_.size() )
128212       {
128213         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
128214                           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireSyncs_.size() != acquireKeys_.size()" );
128215       }
128216       if ( acquireSyncs_.size() != acquireTimeouts_.size() )
128217       {
128218         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
128219                           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireSyncs_.size() != acquireTimeouts_.size()" );
128220       }
128221       if ( acquireKeys_.size() != acquireTimeouts_.size() )
128222       {
128223         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
128224                           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireKeys_.size() != acquireTimeouts_.size()" );
128225       }
128226 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
128227 
128228 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
128229       VULKAN_HPP_ASSERT( releaseSyncs_.size() == releaseKeys_.size() );
128230 #      else
128231       if ( releaseSyncs_.size() != releaseKeys_.size() )
128232       {
128233         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
128234                           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: releaseSyncs_.size() != releaseKeys_.size()" );
128235       }
128236 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
128237     }
128238 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128239 
128240     Win32KeyedMutexAcquireReleaseInfoKHR & operator=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128241 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
128242 
operator =VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128243     Win32KeyedMutexAcquireReleaseInfoKHR & operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
128244     {
128245       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR const *>( &rhs );
128246       return *this;
128247     }
128248 
128249 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128250     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
128251     {
128252       pNext = pNext_;
128253       return *this;
128254     }
128255 
setAcquireCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128256     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireCount( uint32_t acquireCount_ ) VULKAN_HPP_NOEXCEPT
128257     {
128258       acquireCount = acquireCount_;
128259       return *this;
128260     }
128261 
128262     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setPAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128263       setPAcquireSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_ ) VULKAN_HPP_NOEXCEPT
128264     {
128265       pAcquireSyncs = pAcquireSyncs_;
128266       return *this;
128267     }
128268 
128269 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
128270     Win32KeyedMutexAcquireReleaseInfoKHR &
setAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128271       setAcquireSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_ ) VULKAN_HPP_NOEXCEPT
128272     {
128273       acquireCount  = static_cast<uint32_t>( acquireSyncs_.size() );
128274       pAcquireSyncs = acquireSyncs_.data();
128275       return *this;
128276     }
128277 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128278 
setPAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128279     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireKeys( const uint64_t * pAcquireKeys_ ) VULKAN_HPP_NOEXCEPT
128280     {
128281       pAcquireKeys = pAcquireKeys_;
128282       return *this;
128283     }
128284 
128285 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
128286     Win32KeyedMutexAcquireReleaseInfoKHR &
setAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128287       setAcquireKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT
128288     {
128289       acquireCount = static_cast<uint32_t>( acquireKeys_.size() );
128290       pAcquireKeys = acquireKeys_.data();
128291       return *this;
128292     }
128293 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128294 
setPAcquireTimeoutsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128295     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireTimeouts( const uint32_t * pAcquireTimeouts_ ) VULKAN_HPP_NOEXCEPT
128296     {
128297       pAcquireTimeouts = pAcquireTimeouts_;
128298       return *this;
128299     }
128300 
128301 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
128302     Win32KeyedMutexAcquireReleaseInfoKHR &
setAcquireTimeoutsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128303       setAcquireTimeouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeouts_ ) VULKAN_HPP_NOEXCEPT
128304     {
128305       acquireCount     = static_cast<uint32_t>( acquireTimeouts_.size() );
128306       pAcquireTimeouts = acquireTimeouts_.data();
128307       return *this;
128308     }
128309 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128310 
setReleaseCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128311     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseCount( uint32_t releaseCount_ ) VULKAN_HPP_NOEXCEPT
128312     {
128313       releaseCount = releaseCount_;
128314       return *this;
128315     }
128316 
128317     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setPReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128318       setPReleaseSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_ ) VULKAN_HPP_NOEXCEPT
128319     {
128320       pReleaseSyncs = pReleaseSyncs_;
128321       return *this;
128322     }
128323 
128324 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
128325     Win32KeyedMutexAcquireReleaseInfoKHR &
setReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128326       setReleaseSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_ ) VULKAN_HPP_NOEXCEPT
128327     {
128328       releaseCount  = static_cast<uint32_t>( releaseSyncs_.size() );
128329       pReleaseSyncs = releaseSyncs_.data();
128330       return *this;
128331     }
128332 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128333 
setPReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128334     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPReleaseKeys( const uint64_t * pReleaseKeys_ ) VULKAN_HPP_NOEXCEPT
128335     {
128336       pReleaseKeys = pReleaseKeys_;
128337       return *this;
128338     }
128339 
128340 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
128341     Win32KeyedMutexAcquireReleaseInfoKHR &
setReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128342       setReleaseKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT
128343     {
128344       releaseCount = static_cast<uint32_t>( releaseKeys_.size() );
128345       pReleaseKeys = releaseKeys_.data();
128346       return *this;
128347     }
128348 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128349 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
128350 
operator VkWin32KeyedMutexAcquireReleaseInfoKHR const&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128351     operator VkWin32KeyedMutexAcquireReleaseInfoKHR const &() const VULKAN_HPP_NOEXCEPT
128352     {
128353       return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR *>( this );
128354     }
128355 
operator VkWin32KeyedMutexAcquireReleaseInfoKHR&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128356     operator VkWin32KeyedMutexAcquireReleaseInfoKHR &() VULKAN_HPP_NOEXCEPT
128357     {
128358       return *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoKHR *>( this );
128359     }
128360 
128361 #  if defined( VULKAN_HPP_USE_REFLECT )
128362 #    if 14 <= VULKAN_HPP_CPP_VERSION
128363     auto
128364 #    else
128365     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
128366                const void * const &,
128367                uint32_t const &,
128368                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
128369                const uint64_t * const &,
128370                const uint32_t * const &,
128371                uint32_t const &,
128372                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
128373                const uint64_t * const &>
128374 #    endif
reflectVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128375       reflect() const VULKAN_HPP_NOEXCEPT
128376     {
128377       return std::tie( sType, pNext, acquireCount, pAcquireSyncs, pAcquireKeys, pAcquireTimeouts, releaseCount, pReleaseSyncs, pReleaseKeys );
128378     }
128379 #  endif
128380 
128381 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
128382     auto operator<=>( Win32KeyedMutexAcquireReleaseInfoKHR const & ) const = default;
128383 #  else
operator ==VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128384     bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
128385     {
128386 #    if defined( VULKAN_HPP_USE_REFLECT )
128387       return this->reflect() == rhs.reflect();
128388 #    else
128389       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireCount == rhs.acquireCount ) && ( pAcquireSyncs == rhs.pAcquireSyncs ) &&
128390              ( pAcquireKeys == rhs.pAcquireKeys ) && ( pAcquireTimeouts == rhs.pAcquireTimeouts ) && ( releaseCount == rhs.releaseCount ) &&
128391              ( pReleaseSyncs == rhs.pReleaseSyncs ) && ( pReleaseKeys == rhs.pReleaseKeys );
128392 #    endif
128393     }
128394 
operator !=VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR128395     bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
128396     {
128397       return !operator==( rhs );
128398     }
128399 #  endif
128400 
128401   public:
128402     VULKAN_HPP_NAMESPACE::StructureType        sType            = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
128403     const void *                               pNext            = {};
128404     uint32_t                                   acquireCount     = {};
128405     const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs    = {};
128406     const uint64_t *                           pAcquireKeys     = {};
128407     const uint32_t *                           pAcquireTimeouts = {};
128408     uint32_t                                   releaseCount     = {};
128409     const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs    = {};
128410     const uint64_t *                           pReleaseKeys     = {};
128411   };
128412 
128413   template <>
128414   struct CppType<StructureType, StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR>
128415   {
128416     using Type = Win32KeyedMutexAcquireReleaseInfoKHR;
128417   };
128418 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
128419 
128420 #if defined( VK_USE_PLATFORM_WIN32_KHR )
128421   struct Win32KeyedMutexAcquireReleaseInfoNV
128422   {
128423     using NativeType = VkWin32KeyedMutexAcquireReleaseInfoNV;
128424 
128425     static const bool                                  allowDuplicate = false;
128426     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
128427 
128428 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Win32KeyedMutexAcquireReleaseInfoNVVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128429     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoNV( uint32_t                                   acquireCount_                = {},
128430                                                               const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_               = {},
128431                                                               const uint64_t *                           pAcquireKeys_                = {},
128432                                                               const uint32_t *                           pAcquireTimeoutMilliseconds_ = {},
128433                                                               uint32_t                                   releaseCount_                = {},
128434                                                               const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_               = {},
128435                                                               const uint64_t *                           pReleaseKeys_                = {},
128436                                                               const void *                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
128437       : pNext{ pNext_ }
128438       , acquireCount{ acquireCount_ }
128439       , pAcquireSyncs{ pAcquireSyncs_ }
128440       , pAcquireKeys{ pAcquireKeys_ }
128441       , pAcquireTimeoutMilliseconds{ pAcquireTimeoutMilliseconds_ }
128442       , releaseCount{ releaseCount_ }
128443       , pReleaseSyncs{ pReleaseSyncs_ }
128444       , pReleaseKeys{ pReleaseKeys_ }
128445     {
128446     }
128447 
128448     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoNV( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128449 
Win32KeyedMutexAcquireReleaseInfoNVVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128450     Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
128451       : Win32KeyedMutexAcquireReleaseInfoNV( *reinterpret_cast<Win32KeyedMutexAcquireReleaseInfoNV const *>( &rhs ) )
128452     {
128453     }
128454 
128455 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
Win32KeyedMutexAcquireReleaseInfoNVVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128456     Win32KeyedMutexAcquireReleaseInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_,
128457                                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                           acquireKeys_  = {},
128458                                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeoutMilliseconds_             = {},
128459                                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_ = {},
128460                                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                           releaseKeys_  = {},
128461                                          const void *                                                                                    pNext_ = nullptr )
128462       : pNext( pNext_ )
128463       , acquireCount( static_cast<uint32_t>( acquireSyncs_.size() ) )
128464       , pAcquireSyncs( acquireSyncs_.data() )
128465       , pAcquireKeys( acquireKeys_.data() )
128466       , pAcquireTimeoutMilliseconds( acquireTimeoutMilliseconds_.data() )
128467       , releaseCount( static_cast<uint32_t>( releaseSyncs_.size() ) )
128468       , pReleaseSyncs( releaseSyncs_.data() )
128469       , pReleaseKeys( releaseKeys_.data() )
128470     {
128471 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
128472       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireKeys_.size() );
128473       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireTimeoutMilliseconds_.size() );
128474       VULKAN_HPP_ASSERT( acquireKeys_.size() == acquireTimeoutMilliseconds_.size() );
128475 #      else
128476       if ( acquireSyncs_.size() != acquireKeys_.size() )
128477       {
128478         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
128479                           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireSyncs_.size() != acquireKeys_.size()" );
128480       }
128481       if ( acquireSyncs_.size() != acquireTimeoutMilliseconds_.size() )
128482       {
128483         throw LogicError(
128484           VULKAN_HPP_NAMESPACE_STRING
128485           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireSyncs_.size() != acquireTimeoutMilliseconds_.size()" );
128486       }
128487       if ( acquireKeys_.size() != acquireTimeoutMilliseconds_.size() )
128488       {
128489         throw LogicError(
128490           VULKAN_HPP_NAMESPACE_STRING
128491           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireKeys_.size() != acquireTimeoutMilliseconds_.size()" );
128492       }
128493 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
128494 
128495 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
128496       VULKAN_HPP_ASSERT( releaseSyncs_.size() == releaseKeys_.size() );
128497 #      else
128498       if ( releaseSyncs_.size() != releaseKeys_.size() )
128499       {
128500         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
128501                           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: releaseSyncs_.size() != releaseKeys_.size()" );
128502       }
128503 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
128504     }
128505 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128506 
128507     Win32KeyedMutexAcquireReleaseInfoNV & operator=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128508 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
128509 
operator =VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128510     Win32KeyedMutexAcquireReleaseInfoNV & operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
128511     {
128512       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV const *>( &rhs );
128513       return *this;
128514     }
128515 
128516 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128517     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
128518     {
128519       pNext = pNext_;
128520       return *this;
128521     }
128522 
setAcquireCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128523     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setAcquireCount( uint32_t acquireCount_ ) VULKAN_HPP_NOEXCEPT
128524     {
128525       acquireCount = acquireCount_;
128526       return *this;
128527     }
128528 
128529     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128530       setPAcquireSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_ ) VULKAN_HPP_NOEXCEPT
128531     {
128532       pAcquireSyncs = pAcquireSyncs_;
128533       return *this;
128534     }
128535 
128536 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
128537     Win32KeyedMutexAcquireReleaseInfoNV &
setAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128538       setAcquireSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_ ) VULKAN_HPP_NOEXCEPT
128539     {
128540       acquireCount  = static_cast<uint32_t>( acquireSyncs_.size() );
128541       pAcquireSyncs = acquireSyncs_.data();
128542       return *this;
128543     }
128544 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128545 
setPAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128546     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireKeys( const uint64_t * pAcquireKeys_ ) VULKAN_HPP_NOEXCEPT
128547     {
128548       pAcquireKeys = pAcquireKeys_;
128549       return *this;
128550     }
128551 
128552 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
128553     Win32KeyedMutexAcquireReleaseInfoNV &
setAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128554       setAcquireKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT
128555     {
128556       acquireCount = static_cast<uint32_t>( acquireKeys_.size() );
128557       pAcquireKeys = acquireKeys_.data();
128558       return *this;
128559     }
128560 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128561 
128562     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPAcquireTimeoutMillisecondsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128563       setPAcquireTimeoutMilliseconds( const uint32_t * pAcquireTimeoutMilliseconds_ ) VULKAN_HPP_NOEXCEPT
128564     {
128565       pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
128566       return *this;
128567     }
128568 
128569 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
128570     Win32KeyedMutexAcquireReleaseInfoNV &
setAcquireTimeoutMillisecondsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128571       setAcquireTimeoutMilliseconds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeoutMilliseconds_ ) VULKAN_HPP_NOEXCEPT
128572     {
128573       acquireCount                = static_cast<uint32_t>( acquireTimeoutMilliseconds_.size() );
128574       pAcquireTimeoutMilliseconds = acquireTimeoutMilliseconds_.data();
128575       return *this;
128576     }
128577 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128578 
setReleaseCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128579     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setReleaseCount( uint32_t releaseCount_ ) VULKAN_HPP_NOEXCEPT
128580     {
128581       releaseCount = releaseCount_;
128582       return *this;
128583     }
128584 
128585     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128586       setPReleaseSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_ ) VULKAN_HPP_NOEXCEPT
128587     {
128588       pReleaseSyncs = pReleaseSyncs_;
128589       return *this;
128590     }
128591 
128592 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
128593     Win32KeyedMutexAcquireReleaseInfoNV &
setReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128594       setReleaseSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_ ) VULKAN_HPP_NOEXCEPT
128595     {
128596       releaseCount  = static_cast<uint32_t>( releaseSyncs_.size() );
128597       pReleaseSyncs = releaseSyncs_.data();
128598       return *this;
128599     }
128600 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128601 
setPReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128602     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPReleaseKeys( const uint64_t * pReleaseKeys_ ) VULKAN_HPP_NOEXCEPT
128603     {
128604       pReleaseKeys = pReleaseKeys_;
128605       return *this;
128606     }
128607 
128608 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
128609     Win32KeyedMutexAcquireReleaseInfoNV &
setReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128610       setReleaseKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT
128611     {
128612       releaseCount = static_cast<uint32_t>( releaseKeys_.size() );
128613       pReleaseKeys = releaseKeys_.data();
128614       return *this;
128615     }
128616 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128617 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
128618 
operator VkWin32KeyedMutexAcquireReleaseInfoNV const&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128619     operator VkWin32KeyedMutexAcquireReleaseInfoNV const &() const VULKAN_HPP_NOEXCEPT
128620     {
128621       return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV *>( this );
128622     }
128623 
operator VkWin32KeyedMutexAcquireReleaseInfoNV&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128624     operator VkWin32KeyedMutexAcquireReleaseInfoNV &() VULKAN_HPP_NOEXCEPT
128625     {
128626       return *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoNV *>( this );
128627     }
128628 
128629 #  if defined( VULKAN_HPP_USE_REFLECT )
128630 #    if 14 <= VULKAN_HPP_CPP_VERSION
128631     auto
128632 #    else
128633     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
128634                const void * const &,
128635                uint32_t const &,
128636                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
128637                const uint64_t * const &,
128638                const uint32_t * const &,
128639                uint32_t const &,
128640                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
128641                const uint64_t * const &>
128642 #    endif
reflectVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128643       reflect() const VULKAN_HPP_NOEXCEPT
128644     {
128645       return std::tie( sType, pNext, acquireCount, pAcquireSyncs, pAcquireKeys, pAcquireTimeoutMilliseconds, releaseCount, pReleaseSyncs, pReleaseKeys );
128646     }
128647 #  endif
128648 
128649 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
128650     auto operator<=>( Win32KeyedMutexAcquireReleaseInfoNV const & ) const = default;
128651 #  else
operator ==VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128652     bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
128653     {
128654 #    if defined( VULKAN_HPP_USE_REFLECT )
128655       return this->reflect() == rhs.reflect();
128656 #    else
128657       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireCount == rhs.acquireCount ) && ( pAcquireSyncs == rhs.pAcquireSyncs ) &&
128658              ( pAcquireKeys == rhs.pAcquireKeys ) && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds ) &&
128659              ( releaseCount == rhs.releaseCount ) && ( pReleaseSyncs == rhs.pReleaseSyncs ) && ( pReleaseKeys == rhs.pReleaseKeys );
128660 #    endif
128661     }
128662 
operator !=VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV128663     bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
128664     {
128665       return !operator==( rhs );
128666     }
128667 #  endif
128668 
128669   public:
128670     VULKAN_HPP_NAMESPACE::StructureType        sType                       = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
128671     const void *                               pNext                       = {};
128672     uint32_t                                   acquireCount                = {};
128673     const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs               = {};
128674     const uint64_t *                           pAcquireKeys                = {};
128675     const uint32_t *                           pAcquireTimeoutMilliseconds = {};
128676     uint32_t                                   releaseCount                = {};
128677     const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs               = {};
128678     const uint64_t *                           pReleaseKeys                = {};
128679   };
128680 
128681   template <>
128682   struct CppType<StructureType, StructureType::eWin32KeyedMutexAcquireReleaseInfoNV>
128683   {
128684     using Type = Win32KeyedMutexAcquireReleaseInfoNV;
128685   };
128686 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
128687 
128688 #if defined( VK_USE_PLATFORM_WIN32_KHR )
128689   struct Win32SurfaceCreateInfoKHR
128690   {
128691     using NativeType = VkWin32SurfaceCreateInfoKHR;
128692 
128693     static const bool                                  allowDuplicate = false;
128694     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWin32SurfaceCreateInfoKHR;
128695 
128696 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Win32SurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128697     VULKAN_HPP_CONSTEXPR Win32SurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags_     = {},
128698                                                     HINSTANCE                                        hinstance_ = {},
128699                                                     HWND                                             hwnd_      = {},
128700                                                     const void *                                     pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
128701       : pNext{ pNext_ }
128702       , flags{ flags_ }
128703       , hinstance{ hinstance_ }
128704       , hwnd{ hwnd_ }
128705     {
128706     }
128707 
128708     VULKAN_HPP_CONSTEXPR Win32SurfaceCreateInfoKHR( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128709 
Win32SurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128710     Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
128711       : Win32SurfaceCreateInfoKHR( *reinterpret_cast<Win32SurfaceCreateInfoKHR const *>( &rhs ) )
128712     {
128713     }
128714 
128715     Win32SurfaceCreateInfoKHR & operator=( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128716 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
128717 
operator =VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128718     Win32SurfaceCreateInfoKHR & operator=( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
128719     {
128720       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const *>( &rhs );
128721       return *this;
128722     }
128723 
128724 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128725     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
128726     {
128727       pNext = pNext_;
128728       return *this;
128729     }
128730 
setFlagsVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128731     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
128732     {
128733       flags = flags_;
128734       return *this;
128735     }
128736 
setHinstanceVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128737     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setHinstance( HINSTANCE hinstance_ ) VULKAN_HPP_NOEXCEPT
128738     {
128739       hinstance = hinstance_;
128740       return *this;
128741     }
128742 
setHwndVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128743     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setHwnd( HWND hwnd_ ) VULKAN_HPP_NOEXCEPT
128744     {
128745       hwnd = hwnd_;
128746       return *this;
128747     }
128748 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
128749 
operator VkWin32SurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128750     operator VkWin32SurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
128751     {
128752       return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR *>( this );
128753     }
128754 
operator VkWin32SurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128755     operator VkWin32SurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
128756     {
128757       return *reinterpret_cast<VkWin32SurfaceCreateInfoKHR *>( this );
128758     }
128759 
128760 #  if defined( VULKAN_HPP_USE_REFLECT )
128761 #    if 14 <= VULKAN_HPP_CPP_VERSION
128762     auto
128763 #    else
128764     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
128765                const void * const &,
128766                VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR const &,
128767                HINSTANCE const &,
128768                HWND const &>
128769 #    endif
reflectVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128770       reflect() const VULKAN_HPP_NOEXCEPT
128771     {
128772       return std::tie( sType, pNext, flags, hinstance, hwnd );
128773     }
128774 #  endif
128775 
128776 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
128777     auto operator<=>( Win32SurfaceCreateInfoKHR const & ) const = default;
128778 #  else
operator ==VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128779     bool operator==( Win32SurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
128780     {
128781 #    if defined( VULKAN_HPP_USE_REFLECT )
128782       return this->reflect() == rhs.reflect();
128783 #    else
128784       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( hinstance == rhs.hinstance ) && ( hwnd == rhs.hwnd );
128785 #    endif
128786     }
128787 
operator !=VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR128788     bool operator!=( Win32SurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
128789     {
128790       return !operator==( rhs );
128791     }
128792 #  endif
128793 
128794   public:
128795     VULKAN_HPP_NAMESPACE::StructureType              sType     = StructureType::eWin32SurfaceCreateInfoKHR;
128796     const void *                                     pNext     = {};
128797     VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags     = {};
128798     HINSTANCE                                        hinstance = {};
128799     HWND                                             hwnd      = {};
128800   };
128801 
128802   template <>
128803   struct CppType<StructureType, StructureType::eWin32SurfaceCreateInfoKHR>
128804   {
128805     using Type = Win32SurfaceCreateInfoKHR;
128806   };
128807 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
128808 
128809   struct WriteDescriptorSetAccelerationStructureKHR
128810   {
128811     using NativeType = VkWriteDescriptorSetAccelerationStructureKHR;
128812 
128813     static const bool                                  allowDuplicate = false;
128814     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWriteDescriptorSetAccelerationStructureKHR;
128815 
128816 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetAccelerationStructureKHRVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128817     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR( uint32_t                                               accelerationStructureCount_ = {},
128818                                                                      const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures_    = {},
128819                                                                      const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
128820       : pNext{ pNext_ }
128821       , accelerationStructureCount{ accelerationStructureCount_ }
128822       , pAccelerationStructures{ pAccelerationStructures_ }
128823     {
128824     }
128825 
128826     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128827 
WriteDescriptorSetAccelerationStructureKHRVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128828     WriteDescriptorSetAccelerationStructureKHR( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT
128829       : WriteDescriptorSetAccelerationStructureKHR( *reinterpret_cast<WriteDescriptorSetAccelerationStructureKHR const *>( &rhs ) )
128830     {
128831     }
128832 
128833 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
WriteDescriptorSetAccelerationStructureKHRVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128834     WriteDescriptorSetAccelerationStructureKHR(
128835       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures_,
128836       const void *                                                                                                pNext_ = nullptr )
128837       : pNext( pNext_ )
128838       , accelerationStructureCount( static_cast<uint32_t>( accelerationStructures_.size() ) )
128839       , pAccelerationStructures( accelerationStructures_.data() )
128840     {
128841     }
128842 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128843 
128844     WriteDescriptorSetAccelerationStructureKHR & operator=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128845 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
128846 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128847     WriteDescriptorSetAccelerationStructureKHR & operator=( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT
128848     {
128849       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR const *>( &rhs );
128850       return *this;
128851     }
128852 
128853 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128854     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
128855     {
128856       pNext = pNext_;
128857       return *this;
128858     }
128859 
128860     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR &
setAccelerationStructureCountVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128861       setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) VULKAN_HPP_NOEXCEPT
128862     {
128863       accelerationStructureCount = accelerationStructureCount_;
128864       return *this;
128865     }
128866 
128867     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR &
setPAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128868       setPAccelerationStructures( const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures_ ) VULKAN_HPP_NOEXCEPT
128869     {
128870       pAccelerationStructures = pAccelerationStructures_;
128871       return *this;
128872     }
128873 
128874 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128875     WriteDescriptorSetAccelerationStructureKHR & setAccelerationStructures(
128876       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures_ ) VULKAN_HPP_NOEXCEPT
128877     {
128878       accelerationStructureCount = static_cast<uint32_t>( accelerationStructures_.size() );
128879       pAccelerationStructures    = accelerationStructures_.data();
128880       return *this;
128881     }
128882 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128883 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
128884 
operator VkWriteDescriptorSetAccelerationStructureKHR const&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128885     operator VkWriteDescriptorSetAccelerationStructureKHR const &() const VULKAN_HPP_NOEXCEPT
128886     {
128887       return *reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureKHR *>( this );
128888     }
128889 
operator VkWriteDescriptorSetAccelerationStructureKHR&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128890     operator VkWriteDescriptorSetAccelerationStructureKHR &() VULKAN_HPP_NOEXCEPT
128891     {
128892       return *reinterpret_cast<VkWriteDescriptorSetAccelerationStructureKHR *>( this );
128893     }
128894 
128895 #if defined( VULKAN_HPP_USE_REFLECT )
128896 #  if 14 <= VULKAN_HPP_CPP_VERSION
128897     auto
128898 #  else
128899     std::
128900       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * const &>
128901 #  endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128902       reflect() const VULKAN_HPP_NOEXCEPT
128903     {
128904       return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures );
128905     }
128906 #endif
128907 
128908 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
128909     auto operator<=>( WriteDescriptorSetAccelerationStructureKHR const & ) const = default;
128910 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128911     bool operator==( WriteDescriptorSetAccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
128912     {
128913 #  if defined( VULKAN_HPP_USE_REFLECT )
128914       return this->reflect() == rhs.reflect();
128915 #  else
128916       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructureCount == rhs.accelerationStructureCount ) &&
128917              ( pAccelerationStructures == rhs.pAccelerationStructures );
128918 #  endif
128919     }
128920 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR128921     bool operator!=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
128922     {
128923       return !operator==( rhs );
128924     }
128925 #endif
128926 
128927   public:
128928     VULKAN_HPP_NAMESPACE::StructureType                    sType                      = StructureType::eWriteDescriptorSetAccelerationStructureKHR;
128929     const void *                                           pNext                      = {};
128930     uint32_t                                               accelerationStructureCount = {};
128931     const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures    = {};
128932   };
128933 
128934   template <>
128935   struct CppType<StructureType, StructureType::eWriteDescriptorSetAccelerationStructureKHR>
128936   {
128937     using Type = WriteDescriptorSetAccelerationStructureKHR;
128938   };
128939 
128940   struct WriteDescriptorSetAccelerationStructureNV
128941   {
128942     using NativeType = VkWriteDescriptorSetAccelerationStructureNV;
128943 
128944     static const bool                                  allowDuplicate = false;
128945     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWriteDescriptorSetAccelerationStructureNV;
128946 
128947 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetAccelerationStructureNVVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV128948     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV( uint32_t                                              accelerationStructureCount_ = {},
128949                                                                     const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures_    = {},
128950                                                                     const void *                                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
128951       : pNext{ pNext_ }
128952       , accelerationStructureCount{ accelerationStructureCount_ }
128953       , pAccelerationStructures{ pAccelerationStructures_ }
128954     {
128955     }
128956 
128957     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128958 
WriteDescriptorSetAccelerationStructureNVVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV128959     WriteDescriptorSetAccelerationStructureNV( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT
128960       : WriteDescriptorSetAccelerationStructureNV( *reinterpret_cast<WriteDescriptorSetAccelerationStructureNV const *>( &rhs ) )
128961     {
128962     }
128963 
128964 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
WriteDescriptorSetAccelerationStructureNVVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV128965     WriteDescriptorSetAccelerationStructureNV(
128966       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures_,
128967       const void *                                                                                               pNext_ = nullptr )
128968       : pNext( pNext_ )
128969       , accelerationStructureCount( static_cast<uint32_t>( accelerationStructures_.size() ) )
128970       , pAccelerationStructures( accelerationStructures_.data() )
128971     {
128972     }
128973 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
128974 
128975     WriteDescriptorSetAccelerationStructureNV & operator=( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
128976 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
128977 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV128978     WriteDescriptorSetAccelerationStructureNV & operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT
128979     {
128980       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV const *>( &rhs );
128981       return *this;
128982     }
128983 
128984 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV128985     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
128986     {
128987       pNext = pNext_;
128988       return *this;
128989     }
128990 
128991     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV &
setAccelerationStructureCountVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV128992       setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) VULKAN_HPP_NOEXCEPT
128993     {
128994       accelerationStructureCount = accelerationStructureCount_;
128995       return *this;
128996     }
128997 
128998     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV &
setPAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV128999       setPAccelerationStructures( const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures_ ) VULKAN_HPP_NOEXCEPT
129000     {
129001       pAccelerationStructures = pAccelerationStructures_;
129002       return *this;
129003     }
129004 
129005 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV129006     WriteDescriptorSetAccelerationStructureNV & setAccelerationStructures(
129007       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures_ ) VULKAN_HPP_NOEXCEPT
129008     {
129009       accelerationStructureCount = static_cast<uint32_t>( accelerationStructures_.size() );
129010       pAccelerationStructures    = accelerationStructures_.data();
129011       return *this;
129012     }
129013 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
129014 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
129015 
operator VkWriteDescriptorSetAccelerationStructureNV const&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV129016     operator VkWriteDescriptorSetAccelerationStructureNV const &() const VULKAN_HPP_NOEXCEPT
129017     {
129018       return *reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureNV *>( this );
129019     }
129020 
operator VkWriteDescriptorSetAccelerationStructureNV&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV129021     operator VkWriteDescriptorSetAccelerationStructureNV &() VULKAN_HPP_NOEXCEPT
129022     {
129023       return *reinterpret_cast<VkWriteDescriptorSetAccelerationStructureNV *>( this );
129024     }
129025 
129026 #if defined( VULKAN_HPP_USE_REFLECT )
129027 #  if 14 <= VULKAN_HPP_CPP_VERSION
129028     auto
129029 #  else
129030     std::
129031       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * const &>
129032 #  endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV129033       reflect() const VULKAN_HPP_NOEXCEPT
129034     {
129035       return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures );
129036     }
129037 #endif
129038 
129039 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
129040     auto operator<=>( WriteDescriptorSetAccelerationStructureNV const & ) const = default;
129041 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV129042     bool operator==( WriteDescriptorSetAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT
129043     {
129044 #  if defined( VULKAN_HPP_USE_REFLECT )
129045       return this->reflect() == rhs.reflect();
129046 #  else
129047       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructureCount == rhs.accelerationStructureCount ) &&
129048              ( pAccelerationStructures == rhs.pAccelerationStructures );
129049 #  endif
129050     }
129051 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV129052     bool operator!=( WriteDescriptorSetAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT
129053     {
129054       return !operator==( rhs );
129055     }
129056 #endif
129057 
129058   public:
129059     VULKAN_HPP_NAMESPACE::StructureType                   sType                      = StructureType::eWriteDescriptorSetAccelerationStructureNV;
129060     const void *                                          pNext                      = {};
129061     uint32_t                                              accelerationStructureCount = {};
129062     const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures    = {};
129063   };
129064 
129065   template <>
129066   struct CppType<StructureType, StructureType::eWriteDescriptorSetAccelerationStructureNV>
129067   {
129068     using Type = WriteDescriptorSetAccelerationStructureNV;
129069   };
129070 
129071   struct WriteDescriptorSetInlineUniformBlock
129072   {
129073     using NativeType = VkWriteDescriptorSetInlineUniformBlock;
129074 
129075     static const bool                                  allowDuplicate = false;
129076     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWriteDescriptorSetInlineUniformBlock;
129077 
129078 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
129079     VULKAN_HPP_CONSTEXPR
WriteDescriptorSetInlineUniformBlockVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129080       WriteDescriptorSetInlineUniformBlock( uint32_t dataSize_ = {}, const void * pData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
129081       : pNext{ pNext_ }
129082       , dataSize{ dataSize_ }
129083       , pData{ pData_ }
129084     {
129085     }
129086 
129087     VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlock( WriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT = default;
129088 
WriteDescriptorSetInlineUniformBlockVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129089     WriteDescriptorSetInlineUniformBlock( VkWriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT
129090       : WriteDescriptorSetInlineUniformBlock( *reinterpret_cast<WriteDescriptorSetInlineUniformBlock const *>( &rhs ) )
129091     {
129092     }
129093 
129094 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
129095     template <typename T>
WriteDescriptorSetInlineUniformBlockVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129096     WriteDescriptorSetInlineUniformBlock( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_, const void * pNext_ = nullptr )
129097       : pNext( pNext_ ), dataSize( static_cast<uint32_t>( data_.size() * sizeof( T ) ) ), pData( data_.data() )
129098     {
129099     }
129100 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
129101 
129102     WriteDescriptorSetInlineUniformBlock & operator=( WriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT = default;
129103 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
129104 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129105     WriteDescriptorSetInlineUniformBlock & operator=( VkWriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT
129106     {
129107       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock const *>( &rhs );
129108       return *this;
129109     }
129110 
129111 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129112     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
129113     {
129114       pNext = pNext_;
129115       return *this;
129116     }
129117 
setDataSizeVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129118     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setDataSize( uint32_t dataSize_ ) VULKAN_HPP_NOEXCEPT
129119     {
129120       dataSize = dataSize_;
129121       return *this;
129122     }
129123 
setPDataVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129124     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
129125     {
129126       pData = pData_;
129127       return *this;
129128     }
129129 
129130 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
129131     template <typename T>
setDataVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129132     WriteDescriptorSetInlineUniformBlock & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
129133     {
129134       dataSize = static_cast<uint32_t>( data_.size() * sizeof( T ) );
129135       pData    = data_.data();
129136       return *this;
129137     }
129138 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
129139 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
129140 
operator VkWriteDescriptorSetInlineUniformBlock const&VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129141     operator VkWriteDescriptorSetInlineUniformBlock const &() const VULKAN_HPP_NOEXCEPT
129142     {
129143       return *reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlock *>( this );
129144     }
129145 
operator VkWriteDescriptorSetInlineUniformBlock&VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129146     operator VkWriteDescriptorSetInlineUniformBlock &() VULKAN_HPP_NOEXCEPT
129147     {
129148       return *reinterpret_cast<VkWriteDescriptorSetInlineUniformBlock *>( this );
129149     }
129150 
129151 #if defined( VULKAN_HPP_USE_REFLECT )
129152 #  if 14 <= VULKAN_HPP_CPP_VERSION
129153     auto
129154 #  else
129155     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const void * const &>
129156 #  endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129157       reflect() const VULKAN_HPP_NOEXCEPT
129158     {
129159       return std::tie( sType, pNext, dataSize, pData );
129160     }
129161 #endif
129162 
129163 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
129164     auto operator<=>( WriteDescriptorSetInlineUniformBlock const & ) const = default;
129165 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129166     bool operator==( WriteDescriptorSetInlineUniformBlock const & rhs ) const VULKAN_HPP_NOEXCEPT
129167     {
129168 #  if defined( VULKAN_HPP_USE_REFLECT )
129169       return this->reflect() == rhs.reflect();
129170 #  else
129171       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
129172 #  endif
129173     }
129174 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock129175     bool operator!=( WriteDescriptorSetInlineUniformBlock const & rhs ) const VULKAN_HPP_NOEXCEPT
129176     {
129177       return !operator==( rhs );
129178     }
129179 #endif
129180 
129181   public:
129182     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eWriteDescriptorSetInlineUniformBlock;
129183     const void *                        pNext    = {};
129184     uint32_t                            dataSize = {};
129185     const void *                        pData    = {};
129186   };
129187 
129188   template <>
129189   struct CppType<StructureType, StructureType::eWriteDescriptorSetInlineUniformBlock>
129190   {
129191     using Type = WriteDescriptorSetInlineUniformBlock;
129192   };
129193 
129194   using WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock;
129195 
129196 #if defined( VK_USE_PLATFORM_XCB_KHR )
129197   struct XcbSurfaceCreateInfoKHR
129198   {
129199     using NativeType = VkXcbSurfaceCreateInfoKHR;
129200 
129201     static const bool                                  allowDuplicate = false;
129202     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eXcbSurfaceCreateInfoKHR;
129203 
129204 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
XcbSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129205     VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags_      = {},
129206                                                   xcb_connection_t *                             connection_ = {},
129207                                                   xcb_window_t                                   window_     = {},
129208                                                   const void *                                   pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
129209       : pNext{ pNext_ }
129210       , flags{ flags_ }
129211       , connection{ connection_ }
129212       , window{ window_ }
129213     {
129214     }
129215 
129216     VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
129217 
XcbSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129218     XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
129219       : XcbSurfaceCreateInfoKHR( *reinterpret_cast<XcbSurfaceCreateInfoKHR const *>( &rhs ) )
129220     {
129221     }
129222 
129223     XcbSurfaceCreateInfoKHR & operator=( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
129224 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
129225 
operator =VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129226     XcbSurfaceCreateInfoKHR & operator=( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
129227     {
129228       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const *>( &rhs );
129229       return *this;
129230     }
129231 
129232 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129233     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
129234     {
129235       pNext = pNext_;
129236       return *this;
129237     }
129238 
setFlagsVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129239     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
129240     {
129241       flags = flags_;
129242       return *this;
129243     }
129244 
setConnectionVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129245     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setConnection( xcb_connection_t * connection_ ) VULKAN_HPP_NOEXCEPT
129246     {
129247       connection = connection_;
129248       return *this;
129249     }
129250 
setWindowVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129251     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setWindow( xcb_window_t window_ ) VULKAN_HPP_NOEXCEPT
129252     {
129253       window = window_;
129254       return *this;
129255     }
129256 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
129257 
operator VkXcbSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129258     operator VkXcbSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
129259     {
129260       return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR *>( this );
129261     }
129262 
operator VkXcbSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129263     operator VkXcbSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
129264     {
129265       return *reinterpret_cast<VkXcbSurfaceCreateInfoKHR *>( this );
129266     }
129267 
129268 #  if defined( VULKAN_HPP_USE_REFLECT )
129269 #    if 14 <= VULKAN_HPP_CPP_VERSION
129270     auto
129271 #    else
129272     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
129273                const void * const &,
129274                VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR const &,
129275                xcb_connection_t * const &,
129276                xcb_window_t const &>
129277 #    endif
reflectVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129278       reflect() const VULKAN_HPP_NOEXCEPT
129279     {
129280       return std::tie( sType, pNext, flags, connection, window );
129281     }
129282 #  endif
129283 
129284 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129285     std::strong_ordering operator<=>( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
129286     {
129287       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
129288         return cmp;
129289       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
129290         return cmp;
129291       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
129292         return cmp;
129293       if ( auto cmp = connection <=> rhs.connection; cmp != 0 )
129294         return cmp;
129295       if ( auto cmp = memcmp( &window, &rhs.window, sizeof( xcb_window_t ) ); cmp != 0 )
129296         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
129297 
129298       return std::strong_ordering::equivalent;
129299     }
129300 #  endif
129301 
operator ==VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129302     bool operator==( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
129303     {
129304       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( connection == rhs.connection ) &&
129305              ( memcmp( &window, &rhs.window, sizeof( xcb_window_t ) ) == 0 );
129306     }
129307 
operator !=VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR129308     bool operator!=( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
129309     {
129310       return !operator==( rhs );
129311     }
129312 
129313   public:
129314     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::eXcbSurfaceCreateInfoKHR;
129315     const void *                                   pNext      = {};
129316     VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags      = {};
129317     xcb_connection_t *                             connection = {};
129318     xcb_window_t                                   window     = {};
129319   };
129320 
129321   template <>
129322   struct CppType<StructureType, StructureType::eXcbSurfaceCreateInfoKHR>
129323   {
129324     using Type = XcbSurfaceCreateInfoKHR;
129325   };
129326 #endif /*VK_USE_PLATFORM_XCB_KHR*/
129327 
129328 #if defined( VK_USE_PLATFORM_XLIB_KHR )
129329   struct XlibSurfaceCreateInfoKHR
129330   {
129331     using NativeType = VkXlibSurfaceCreateInfoKHR;
129332 
129333     static const bool                                  allowDuplicate = false;
129334     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eXlibSurfaceCreateInfoKHR;
129335 
129336 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
XlibSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129337     VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags_  = {},
129338                                                    Display *                                       dpy_    = {},
129339                                                    Window                                          window_ = {},
129340                                                    const void *                                    pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
129341       : pNext{ pNext_ }
129342       , flags{ flags_ }
129343       , dpy{ dpy_ }
129344       , window{ window_ }
129345     {
129346     }
129347 
129348     VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
129349 
XlibSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129350     XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
129351       : XlibSurfaceCreateInfoKHR( *reinterpret_cast<XlibSurfaceCreateInfoKHR const *>( &rhs ) )
129352     {
129353     }
129354 
129355     XlibSurfaceCreateInfoKHR & operator=( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
129356 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
129357 
operator =VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129358     XlibSurfaceCreateInfoKHR & operator=( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
129359     {
129360       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const *>( &rhs );
129361       return *this;
129362     }
129363 
129364 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129365     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
129366     {
129367       pNext = pNext_;
129368       return *this;
129369     }
129370 
setFlagsVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129371     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
129372     {
129373       flags = flags_;
129374       return *this;
129375     }
129376 
setDpyVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129377     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setDpy( Display * dpy_ ) VULKAN_HPP_NOEXCEPT
129378     {
129379       dpy = dpy_;
129380       return *this;
129381     }
129382 
setWindowVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129383     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setWindow( Window window_ ) VULKAN_HPP_NOEXCEPT
129384     {
129385       window = window_;
129386       return *this;
129387     }
129388 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
129389 
operator VkXlibSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129390     operator VkXlibSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
129391     {
129392       return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR *>( this );
129393     }
129394 
operator VkXlibSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129395     operator VkXlibSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
129396     {
129397       return *reinterpret_cast<VkXlibSurfaceCreateInfoKHR *>( this );
129398     }
129399 
129400 #  if defined( VULKAN_HPP_USE_REFLECT )
129401 #    if 14 <= VULKAN_HPP_CPP_VERSION
129402     auto
129403 #    else
129404     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
129405                const void * const &,
129406                VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR const &,
129407                Display * const &,
129408                Window const &>
129409 #    endif
reflectVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129410       reflect() const VULKAN_HPP_NOEXCEPT
129411     {
129412       return std::tie( sType, pNext, flags, dpy, window );
129413     }
129414 #  endif
129415 
129416 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129417     std::strong_ordering operator<=>( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
129418     {
129419       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
129420         return cmp;
129421       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
129422         return cmp;
129423       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
129424         return cmp;
129425       if ( auto cmp = dpy <=> rhs.dpy; cmp != 0 )
129426         return cmp;
129427       if ( auto cmp = memcmp( &window, &rhs.window, sizeof( Window ) ); cmp != 0 )
129428         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
129429 
129430       return std::strong_ordering::equivalent;
129431     }
129432 #  endif
129433 
operator ==VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129434     bool operator==( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
129435     {
129436       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dpy == rhs.dpy ) &&
129437              ( memcmp( &window, &rhs.window, sizeof( Window ) ) == 0 );
129438     }
129439 
operator !=VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR129440     bool operator!=( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
129441     {
129442       return !operator==( rhs );
129443     }
129444 
129445   public:
129446     VULKAN_HPP_NAMESPACE::StructureType             sType  = StructureType::eXlibSurfaceCreateInfoKHR;
129447     const void *                                    pNext  = {};
129448     VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags  = {};
129449     Display *                                       dpy    = {};
129450     Window                                          window = {};
129451   };
129452 
129453   template <>
129454   struct CppType<StructureType, StructureType::eXlibSurfaceCreateInfoKHR>
129455   {
129456     using Type = XlibSurfaceCreateInfoKHR;
129457   };
129458 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
129459 
129460 }  // namespace VULKAN_HPP_NAMESPACE
129461 #endif
129462